@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
|
@@ -60,10 +60,12 @@ function parse(data) {
|
|
|
60
60
|
}
|
|
61
61
|
// todo: add testMode here
|
|
62
62
|
class CurrentUserService extends base_js_1.BaseService {
|
|
63
|
+
_kv;
|
|
63
64
|
constructor(_kv, opts) {
|
|
64
65
|
super(opts);
|
|
65
66
|
this._kv = _kv;
|
|
66
67
|
}
|
|
68
|
+
_cached;
|
|
67
69
|
async store(info) {
|
|
68
70
|
if (info && this._cached) {
|
|
69
71
|
// update the existing object so the references to it are still valid
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"current-user.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/current-user.ts"],"names":[],"mappings":";;;AACA,mDAA2F;AAG3F,8DAA8E;AAC9E,sDAAyD;AACzD,0EAAgE;AAChE,6DAA4D;AAS5D,MAAM,eAAe,GAAG,cAAc,CAAA;AAEtC,SAAS,SAAS,CAAC,IAA4B;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;IAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;IAE9C,IAAI,iBAAiB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE5C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"current-user.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/current-user.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\nimport { TlBinaryReader, TlBinaryWriter, TlSerializationCounter } from '@mtcute/tl-runtime'\n\nimport { IKeyValueRepository } from '../../../storage/repository/key-value.js'\nimport { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { MtArgumentError } from '../../../types/index.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { extractUsernames } from '../../utils/peer-utils.js'\n\nexport interface CurrentUserInfo {\n userId: number\n isBot: boolean\n isPremium: boolean\n usernames: string[]\n}\n\nconst KV_CURRENT_USER = 'current_user'\n\nfunction serialize(info: CurrentUserInfo | null): Uint8Array {\n if (!info) return new Uint8Array(0)\n\n const hasUsernames = info.usernames.length > 0\n\n let usernamesOverhead = hasUsernames ? 4 : 0\n\n for (const username of info.usernames) {\n // since usernames are always ASCII, string length is the same as byte length\n usernamesOverhead += TlSerializationCounter.countBytesOverhead(username.length) + username.length\n }\n\n const writer = TlBinaryWriter.manual(16 + usernamesOverhead)\n writer.int(1) // version\n\n let flags = 0\n if (info.isBot) flags |= 1\n if (hasUsernames) flags |= 2\n if (info.isPremium) flags |= 4\n\n writer.int(flags)\n writer.int53(info.userId)\n\n if (hasUsernames) {\n writer.int(info.usernames.length)\n\n for (const username of info.usernames) {\n writer.string(username)\n }\n }\n\n return writer.result()\n}\n\nfunction parse(data: Uint8Array): CurrentUserInfo | null {\n if (data.length === 0) return null\n\n const reader = TlBinaryReader.manual(data)\n if (reader.int() !== 1) return null\n\n const flags = reader.int()\n const userId = reader.int53()\n\n let usernames: string[] = []\n\n if (flags & 2) {\n const len = reader.int()\n usernames = new Array<string>(len)\n\n for (let i = 0; i < len; i++) {\n usernames[i] = reader.string()\n }\n }\n\n return {\n userId,\n isBot: (flags & 1) !== 0,\n isPremium: (flags & 4) !== 0,\n usernames,\n }\n}\n\n// todo: add testMode here\n\nexport class CurrentUserService extends BaseService {\n constructor(\n private _kv: IKeyValueRepository,\n opts: ServiceOptions,\n ) {\n super(opts)\n }\n\n private _cached?: CurrentUserInfo | null\n\n async store(info: CurrentUserInfo | null): Promise<void> {\n if (info && this._cached) {\n // update the existing object so the references to it are still valid\n if (this._cached.userId === info.userId) {\n return\n }\n\n this._cached.userId = info.userId\n this._cached.isBot = info.isBot\n } else {\n this._cached = info\n }\n\n await this._kv.set(KV_CURRENT_USER, serialize(info))\n await this._driver.save?.()\n }\n\n async storeFrom(user: tl.TypeUser): Promise<CurrentUserInfo> {\n assertTypeIs('storeFrom', user, 'user')\n\n const obj: CurrentUserInfo = {\n userId: user.id,\n isBot: user.bot!,\n isPremium: user.premium!,\n usernames: extractUsernames(user),\n }\n await this.store(obj)\n\n return obj\n }\n\n async fetch(): Promise<CurrentUserInfo | null> {\n if (this._cached) return this._cached\n\n const data = await this._kv.get(KV_CURRENT_USER)\n if (!data) return null\n\n const info = parse(data)\n this._cached = info\n\n return info\n }\n\n getCached(safe = false): CurrentUserInfo | null {\n if (this._cached === undefined) {\n if (safe) return null\n\n throw new MtArgumentError('User info is not cached yet')\n }\n\n return this._cached\n }\n\n async update(params: { username?: string; usernames?: string[]; isPremium?: boolean }): Promise<void> {\n const info = await this.fetch()\n if (!info) return\n\n const { username, usernames, isPremium } = params\n\n if (isPremium !== undefined) info.isPremium = isPremium\n\n if (username !== undefined) {\n // \"main\" username is always the first one\n info.usernames[0] = username\n } else if (usernames !== undefined) {\n info.usernames = usernames\n }\n\n return this.store(info)\n }\n}\n"]}
|
|
@@ -34,12 +34,16 @@ function getInputPeer(dto) {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
class PeersService extends base_js_1.BaseService {
|
|
37
|
+
options;
|
|
38
|
+
_peers;
|
|
39
|
+
_refs;
|
|
40
|
+
_cache;
|
|
41
|
+
_pendingWrites = new Map();
|
|
37
42
|
constructor(options, _peers, _refs, common) {
|
|
38
43
|
super(common);
|
|
39
44
|
this.options = options;
|
|
40
45
|
this._peers = _peers;
|
|
41
46
|
this._refs = _refs;
|
|
42
|
-
this._pendingWrites = new Map();
|
|
43
47
|
this._cache = new lru_map_js_1.LruMap(options.cacheSize ?? 100);
|
|
44
48
|
}
|
|
45
49
|
async updatePeersFrom(obj) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peers.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/peers.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { tl } from '@mtcute/tl'\n\nimport { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { longFromFastString, longToFastString } from '../../../utils/long-utils.js'\nimport { LruMap } from '../../../utils/lru-map.js'\nimport { getAllPeersFrom, parseMarkedPeerId, toggleChannelIdMark } from '../../../utils/peer-utils.js'\nimport { extractUsernames } from '../../utils/peer-utils.js'\nimport { IPeersRepository } from '../repository/peers.js'\nimport { RefMessagesService } from './ref-messages.js'\n\ninterface CacheItem {\n peer: tl.TypeInputPeer\n complete: tl.TypeUser | tl.TypeChat | null\n}\n\nexport interface PeersServiceOptions {\n cacheSize?: number\n updatesWriteInterval?: number\n}\n\nconst USERNAME_TTL = 24 * 60 * 60 * 1000 // 1 day\n\nfunction getInputPeer(dto: IPeersRepository.PeerInfo): tl.TypeInputPeer {\n const [type, id] = parseMarkedPeerId(dto.id)\n\n switch (type) {\n case 'user':\n return {\n _: 'inputPeerUser',\n userId: id,\n accessHash: longFromFastString(dto.accessHash),\n }\n case 'chat':\n return {\n _: 'inputPeerChat',\n chatId: id,\n }\n case 'channel':\n return {\n _: 'inputPeerChannel',\n channelId: id,\n accessHash: longFromFastString(dto.accessHash),\n }\n }\n}\n\nexport class PeersService extends BaseService {\n private _cache: LruMap<number, CacheItem>\n private _pendingWrites = new Map<number, IPeersRepository.PeerInfo>()\n\n constructor(\n private options: PeersServiceOptions,\n private _peers: IPeersRepository,\n private _refs: RefMessagesService,\n common: ServiceOptions,\n ) {\n super(common)\n\n this._cache = new LruMap(options.cacheSize ?? 100)\n }\n\n async updatePeersFrom(obj: tl.TlObject | tl.TlObject[]) {\n let count = 0\n\n for (const peer of getAllPeersFrom(obj)) {\n // no point in caching min peers as we can't use them\n if ((peer as Extract<typeof peer, { min?: unknown }>).min) continue\n\n count += 1\n\n await this.store(peer)\n }\n\n if (count > 0) {\n await this._driver.save?.()\n this._log.debug('cached %d peers', count)\n\n return true\n }\n\n return false\n }\n\n async store(peer: tl.TypeUser | tl.TypeChat): Promise<void> {\n let dto: IPeersRepository.PeerInfo\n let accessHash: tl.Long\n\n switch (peer._) {\n case 'user': {\n if (!peer.accessHash) {\n this._log.warn('received user without access hash: %j', peer)\n\n return\n }\n\n dto = {\n id: peer.id,\n accessHash: longToFastString(peer.accessHash),\n phone: peer.phone,\n usernames: extractUsernames(peer),\n updated: Date.now(),\n complete: this._serializeTl(peer),\n }\n accessHash = peer.accessHash\n break\n }\n case 'chat':\n case 'chatForbidden': {\n dto = {\n id: -peer.id,\n accessHash: '',\n updated: Date.now(),\n complete: this._serializeTl(peer),\n usernames: [],\n }\n accessHash = Long.ZERO\n break\n }\n case 'channel':\n case 'channelForbidden': {\n if (!peer.accessHash) {\n this._log.warn('received channel without access hash: %j', peer)\n\n return\n }\n\n dto = {\n id: toggleChannelIdMark(peer.id),\n accessHash: longToFastString(peer.accessHash),\n usernames: extractUsernames(peer as tl.RawChannel),\n updated: Date.now(),\n complete: this._serializeTl(peer),\n }\n accessHash = peer.accessHash\n break\n }\n default:\n return\n }\n\n const cached = this._cache.get(peer.id)\n\n if (cached && this.options.updatesWriteInterval !== 0) {\n const oldAccessHash = (cached.peer as Extract<tl.TypeInputPeer, { accessHash?: unknown }>).accessHash\n\n if (oldAccessHash?.eq(accessHash)) {\n // when entity is cached and hash is the same, an update query is needed,\n // since some field in the full entity might have changed, or the username/phone\n //\n // to avoid too many DB calls, and since these updates are pretty common,\n // they are grouped and applied in batches no more than once every 30sec (or user-defined).\n //\n // until then, they are either served from in-memory cache,\n // or an older version is fetched from DB\n\n this._pendingWrites.set(peer.id, dto)\n cached.complete = peer\n\n return\n }\n }\n\n // entity is not cached in memory, or the access hash has changed\n // we need to update it in the DB asap, and also update the in-memory cache\n await this._peers.store(dto)\n this._cache.set(peer.id, {\n peer: getInputPeer(dto),\n complete: peer,\n })\n\n // todo: if (!this._cachedSelf?.isBot) {\n // we have the full peer, we no longer need the references\n // we can skip this in the other branch, since in that case it would've already been deleted\n await this._refs.deleteByPeer(peer.id)\n }\n\n private _returnCaching(id: number, dto: IPeersRepository.PeerInfo) {\n const peer = getInputPeer(dto)\n const complete = this._deserializeTl(dto.complete)\n\n this._cache.set(id, {\n peer,\n complete: complete as tl.TypeUser | tl.TypeChat | null,\n })\n\n return peer\n }\n\n async getById(id: number, allowRefs = true): Promise<tl.TypeInputPeer | null> {\n const cached = this._cache.get(id)\n if (cached) return cached.peer\n\n const dto = await this._peers.getById(id)\n\n if (dto) {\n return this._returnCaching(id, dto)\n }\n\n if (allowRefs) {\n const ref = await this._refs.getForPeer(id)\n if (!ref) return null\n\n const [chatId, msgId] = ref\n const chat = await this.getById(chatId, false)\n if (!chat) return null\n\n if (id > 0) {\n // user\n return {\n _: 'inputPeerUserFromMessage',\n peer: chat,\n msgId,\n userId: id,\n }\n }\n\n // channel\n return {\n _: 'inputPeerChannelFromMessage',\n peer: chat,\n msgId,\n channelId: toggleChannelIdMark(id),\n }\n }\n\n return null\n }\n\n async getByPhone(phone: string): Promise<tl.TypeInputPeer | null> {\n const dto = await this._peers.getByPhone(phone)\n if (!dto) return null\n\n return this._returnCaching(dto.id, dto)\n }\n\n async getByUsername(username: string): Promise<tl.TypeInputPeer | null> {\n const dto = await this._peers.getByUsername(username.toLowerCase())\n if (!dto) return null\n\n if (Date.now() - dto.updated > USERNAME_TTL) {\n // username is too old, we can't trust it. ask the client to re-fetch it\n return null\n }\n\n return this._returnCaching(dto.id, dto)\n }\n\n async getCompleteById(id: number): Promise<tl.TypeUser | tl.TypeChat | null> {\n const cached = this._cache.get(id)\n if (cached) return cached.complete\n\n const dto = await this._peers.getById(id)\n if (!dto) return null\n\n const cacheItem: CacheItem = {\n peer: getInputPeer(dto),\n complete: this._deserializeTl(dto.complete) as tl.TypeUser | tl.TypeChat | null,\n }\n this._cache.set(id, cacheItem)\n\n return cacheItem.complete\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"peers.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/peers.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAIvB,8DAA8E;AAC9E,gEAAmF;AACnF,0DAAkD;AAClD,gEAAsG;AACtG,6DAA4D;AAc5D,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,QAAQ;AAEjD,SAAS,YAAY,CAAC,GAA8B;IAChD,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAA,iCAAiB,EAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAE5C,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,MAAM;YACP,OAAO;gBACH,CAAC,EAAE,eAAe;gBAClB,MAAM,EAAE,EAAE;gBACV,UAAU,EAAE,IAAA,kCAAkB,EAAC,GAAG,CAAC,UAAU,CAAC;aACjD,CAAA;QACL,KAAK,MAAM;YACP,OAAO;gBACH,CAAC,EAAE,eAAe;gBAClB,MAAM,EAAE,EAAE;aACb,CAAA;QACL,KAAK,SAAS;YACV,OAAO;gBACH,CAAC,EAAE,kBAAkB;gBACrB,SAAS,EAAE,EAAE;gBACb,UAAU,EAAE,IAAA,kCAAkB,EAAC,GAAG,CAAC,UAAU,CAAC;aACjD,CAAA;IACT,CAAC;AACL,CAAC;AAED,MAAa,YAAa,SAAQ,qBAAW;IAK7B;IACA;IACA;IANJ,MAAM,CAA2B;IACjC,cAAc,GAAG,IAAI,GAAG,EAAqC,CAAA;IAErE,YACY,OAA4B,EAC5B,MAAwB,EACxB,KAAyB,EACjC,MAAsB;QAEtB,KAAK,CAAC,MAAM,CAAC,CAAA;QALL,YAAO,GAAP,OAAO,CAAqB;QAC5B,WAAM,GAAN,MAAM,CAAkB;QACxB,UAAK,GAAL,KAAK,CAAoB;QAKjC,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAM,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAgC;QAClD,IAAI,KAAK,GAAG,CAAC,CAAA;QAEb,KAAK,MAAM,IAAI,IAAI,IAAA,+BAAe,EAAC,GAAG,CAAC,EAAE,CAAC;YACtC,qDAAqD;YACrD,IAAK,IAAgD,CAAC,GAAG;gBAAE,SAAQ;YAEnE,KAAK,IAAI,CAAC,CAAA;YAEV,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAA;YAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAA;YAEzC,OAAO,IAAI,CAAA;QACf,CAAC;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAA+B;QACvC,IAAI,GAA8B,CAAA;QAClC,IAAI,UAAmB,CAAA;QAEvB,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;YACb,KAAK,MAAM,CAAC,CAAC,CAAC;gBACV,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAA;oBAE7D,OAAM;gBACV,CAAC;gBAED,GAAG,GAAG;oBACF,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,UAAU,EAAE,IAAA,gCAAgB,EAAC,IAAI,CAAC,UAAU,CAAC;oBAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,SAAS,EAAE,IAAA,gCAAgB,EAAC,IAAI,CAAC;oBACjC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;oBACnB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;iBACpC,CAAA;gBACD,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;gBAC5B,MAAK;YACT,CAAC;YACD,KAAK,MAAM,CAAC;YACZ,KAAK,eAAe,CAAC,CAAC,CAAC;gBACnB,GAAG,GAAG;oBACF,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;oBACZ,UAAU,EAAE,EAAE;oBACd,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;oBACnB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;oBACjC,SAAS,EAAE,EAAE;iBAChB,CAAA;gBACD,UAAU,GAAG,cAAI,CAAC,IAAI,CAAA;gBACtB,MAAK;YACT,CAAC;YACD,KAAK,SAAS,CAAC;YACf,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C,EAAE,IAAI,CAAC,CAAA;oBAEhE,OAAM;gBACV,CAAC;gBAED,GAAG,GAAG;oBACF,EAAE,EAAE,IAAA,mCAAmB,EAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,UAAU,EAAE,IAAA,gCAAgB,EAAC,IAAI,CAAC,UAAU,CAAC;oBAC7C,SAAS,EAAE,IAAA,gCAAgB,EAAC,IAAqB,CAAC;oBAClD,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;oBACnB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;iBACpC,CAAA;gBACD,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;gBAC5B,MAAK;YACT,CAAC;YACD;gBACI,OAAM;QACd,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEvC,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,aAAa,GAAI,MAAM,CAAC,IAA4D,CAAC,UAAU,CAAA;YAErG,IAAI,aAAa,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,yEAAyE;gBACzE,gFAAgF;gBAChF,EAAE;gBACF,yEAAyE;gBACzE,2FAA2F;gBAC3F,EAAE;gBACF,2DAA2D;gBAC3D,yCAAyC;gBAEzC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;gBACrC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;gBAEtB,OAAM;YACV,CAAC;QACL,CAAC;QAED,iEAAiE;QACjE,2EAA2E;QAC3E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE;YACrB,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC;YACvB,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAA;QAEF,wCAAwC;QACxC,0DAA0D;QAC1D,4FAA4F;QAC5F,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEO,cAAc,CAAC,EAAU,EAAE,GAA8B;QAC7D,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAElD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE;YAChB,IAAI;YACJ,QAAQ,EAAE,QAA4C;SACzD,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,SAAS,GAAG,IAAI;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAClC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,IAAI,CAAA;QAE9B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAEzC,IAAI,GAAG,EAAE,CAAC;YACN,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YAC3C,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAA;YAErB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,GAAG,CAAA;YAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YAC9C,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAA;YAEtB,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACT,OAAO;gBACP,OAAO;oBACH,CAAC,EAAE,0BAA0B;oBAC7B,IAAI,EAAE,IAAI;oBACV,KAAK;oBACL,MAAM,EAAE,EAAE;iBACb,CAAA;YACL,CAAC;YAED,UAAU;YACV,OAAO;gBACH,CAAC,EAAE,6BAA6B;gBAChC,IAAI,EAAE,IAAI;gBACV,KAAK;gBACL,SAAS,EAAE,IAAA,mCAAmB,EAAC,EAAE,CAAC;aACrC,CAAA;QACL,CAAC;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa;QAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAC/C,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QAErB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB;QAChC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;QACnE,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QAErB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,GAAG,YAAY,EAAE,CAAC;YAC1C,wEAAwE;YACxE,OAAO,IAAI,CAAA;QACf,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAClC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAA;QAElC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACzC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QAErB,MAAM,SAAS,GAAc;YACzB,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC;YACvB,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAqC;SAClF,CAAA;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;QAE9B,OAAO,SAAS,CAAC,QAAQ,CAAA;IAC7B,CAAC;CACJ;AAxND,oCAwNC","sourcesContent":["import Long from 'long'\n\nimport { tl } from '@mtcute/tl'\n\nimport { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { longFromFastString, longToFastString } from '../../../utils/long-utils.js'\nimport { LruMap } from '../../../utils/lru-map.js'\nimport { getAllPeersFrom, parseMarkedPeerId, toggleChannelIdMark } from '../../../utils/peer-utils.js'\nimport { extractUsernames } from '../../utils/peer-utils.js'\nimport { IPeersRepository } from '../repository/peers.js'\nimport { RefMessagesService } from './ref-messages.js'\n\ninterface CacheItem {\n peer: tl.TypeInputPeer\n complete: tl.TypeUser | tl.TypeChat | null\n}\n\nexport interface PeersServiceOptions {\n cacheSize?: number\n updatesWriteInterval?: number\n}\n\nconst USERNAME_TTL = 24 * 60 * 60 * 1000 // 1 day\n\nfunction getInputPeer(dto: IPeersRepository.PeerInfo): tl.TypeInputPeer {\n const [type, id] = parseMarkedPeerId(dto.id)\n\n switch (type) {\n case 'user':\n return {\n _: 'inputPeerUser',\n userId: id,\n accessHash: longFromFastString(dto.accessHash),\n }\n case 'chat':\n return {\n _: 'inputPeerChat',\n chatId: id,\n }\n case 'channel':\n return {\n _: 'inputPeerChannel',\n channelId: id,\n accessHash: longFromFastString(dto.accessHash),\n }\n }\n}\n\nexport class PeersService extends BaseService {\n private _cache: LruMap<number, CacheItem>\n private _pendingWrites = new Map<number, IPeersRepository.PeerInfo>()\n\n constructor(\n private options: PeersServiceOptions,\n private _peers: IPeersRepository,\n private _refs: RefMessagesService,\n common: ServiceOptions,\n ) {\n super(common)\n\n this._cache = new LruMap(options.cacheSize ?? 100)\n }\n\n async updatePeersFrom(obj: tl.TlObject | tl.TlObject[]) {\n let count = 0\n\n for (const peer of getAllPeersFrom(obj)) {\n // no point in caching min peers as we can't use them\n if ((peer as Extract<typeof peer, { min?: unknown }>).min) continue\n\n count += 1\n\n await this.store(peer)\n }\n\n if (count > 0) {\n await this._driver.save?.()\n this._log.debug('cached %d peers', count)\n\n return true\n }\n\n return false\n }\n\n async store(peer: tl.TypeUser | tl.TypeChat): Promise<void> {\n let dto: IPeersRepository.PeerInfo\n let accessHash: tl.Long\n\n switch (peer._) {\n case 'user': {\n if (!peer.accessHash) {\n this._log.warn('received user without access hash: %j', peer)\n\n return\n }\n\n dto = {\n id: peer.id,\n accessHash: longToFastString(peer.accessHash),\n phone: peer.phone,\n usernames: extractUsernames(peer),\n updated: Date.now(),\n complete: this._serializeTl(peer),\n }\n accessHash = peer.accessHash\n break\n }\n case 'chat':\n case 'chatForbidden': {\n dto = {\n id: -peer.id,\n accessHash: '',\n updated: Date.now(),\n complete: this._serializeTl(peer),\n usernames: [],\n }\n accessHash = Long.ZERO\n break\n }\n case 'channel':\n case 'channelForbidden': {\n if (!peer.accessHash) {\n this._log.warn('received channel without access hash: %j', peer)\n\n return\n }\n\n dto = {\n id: toggleChannelIdMark(peer.id),\n accessHash: longToFastString(peer.accessHash),\n usernames: extractUsernames(peer as tl.RawChannel),\n updated: Date.now(),\n complete: this._serializeTl(peer),\n }\n accessHash = peer.accessHash\n break\n }\n default:\n return\n }\n\n const cached = this._cache.get(peer.id)\n\n if (cached && this.options.updatesWriteInterval !== 0) {\n const oldAccessHash = (cached.peer as Extract<tl.TypeInputPeer, { accessHash?: unknown }>).accessHash\n\n if (oldAccessHash?.eq(accessHash)) {\n // when entity is cached and hash is the same, an update query is needed,\n // since some field in the full entity might have changed, or the username/phone\n //\n // to avoid too many DB calls, and since these updates are pretty common,\n // they are grouped and applied in batches no more than once every 30sec (or user-defined).\n //\n // until then, they are either served from in-memory cache,\n // or an older version is fetched from DB\n\n this._pendingWrites.set(peer.id, dto)\n cached.complete = peer\n\n return\n }\n }\n\n // entity is not cached in memory, or the access hash has changed\n // we need to update it in the DB asap, and also update the in-memory cache\n await this._peers.store(dto)\n this._cache.set(peer.id, {\n peer: getInputPeer(dto),\n complete: peer,\n })\n\n // todo: if (!this._cachedSelf?.isBot) {\n // we have the full peer, we no longer need the references\n // we can skip this in the other branch, since in that case it would've already been deleted\n await this._refs.deleteByPeer(peer.id)\n }\n\n private _returnCaching(id: number, dto: IPeersRepository.PeerInfo) {\n const peer = getInputPeer(dto)\n const complete = this._deserializeTl(dto.complete)\n\n this._cache.set(id, {\n peer,\n complete: complete as tl.TypeUser | tl.TypeChat | null,\n })\n\n return peer\n }\n\n async getById(id: number, allowRefs = true): Promise<tl.TypeInputPeer | null> {\n const cached = this._cache.get(id)\n if (cached) return cached.peer\n\n const dto = await this._peers.getById(id)\n\n if (dto) {\n return this._returnCaching(id, dto)\n }\n\n if (allowRefs) {\n const ref = await this._refs.getForPeer(id)\n if (!ref) return null\n\n const [chatId, msgId] = ref\n const chat = await this.getById(chatId, false)\n if (!chat) return null\n\n if (id > 0) {\n // user\n return {\n _: 'inputPeerUserFromMessage',\n peer: chat,\n msgId,\n userId: id,\n }\n }\n\n // channel\n return {\n _: 'inputPeerChannelFromMessage',\n peer: chat,\n msgId,\n channelId: toggleChannelIdMark(id),\n }\n }\n\n return null\n }\n\n async getByPhone(phone: string): Promise<tl.TypeInputPeer | null> {\n const dto = await this._peers.getByPhone(phone)\n if (!dto) return null\n\n return this._returnCaching(dto.id, dto)\n }\n\n async getByUsername(username: string): Promise<tl.TypeInputPeer | null> {\n const dto = await this._peers.getByUsername(username.toLowerCase())\n if (!dto) return null\n\n if (Date.now() - dto.updated > USERNAME_TTL) {\n // username is too old, we can't trust it. ask the client to re-fetch it\n return null\n }\n\n return this._returnCaching(dto.id, dto)\n }\n\n async getCompleteById(id: number): Promise<tl.TypeUser | tl.TypeChat | null> {\n const cached = this._cache.get(id)\n if (cached) return cached.complete\n\n const dto = await this._peers.getById(id)\n if (!dto) return null\n\n const cacheItem: CacheItem = {\n peer: getInputPeer(dto),\n complete: this._deserializeTl(dto.complete) as tl.TypeUser | tl.TypeChat | null,\n }\n this._cache.set(id, cacheItem)\n\n return cacheItem.complete\n }\n}\n"]}
|
|
@@ -6,6 +6,9 @@ const lru_map_js_1 = require("../../../utils/lru-map.js");
|
|
|
6
6
|
// todo: move inside updates manager?
|
|
7
7
|
// todo: chatId -> channelId
|
|
8
8
|
class RefMessagesService extends base_js_1.BaseService {
|
|
9
|
+
options;
|
|
10
|
+
_refs;
|
|
11
|
+
_cache;
|
|
9
12
|
constructor(options, _refs, common) {
|
|
10
13
|
super(common);
|
|
11
14
|
this.options = options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ref-messages.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/ref-messages.ts"],"names":[],"mappings":";;;AAAA,8DAA8E;AAC9E,0DAAkD;AAOlD,qCAAqC;AACrC,4BAA4B;AAE5B,MAAa,kBAAmB,SAAQ,qBAAW;
|
|
1
|
+
{"version":3,"file":"ref-messages.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/ref-messages.ts"],"names":[],"mappings":";;;AAAA,8DAA8E;AAC9E,0DAAkD;AAOlD,qCAAqC;AACrC,4BAA4B;AAE5B,MAAa,kBAAmB,SAAQ,qBAAW;IAIlC;IACA;IAJL,MAAM,CAAkC;IAEhD,YACa,OAAkC,EAClC,KAAmC,EAC5C,MAAsB;QAEtB,KAAK,CAAC,MAAM,CAAC,CAAA;QAJJ,YAAO,GAAP,OAAO,CAA2B;QAClC,UAAK,GAAL,KAAK,CAA8B;QAK5C,IAAI,CAAC,MAAM,GAAG,IAAI,mBAAM,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,MAAc,EAAE,KAAa;QACrD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;QAEzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,GAAG;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAErC,OAAO,GAAG,CAAA;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAgB;QACzC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACvC,8CAA8C;QAC9C,yCAAyC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;CACJ;AAvCD,gDAuCC","sourcesContent":["import { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { LruMap } from '../../../utils/lru-map.js'\nimport { IReferenceMessagesRepository } from '../repository/ref-messages.js'\n\nexport interface RefMessagesServiceOptions {\n cacheSize?: number\n}\n\n// todo: move inside updates manager?\n// todo: chatId -> channelId\n\nexport class RefMessagesService extends BaseService {\n private _cache: LruMap<number, [number, number]>\n\n constructor(\n readonly options: RefMessagesServiceOptions,\n readonly _refs: IReferenceMessagesRepository,\n common: ServiceOptions,\n ) {\n super(common)\n\n this._cache = new LruMap(options.cacheSize ?? 1000)\n }\n\n async store(peerId: number, chatId: number, msgId: number): Promise<void> {\n await this._refs.store(peerId, chatId, msgId)\n this._cache.set(peerId, [chatId, msgId])\n }\n\n async getForPeer(peerId: number): Promise<[number, number] | null> {\n const cached = this._cache.get(peerId)\n if (cached) return cached\n\n const ref = await this._refs.getByPeer(peerId)\n if (ref) this._cache.set(peerId, ref)\n\n return ref\n }\n\n async delete(chatId: number, msgIds: number[]): Promise<void> {\n await this._refs.delete(chatId, msgIds)\n // it's too expensive to invalidate the cache,\n // so we just clear it completely instead\n this._cache.clear()\n }\n\n async deleteByPeer(peerId: number): Promise<void> {\n await this._refs.deleteByPeer(peerId)\n this._cache.delete(peerId)\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/updates.ts"],"names":[],"mappings":";;;AACA,8DAA8E;AAC9E,oEAAmE;AAEnE,MAAM,MAAM,GAAG,aAAa,CAAA;AAC5B,MAAM,MAAM,GAAG,aAAa,CAAA;AAC5B,MAAM,OAAO,GAAG,cAAc,CAAA;AAC9B,MAAM,MAAM,GAAG,aAAa,CAAA;AAC5B,MAAM,iBAAiB,GAAG,kBAAkB,CAAA;AAE5C,qCAAqC;AAErC,MAAa,mBAAoB,SAAQ,qBAAW;
|
|
1
|
+
{"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../../../src/highlevel/storage/service/updates.ts"],"names":[],"mappings":"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","sourcesContent":["import { IKeyValueRepository } from '../../../storage/repository/key-value.js'\nimport { BaseService, ServiceOptions } from '../../../storage/service/base.js'\nimport { dataViewFromBuffer } from '../../../utils/buffer-utils.js'\n\nconst KV_PTS = 'updates_pts'\nconst KV_QTS = 'updates_qts'\nconst KV_DATE = 'updates_date'\nconst KV_SEQ = 'updates_seq'\nconst KV_CHANNEL_PREFIX = 'updates_channel:'\n\n// todo: move inside updates manager?\n\nexport class UpdatesStateService extends BaseService {\n constructor(\n readonly _kv: IKeyValueRepository,\n opts: ServiceOptions,\n ) {\n super(opts)\n }\n\n private async _getInt(key: string): Promise<number | null> {\n const val = await this._kv.get(key)\n if (!val) return null\n\n return dataViewFromBuffer(val).getInt32(0, true)\n }\n\n private async _setInt(key: string, val: number): Promise<void> {\n const buf = new Uint8Array(4)\n dataViewFromBuffer(buf).setInt32(0, val, true)\n\n await this._kv.set(key, buf)\n }\n\n async getState(): Promise<[number, number, number, number] | null> {\n const [pts, qts, date, seq] = await Promise.all([\n this._getInt(KV_PTS),\n this._getInt(KV_QTS),\n this._getInt(KV_DATE),\n this._getInt(KV_SEQ),\n ])\n\n if (pts === null || qts === null || date === null || seq === null) {\n return null\n }\n\n return [pts, qts, date, seq]\n }\n\n async setPts(pts: number): Promise<void> {\n await this._setInt(KV_PTS, pts)\n }\n\n async setQts(qts: number): Promise<void> {\n await this._setInt(KV_QTS, qts)\n }\n\n async setDate(date: number): Promise<void> {\n await this._setInt(KV_DATE, date)\n }\n\n async setSeq(seq: number): Promise<void> {\n await this._setInt(KV_SEQ, seq)\n }\n\n async getChannelPts(channelId: number): Promise<number | null> {\n const val = await this._kv.get(KV_CHANNEL_PREFIX + channelId)\n if (!val) return null\n\n return dataViewFromBuffer(val).getUint32(0, true)\n }\n\n async setChannelPts(channelId: number, pts: number): Promise<void> {\n const buf = new Uint8Array(4)\n dataViewFromBuffer(buf).setUint32(0, pts, true)\n\n await this._kv.set(KV_CHANNEL_PREFIX + channelId, buf)\n }\n\n async setManyChannelPts(cpts: Map<number, number>): Promise<void> {\n const promises: Promise<void>[] = []\n\n for (const [channelId, pts] of cpts.entries()) {\n promises.push(this.setChannelPts(channelId, pts))\n }\n\n await Promise.all(promises)\n }\n}\n"]}
|
|
@@ -11,12 +11,12 @@ interface TelegramStorageManagerOptions {
|
|
|
11
11
|
export declare class TelegramStorageManager {
|
|
12
12
|
private mt;
|
|
13
13
|
private options;
|
|
14
|
-
constructor(mt: StorageManager, options: TelegramStorageManagerOptions & TelegramStorageManagerExtraOptions);
|
|
15
14
|
private provider;
|
|
16
15
|
readonly updates: UpdatesStateService;
|
|
17
16
|
readonly self: PublicPart<CurrentUserService>;
|
|
18
17
|
readonly refMsgs: RefMessagesService;
|
|
19
18
|
readonly peers: PublicPart<PeersService>;
|
|
19
|
+
constructor(mt: StorageManager, options: TelegramStorageManagerOptions & TelegramStorageManagerExtraOptions);
|
|
20
20
|
clear(withAuthKeys?: boolean): Promise<void>;
|
|
21
21
|
}
|
|
22
22
|
export {};
|
|
@@ -6,14 +6,27 @@ const peers_js_1 = require("./service/peers.js");
|
|
|
6
6
|
const ref_messages_js_1 = require("./service/ref-messages.js");
|
|
7
7
|
const updates_js_1 = require("./service/updates.js");
|
|
8
8
|
class TelegramStorageManager {
|
|
9
|
+
mt;
|
|
10
|
+
options;
|
|
11
|
+
provider;
|
|
12
|
+
updates;
|
|
13
|
+
self;
|
|
14
|
+
refMsgs;
|
|
15
|
+
peers;
|
|
9
16
|
constructor(mt, options) {
|
|
10
17
|
this.mt = mt;
|
|
11
18
|
this.options = options;
|
|
12
19
|
this.provider = this.options.provider;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
20
|
+
const serviceOptions = {
|
|
21
|
+
driver: this.mt.driver,
|
|
22
|
+
readerMap: this.mt.options.readerMap,
|
|
23
|
+
writerMap: this.mt.options.writerMap,
|
|
24
|
+
log: this.mt.log,
|
|
25
|
+
};
|
|
26
|
+
this.updates = new updates_js_1.UpdatesStateService(this.provider.kv, serviceOptions);
|
|
27
|
+
this.self = new current_user_js_1.CurrentUserService(this.provider.kv, serviceOptions);
|
|
28
|
+
this.refMsgs = new ref_messages_js_1.RefMessagesService(this.options.refMessages ?? {}, this.provider.refMessages, serviceOptions);
|
|
29
|
+
this.peers = new peers_js_1.PeersService(this.options.peers ?? {}, this.provider.peers, this.refMsgs, serviceOptions);
|
|
17
30
|
}
|
|
18
31
|
async clear(withAuthKeys = false) {
|
|
19
32
|
await this.provider.peers.deleteAll();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../src/highlevel/storage/storage.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../src/highlevel/storage/storage.ts"],"names":[],"mappings":";;;AAIA,+DAA8D;AAC9D,iDAAsE;AACtE,+DAAyF;AACzF,qDAA0D;AAY1D,MAAa,sBAAsB;IASnB;IACA;IATJ,QAAQ,CAAA;IAEP,OAAO,CAAA;IACP,IAAI,CAAgC;IACpC,OAAO,CAAA;IACP,KAAK,CAA0B;IAExC,YACY,EAAkB,EAClB,OAA2E;QAD3E,OAAE,GAAF,EAAE,CAAgB;QAClB,YAAO,GAAP,OAAO,CAAoE;QAEnF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;QAErC,MAAM,cAAc,GAAmB;YACnC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM;YACtB,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS;YACpC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS;YACpC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG;SACnB,CAAA;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,gCAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,CAAA;QACxE,IAAI,CAAC,IAAI,GAAG,IAAI,oCAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,CAAA;QACpE,IAAI,CAAC,OAAO,GAAG,IAAI,oCAAkB,CACjC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAC9B,IAAI,CAAC,QAAQ,CAAC,WAAW,EACzB,cAAc,CACjB,CAAA;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,uBAAY,CACzB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EACnB,IAAI,CAAC,OAAO,EACZ,cAAc,CACjB,CAAA;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK;QAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;QACrC,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,CAAA;QAC3C,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACrC,CAAC;CACJ;AAzCD,wDAyCC","sourcesContent":["import { ServiceOptions } from '../../storage/service/base.js'\nimport { StorageManager } from '../../storage/storage.js'\nimport { PublicPart } from '../../types/utils.js'\nimport { ITelegramStorageProvider } from './provider.js'\nimport { CurrentUserService } from './service/current-user.js'\nimport { PeersService, PeersServiceOptions } from './service/peers.js'\nimport { RefMessagesService, RefMessagesServiceOptions } from './service/ref-messages.js'\nimport { UpdatesStateService } from './service/updates.js'\n\ninterface TelegramStorageManagerOptions {\n provider: ITelegramStorageProvider\n}\n\n/** @internal */\nexport interface TelegramStorageManagerExtraOptions {\n refMessages?: RefMessagesServiceOptions\n peers?: PeersServiceOptions\n}\n\nexport class TelegramStorageManager {\n private provider\n\n readonly updates\n readonly self: PublicPart<CurrentUserService>\n readonly refMsgs\n readonly peers: PublicPart<PeersService>\n\n constructor(\n private mt: StorageManager,\n private options: TelegramStorageManagerOptions & TelegramStorageManagerExtraOptions,\n ) {\n this.provider = this.options.provider\n\n const serviceOptions: ServiceOptions = {\n driver: this.mt.driver,\n readerMap: this.mt.options.readerMap,\n writerMap: this.mt.options.writerMap,\n log: this.mt.log,\n }\n\n this.updates = new UpdatesStateService(this.provider.kv, serviceOptions)\n this.self = new CurrentUserService(this.provider.kv, serviceOptions)\n this.refMsgs = new RefMessagesService(\n this.options.refMessages ?? {},\n this.provider.refMessages,\n serviceOptions,\n )\n this.peers = new PeersService(\n this.options.peers ?? {},\n this.provider.peers,\n this.refMsgs,\n serviceOptions,\n )\n }\n\n async clear(withAuthKeys = false) {\n await this.provider.peers.deleteAll()\n await this.provider.refMessages.deleteAll()\n await this.mt.clear(withAuthKeys)\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sent-code.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/auth/sent-code.ts"],"names":[],"mappings":";;;AAEA,mDAAsD;AAEtD,MAAM,WAAW,GAAgE;IAC7E,sBAAsB,EAAE,KAAK;IAC7B,uBAAuB,EAAE,MAAM;IAC/B,4BAA4B,EAAE,YAAY;IAC1C,sBAAsB,EAAE,KAAK;IAC7B,6BAA6B,EAAE,aAAa;IAC5C,4BAA4B,EAAE,OAAO;IACrC,qCAAqC,EAAE,gBAAgB;IACvD,8BAA8B,EAAE,UAAU;IAC1C,8BAA8B,EAAE,UAAU;CAC7C,CAAA;AAED,MAAM,WAAW,GAA4D;IACzE,mBAAmB,EAAE,MAAM;IAC3B,wBAAwB,EAAE,YAAY;IACtC,kBAAkB,EAAE,KAAK;IACzB,yBAAyB,EAAE,aAAa;IACxC,0BAA0B,EAAE,UAAU;CACzC,CAAA;AAmCD;;GAEG;AACH,MAAa,QAAQ;
|
|
1
|
+
{"version":3,"file":"sent-code.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/auth/sent-code.ts"],"names":[],"mappings":";;;AAEA,mDAAsD;AAEtD,MAAM,WAAW,GAAgE;IAC7E,sBAAsB,EAAE,KAAK;IAC7B,uBAAuB,EAAE,MAAM;IAC/B,4BAA4B,EAAE,YAAY;IAC1C,sBAAsB,EAAE,KAAK;IAC7B,6BAA6B,EAAE,aAAa;IAC5C,4BAA4B,EAAE,OAAO;IACrC,qCAAqC,EAAE,gBAAgB;IACvD,8BAA8B,EAAE,UAAU;IAC1C,8BAA8B,EAAE,UAAU;CAC7C,CAAA;AAED,MAAM,WAAW,GAA4D;IACzE,mBAAmB,EAAE,MAAM;IAC3B,wBAAwB,EAAE,YAAY;IACtC,kBAAkB,EAAE,KAAK;IACzB,yBAAyB,EAAE,aAAa;IACxC,0BAA0B,EAAE,UAAU;CACzC,CAAA;AAmCD;;GAEG;AACH,MAAa,QAAQ;IACI;IAArB,YAAqB,GAAwB;QAAxB,QAAG,GAAH,GAAG,CAAqB;IAAG,CAAC;IAEjD;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IAED;;;OAGG;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IACxE,CAAC;IAED;;;OAGG;IACH,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACN,OAAO,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC;CACJ;AAvCD,4BAuCC;AAED,IAAA,0BAAe,EAAC,QAAQ,CAAC,CAAA","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { makeInspectable } from '../../utils/index.js'\n\nconst sentCodeMap: Record<tl.auth.TypeSentCodeType['_'], SentCodeDeliveryType> = {\n 'auth.sentCodeTypeApp': 'app',\n 'auth.sentCodeTypeCall': 'call',\n 'auth.sentCodeTypeFlashCall': 'flash_call',\n 'auth.sentCodeTypeSms': 'sms',\n 'auth.sentCodeTypeMissedCall': 'missed_call',\n 'auth.sentCodeTypeEmailCode': 'email',\n 'auth.sentCodeTypeSetUpEmailRequired': 'email_required',\n 'auth.sentCodeTypeFragmentSms': 'fragment',\n 'auth.sentCodeTypeFirebaseSms': 'firebase',\n}\n\nconst nextCodeMap: Record<tl.auth.TypeCodeType['_'], NextCodeDeliveryType> = {\n 'auth.codeTypeCall': 'call',\n 'auth.codeTypeFlashCall': 'flash_call',\n 'auth.codeTypeSms': 'sms',\n 'auth.codeTypeMissedCall': 'missed_call',\n 'auth.codeTypeFragmentSms': 'fragment',\n}\n\n/**\n * Type describing code delivery type.\n * - `app`: Code is delivered via Telegram account\n * - `sms`: Code is sent via SMS\n * - `call`: Code is sent via voice call\n * - `flash_call`: Code is the last 5 digits of the caller's phone number\n * - `missed_call`: Code is the last 5 digits of the caller's phone number\n * - `email`: Code is sent via Email\n * - `email_required`: Code sending via email setup is required\n * - `fragment`: Code is sent via Fragment anonymous numbers\n * - `firebase`: Code is sent via Firebase\n * - `Success`: Code is not needed, you're already logged in (only for future auth tokens)\n */\nexport type SentCodeDeliveryType =\n | 'app'\n | 'sms'\n | 'call'\n | 'flash_call'\n | 'missed_call'\n | 'email'\n | 'email_required'\n | 'fragment'\n | 'firebase'\n | 'success'\n\n/**\n * Type describing next code delivery type.\n * See {@link DeliveryType} for information on values.\n *\n * Additionally, can be `none` if no more types are available\n */\nexport type NextCodeDeliveryType = Exclude<SentCodeDeliveryType, 'app'> | 'none'\n\n/**\n * Information about sent confirmation code\n */\nexport class SentCode {\n constructor(readonly raw: tl.auth.RawSentCode) {}\n\n /**\n * Type of currently sent confirmation code\n */\n get type(): SentCodeDeliveryType {\n return sentCodeMap[this.raw.type._]\n }\n\n /**\n * Type of the confirmation code that will be sent\n * if you call {@link TelegramClient.resendCode}.\n */\n get nextType(): NextCodeDeliveryType {\n return this.raw.nextType ? nextCodeMap[this.raw.nextType._] : 'none'\n }\n\n /**\n * Confirmation code identifier used for the next authorization steps\n * (like {@link TelegramClient.signIn} and {@link TelegramClient.signUp})\n */\n get phoneCodeHash(): string {\n return this.raw.phoneCodeHash\n }\n\n /**\n * Delay in seconds to wait before calling {@link TelegramClient.resendCode}\n */\n get timeout(): number {\n return this.raw.timeout ?? 0\n }\n\n /**\n * Length of the code (0 for flash calls)\n */\n get length(): number {\n return 'length' in this.raw.type ? this.raw.type.length : 0\n }\n}\n\nmakeInspectable(SentCode)\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game-high-score.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/bots/game-high-score.ts"],"names":[],"mappings":";;;AAEA,mDAAsD;AACtD,uDAAuD;AAEvD,8CAAuC;AAEvC;;GAEG;AACH,MAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"game-high-score.js","sourceRoot":"","sources":["../../../../../src/highlevel/types/bots/game-high-score.ts"],"names":[],"mappings":";;;AAEA,mDAAsD;AACtD,uDAAuD;AAEvD,8CAAuC;AAEvC;;GAEG;AACH,MAAa,aAAa;IAET;IACA;IAFb,YACa,GAAoB,EACpB,MAAkB;QADlB,QAAG,GAAH,GAAG,CAAiB;QACpB,WAAM,GAAN,MAAM,CAAY;IAC5B,CAAC;IAEJ;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,cAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACtD,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAA;IACzB,CAAC;CACJ;AA1BD,sCA0BC;AAED,IAAA,2BAAc,EAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AACvC,IAAA,0BAAe,EAAC,aAAa,CAAC,CAAA","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { makeInspectable } from '../../utils/index.js'\nimport { memoizeGetters } from '../../utils/memoize.js'\nimport { PeersIndex } from '../peers/peers-index.js'\nimport { User } from '../peers/user.js'\n\n/**\n * Game high score\n */\nexport class GameHighScore {\n constructor(\n readonly raw: tl.RawHighScore,\n readonly _peers: PeersIndex,\n ) {}\n\n /**\n * User who has scored this score\n */\n get user(): User {\n return new User(this._peers.user(this.raw.userId))\n }\n\n /**\n * Position in the records list\n */\n get position(): number {\n return this.raw.pos\n }\n\n /**\n * Score\n */\n get score(): number {\n return this.raw.score\n }\n}\n\nmemoizeGetters(GameHighScore, ['user'])\nmakeInspectable(GameHighScore)\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../../../../../../src/highlevel/types/bots/inline-message/factories.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { assertNever } from '../../../../types/utils.js'\nimport { ITelegramClient } from '../../../client.types.js'\nimport { _normalizeInputText } from '../../../methods/misc/normalize-text.js'\nimport { InputText } from '../../../types/misc/entities.js'\nimport { InputMediaGeoLive } from '../../media/index.js'\nimport { BotKeyboard } from '../keyboards/index.js'\nimport {\n InputInlineMessage,\n InputInlineMessageContact,\n InputInlineMessageGame,\n InputInlineMessageGeo,\n InputInlineMessageGeoLive,\n InputInlineMessageMedia,\n InputInlineMessageText,\n InputInlineMessageVenue,\n InputInlineMessageWebpage,\n} from './types.js'\n\n/**\n * Create a text inline message\n *\n * @param text Message text\n * @param params\n */\nexport function text(\n text: InputText,\n params: Omit<InputInlineMessageText, 'type' | 'text'> = {},\n): InputInlineMessageText {\n const ret = params as tl.Mutable<InputInlineMessageText>\n ret.type = 'text'\n ret.text = text\n\n return ret\n}\n\n/**\n * Create an inline message containing\n * media from the result\n */\nexport function media(params: Omit<InputInlineMessageMedia, 'type'> = {}): InputInlineMessageMedia {\n const ret = params as tl.Mutable<InputInlineMessageMedia>\n ret.type = 'media'\n\n return ret\n}\n\n/**\n * Create an inline message containing a geolocation\n *\n * @param params Additional parameters\n */\nexport function geo(params: Omit<InputInlineMessageGeo, 'type'>): InputInlineMessageGeo {\n const ret = params as tl.Mutable<InputInlineMessageGeo>\n ret.type = 'geo'\n\n return ret\n}\n\n/**\n * Create an inline message containing a live geolocation\n *\n * @param params Additional parameters\n */\nexport function geoLive(params: Omit<InputInlineMessageGeoLive, 'type'>): InputInlineMessageGeoLive {\n const ret = params as tl.Mutable<InputInlineMessageGeoLive>\n ret.type = 'geo_live'\n\n return ret\n}\n\n/**\n * Create an inline message containing a venue\n */\nexport function venue(params: Omit<InputInlineMessageVenue, 'type'>): InputInlineMessageVenue {\n const ret = params as tl.Mutable<InputInlineMessageVenue>\n ret.type = 'venue'\n\n return ret\n}\n\n/**\n * Create an inline message containing a game\n * from the inline result\n */\nexport function game(params: Omit<InputInlineMessageGame, 'type'>): InputInlineMessageGame {\n const ret = params as tl.Mutable<InputInlineMessageGame>\n ret.type = 'game'\n\n return ret\n}\n\n/**\n * Create an inline message containing a contact\n */\nexport function contact(params: Omit<InputInlineMessageContact, 'type'>): InputInlineMessageContact {\n const ret = params as tl.Mutable<InputInlineMessageContact>\n ret.type = 'contact'\n\n return ret\n}\n\n/**\n * Create an inline message containing a webpage\n */\nexport function webpage(params: Omit<InputInlineMessageWebpage, 'type'>): InputInlineMessageWebpage {\n const ret = params as tl.Mutable<InputInlineMessageWebpage>\n ret.type = 'webpage'\n\n return ret\n}\n\n/** @internal */\nexport async function _convertToTl(\n client: ITelegramClient,\n obj: InputInlineMessage,\n): Promise<tl.TypeInputBotInlineMessage> {\n switch (obj.type) {\n case 'text': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageText',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n }\n }\n case 'media': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageMediaAuto',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n }\n }\n case 'geo':\n case 'geo_live':\n return {\n _: 'inputBotInlineMessageMediaGeo',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n // fields will be `undefined` if this is a `geo`\n heading: (obj as InputMediaGeoLive).heading,\n period: (obj as InputMediaGeoLive).period,\n proximityNotificationRadius: (obj as InputMediaGeoLive).proximityNotificationRadius,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'venue':\n return {\n _: 'inputBotInlineMessageMediaVenue',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n title: obj.title,\n address: obj.address,\n provider: obj.source?.provider ?? '',\n venueId: obj.source?.id ?? '',\n venueType: obj.source?.type ?? '',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'game':\n return {\n _: 'inputBotInlineMessageGame',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'contact':\n return {\n _: 'inputBotInlineMessageMediaContact',\n phoneNumber: obj.phone,\n firstName: obj.firstName,\n lastName: obj.lastName ?? '',\n vcard: obj.vcard ?? '',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'webpage': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageMediaWebPage',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n forceLargeMedia: obj.size === 'large',\n forceSmallMedia: obj.size === 'small',\n optional: !obj.required,\n url: obj.url,\n }\n }\n default:\n assertNever(obj)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../../../../../../src/highlevel/types/bots/inline-message/factories.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { assertNever } from '../../../../types/utils.js'\nimport { ITelegramClient } from '../../../client.types.js'\nimport { _normalizeInputText } from '../../../methods/misc/normalize-text.js'\nimport { InputText } from '../../../types/misc/entities.js'\nimport { InputMediaGeoLive } from '../../media/index.js'\nimport { BotKeyboard } from '../keyboards/index.js'\nimport {\n InputInlineMessage,\n InputInlineMessageContact,\n InputInlineMessageGame,\n InputInlineMessageGeo,\n InputInlineMessageGeoLive,\n InputInlineMessageMedia,\n InputInlineMessageText,\n InputInlineMessageVenue,\n InputInlineMessageWebpage,\n} from './types.js'\n\n/**\n * Create a text inline message\n *\n * @param text Message text\n * @param params\n */\nexport function text(\n text: InputText,\n params: Omit<InputInlineMessageText, 'type' | 'text'> = {},\n): InputInlineMessageText {\n const ret = params as tl.Mutable<InputInlineMessageText>\n ret.type = 'text'\n ret.text = text\n\n return ret\n}\n\n/**\n * Create an inline message containing\n * media from the result\n */\nexport function media(params: Omit<InputInlineMessageMedia, 'type'> = {}): InputInlineMessageMedia {\n const ret = params as tl.Mutable<InputInlineMessageMedia>\n ret.type = 'media'\n\n return ret\n}\n\n/**\n * Create an inline message containing a geolocation\n *\n * @param params Additional parameters\n */\nexport function geo(params: Omit<InputInlineMessageGeo, 'type'>): InputInlineMessageGeo {\n const ret = params as tl.Mutable<InputInlineMessageGeo>\n ret.type = 'geo'\n\n return ret\n}\n\n/**\n * Create an inline message containing a live geolocation\n *\n * @param params Additional parameters\n */\nexport function geoLive(params: Omit<InputInlineMessageGeoLive, 'type'>): InputInlineMessageGeoLive {\n const ret = params as tl.Mutable<InputInlineMessageGeoLive>\n ret.type = 'geo_live'\n\n return ret\n}\n\n/**\n * Create an inline message containing a venue\n */\nexport function venue(params: Omit<InputInlineMessageVenue, 'type'>): InputInlineMessageVenue {\n const ret = params as tl.Mutable<InputInlineMessageVenue>\n ret.type = 'venue'\n\n return ret\n}\n\n/**\n * Create an inline message containing a game\n * from the inline result\n */\nexport function game(params: Omit<InputInlineMessageGame, 'type'>): InputInlineMessageGame {\n const ret = params as tl.Mutable<InputInlineMessageGame>\n ret.type = 'game'\n\n return ret\n}\n\n/**\n * Create an inline message containing a contact\n */\nexport function contact(params: Omit<InputInlineMessageContact, 'type'>): InputInlineMessageContact {\n const ret = params as tl.Mutable<InputInlineMessageContact>\n ret.type = 'contact'\n\n return ret\n}\n\n/**\n * Create an inline message containing a webpage\n */\nexport function webpage(params: Omit<InputInlineMessageWebpage, 'type'>): InputInlineMessageWebpage {\n const ret = params as tl.Mutable<InputInlineMessageWebpage>\n ret.type = 'webpage'\n\n return ret\n}\n\n/** @internal */\nexport async function _convertToTl(\n client: ITelegramClient,\n obj: InputInlineMessage,\n): Promise<tl.TypeInputBotInlineMessage> {\n switch (obj.type) {\n case 'text': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageText',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n }\n }\n case 'media': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageMediaAuto',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n }\n }\n case 'geo':\n case 'geo_live':\n return {\n _: 'inputBotInlineMessageMediaGeo',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n // fields will be `undefined` if this is a `geo`\n heading: (obj as InputMediaGeoLive).heading,\n period: (obj as InputMediaGeoLive).period,\n proximityNotificationRadius: (obj as InputMediaGeoLive).proximityNotificationRadius,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'venue':\n return {\n _: 'inputBotInlineMessageMediaVenue',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n title: obj.title,\n address: obj.address,\n provider: obj.source?.provider ?? '',\n venueId: obj.source?.id ?? '',\n venueType: obj.source?.type ?? '',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'game':\n return {\n _: 'inputBotInlineMessageGame',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'contact':\n return {\n _: 'inputBotInlineMessageMediaContact',\n phoneNumber: obj.phone,\n firstName: obj.firstName,\n lastName: obj.lastName ?? '',\n vcard: obj.vcard ?? '',\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n }\n case 'webpage': {\n const [message, entities] = await _normalizeInputText(client, obj.text)\n\n return {\n _: 'inputBotInlineMessageMediaWebPage',\n message,\n entities,\n replyMarkup: BotKeyboard._convertToTl(obj.replyMarkup),\n invertMedia: obj.invertMedia,\n forceLargeMedia: obj.size === 'large',\n forceSmallMedia: obj.size === 'small',\n optional: !obj.required,\n url: obj.url,\n }\n }\n default:\n assertNever(obj)\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../../../../../../src/highlevel/types/bots/inline-result/factories.ts"],"names":[],"mappings":";;;AAEA,2DAA6D;AAE7D,0EAA6F;AAC7F,gEAA8D;AAC9D,yDAA6D;AAiB7D;;;;;GAKG;AACH,SAAgB,OAAO,CAAC,EAAU,EAAE,MAAqD;IACrF,MAAM,GAAG,GAAG,MAA8C,CAAA;IAC1D,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,GAAG,SAAS,CAAA;IAEpB,OAAO,GAAG,CAAA;AACd,CAAC;AAND,0BAMC;AAED;;;;;;GAMG;AACH,SAAgB,GAAG,CACf,EAAU,EACV,KAA4D,EAC5D,SAA8D,EAAE;IAEhE,MAAM,GAAG,GAAG,MAA0C,CAAA;IACtD,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,GAAG,KAAK,CAAA;IAChB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,GAAG,CAAA;AACd,CAAC;AAXD,kBAWC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CACjB,EAAU,EACV,KAA4D,EAC5D,MAA6D;IAE7D,MAAM,GAAG,GAAG,MAA4C,CAAA;IACxD,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,GAAG,OAAO,CAAA;IAClB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,GAAG,CAAA;AACd,CAAC;AAXD,sBAWC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CACjB,EAAU,EACV,KAA4D,EAC5D,MAA6D;IAE7D,MAAM,GAAG,GAAG,MAA4C,CAAA;IACxD,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,GAAG,OAAO,CAAA;IAClB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,GAAG,CAAA;AACd,CAAC;AAXD,sBAWC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CACjB,EAAU,EACV,KAA4D,EAC5D,MAA6D;IAE7D,MAAM,GAAG,GAAG,MAA4C,CAAA;IACxD,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,GAAG,OAAO,CAAA;IAClB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,GAAG,CAAA;AACd,CAAC;AAXD,sBAWC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CACjB,EAAU,EACV,KAAyD,EACzD,SAAgE,EAAE;IAElE,MAAM,GAAG,GAAG,MAA4C,CAAA;IACxD,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,GAAG,OAAO,CAAA;IAClB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,GAAG,CAAA;AACd,CAAC;AAXD,sBAWC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAC,EAAU,EAAE,KAAmC;IACnE,OAAO;QACH,EAAE;QACF,IAAI,EAAE,SAAS;QACf,KAAK;KACR,CAAA;AACL,CAAC;AAND,0BAMC;AAED;;;;;;;GAOG;AACH,SAAgB,IAAI,CAChB,EAAU,EACV,KAA4D,EAC5D,MAA4D;IAE5D,MAAM,GAAG,GAAG,MAA2C,CAAA;IACvD,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,GAAG,MAAM,CAAA;IACjB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,GAAG,CAAA;AACd,CAAC;AAXD,oBAWC;AAED;;;;;GAKG;AACH,SAAgB,GAAG,CAAC,EAAU,EAAE,MAAiD;IAC7E,MAAM,GAAG,GAAG,MAA0C,CAAA;IACtD,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,GAAG,KAAK,CAAA;IAEhB,OAAO,GAAG,CAAA;AACd,CAAC;AAND,kBAMC;AAED;;;;;GAKG;AACH,SAAgB,KAAK,CAAC,EAAU,EAAE,MAAmD;IACjF,MAAM,GAAG,GAAG,MAA4C,CAAA;IACxD,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,GAAG,OAAO,CAAA;IAElB,OAAO,GAAG,CAAA;AACd,CAAC;AAND,sBAMC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAC,EAAU,EAAE,MAAqD;IACrF,MAAM,GAAG,GAAG,MAA8C,CAAA;IAC1D,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,GAAG,SAAS,CAAA;IAEpB,OAAO,GAAG,CAAA;AACd,CAAC;AAND,0BAMC;AAED;;;;;;GAMG;AACH,SAAgB,IAAI,CAChB,EAAU,EACV,SAAiB,EACjB,SAAmE,EAAE;IAErE,MAAM,GAAG,GAAG,MAA2C,CAAA;IACvD,GAAG,CAAC,EAAE,GAAG,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,GAAG,MAAM,CAAA;IACjB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;IAEzB,OAAO,GAAG,CAAA;AACd,CAAC;AAXD,oBAWC;AAED,gBAAgB;AACT,KAAK,UAAU,YAAY,CAC9B,MAAuB,EACvB,OAA4B;IAE5B,MAAM,cAAc,GAAG,CAAC,GAAsB,EAAE,QAAiB,EAAsC,EAAE;QACrG,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;YAC/F,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE;gBAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;oBACzB,OAAO,SAAS,CAAA;iBACnB;gBAED,OAAO;oBACH,CAAC,EAAE,kBAAkB;oBACrB,IAAI,EAAE,CAAC;oBACP,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,QAAS;oBAC3B,QAAQ,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,YAAY;oBACtF,UAAU,EAAE,EAAE;iBACjB,CAAA;aACJ;YAED,OAAO,GAAG,CAAC,KAAK,CAAA;SACnB;IACL,CAAC,CAAA;IAED,MAAM,KAAK,GAAkC,EAAE,CAAA;IAE/C,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,IAAI,aAAa,GAAG,KAAK,CAAA;IAEzB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACvB,QAAQ,GAAG,CAAC,IAAI,EAAE;YACd,KAAK,SAAS,CAAC,CAAC;gBACZ,aAAa,GAAG,IAAI,CAAA;gBAEpB,IAAI,WAAyC,CAAA;gBAE7C,IAAI,GAAG,CAAC,OAAO,EAAE;oBACb,WAAW,GAAG,MAAM,2BAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;iBACzE;qBAAM;oBACH,IAAI,OAAO,GAAG,GAAG,CAAC,KAAK,CAAA;oBACvB,MAAM,QAAQ,GAA2B;wBACrC;4BACI,CAAC,EAAE,mBAAmB;4BACtB,MAAM,EAAE,CAAC;4BACT,MAAM,EAAE,OAAO,CAAC,MAAM;yBACzB;qBACJ,CAAA;oBAED,IAAI,GAAG,CAAC,GAAG,EAAE;wBACT,QAAQ,CAAC,IAAI,CAAC;4BACV,CAAC,EAAE,sBAAsB;4BACzB,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,MAAM,EAAE,CAAC;4BACT,MAAM,EAAE,OAAO,CAAC,MAAM;yBACzB,CAAC,CAAA;qBACL;oBAED,IAAI,GAAG,CAAC,WAAW,EAAE;wBACjB,OAAO,IAAI,IAAI,GAAG,GAAG,CAAC,WAAW,CAAA;qBACpC;oBAED,WAAW,GAAG;wBACV,CAAC,EAAE,2BAA2B;wBAC9B,OAAO;wBACP,QAAQ;qBACX,CAAA;iBACJ;gBAED,KAAK,CAAC,IAAI,CAAC;oBACP,CAAC,EAAE,sBAAsB;oBACzB,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;oBACtC,OAAO,EACH,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;wBACpB;4BACI,CAAC,EAAE,kBAAkB;4BACrB,GAAG,EAAE,GAAG,CAAC,GAAG;4BACZ,QAAQ,EAAE,WAAW;4BACrB,IAAI,EAAE,CAAC;4BACP,UAAU,EAAE,EAAE;yBACjB,CAAC,CAAC;wBACH,SAAS;oBACjB,KAAK,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;oBACtE,WAAW;iBACd,CAAC,CAAA;gBACF,SAAQ;aACX;YACD,KAAK,MAAM,CAAC,CAAC;gBACT,IAAI,WAAyC,CAAA;gBAE7C,IAAI,GAAG,CAAC,OAAO,EAAE;oBACb,WAAW,GAAG,MAAM,2BAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;oBAEtE,IAAI,WAAW,CAAC,CAAC,KAAK,2BAA2B,EAAE;wBAC/C,MAAM,IAAI,2BAAe,CAAC,uDAAuD,CAAC,CAAA;qBACrF;iBACJ;qBAAM;oBACH,WAAW,GAAG;wBACV,CAAC,EAAE,2BAA2B;qBACjC,CAAA;iBACJ;gBAED,KAAK,CAAC,IAAI,CAAC;oBACP,CAAC,EAAE,0BAA0B;oBAC7B,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,WAAW;iBACd,CAAC,CAAA;gBACF,SAAQ;aACX;YACD,KAAK,KAAK,CAAC;YACX,KAAK,OAAO,CAAC;YACb,KAAK,SAAS;gBACV,SAAS,GAAG,IAAI,CAAA;gBAChB,MAAK;YACT,KAAK,OAAO,CAAC;YACb,KAAK,SAAS,CAAC;YACf,KAAK,OAAO;gBACR,aAAa,GAAG,IAAI,CAAA;SAC3B;QAED,IAAI,WAAyC,CAAA;QAE7C,IAAI,GAAG,CAAC,OAAO,EAAE;YACb,WAAW,GAAG,MAAM,2BAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;SACzE;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;YAC7B,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE;gBAC/B,WAAW,GAAG;oBACV,CAAC,EAAE,iCAAiC;oBACpC,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,QAAQ,EAAE;wBACN,CAAC,EAAE,eAAe;wBAClB,GAAG,EAAE,GAAG,CAAC,QAAQ;wBACjB,IAAI,EAAE,GAAG,CAAC,SAAS;qBACtB;oBACD,QAAQ,EAAE,EAAE;oBACZ,OAAO,EAAE,EAAE;oBACX,SAAS,EAAE,EAAE;iBAChB,CAAA;aACJ;iBAAM;gBACH,MAAM,IAAI,2BAAe,CAAC,wEAAwE,CAAC,CAAA;aACtG;SACJ;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC7E,WAAW,GAAG;gBACV,CAAC,EAAE,2BAA2B;gBAC9B,OAAO,EAAE,GAAG,CAAC,KAAK;aACrB,CAAA;SACJ;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE;YAC3B,WAAW,GAAG;gBACV,CAAC,EAAE,+BAA+B;gBAClC,QAAQ,EAAE;oBACN,CAAC,EAAE,eAAe;oBAClB,GAAG,EAAE,GAAG,CAAC,QAAQ;oBACjB,IAAI,EAAE,GAAG,CAAC,SAAS;iBACtB;aACJ,CAAA;SACJ;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;YAC/B,WAAW,GAAG;gBACV,CAAC,EAAE,mCAAmC;gBACtC,WAAW,EAAE,GAAG,CAAC,KAAK;gBACtB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE;gBAC5B,KAAK,EAAE,EAAE;aACZ,CAAA;SACJ;aAAM;YACH,WAAW,GAAG;gBACV,CAAC,EAAE,gCAAgC;gBACnC,OAAO,EAAE,EAAE;aACd,CAAA;SACJ;QAED,IAAI,KAAK,GAAmF,SAAS,CAAA;QAErG,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;YACtE,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE;gBAC/B,iBAAiB;gBACjB,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;oBACjC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;wBACxB,MAAM,IAAI,2BAAe,CAAC,4CAA4C,CAAC,CAAA;qBAC1E;oBAED,IAAI,IAAY,CAAA;oBAChB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;wBAAE,IAAI,GAAG,WAAW,CAAA;yBACvC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;wBAC3B,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,YAAY,CAAA;qBAClC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE;wBAC3B,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,WAAW,CAAA;qBACjC;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;wBAAE,IAAI,GAAG,WAAW,CAAA;yBAC9C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;wBAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;4BACX,MAAM,IAAI,2BAAe,CAAC,oDAAoD,CAAC,CAAA;yBAClF;wBAED,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;qBAClB;;wBAAM,IAAI,GAAG,YAAY,CAAA;oBAE1B,MAAM,UAAU,GAA+B,EAAE,CAAA;oBAEjD,IACI,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;wBACpE,GAAG,CAAC,KAAK;wBACT,GAAG,CAAC,MAAM,EACZ;wBACE,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE;4BACtC,UAAU,CAAC,IAAI,CAAC;gCACZ,CAAC,EAAE,wBAAwB;gCAC3B,CAAC,EAAE,GAAG,CAAC,KAAK;gCACZ,CAAC,EAAE,GAAG,CAAC,MAAM;gCACb,QAAQ,EAAE,GAAG,CAAC,QAAQ;6BACzB,CAAC,CAAA;yBACL;6BAAM;4BACH,UAAU,CAAC,IAAI,CAAC;gCACZ,CAAC,EAAE,4BAA4B;gCAC/B,CAAC,EAAE,GAAG,CAAC,KAAK;gCACZ,CAAC,EAAE,GAAG,CAAC,MAAM;6BAChB,CAAC,CAAA;yBACL;qBACJ;yBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;wBACrD,UAAU,CAAC,IAAI,CAAC;4BACZ,CAAC,EAAE,wBAAwB;4BAC3B,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,OAAO;4BAC3B,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC;4BAC3B,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;4BAC5C,SAAS,EAAE,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;yBACvD,CAAC,CAAA;qBACL;oBAED,UAAU,CAAC,IAAI,CAAC;wBACZ,CAAC,EAAE,2BAA2B;wBAC9B,QAAQ,EAAE,IAAA,+BAAe,EAAC,GAAG,CAAC,KAAK,CAAC;qBACvC,CAAC,CAAA;oBAEF,KAAK,GAAG;wBACJ,CAAC,EAAE,kBAAkB;wBACrB,GAAG,EAAE,GAAG,CAAC,KAAK;wBACd,QAAQ,EAAE,IAAI;wBACd,IAAI,EAAE,CAAC;wBACP,UAAU;qBACb,CAAA;iBACJ;qBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;oBAC7B,KAAK,GAAG,IAAA,uCAAkB,EAAC,GAAG,CAAC,KAAK,CAAC,CAAA;iBACxC;qBAAM;oBACH,KAAK,GAAG,IAAA,0CAAqB,EAAC,GAAG,CAAC,KAAK,CAAC,CAAA;iBAC3C;aACJ;iBAAM;gBACH,KAAK,GAAG,GAAG,CAAC,KAAK,CAAA;aACpB;SACJ;QAED,IAAI,KAAK,GAAuB,SAAS,CAAA;QACzC,IAAI,WAAW,GAAuB,SAAS,CAAA;QAE/C,kCAAkC;QAClC,mDAAmD;QACnD,8CAA8C;QAC9C,gBAAgB;QAChB,oFAAoF;QACpF,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;YACxB,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAA;SACpF;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;YAC/B,KAAK,GAAG,GAAG,CAAC,KAAK,CAAA;SACpB;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;YACtB,WAAW,GAAG,GAAG,CAAC,SAAS,CAAA;SAC9B;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE;YAC3B,WAAW,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAA;SACnD;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;YAC7B,WAAW,GAAG,GAAG,CAAC,OAAO,CAAA;SAC5B;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;YAC/B,WAAW,GAAG,GAAG,CAAC,KAAK,CAAA;SAC1B;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;YACvD,WAAW,GAAG,GAAG,CAAC,WAAW,CAAA;SAChC;QAED,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,KAAK,kBAAkB,EAAE;YAC1C,KAAK,CAAC,IAAI,CAAC;gBACP,CAAC,EAAE,sBAAsB;gBACzB,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK;gBACL,WAAW;gBACX,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;gBACtC,WAAW;aACd,CAAC,CAAA;YACF,SAAQ;SACX;QAED,IAAI,KAAK,CAAC,CAAC,KAAK,YAAY,EAAE;YAC1B,KAAK,CAAC,IAAI,CAAC;gBACP,CAAC,EAAE,2BAA2B;gBAC9B,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK,EAAE,KAAK;gBACZ,WAAW;aACd,CAAC,CAAA;YACF,SAAQ;SACX;QAED,KAAK,CAAC,IAAI,CAAC;YACP,CAAC,EAAE,8BAA8B;YACjC,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK;YACL,WAAW;YACX,QAAQ,EAAE,KAAK;YACf,WAAW;SACd,CAAC,CAAA;KACL;IAED,OAAO,CAAC,SAAS,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;AAC/C,CAAC;AA5TD,oCA4TC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../../../../types/errors.js'\nimport { ITelegramClient } from '../../../client.types.js'\nimport { fileIdToInputDocument, fileIdToInputPhoto } from '../../../utils/convert-file-id.js'\nimport { extractFileName } from '../../../utils/file-utils.js'\nimport { BotInlineMessage } from '../inline-message/index.js'\nimport {\n InputInlineResult,\n InputInlineResultArticle,\n InputInlineResultAudio,\n InputInlineResultContact,\n InputInlineResultFile,\n InputInlineResultGame,\n InputInlineResultGeo,\n InputInlineResultGif,\n InputInlineResultPhoto,\n InputInlineResultSticker,\n InputInlineResultVenue,\n InputInlineResultVideo,\n InputInlineResultVoice,\n} from './types.js'\n\n/**\n * Create an inline result containing an article\n *\n * @param id Inline result ID\n * @param params Article\n */\nexport function article(id: string, params: Omit<InputInlineResultArticle, 'type' | 'id'>): InputInlineResultArticle {\n const ret = params as tl.Mutable<InputInlineResultArticle>\n ret.id = id\n ret.type = 'article'\n\n return ret\n}\n\n/**\n * Create an inline result containing a GIF\n *\n * @param id Inline result ID\n * @param media GIF animation\n * @param params Additional parameters\n */\nexport function gif(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputDocument,\n params: Omit<InputInlineResultGif, 'type' | 'id' | 'media'> = {},\n): InputInlineResultGif {\n const ret = params as tl.Mutable<InputInlineResultGif>\n ret.id = id\n ret.type = 'gif'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing a video\n *\n * @param id Inline result ID\n * @param media Video\n * @param params Additional parameters\n */\nexport function video(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputDocument,\n params: Omit<InputInlineResultVideo, 'type' | 'id' | 'media'>,\n): InputInlineResultVideo {\n const ret = params as tl.Mutable<InputInlineResultVideo>\n ret.id = id\n ret.type = 'video'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing an audio file\n *\n * @param id Inline result ID\n * @param media Audio file\n * @param params Additional parameters\n */\nexport function audio(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputDocument,\n params: Omit<InputInlineResultAudio, 'type' | 'id' | 'media'>,\n): InputInlineResultAudio {\n const ret = params as tl.Mutable<InputInlineResultAudio>\n ret.id = id\n ret.type = 'audio'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing a voice note\n *\n * @param id Inline result ID\n * @param media Voice note\n * @param params Additional parameters\n */\nexport function voice(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputDocument,\n params: Omit<InputInlineResultVoice, 'type' | 'id' | 'media'>,\n): InputInlineResultVoice {\n const ret = params as tl.Mutable<InputInlineResultVoice>\n ret.id = id\n ret.type = 'voice'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing a photo\n *\n * @param id Inline result ID\n * @param media Photo\n * @param params Additional parameters\n */\nexport function photo(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputPhoto,\n params: Omit<InputInlineResultPhoto, 'type' | 'id' | 'media'> = {},\n): InputInlineResultPhoto {\n const ret = params as tl.Mutable<InputInlineResultPhoto>\n ret.id = id\n ret.type = 'photo'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing a sticker\n *\n * @param id Inline result ID\n * @param media Sticker\n */\nexport function sticker(id: string, media: string | tl.RawInputDocument): InputInlineResultSticker {\n return {\n id,\n type: 'sticker',\n media,\n }\n}\n\n/**\n * Create an inline result containing a document\n * (only PDF and ZIP are supported when using URL)\n *\n * @param id Inline result ID\n * @param media Document\n * @param params Additional parameters\n */\nexport function file(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputDocument,\n params: Omit<InputInlineResultFile, 'type' | 'id' | 'media'>,\n): InputInlineResultFile {\n const ret = params as tl.Mutable<InputInlineResultFile>\n ret.id = id\n ret.type = 'file'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing a geolocation\n *\n * @param id Inline result ID\n * @param params Additional parameters\n */\nexport function geo(id: string, params: Omit<InputInlineResultGeo, 'type' | 'id'>): InputInlineResultGeo {\n const ret = params as tl.Mutable<InputInlineResultGeo>\n ret.id = id\n ret.type = 'geo'\n\n return ret\n}\n\n/**\n * Create an inline result containing a venue\n *\n * @param id Inline result ID\n * @param params Venue parameters\n */\nexport function venue(id: string, params: Omit<InputInlineResultVenue, 'type' | 'id'>): InputInlineResultVenue {\n const ret = params as tl.Mutable<InputInlineResultVenue>\n ret.id = id\n ret.type = 'venue'\n\n return ret\n}\n\n/**\n * Create an inline result containing a contact\n *\n * @param id Inline result ID\n * @param params Contact parameters\n */\nexport function contact(id: string, params: Omit<InputInlineResultContact, 'type' | 'id'>): InputInlineResultContact {\n const ret = params as tl.Mutable<InputInlineResultContact>\n ret.id = id\n ret.type = 'contact'\n\n return ret\n}\n\n/**\n * Create an inline result containing a game\n *\n * @param id Inline result ID\n * @param shortName Short name of the game\n * @param params Additional parameters\n */\nexport function game(\n id: string,\n shortName: string,\n params: Omit<InputInlineResultGame, 'type' | 'id' | 'shortName'> = {},\n): InputInlineResultGame {\n const ret = params as tl.Mutable<InputInlineResultGame>\n ret.id = id\n ret.type = 'game'\n ret.shortName = shortName\n\n return ret\n}\n\n/** @internal */\nexport async function _convertToTl(\n client: ITelegramClient,\n results: InputInlineResult[],\n): Promise<[boolean, tl.TypeInputBotInlineResult[]]> {\n const normalizeThumb = (obj: InputInlineResult, fallback?: string): tl.RawInputWebDocument | undefined => {\n if (obj.type !== 'voice' && obj.type !== 'audio' && obj.type !== 'sticker' && obj.type !== 'game') {\n if (!obj.thumb || typeof obj.thumb === 'string') {\n if (!obj.thumb && !fallback) {\n return undefined\n }\n\n return {\n _: 'inputWebDocument',\n size: 0,\n url: obj.thumb || fallback!,\n mimeType: obj.type === 'gif' ? obj.thumbMime ?? obj.mime ?? 'video/mp4' : 'image/jpeg',\n attributes: [],\n }\n }\n\n return obj.thumb\n }\n }\n\n const items: tl.TypeInputBotInlineResult[] = []\n\n let isGallery = false\n let forceVertical = false\n\n for (const obj of results) {\n switch (obj.type) {\n case 'article': {\n forceVertical = true\n\n let sendMessage: tl.TypeInputBotInlineMessage\n\n if (obj.message) {\n sendMessage = await BotInlineMessage._convertToTl(client, obj.message)\n } else {\n let message = obj.title\n const entities: tl.TypeMessageEntity[] = [\n {\n _: 'messageEntityBold',\n offset: 0,\n length: message.length,\n },\n ]\n\n if (obj.url) {\n entities.push({\n _: 'messageEntityTextUrl',\n url: obj.url,\n offset: 0,\n length: message.length,\n })\n }\n\n if (obj.description) {\n message += '\\n' + obj.description\n }\n\n sendMessage = {\n _: 'inputBotInlineMessageText',\n message,\n entities,\n }\n }\n\n items.push({\n _: 'inputBotInlineResult',\n id: obj.id,\n type: obj.type,\n title: obj.title,\n description: obj.description,\n url: obj.hideUrl ? undefined : obj.url,\n content:\n obj.url && obj.hideUrl ?\n {\n _: 'inputWebDocument',\n url: obj.url,\n mimeType: 'text/html',\n size: 0,\n attributes: [],\n } :\n undefined,\n thumb: typeof obj.thumb === 'string' ? normalizeThumb(obj) : obj.thumb,\n sendMessage,\n })\n continue\n }\n case 'game': {\n let sendMessage: tl.TypeInputBotInlineMessage\n\n if (obj.message) {\n sendMessage = await BotInlineMessage._convertToTl(client, obj.message)\n\n if (sendMessage._ !== 'inputBotInlineMessageGame') {\n throw new MtArgumentError('game inline result must contain a game inline message')\n }\n } else {\n sendMessage = {\n _: 'inputBotInlineMessageGame',\n }\n }\n\n items.push({\n _: 'inputBotInlineResultGame',\n id: obj.id,\n shortName: obj.shortName,\n sendMessage,\n })\n continue\n }\n case 'gif':\n case 'photo':\n case 'sticker':\n isGallery = true\n break\n case 'audio':\n case 'contact':\n case 'voice':\n forceVertical = true\n }\n\n let sendMessage: tl.TypeInputBotInlineMessage\n\n if (obj.message) {\n sendMessage = await BotInlineMessage._convertToTl(client, obj.message)\n } else if (obj.type === 'venue') {\n if (obj.latitude && obj.longitude) {\n sendMessage = {\n _: 'inputBotInlineMessageMediaVenue',\n title: obj.title,\n address: obj.address,\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n provider: '',\n venueId: '',\n venueType: '',\n }\n } else {\n throw new MtArgumentError('message or location (lat&lon) bust be supplied for venue inline result')\n }\n } else if (obj.type === 'video' && obj.isEmbed && typeof obj.media === 'string') {\n sendMessage = {\n _: 'inputBotInlineMessageText',\n message: obj.media,\n }\n } else if (obj.type === 'geo') {\n sendMessage = {\n _: 'inputBotInlineMessageMediaGeo',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n }\n } else if (obj.type === 'contact') {\n sendMessage = {\n _: 'inputBotInlineMessageMediaContact',\n phoneNumber: obj.phone,\n firstName: obj.firstName,\n lastName: obj.lastName ?? '',\n vcard: '',\n }\n } else {\n sendMessage = {\n _: 'inputBotInlineMessageMediaAuto',\n message: '',\n }\n }\n\n let media: tl.TypeInputWebDocument | tl.TypeInputDocument | tl.TypeInputPhoto | undefined = undefined\n\n if (obj.type !== 'geo' && obj.type !== 'venue' && obj.type !== 'contact') {\n if (typeof obj.media === 'string') {\n // file id or url\n if (obj.media.match(/^https?:\\/\\//)) {\n if (obj.type === 'sticker') {\n throw new MtArgumentError('sticker inline result cannot contain a URL')\n }\n\n let mime: string\n if (obj.type === 'video') mime = 'video/mp4'\n else if (obj.type === 'audio') {\n mime = obj.mime ?? 'audio/mpeg'\n } else if (obj.type === 'gif') {\n mime = obj.mime ?? 'video/mp4'\n } else if (obj.type === 'voice') mime = 'audio/ogg'\n else if (obj.type === 'file') {\n if (!obj.mime) {\n throw new MtArgumentError('MIME type must be specified for file inline result')\n }\n\n mime = obj.mime\n } else mime = 'image/jpeg'\n\n const attributes: tl.TypeDocumentAttribute[] = []\n\n if (\n (obj.type === 'video' || obj.type === 'gif' || obj.type === 'photo') &&\n obj.width &&\n obj.height\n ) {\n if (obj.type !== 'photo' && obj.duration) {\n attributes.push({\n _: 'documentAttributeVideo',\n w: obj.width,\n h: obj.height,\n duration: obj.duration,\n })\n } else {\n attributes.push({\n _: 'documentAttributeImageSize',\n w: obj.width,\n h: obj.height,\n })\n }\n } else if (obj.type === 'audio' || obj.type === 'voice') {\n attributes.push({\n _: 'documentAttributeAudio',\n voice: obj.type === 'voice',\n duration: obj.duration ?? 0,\n title: obj.type === 'audio' ? obj.title : '',\n performer: obj.type === 'audio' ? obj.performer : '',\n })\n }\n\n attributes.push({\n _: 'documentAttributeFilename',\n fileName: extractFileName(obj.media),\n })\n\n media = {\n _: 'inputWebDocument',\n url: obj.media,\n mimeType: mime,\n size: 0,\n attributes,\n }\n } else if (obj.type === 'photo') {\n media = fileIdToInputPhoto(obj.media)\n } else {\n media = fileIdToInputDocument(obj.media)\n }\n } else {\n media = obj.media\n }\n }\n\n let title: string | undefined = undefined\n let description: string | undefined = undefined\n\n // incredible hacks by durov team.\n // i honestly don't understand why didn't they just\n // make a bunch of types, as they normally do,\n // but whatever.\n // ref: https://github.com/tdlib/td/blob/master/td/telegram/InlineQueriesManager.cpp\n if (obj.type === 'contact') {\n title = obj.lastName?.length ? `${obj.firstName} ${obj.lastName}` : obj.firstName\n } else if (obj.type !== 'sticker') {\n title = obj.title\n }\n\n if (obj.type === 'audio') {\n description = obj.performer\n } else if (obj.type === 'geo') {\n description = `${obj.latitude} ${obj.longitude}`\n } else if (obj.type === 'venue') {\n description = obj.address\n } else if (obj.type === 'contact') {\n description = obj.phone\n } else if (obj.type !== 'voice' && obj.type !== 'sticker') {\n description = obj.description\n }\n\n if (!media || media._ === 'inputWebDocument') {\n items.push({\n _: 'inputBotInlineResult',\n id: obj.id,\n type: obj.type,\n title,\n description,\n content: media,\n thumb: normalizeThumb(obj, media?.url),\n sendMessage,\n })\n continue\n }\n\n if (media._ === 'inputPhoto') {\n items.push({\n _: 'inputBotInlineResultPhoto',\n id: obj.id,\n type: obj.type,\n photo: media,\n sendMessage,\n })\n continue\n }\n\n items.push({\n _: 'inputBotInlineResultDocument',\n id: obj.id,\n type: obj.type,\n title,\n description,\n document: media,\n sendMessage,\n })\n }\n\n return [isGallery && !forceVertical, items]\n}\n"]}
|
|
1
|
+
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../../../../../../src/highlevel/types/bots/inline-result/factories.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../../../../types/errors.js'\nimport { ITelegramClient } from '../../../client.types.js'\nimport { fileIdToInputDocument, fileIdToInputPhoto } from '../../../utils/convert-file-id.js'\nimport { extractFileName } from '../../../utils/file-utils.js'\nimport { BotInlineMessage } from '../inline-message/index.js'\nimport {\n InputInlineResult,\n InputInlineResultArticle,\n InputInlineResultAudio,\n InputInlineResultContact,\n InputInlineResultFile,\n InputInlineResultGame,\n InputInlineResultGeo,\n InputInlineResultGif,\n InputInlineResultPhoto,\n InputInlineResultSticker,\n InputInlineResultVenue,\n InputInlineResultVideo,\n InputInlineResultVoice,\n} from './types.js'\n\n/**\n * Create an inline result containing an article\n *\n * @param id Inline result ID\n * @param params Article\n */\nexport function article(id: string, params: Omit<InputInlineResultArticle, 'type' | 'id'>): InputInlineResultArticle {\n const ret = params as tl.Mutable<InputInlineResultArticle>\n ret.id = id\n ret.type = 'article'\n\n return ret\n}\n\n/**\n * Create an inline result containing a GIF\n *\n * @param id Inline result ID\n * @param media GIF animation\n * @param params Additional parameters\n */\nexport function gif(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputDocument,\n params: Omit<InputInlineResultGif, 'type' | 'id' | 'media'> = {},\n): InputInlineResultGif {\n const ret = params as tl.Mutable<InputInlineResultGif>\n ret.id = id\n ret.type = 'gif'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing a video\n *\n * @param id Inline result ID\n * @param media Video\n * @param params Additional parameters\n */\nexport function video(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputDocument,\n params: Omit<InputInlineResultVideo, 'type' | 'id' | 'media'>,\n): InputInlineResultVideo {\n const ret = params as tl.Mutable<InputInlineResultVideo>\n ret.id = id\n ret.type = 'video'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing an audio file\n *\n * @param id Inline result ID\n * @param media Audio file\n * @param params Additional parameters\n */\nexport function audio(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputDocument,\n params: Omit<InputInlineResultAudio, 'type' | 'id' | 'media'>,\n): InputInlineResultAudio {\n const ret = params as tl.Mutable<InputInlineResultAudio>\n ret.id = id\n ret.type = 'audio'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing a voice note\n *\n * @param id Inline result ID\n * @param media Voice note\n * @param params Additional parameters\n */\nexport function voice(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputDocument,\n params: Omit<InputInlineResultVoice, 'type' | 'id' | 'media'>,\n): InputInlineResultVoice {\n const ret = params as tl.Mutable<InputInlineResultVoice>\n ret.id = id\n ret.type = 'voice'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing a photo\n *\n * @param id Inline result ID\n * @param media Photo\n * @param params Additional parameters\n */\nexport function photo(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputPhoto,\n params: Omit<InputInlineResultPhoto, 'type' | 'id' | 'media'> = {},\n): InputInlineResultPhoto {\n const ret = params as tl.Mutable<InputInlineResultPhoto>\n ret.id = id\n ret.type = 'photo'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing a sticker\n *\n * @param id Inline result ID\n * @param media Sticker\n */\nexport function sticker(id: string, media: string | tl.RawInputDocument): InputInlineResultSticker {\n return {\n id,\n type: 'sticker',\n media,\n }\n}\n\n/**\n * Create an inline result containing a document\n * (only PDF and ZIP are supported when using URL)\n *\n * @param id Inline result ID\n * @param media Document\n * @param params Additional parameters\n */\nexport function file(\n id: string,\n media: string | tl.RawInputWebDocument | tl.RawInputDocument,\n params: Omit<InputInlineResultFile, 'type' | 'id' | 'media'>,\n): InputInlineResultFile {\n const ret = params as tl.Mutable<InputInlineResultFile>\n ret.id = id\n ret.type = 'file'\n ret.media = media\n\n return ret\n}\n\n/**\n * Create an inline result containing a geolocation\n *\n * @param id Inline result ID\n * @param params Additional parameters\n */\nexport function geo(id: string, params: Omit<InputInlineResultGeo, 'type' | 'id'>): InputInlineResultGeo {\n const ret = params as tl.Mutable<InputInlineResultGeo>\n ret.id = id\n ret.type = 'geo'\n\n return ret\n}\n\n/**\n * Create an inline result containing a venue\n *\n * @param id Inline result ID\n * @param params Venue parameters\n */\nexport function venue(id: string, params: Omit<InputInlineResultVenue, 'type' | 'id'>): InputInlineResultVenue {\n const ret = params as tl.Mutable<InputInlineResultVenue>\n ret.id = id\n ret.type = 'venue'\n\n return ret\n}\n\n/**\n * Create an inline result containing a contact\n *\n * @param id Inline result ID\n * @param params Contact parameters\n */\nexport function contact(id: string, params: Omit<InputInlineResultContact, 'type' | 'id'>): InputInlineResultContact {\n const ret = params as tl.Mutable<InputInlineResultContact>\n ret.id = id\n ret.type = 'contact'\n\n return ret\n}\n\n/**\n * Create an inline result containing a game\n *\n * @param id Inline result ID\n * @param shortName Short name of the game\n * @param params Additional parameters\n */\nexport function game(\n id: string,\n shortName: string,\n params: Omit<InputInlineResultGame, 'type' | 'id' | 'shortName'> = {},\n): InputInlineResultGame {\n const ret = params as tl.Mutable<InputInlineResultGame>\n ret.id = id\n ret.type = 'game'\n ret.shortName = shortName\n\n return ret\n}\n\n/** @internal */\nexport async function _convertToTl(\n client: ITelegramClient,\n results: InputInlineResult[],\n): Promise<[boolean, tl.TypeInputBotInlineResult[]]> {\n const normalizeThumb = (obj: InputInlineResult, fallback?: string): tl.RawInputWebDocument | undefined => {\n if (obj.type !== 'voice' && obj.type !== 'audio' && obj.type !== 'sticker' && obj.type !== 'game') {\n if (!obj.thumb || typeof obj.thumb === 'string') {\n if (!obj.thumb && !fallback) {\n return undefined\n }\n\n return {\n _: 'inputWebDocument',\n size: 0,\n url: obj.thumb || fallback!,\n mimeType: obj.type === 'gif' ? obj.thumbMime ?? obj.mime ?? 'video/mp4' : 'image/jpeg',\n attributes: [],\n }\n }\n\n return obj.thumb\n }\n }\n\n const items: tl.TypeInputBotInlineResult[] = []\n\n let isGallery = false\n let forceVertical = false\n\n for (const obj of results) {\n switch (obj.type) {\n case 'article': {\n forceVertical = true\n\n let sendMessage: tl.TypeInputBotInlineMessage\n\n if (obj.message) {\n sendMessage = await BotInlineMessage._convertToTl(client, obj.message)\n } else {\n let message = obj.title\n const entities: tl.TypeMessageEntity[] = [\n {\n _: 'messageEntityBold',\n offset: 0,\n length: message.length,\n },\n ]\n\n if (obj.url) {\n entities.push({\n _: 'messageEntityTextUrl',\n url: obj.url,\n offset: 0,\n length: message.length,\n })\n }\n\n if (obj.description) {\n message += '\\n' + obj.description\n }\n\n sendMessage = {\n _: 'inputBotInlineMessageText',\n message,\n entities,\n }\n }\n\n items.push({\n _: 'inputBotInlineResult',\n id: obj.id,\n type: obj.type,\n title: obj.title,\n description: obj.description,\n url: obj.hideUrl ? undefined : obj.url,\n content:\n obj.url && obj.hideUrl ?\n {\n _: 'inputWebDocument',\n url: obj.url,\n mimeType: 'text/html',\n size: 0,\n attributes: [],\n } :\n undefined,\n thumb: typeof obj.thumb === 'string' ? normalizeThumb(obj) : obj.thumb,\n sendMessage,\n })\n continue\n }\n case 'game': {\n let sendMessage: tl.TypeInputBotInlineMessage\n\n if (obj.message) {\n sendMessage = await BotInlineMessage._convertToTl(client, obj.message)\n\n if (sendMessage._ !== 'inputBotInlineMessageGame') {\n throw new MtArgumentError('game inline result must contain a game inline message')\n }\n } else {\n sendMessage = {\n _: 'inputBotInlineMessageGame',\n }\n }\n\n items.push({\n _: 'inputBotInlineResultGame',\n id: obj.id,\n shortName: obj.shortName,\n sendMessage,\n })\n continue\n }\n case 'gif':\n case 'photo':\n case 'sticker':\n isGallery = true\n break\n case 'audio':\n case 'contact':\n case 'voice':\n forceVertical = true\n }\n\n let sendMessage: tl.TypeInputBotInlineMessage\n\n if (obj.message) {\n sendMessage = await BotInlineMessage._convertToTl(client, obj.message)\n } else if (obj.type === 'venue') {\n if (obj.latitude && obj.longitude) {\n sendMessage = {\n _: 'inputBotInlineMessageMediaVenue',\n title: obj.title,\n address: obj.address,\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n provider: '',\n venueId: '',\n venueType: '',\n }\n } else {\n throw new MtArgumentError('message or location (lat&lon) bust be supplied for venue inline result')\n }\n } else if (obj.type === 'video' && obj.isEmbed && typeof obj.media === 'string') {\n sendMessage = {\n _: 'inputBotInlineMessageText',\n message: obj.media,\n }\n } else if (obj.type === 'geo') {\n sendMessage = {\n _: 'inputBotInlineMessageMediaGeo',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: obj.latitude,\n long: obj.longitude,\n },\n }\n } else if (obj.type === 'contact') {\n sendMessage = {\n _: 'inputBotInlineMessageMediaContact',\n phoneNumber: obj.phone,\n firstName: obj.firstName,\n lastName: obj.lastName ?? '',\n vcard: '',\n }\n } else {\n sendMessage = {\n _: 'inputBotInlineMessageMediaAuto',\n message: '',\n }\n }\n\n let media: tl.TypeInputWebDocument | tl.TypeInputDocument | tl.TypeInputPhoto | undefined = undefined\n\n if (obj.type !== 'geo' && obj.type !== 'venue' && obj.type !== 'contact') {\n if (typeof obj.media === 'string') {\n // file id or url\n if (obj.media.match(/^https?:\\/\\//)) {\n if (obj.type === 'sticker') {\n throw new MtArgumentError('sticker inline result cannot contain a URL')\n }\n\n let mime: string\n if (obj.type === 'video') mime = 'video/mp4'\n else if (obj.type === 'audio') {\n mime = obj.mime ?? 'audio/mpeg'\n } else if (obj.type === 'gif') {\n mime = obj.mime ?? 'video/mp4'\n } else if (obj.type === 'voice') mime = 'audio/ogg'\n else if (obj.type === 'file') {\n if (!obj.mime) {\n throw new MtArgumentError('MIME type must be specified for file inline result')\n }\n\n mime = obj.mime\n } else mime = 'image/jpeg'\n\n const attributes: tl.TypeDocumentAttribute[] = []\n\n if (\n (obj.type === 'video' || obj.type === 'gif' || obj.type === 'photo') &&\n obj.width &&\n obj.height\n ) {\n if (obj.type !== 'photo' && obj.duration) {\n attributes.push({\n _: 'documentAttributeVideo',\n w: obj.width,\n h: obj.height,\n duration: obj.duration,\n })\n } else {\n attributes.push({\n _: 'documentAttributeImageSize',\n w: obj.width,\n h: obj.height,\n })\n }\n } else if (obj.type === 'audio' || obj.type === 'voice') {\n attributes.push({\n _: 'documentAttributeAudio',\n voice: obj.type === 'voice',\n duration: obj.duration ?? 0,\n title: obj.type === 'audio' ? obj.title : '',\n performer: obj.type === 'audio' ? obj.performer : '',\n })\n }\n\n attributes.push({\n _: 'documentAttributeFilename',\n fileName: extractFileName(obj.media),\n })\n\n media = {\n _: 'inputWebDocument',\n url: obj.media,\n mimeType: mime,\n size: 0,\n attributes,\n }\n } else if (obj.type === 'photo') {\n media = fileIdToInputPhoto(obj.media)\n } else {\n media = fileIdToInputDocument(obj.media)\n }\n } else {\n media = obj.media\n }\n }\n\n let title: string | undefined = undefined\n let description: string | undefined = undefined\n\n // incredible hacks by durov team.\n // i honestly don't understand why didn't they just\n // make a bunch of types, as they normally do,\n // but whatever.\n // ref: https://github.com/tdlib/td/blob/master/td/telegram/InlineQueriesManager.cpp\n if (obj.type === 'contact') {\n title = obj.lastName?.length ? `${obj.firstName} ${obj.lastName}` : obj.firstName\n } else if (obj.type !== 'sticker') {\n title = obj.title\n }\n\n if (obj.type === 'audio') {\n description = obj.performer\n } else if (obj.type === 'geo') {\n description = `${obj.latitude} ${obj.longitude}`\n } else if (obj.type === 'venue') {\n description = obj.address\n } else if (obj.type === 'contact') {\n description = obj.phone\n } else if (obj.type !== 'voice' && obj.type !== 'sticker') {\n description = obj.description\n }\n\n if (!media || media._ === 'inputWebDocument') {\n items.push({\n _: 'inputBotInlineResult',\n id: obj.id,\n type: obj.type,\n title,\n description,\n content: media,\n thumb: normalizeThumb(obj, media?.url),\n sendMessage,\n })\n continue\n }\n\n if (media._ === 'inputPhoto') {\n items.push({\n _: 'inputBotInlineResultPhoto',\n id: obj.id,\n type: obj.type,\n photo: media,\n sendMessage,\n })\n continue\n }\n\n items.push({\n _: 'inputBotInlineResultDocument',\n id: obj.id,\n type: obj.type,\n title,\n description,\n document: media,\n sendMessage,\n })\n }\n\n return [isGallery && !forceVertical, items]\n}\n"]}
|
|
@@ -5,9 +5,10 @@ exports.BotKeyboardBuilder = void 0;
|
|
|
5
5
|
* Builder for bot keyboards
|
|
6
6
|
*/
|
|
7
7
|
class BotKeyboardBuilder {
|
|
8
|
+
maxRowWidth;
|
|
9
|
+
_buttons = [];
|
|
8
10
|
constructor(maxRowWidth = 3) {
|
|
9
11
|
this.maxRowWidth = maxRowWidth;
|
|
10
|
-
this._buttons = [];
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
13
14
|
* Add buttons, wrapping them once {@link maxRowWidth} is reached
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../../src/highlevel/types/bots/keyboards/builder.ts"],"names":[],"mappings":";;;AAMA;;GAEG;AACH,MAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../../src/highlevel/types/bots/keyboards/builder.ts"],"names":[],"mappings":";;;AAMA;;GAEG;AACH,MAAa,kBAAkB;IAGN;IAFb,QAAQ,GAA8B,EAAE,CAAA;IAEhD,YAAqB,cAA6B,CAAC;QAA9B,gBAAW,GAAX,WAAW,CAAmB;IAAG,CAAC;IAEvD;;;;OAIG;IACH,IAAI,CAAC,GAAG,OAA4C;QAChD,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QAEhC,IAAI,GAAG,GAA4B,EAAE,CAAA;QACrC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACpB,IAAI,OAAO,GAAG,KAAK,UAAU;gBAAE,GAAG,GAAG,GAAG,EAAE,CAAA;YAC1C,IAAI,CAAC,GAAG;gBAAE,OAAM;YAEhB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAEb,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACvB,GAAG,GAAG,EAAE,CAAA;YACZ,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,GAAiD;QACjD,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;YAC5B,MAAM,EAAE,GAAG,GAAG,CAAA;YACd,GAAG,GAAG,EAAE,CAAA;YACR,EAAE,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAA4B,CAAA;QAC7D,IAAI,MAAM,CAAC,MAAM;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE7C,OAAO,IAAI,CAAA;IACf,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,GAAoC,EAAE,KAAK,GAAG,KAAK;QACtD,IAAI,OAAO,GAAG,KAAK,UAAU;YAAE,GAAG,GAAG,GAAG,EAAE,CAAA;QAC1C,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QAErB,IACI,IAAI,CAAC,QAAQ,CAAC,MAAM;YACpB,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,EAC3G,CAAC;YACC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACrD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC7B,CAAC;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED;;OAEG;IACH,QAAQ;QACJ,OAAO;YACH,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CAAA;IACL,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,SAAwD,EAAE;QAC9D,MAAM,GAAG,GAAG,MAAyC,CAAA;QACrD,GAAG,CAAC,IAAI,GAAG,OAAO,CAAA;QAClB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAA;QAE3B,OAAO,GAAG,CAAA;IACd,CAAC;CACJ;AA7FD,gDA6FC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport type { InlineKeyboardMarkup, ReplyKeyboardMarkup } from './types.js'\n\nexport type ButtonLike = tl.TypeKeyboardButton | false | null | undefined | void\n\n/**\n * Builder for bot keyboards\n */\nexport class BotKeyboardBuilder {\n private _buttons: tl.TypeKeyboardButton[][] = []\n\n constructor(readonly maxRowWidth: number | null = 3) {}\n\n /**\n * Add buttons, wrapping them once {@link maxRowWidth} is reached\n *\n * @param buttons Buttons to add\n */\n push(...buttons: (ButtonLike | (() => ButtonLike))[]): this {\n if (!buttons.length) return this\n\n let row: tl.TypeKeyboardButton[] = []\n buttons.forEach((btn) => {\n if (typeof btn === 'function') btn = btn()\n if (!btn) return\n\n row.push(btn)\n\n if (row.length === this.maxRowWidth) {\n this._buttons.push(row)\n row = []\n }\n })\n\n if (row.length) {\n this._buttons.push(row)\n }\n\n return this\n }\n\n /**\n * Add a row of buttons. Will not be wrapped.\n *\n * @param row Row or a function that will populate it\n */\n row(row: ButtonLike[] | ((arr: ButtonLike[]) => void)): this {\n if (typeof row === 'function') {\n const fn = row\n row = []\n fn(row)\n }\n\n const normal = row.filter(Boolean) as tl.TypeKeyboardButton[]\n if (normal.length) this._buttons.push(normal)\n\n return this\n }\n\n /**\n * Append a button to the last row, wrapping if needed.\n *\n * @param btn Button to add\n * @param force Whether to forcefully add the button (i.e. do not wrap)\n */\n append(btn: ButtonLike | (() => ButtonLike), force = false): this {\n if (typeof btn === 'function') btn = btn()\n if (!btn) return this\n\n if (\n this._buttons.length &&\n (this.maxRowWidth === null || force || this._buttons[this._buttons.length - 1].length < this.maxRowWidth)\n ) {\n this._buttons[this._buttons.length - 1].push(btn)\n } else {\n this._buttons.push([btn])\n }\n\n return this\n }\n\n /**\n * Return contents of this builder as an inline keyboard\n */\n asInline(): InlineKeyboardMarkup {\n return {\n type: 'inline',\n buttons: this._buttons,\n }\n }\n\n /**\n * Return contents of this builder as a reply keyboard\n */\n asReply(params: Omit<ReplyKeyboardMarkup, 'type' | 'buttons'> = {}): ReplyKeyboardMarkup {\n const ret = params as tl.Mutable<ReplyKeyboardMarkup>\n ret.type = 'reply'\n ret.buttons = this._buttons\n\n return ret\n }\n}\n"]}
|