@mtcute/core 0.10.2 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/highlevel/base.d.ts +1 -1
- package/cjs/highlevel/base.js +29 -23
- package/cjs/highlevel/base.js.map +1 -1
- package/cjs/highlevel/client.d.ts +3 -2
- package/cjs/highlevel/client.js +1 -0
- package/cjs/highlevel/client.js.map +1 -1
- package/cjs/highlevel/managers/app-config-manager.js +7 -5
- package/cjs/highlevel/managers/app-config-manager.js.map +1 -1
- package/cjs/highlevel/methods/_init.js.map +1 -1
- package/cjs/highlevel/methods/auth/start-test.js.map +1 -1
- package/cjs/highlevel/methods/auth/start.js.map +1 -1
- package/cjs/highlevel/methods/auth/utils.js.map +1 -1
- package/cjs/highlevel/methods/bots/get-callback-answer.js.map +1 -1
- package/cjs/highlevel/methods/bots/get-game-high-scores.js.map +1 -1
- package/cjs/highlevel/methods/bots/normalize-command-scope.js.map +1 -1
- package/cjs/highlevel/methods/bots/set-my-commands.js.map +1 -1
- package/cjs/highlevel/methods/chats/add-chat-members.js.map +1 -1
- package/cjs/highlevel/methods/chats/ban-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/batched-queries.js.map +1 -1
- package/cjs/highlevel/methods/chats/delete-chat-photo.js.map +1 -1
- package/cjs/highlevel/methods/chats/delete-history.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-event-log.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-members.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat-preview.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-full-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
- package/cjs/highlevel/methods/chats/get-similar-channels.js.map +1 -1
- package/cjs/highlevel/methods/chats/iter-chat-event-log.js.map +1 -1
- package/cjs/highlevel/methods/chats/iter-chat-members.js.map +1 -1
- package/cjs/highlevel/methods/chats/join-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/kick-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/leave-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/open-chat.js.map +1 -1
- package/cjs/highlevel/methods/chats/reorder-usernames.js.map +1 -1
- package/cjs/highlevel/methods/chats/restrict-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/chats/save-draft.js.map +1 -1
- package/cjs/highlevel/methods/chats/set-chat-color.js.map +1 -1
- package/cjs/highlevel/methods/chats/set-chat-photo.js.map +1 -1
- package/cjs/highlevel/methods/chats/set-chat-title.js.map +1 -1
- package/cjs/highlevel/methods/chats/toggle-fragment-username.js.map +1 -1
- package/cjs/highlevel/methods/chats/unarchive-chats.js.map +1 -1
- package/cjs/highlevel/methods/chats/unban-chat-member.js.map +1 -1
- package/cjs/highlevel/methods/contacts/delete-contacts.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/create-folder.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/edit-folder.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/find-folder.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/get-folders.js.map +1 -1
- package/cjs/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
- package/cjs/highlevel/methods/files/download-buffer.js.map +1 -1
- package/cjs/highlevel/methods/files/download-iterable.js +1 -1
- package/cjs/highlevel/methods/files/download-iterable.js.map +1 -1
- package/cjs/highlevel/methods/files/download-node-stream.js.map +1 -1
- package/cjs/highlevel/methods/files/download-stream.js.map +1 -1
- package/cjs/highlevel/methods/files/normalize-file-to-document.js.map +1 -1
- package/cjs/highlevel/methods/files/normalize-input-file.js.map +1 -1
- package/cjs/highlevel/methods/files/normalize-input-media.js +1 -2
- package/cjs/highlevel/methods/files/normalize-input-media.js.map +1 -1
- package/cjs/highlevel/methods/files/upload-file.js +7 -6
- package/cjs/highlevel/methods/files/upload-file.js.map +1 -1
- package/cjs/highlevel/methods/files/upload-media.js.map +1 -1
- package/cjs/highlevel/methods/forums/iter-forum-topics.js.map +1 -1
- package/cjs/highlevel/methods/invite-links/get-primary-invite-link.js.map +1 -1
- package/cjs/highlevel/methods/invite-links/iter-invite-link-members.js.map +1 -1
- package/cjs/highlevel/methods/invite-links/iter-invite-links.js.map +1 -1
- package/cjs/highlevel/methods/messages/close-poll.js.map +1 -1
- package/cjs/highlevel/methods/messages/delete-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/edit-inline-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/edit-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/find-in-update.js.map +1 -1
- package/cjs/highlevel/methods/messages/forward-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-discussion-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-history.js +5 -1
- package/cjs/highlevel/methods/messages/get-history.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-message-by-link.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-message-group.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-message-reactions.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-reply-to.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-history.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-reaction-users.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-search-global.js.map +1 -1
- package/cjs/highlevel/methods/messages/iter-search-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/read-history.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-answer.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-comment.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-common.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-copy-group.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-copy.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-media-group.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-media.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-quote.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-text.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-typing.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-vote.js.map +1 -1
- package/cjs/highlevel/methods/messages/translate-text.js.map +1 -1
- package/cjs/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
- package/cjs/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
- package/cjs/highlevel/methods/misc/normalize-text.js.map +1 -1
- package/cjs/highlevel/methods/misc/with-params.js.map +1 -1
- package/cjs/highlevel/methods/password/change-cloud-password.js.map +1 -1
- package/cjs/highlevel/methods/password/enable-cloud-password.js.map +1 -1
- package/cjs/highlevel/methods/password/remove-cloud-password.js.map +1 -1
- package/cjs/highlevel/methods/premium/can-apply-boost.js.map +1 -1
- package/cjs/highlevel/methods/premium/iter-boosters.js.map +1 -1
- package/cjs/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
- package/cjs/highlevel/methods/stickers/delete-sticker-from-set.js.map +1 -1
- package/cjs/highlevel/methods/stickers/get-custom-emojis.js.map +1 -1
- package/cjs/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
- package/cjs/highlevel/methods/stories/can-send-story.js.map +1 -1
- package/cjs/highlevel/methods/stories/edit-story.js.map +1 -1
- package/cjs/highlevel/methods/stories/find-in-update.js.map +1 -1
- package/cjs/highlevel/methods/stories/hide-my-stories-views.js.map +1 -1
- package/cjs/highlevel/methods/stories/iter-all-stories.js.map +1 -1
- package/cjs/highlevel/methods/stories/iter-profile-stories.js.map +1 -1
- package/cjs/highlevel/methods/stories/iter-story-viewers.js.map +1 -1
- package/cjs/highlevel/methods/stories/send-story.js.map +1 -1
- package/cjs/highlevel/methods/users/delete-profile-photos.js.map +1 -1
- package/cjs/highlevel/methods/users/get-users.js.map +1 -1
- package/cjs/highlevel/methods/users/iter-profile-photos.js.map +1 -1
- package/cjs/highlevel/methods/users/resolve-peer-many.js.map +1 -1
- package/cjs/highlevel/methods/users/resolve-peer.js.map +1 -1
- package/cjs/highlevel/methods/users/set-my-emoji-status.js.map +1 -1
- package/cjs/highlevel/methods/users/set-my-profile-photo.js.map +1 -1
- package/cjs/highlevel/storage/service/current-user.js +2 -0
- package/cjs/highlevel/storage/service/current-user.js.map +1 -1
- package/cjs/highlevel/storage/service/peers.js +5 -1
- package/cjs/highlevel/storage/service/peers.js.map +1 -1
- package/cjs/highlevel/storage/service/ref-messages.js +3 -0
- package/cjs/highlevel/storage/service/ref-messages.js.map +1 -1
- package/cjs/highlevel/storage/service/updates.js +1 -0
- package/cjs/highlevel/storage/service/updates.js.map +1 -1
- package/cjs/highlevel/storage/storage.d.ts +1 -1
- package/cjs/highlevel/storage/storage.js +17 -4
- package/cjs/highlevel/storage/storage.js.map +1 -1
- package/cjs/highlevel/types/auth/sent-code.js +1 -0
- package/cjs/highlevel/types/auth/sent-code.js.map +1 -1
- package/cjs/highlevel/types/bots/game-high-score.js +2 -0
- package/cjs/highlevel/types/bots/game-high-score.js.map +1 -1
- package/cjs/highlevel/types/bots/inline-message/factories.js.map +1 -1
- package/cjs/highlevel/types/bots/inline-result/factories.js.map +1 -1
- package/cjs/highlevel/types/bots/keyboards/builder.js +2 -1
- package/cjs/highlevel/types/bots/keyboards/builder.js.map +1 -1
- package/cjs/highlevel/types/bots/keyboards/factories.js.map +1 -1
- package/cjs/highlevel/types/calls/discard-reason.js.map +1 -1
- package/cjs/highlevel/types/conversation.js +13 -7
- package/cjs/highlevel/types/conversation.js.map +1 -1
- package/cjs/highlevel/types/errors.js +3 -0
- package/cjs/highlevel/types/errors.js.map +1 -1
- package/cjs/highlevel/types/files/file-location.js +3 -0
- package/cjs/highlevel/types/files/file-location.js.map +1 -1
- package/cjs/highlevel/types/files/uploaded-file.js +1 -1
- package/cjs/highlevel/types/files/uploaded-file.js.map +1 -1
- package/cjs/highlevel/types/files/utils.d.ts +3 -3
- package/cjs/highlevel/types/files/utils.js.map +1 -1
- package/cjs/highlevel/types/files/web-document.js +1 -0
- package/cjs/highlevel/types/files/web-document.js.map +1 -1
- package/cjs/highlevel/types/media/audio.js +3 -2
- package/cjs/highlevel/types/media/audio.js.map +1 -1
- package/cjs/highlevel/types/media/contact.js +2 -1
- package/cjs/highlevel/types/media/contact.js.map +1 -1
- package/cjs/highlevel/types/media/dice.js +125 -124
- package/cjs/highlevel/types/media/dice.js.map +1 -1
- package/cjs/highlevel/types/media/document-utils.js.map +1 -1
- package/cjs/highlevel/types/media/document.js +2 -4
- package/cjs/highlevel/types/media/document.js.map +1 -1
- package/cjs/highlevel/types/media/game.js +2 -1
- package/cjs/highlevel/types/media/game.js.map +1 -1
- package/cjs/highlevel/types/media/invoice.js +4 -1
- package/cjs/highlevel/types/media/invoice.js.map +1 -1
- package/cjs/highlevel/types/media/location.js +4 -5
- package/cjs/highlevel/types/media/location.js.map +1 -1
- package/cjs/highlevel/types/media/photo.js +8 -1
- package/cjs/highlevel/types/media/photo.js.map +1 -1
- package/cjs/highlevel/types/media/poll.js +4 -1
- package/cjs/highlevel/types/media/poll.js.map +1 -1
- package/cjs/highlevel/types/media/sticker.js +3 -1
- package/cjs/highlevel/types/media/sticker.js.map +1 -1
- package/cjs/highlevel/types/media/story.js +3 -1
- package/cjs/highlevel/types/media/story.js.map +1 -1
- package/cjs/highlevel/types/media/thumbnail.js +35 -22
- package/cjs/highlevel/types/media/thumbnail.js.map +1 -1
- package/cjs/highlevel/types/media/venue.js +2 -1
- package/cjs/highlevel/types/media/venue.js.map +1 -1
- package/cjs/highlevel/types/media/video.js +3 -1
- package/cjs/highlevel/types/media/video.js.map +1 -1
- package/cjs/highlevel/types/media/voice.js +2 -1
- package/cjs/highlevel/types/media/voice.js.map +1 -1
- package/cjs/highlevel/types/media/web-page.js +2 -1
- package/cjs/highlevel/types/media/web-page.js.map +1 -1
- package/cjs/highlevel/types/messages/dialog.js +3 -0
- package/cjs/highlevel/types/messages/dialog.js.map +1 -1
- package/cjs/highlevel/types/messages/draft-message.js +1 -0
- package/cjs/highlevel/types/messages/draft-message.js.map +1 -1
- package/cjs/highlevel/types/messages/message-action.js.map +1 -1
- package/cjs/highlevel/types/messages/message-entity.js +2 -0
- package/cjs/highlevel/types/messages/message-entity.js.map +1 -1
- package/cjs/highlevel/types/messages/message-forward.js +2 -0
- package/cjs/highlevel/types/messages/message-forward.js.map +1 -1
- package/cjs/highlevel/types/messages/message-media.js.map +1 -1
- package/cjs/highlevel/types/messages/message-reactions.js +4 -0
- package/cjs/highlevel/types/messages/message-reactions.js.map +1 -1
- package/cjs/highlevel/types/messages/message-replies.js +2 -0
- package/cjs/highlevel/types/messages/message-replies.js.map +1 -1
- package/cjs/highlevel/types/messages/message.js +6 -0
- package/cjs/highlevel/types/messages/message.js.map +1 -1
- package/cjs/highlevel/types/messages/replied-message.js +2 -0
- package/cjs/highlevel/types/messages/replied-message.js.map +1 -1
- package/cjs/highlevel/types/misc/sticker-set.js +7 -1
- package/cjs/highlevel/types/misc/sticker-set.js.map +1 -1
- package/cjs/highlevel/types/misc/takeout-session.js +5 -0
- package/cjs/highlevel/types/misc/takeout-session.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-colors.js +2 -0
- package/cjs/highlevel/types/peers/chat-colors.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-event/actions.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-event/filters.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-event/index.js +2 -0
- package/cjs/highlevel/types/peers/chat-event/index.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-invite-link-member.js +2 -0
- package/cjs/highlevel/types/peers/chat-invite-link-member.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-invite-link.js +2 -0
- package/cjs/highlevel/types/peers/chat-invite-link.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-location.js +1 -0
- package/cjs/highlevel/types/peers/chat-location.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-member.js +2 -0
- package/cjs/highlevel/types/peers/chat-member.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-permissions.js +1 -0
- package/cjs/highlevel/types/peers/chat-permissions.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-photo.js +5 -0
- package/cjs/highlevel/types/peers/chat-photo.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-preview.js +2 -0
- package/cjs/highlevel/types/peers/chat-preview.js.map +1 -1
- package/cjs/highlevel/types/peers/chat.js +12 -1
- package/cjs/highlevel/types/peers/chat.js.map +1 -1
- package/cjs/highlevel/types/peers/forum-topic.js +9 -6
- package/cjs/highlevel/types/peers/forum-topic.js.map +1 -1
- package/cjs/highlevel/types/peers/peer.js.map +1 -1
- package/cjs/highlevel/types/peers/peers-index.js +3 -1
- package/cjs/highlevel/types/peers/peers-index.js.map +1 -1
- package/cjs/highlevel/types/peers/user.js +5 -1
- package/cjs/highlevel/types/peers/user.js.map +1 -1
- package/cjs/highlevel/types/premium/boost-slot.js +2 -0
- package/cjs/highlevel/types/premium/boost-slot.js.map +1 -1
- package/cjs/highlevel/types/premium/boost-stats.js +1 -0
- package/cjs/highlevel/types/premium/boost-stats.js.map +1 -1
- package/cjs/highlevel/types/premium/boost.js +2 -0
- package/cjs/highlevel/types/premium/boost.js.map +1 -1
- package/cjs/highlevel/types/reactions/emoji-status.js +1 -0
- package/cjs/highlevel/types/reactions/emoji-status.js.map +1 -1
- package/cjs/highlevel/types/reactions/peer-reaction.js +2 -0
- package/cjs/highlevel/types/reactions/peer-reaction.js.map +1 -1
- package/cjs/highlevel/types/reactions/reaction-count.js +1 -0
- package/cjs/highlevel/types/reactions/reaction-count.js.map +1 -1
- package/cjs/highlevel/types/reactions/types.js.map +1 -1
- package/cjs/highlevel/types/stories/all-stories.d.ts +2 -2
- package/cjs/highlevel/types/stories/all-stories.js +3 -1
- package/cjs/highlevel/types/stories/all-stories.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/base.js +1 -0
- package/cjs/highlevel/types/stories/interactive/base.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/channel-post.js +3 -1
- package/cjs/highlevel/types/stories/interactive/channel-post.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/index.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/input.js +1 -0
- package/cjs/highlevel/types/stories/interactive/input.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/location.js +2 -1
- package/cjs/highlevel/types/stories/interactive/location.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/reaction.js +2 -1
- package/cjs/highlevel/types/stories/interactive/reaction.js.map +1 -1
- package/cjs/highlevel/types/stories/interactive/venue.js +2 -1
- package/cjs/highlevel/types/stories/interactive/venue.js.map +1 -1
- package/cjs/highlevel/types/stories/peer-stories.js +2 -0
- package/cjs/highlevel/types/stories/peer-stories.js.map +1 -1
- package/cjs/highlevel/types/stories/stealth-mode.js +1 -0
- package/cjs/highlevel/types/stories/stealth-mode.js.map +1 -1
- package/cjs/highlevel/types/stories/story-interactions.js +2 -0
- package/cjs/highlevel/types/stories/story-interactions.js.map +1 -1
- package/cjs/highlevel/types/stories/story-viewer.d.ts +1 -1
- package/cjs/highlevel/types/stories/story-viewer.js +6 -0
- package/cjs/highlevel/types/stories/story-viewer.js.map +1 -1
- package/cjs/highlevel/types/stories/story.js +2 -0
- package/cjs/highlevel/types/stories/story.js.map +1 -1
- package/cjs/highlevel/types/updates/bot-chat-join-request.js +2 -0
- package/cjs/highlevel/types/updates/bot-chat-join-request.js.map +1 -1
- package/cjs/highlevel/types/updates/bot-reaction.js +4 -0
- package/cjs/highlevel/types/updates/bot-reaction.js.map +1 -1
- package/cjs/highlevel/types/updates/bot-stopped.js +2 -0
- package/cjs/highlevel/types/updates/bot-stopped.js.map +1 -1
- package/cjs/highlevel/types/updates/callback-query.js +4 -0
- package/cjs/highlevel/types/updates/callback-query.js.map +1 -1
- package/cjs/highlevel/types/updates/chat-join-request.js +2 -0
- package/cjs/highlevel/types/updates/chat-join-request.js.map +1 -1
- package/cjs/highlevel/types/updates/chat-member-update.js +2 -0
- package/cjs/highlevel/types/updates/chat-member-update.js.map +1 -1
- package/cjs/highlevel/types/updates/chosen-inline-result.js +2 -0
- package/cjs/highlevel/types/updates/chosen-inline-result.js.map +1 -1
- package/cjs/highlevel/types/updates/delete-message-update.js +1 -0
- package/cjs/highlevel/types/updates/delete-message-update.js.map +1 -1
- package/cjs/highlevel/types/updates/delete-story-update.js +2 -0
- package/cjs/highlevel/types/updates/delete-story-update.js.map +1 -1
- package/cjs/highlevel/types/updates/history-read-update.js +1 -0
- package/cjs/highlevel/types/updates/history-read-update.js.map +1 -1
- package/cjs/highlevel/types/updates/inline-query.js +2 -0
- package/cjs/highlevel/types/updates/inline-query.js.map +1 -1
- package/cjs/highlevel/types/updates/parse-update.js.map +1 -1
- package/cjs/highlevel/types/updates/poll-update.js +2 -0
- package/cjs/highlevel/types/updates/poll-update.js.map +1 -1
- package/cjs/highlevel/types/updates/poll-vote.js +2 -0
- package/cjs/highlevel/types/updates/poll-vote.js.map +1 -1
- package/cjs/highlevel/types/updates/pre-checkout-query.js +2 -0
- package/cjs/highlevel/types/updates/pre-checkout-query.js.map +1 -1
- package/cjs/highlevel/types/updates/story-update.js +2 -0
- package/cjs/highlevel/types/updates/story-update.js.map +1 -1
- package/cjs/highlevel/types/updates/user-status-update.js +1 -0
- package/cjs/highlevel/types/updates/user-status-update.js.map +1 -1
- package/cjs/highlevel/types/updates/user-typing-update.js +1 -0
- package/cjs/highlevel/types/updates/user-typing-update.js.map +1 -1
- package/cjs/highlevel/updates/manager.d.ts +1 -1
- package/cjs/highlevel/updates/manager.js +50 -28
- package/cjs/highlevel/updates/manager.js.map +1 -1
- package/cjs/highlevel/updates/parsed.js.map +1 -1
- package/cjs/highlevel/updates/utils.js.map +1 -1
- package/cjs/highlevel/utils/convert-file-id.js.map +1 -1
- package/cjs/highlevel/utils/entities.js.map +1 -1
- package/cjs/highlevel/utils/file-type.d.ts +1 -0
- package/cjs/highlevel/utils/file-type.js +35 -1
- package/cjs/highlevel/utils/file-type.js.map +1 -1
- package/cjs/highlevel/utils/file-utils.js +1 -1
- package/cjs/highlevel/utils/file-utils.js.map +1 -1
- package/cjs/highlevel/utils/inline-utils.js.map +1 -1
- package/cjs/highlevel/utils/inspectable.js.map +1 -1
- package/cjs/highlevel/utils/memoize.js.map +1 -1
- package/cjs/highlevel/utils/peer-utils.js.map +1 -1
- package/cjs/highlevel/utils/query-batcher.js.map +1 -1
- package/cjs/highlevel/utils/rps-meter.js +3 -0
- package/cjs/highlevel/utils/rps-meter.js.map +1 -1
- package/cjs/highlevel/utils/stream-utils.js.map +1 -1
- package/cjs/highlevel/utils/string-session.d.ts +1 -2
- package/cjs/highlevel/utils/string-session.js +27 -7
- package/cjs/highlevel/utils/string-session.js.map +1 -1
- package/cjs/highlevel/utils/voice-utils.js.map +1 -1
- package/cjs/highlevel/worker/app-config.d.ts +2 -3
- package/cjs/highlevel/worker/app-config.js +6 -3
- package/cjs/highlevel/worker/app-config.js.map +1 -1
- package/cjs/highlevel/worker/errors.js.map +1 -1
- package/cjs/highlevel/worker/invoker.js +3 -2
- package/cjs/highlevel/worker/invoker.js.map +1 -1
- package/cjs/highlevel/worker/port.d.ts +16 -17
- package/cjs/highlevel/worker/port.js +74 -49
- package/cjs/highlevel/worker/port.js.map +1 -1
- package/cjs/highlevel/worker/protocol.d.ts +2 -2
- package/cjs/highlevel/worker/protocol.js.map +1 -1
- package/cjs/highlevel/worker/storage.d.ts +9 -13
- package/cjs/highlevel/worker/storage.js +34 -19
- package/cjs/highlevel/worker/storage.js.map +1 -1
- package/cjs/highlevel/worker/worker.js +3 -0
- package/cjs/highlevel/worker/worker.js.map +1 -1
- package/cjs/network/auth-key.js +8 -1
- package/cjs/network/auth-key.js.map +1 -1
- package/cjs/network/authorization.js.map +1 -1
- package/cjs/network/client.d.ts +1 -1
- package/cjs/network/client.js +39 -14
- package/cjs/network/client.js.map +1 -1
- package/cjs/network/config-manager.js.map +1 -1
- package/cjs/network/mtproto-session.d.ts +1 -1
- package/cjs/network/mtproto-session.js +40 -30
- package/cjs/network/mtproto-session.js.map +1 -1
- package/cjs/network/multi-session-connection.d.ts +2 -2
- package/cjs/network/multi-session-connection.js +13 -7
- package/cjs/network/multi-session-connection.js.map +1 -1
- package/cjs/network/network-manager.d.ts +2 -3
- package/cjs/network/network-manager.js +49 -28
- package/cjs/network/network-manager.js.map +1 -1
- package/cjs/network/persistent-connection.d.ts +3 -3
- package/cjs/network/persistent-connection.js +33 -22
- package/cjs/network/persistent-connection.js.map +1 -1
- package/cjs/network/server-salt.js +4 -5
- package/cjs/network/server-salt.js.map +1 -1
- package/cjs/network/session-connection.d.ts +1 -1
- package/cjs/network/session-connection.js +22 -12
- package/cjs/network/session-connection.js.map +1 -1
- package/cjs/network/transports/abstract.d.ts +2 -2
- package/cjs/network/transports/abstract.js +1 -0
- package/cjs/network/transports/abstract.js.map +1 -1
- package/cjs/network/transports/intermediate.js +1 -0
- package/cjs/network/transports/intermediate.js.map +1 -1
- package/cjs/network/transports/obfuscated.js +3 -0
- package/cjs/network/transports/obfuscated.js.map +1 -1
- package/cjs/network/transports/streamed.d.ts +1 -1
- package/cjs/network/transports/streamed.js +1 -4
- package/cjs/network/transports/streamed.js.map +1 -1
- package/cjs/network/transports/wrapped.d.ts +1 -1
- package/cjs/network/transports/wrapped.js +2 -0
- package/cjs/network/transports/wrapped.js.map +1 -1
- package/cjs/platform.js.map +1 -1
- package/cjs/storage/driver.js +3 -4
- package/cjs/storage/driver.js.map +1 -1
- package/cjs/storage/memory/driver.js +1 -3
- package/cjs/storage/memory/driver.js.map +1 -1
- package/cjs/storage/memory/index.js +5 -7
- package/cjs/storage/memory/index.js.map +1 -1
- package/cjs/storage/memory/repository/auth-keys.d.ts +1 -1
- package/cjs/storage/memory/repository/auth-keys.js +2 -0
- package/cjs/storage/memory/repository/auth-keys.js.map +1 -1
- package/cjs/storage/memory/repository/kv.d.ts +1 -1
- package/cjs/storage/memory/repository/kv.js +2 -0
- package/cjs/storage/memory/repository/kv.js.map +1 -1
- package/cjs/storage/memory/repository/peers.d.ts +1 -1
- package/cjs/storage/memory/repository/peers.js +2 -0
- package/cjs/storage/memory/repository/peers.js.map +1 -1
- package/cjs/storage/memory/repository/ref-messages.d.ts +1 -1
- package/cjs/storage/memory/repository/ref-messages.js +2 -0
- package/cjs/storage/memory/repository/ref-messages.js.map +1 -1
- package/cjs/storage/service/auth-keys.js +2 -0
- package/cjs/storage/service/auth-keys.js.map +1 -1
- package/cjs/storage/service/base.js +4 -0
- package/cjs/storage/service/base.js.map +1 -1
- package/cjs/storage/service/default-dcs.js +2 -0
- package/cjs/storage/service/default-dcs.js.map +1 -1
- package/cjs/storage/service/future-salts.js +2 -1
- package/cjs/storage/service/future-salts.js.map +1 -1
- package/cjs/storage/sqlite/driver.js +10 -10
- package/cjs/storage/sqlite/driver.js.map +1 -1
- package/cjs/storage/sqlite/index.d.ts +1 -1
- package/cjs/storage/sqlite/index.js +5 -0
- package/cjs/storage/sqlite/index.js.map +1 -1
- package/cjs/storage/sqlite/repository/auth-keys.js +9 -0
- package/cjs/storage/sqlite/repository/auth-keys.js.map +1 -1
- package/cjs/storage/sqlite/repository/kv.js +5 -0
- package/cjs/storage/sqlite/repository/kv.js.map +1 -1
- package/cjs/storage/sqlite/repository/peers.js +6 -0
- package/cjs/storage/sqlite/repository/peers.js.map +1 -1
- package/cjs/storage/sqlite/repository/ref-messages.d.ts +1 -1
- package/cjs/storage/sqlite/repository/ref-messages.js +6 -0
- package/cjs/storage/sqlite/repository/ref-messages.js.map +1 -1
- package/cjs/storage/storage.d.ts +1 -3
- package/cjs/storage/storage.js +21 -13
- package/cjs/storage/storage.js.map +1 -1
- package/cjs/types/errors.js +13 -0
- package/cjs/types/errors.js.map +1 -1
- package/cjs/utils/async-lock.js +1 -3
- package/cjs/utils/async-lock.js.map +1 -1
- package/cjs/utils/bigint-utils.js.map +1 -1
- package/cjs/utils/binary/asn1-parser.js.map +1 -1
- package/cjs/utils/buffer-utils.js.map +1 -1
- package/cjs/utils/condition-variable.js +2 -0
- package/cjs/utils/condition-variable.js.map +1 -1
- package/cjs/utils/crypto/factorization.js.map +1 -1
- package/cjs/utils/crypto/keys.js.map +1 -1
- package/cjs/utils/crypto/miller-rabin.js.map +1 -1
- package/cjs/utils/crypto/password.js.map +1 -1
- package/cjs/utils/crypto/utils.js.map +1 -1
- package/cjs/utils/dcs.js +1 -1
- package/cjs/utils/dcs.js.map +1 -1
- package/cjs/utils/deque.js +8 -2
- package/cjs/utils/deque.js.map +1 -1
- package/cjs/utils/early-timer.js +4 -1
- package/cjs/utils/early-timer.js.map +1 -1
- package/cjs/utils/error-reporting.js.map +1 -1
- package/cjs/utils/function-utils.js.map +1 -1
- package/cjs/utils/linked-list.js +4 -1
- package/cjs/utils/linked-list.js.map +1 -1
- package/cjs/utils/links/bots.js.map +1 -1
- package/cjs/utils/links/chat.js.map +1 -1
- package/cjs/utils/links/common.js.map +1 -1
- package/cjs/utils/links/misc.js.map +1 -1
- package/cjs/utils/logger.d.ts +2 -2
- package/cjs/utils/logger.js +21 -14
- package/cjs/utils/logger.js.map +1 -1
- package/cjs/utils/long-utils.js +2 -6
- package/cjs/utils/long-utils.js.map +1 -1
- package/cjs/utils/lru-map.js +5 -1
- package/cjs/utils/lru-map.js.map +1 -1
- package/cjs/utils/lru-set.js +4 -0
- package/cjs/utils/lru-set.js.map +1 -1
- package/cjs/utils/peer-utils.js.map +1 -1
- package/cjs/utils/reloadable.d.ts +1 -1
- package/cjs/utils/reloadable.js +10 -7
- package/cjs/utils/reloadable.js.map +1 -1
- package/cjs/utils/sorted-array.js +2 -0
- package/cjs/utils/sorted-array.js.map +1 -1
- package/cjs/utils/tl-json.js.map +1 -1
- package/cjs/utils/type-assertions.js.map +1 -1
- package/esm/highlevel/base.d.ts +1 -1
- package/esm/highlevel/base.js +29 -23
- package/esm/highlevel/base.js.map +1 -1
- package/esm/highlevel/client.d.ts +2 -1
- package/esm/highlevel/client.js +1 -0
- package/esm/highlevel/client.js.map +1 -1
- package/esm/highlevel/managers/app-config-manager.js +7 -5
- package/esm/highlevel/managers/app-config-manager.js.map +1 -1
- package/esm/highlevel/methods/_init.js.map +1 -1
- package/esm/highlevel/methods/auth/start-test.js.map +1 -1
- package/esm/highlevel/methods/auth/start.js.map +1 -1
- package/esm/highlevel/methods/auth/utils.js.map +1 -1
- package/esm/highlevel/methods/bots/get-callback-answer.js.map +1 -1
- package/esm/highlevel/methods/bots/get-game-high-scores.js.map +1 -1
- package/esm/highlevel/methods/bots/normalize-command-scope.js.map +1 -1
- package/esm/highlevel/methods/bots/set-my-commands.js.map +1 -1
- package/esm/highlevel/methods/chats/add-chat-members.js.map +1 -1
- package/esm/highlevel/methods/chats/ban-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/batched-queries.js.map +1 -1
- package/esm/highlevel/methods/chats/delete-chat-photo.js.map +1 -1
- package/esm/highlevel/methods/chats/delete-history.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-event-log.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-members.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat-preview.js.map +1 -1
- package/esm/highlevel/methods/chats/get-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/get-full-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/get-nearby-chats.js.map +1 -1
- package/esm/highlevel/methods/chats/get-similar-channels.js.map +1 -1
- package/esm/highlevel/methods/chats/iter-chat-event-log.js.map +1 -1
- package/esm/highlevel/methods/chats/iter-chat-members.js.map +1 -1
- package/esm/highlevel/methods/chats/join-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/kick-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/leave-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/open-chat.js.map +1 -1
- package/esm/highlevel/methods/chats/reorder-usernames.js.map +1 -1
- package/esm/highlevel/methods/chats/restrict-chat-member.js.map +1 -1
- package/esm/highlevel/methods/chats/save-draft.js.map +1 -1
- package/esm/highlevel/methods/chats/set-chat-color.js.map +1 -1
- package/esm/highlevel/methods/chats/set-chat-photo.js.map +1 -1
- package/esm/highlevel/methods/chats/set-chat-title.js.map +1 -1
- package/esm/highlevel/methods/chats/toggle-fragment-username.js.map +1 -1
- package/esm/highlevel/methods/chats/unarchive-chats.js.map +1 -1
- package/esm/highlevel/methods/chats/unban-chat-member.js.map +1 -1
- package/esm/highlevel/methods/contacts/delete-contacts.js.map +1 -1
- package/esm/highlevel/methods/dialogs/create-folder.js.map +1 -1
- package/esm/highlevel/methods/dialogs/edit-folder.js.map +1 -1
- package/esm/highlevel/methods/dialogs/find-folder.js.map +1 -1
- package/esm/highlevel/methods/dialogs/get-folders.js.map +1 -1
- package/esm/highlevel/methods/dialogs/iter-dialogs.js.map +1 -1
- package/esm/highlevel/methods/files/download-buffer.js.map +1 -1
- package/esm/highlevel/methods/files/download-iterable.js +1 -1
- package/esm/highlevel/methods/files/download-iterable.js.map +1 -1
- package/esm/highlevel/methods/files/download-node-stream.js.map +1 -1
- package/esm/highlevel/methods/files/download-stream.js.map +1 -1
- package/esm/highlevel/methods/files/normalize-file-to-document.js.map +1 -1
- package/esm/highlevel/methods/files/normalize-input-file.js.map +1 -1
- package/esm/highlevel/methods/files/normalize-input-media.js +1 -2
- package/esm/highlevel/methods/files/normalize-input-media.js.map +1 -1
- package/esm/highlevel/methods/files/upload-file.js +8 -7
- package/esm/highlevel/methods/files/upload-file.js.map +1 -1
- package/esm/highlevel/methods/files/upload-media.js.map +1 -1
- package/esm/highlevel/methods/forums/iter-forum-topics.js.map +1 -1
- package/esm/highlevel/methods/invite-links/get-primary-invite-link.js.map +1 -1
- package/esm/highlevel/methods/invite-links/iter-invite-link-members.js.map +1 -1
- package/esm/highlevel/methods/invite-links/iter-invite-links.js.map +1 -1
- package/esm/highlevel/methods/messages/close-poll.js.map +1 -1
- package/esm/highlevel/methods/messages/delete-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/edit-inline-message.js.map +1 -1
- package/esm/highlevel/methods/messages/edit-message.js.map +1 -1
- package/esm/highlevel/methods/messages/find-in-update.js.map +1 -1
- package/esm/highlevel/methods/messages/forward-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
- package/esm/highlevel/methods/messages/get-discussion-message.js.map +1 -1
- package/esm/highlevel/methods/messages/get-history.js +5 -1
- package/esm/highlevel/methods/messages/get-history.js.map +1 -1
- package/esm/highlevel/methods/messages/get-message-by-link.js.map +1 -1
- package/esm/highlevel/methods/messages/get-message-group.js.map +1 -1
- package/esm/highlevel/methods/messages/get-message-reactions.js.map +1 -1
- package/esm/highlevel/methods/messages/get-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/get-reply-to.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-history.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-reaction-users.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-search-global.js.map +1 -1
- package/esm/highlevel/methods/messages/iter-search-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/read-history.js.map +1 -1
- package/esm/highlevel/methods/messages/send-answer.js.map +1 -1
- package/esm/highlevel/methods/messages/send-comment.js.map +1 -1
- package/esm/highlevel/methods/messages/send-common.js.map +1 -1
- package/esm/highlevel/methods/messages/send-copy-group.js.map +1 -1
- package/esm/highlevel/methods/messages/send-copy.js.map +1 -1
- package/esm/highlevel/methods/messages/send-media-group.js.map +1 -1
- package/esm/highlevel/methods/messages/send-media.js.map +1 -1
- package/esm/highlevel/methods/messages/send-quote.js.map +1 -1
- package/esm/highlevel/methods/messages/send-text.js.map +1 -1
- package/esm/highlevel/methods/messages/send-typing.js.map +1 -1
- package/esm/highlevel/methods/messages/send-vote.js.map +1 -1
- package/esm/highlevel/methods/messages/translate-text.js.map +1 -1
- package/esm/highlevel/methods/messages/unpin-all-messages.js.map +1 -1
- package/esm/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
- package/esm/highlevel/methods/misc/normalize-text.js.map +1 -1
- package/esm/highlevel/methods/misc/with-params.js.map +1 -1
- package/esm/highlevel/methods/password/change-cloud-password.js.map +1 -1
- package/esm/highlevel/methods/password/enable-cloud-password.js.map +1 -1
- package/esm/highlevel/methods/password/remove-cloud-password.js.map +1 -1
- package/esm/highlevel/methods/premium/can-apply-boost.js.map +1 -1
- package/esm/highlevel/methods/premium/iter-boosters.js.map +1 -1
- package/esm/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
- package/esm/highlevel/methods/stickers/delete-sticker-from-set.js.map +1 -1
- package/esm/highlevel/methods/stickers/get-custom-emojis.js.map +1 -1
- package/esm/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
- package/esm/highlevel/methods/stories/can-send-story.js.map +1 -1
- package/esm/highlevel/methods/stories/edit-story.js.map +1 -1
- package/esm/highlevel/methods/stories/find-in-update.js.map +1 -1
- package/esm/highlevel/methods/stories/hide-my-stories-views.js.map +1 -1
- package/esm/highlevel/methods/stories/iter-all-stories.js.map +1 -1
- package/esm/highlevel/methods/stories/iter-profile-stories.js.map +1 -1
- package/esm/highlevel/methods/stories/iter-story-viewers.js.map +1 -1
- package/esm/highlevel/methods/stories/send-story.js.map +1 -1
- package/esm/highlevel/methods/users/delete-profile-photos.js.map +1 -1
- package/esm/highlevel/methods/users/get-users.js.map +1 -1
- package/esm/highlevel/methods/users/iter-profile-photos.js.map +1 -1
- package/esm/highlevel/methods/users/resolve-peer-many.js.map +1 -1
- package/esm/highlevel/methods/users/resolve-peer.js.map +1 -1
- package/esm/highlevel/methods/users/set-my-emoji-status.js.map +1 -1
- package/esm/highlevel/methods/users/set-my-profile-photo.js.map +1 -1
- package/esm/highlevel/storage/service/current-user.js +2 -0
- package/esm/highlevel/storage/service/current-user.js.map +1 -1
- package/esm/highlevel/storage/service/peers.js +5 -1
- package/esm/highlevel/storage/service/peers.js.map +1 -1
- package/esm/highlevel/storage/service/ref-messages.js +3 -0
- package/esm/highlevel/storage/service/ref-messages.js.map +1 -1
- package/esm/highlevel/storage/service/updates.js +1 -0
- package/esm/highlevel/storage/service/updates.js.map +1 -1
- package/esm/highlevel/storage/storage.d.ts +1 -1
- package/esm/highlevel/storage/storage.js +17 -4
- package/esm/highlevel/storage/storage.js.map +1 -1
- package/esm/highlevel/types/auth/sent-code.js +1 -0
- package/esm/highlevel/types/auth/sent-code.js.map +1 -1
- package/esm/highlevel/types/bots/game-high-score.js +2 -0
- package/esm/highlevel/types/bots/game-high-score.js.map +1 -1
- package/esm/highlevel/types/bots/inline-message/factories.js.map +1 -1
- package/esm/highlevel/types/bots/inline-result/factories.js.map +1 -1
- package/esm/highlevel/types/bots/keyboards/builder.js +2 -1
- package/esm/highlevel/types/bots/keyboards/builder.js.map +1 -1
- package/esm/highlevel/types/bots/keyboards/factories.js.map +1 -1
- package/esm/highlevel/types/calls/discard-reason.js.map +1 -1
- package/esm/highlevel/types/conversation.js +13 -7
- package/esm/highlevel/types/conversation.js.map +1 -1
- package/esm/highlevel/types/errors.js +3 -0
- package/esm/highlevel/types/errors.js.map +1 -1
- package/esm/highlevel/types/files/file-location.js +3 -0
- package/esm/highlevel/types/files/file-location.js.map +1 -1
- package/esm/highlevel/types/files/uploaded-file.js +1 -1
- package/esm/highlevel/types/files/uploaded-file.js.map +1 -1
- package/esm/highlevel/types/files/utils.d.ts +1 -1
- package/esm/highlevel/types/files/utils.js.map +1 -1
- package/esm/highlevel/types/files/web-document.js +1 -0
- package/esm/highlevel/types/files/web-document.js.map +1 -1
- package/esm/highlevel/types/media/audio.js +3 -2
- package/esm/highlevel/types/media/audio.js.map +1 -1
- package/esm/highlevel/types/media/contact.js +2 -1
- package/esm/highlevel/types/media/contact.js.map +1 -1
- package/esm/highlevel/types/media/dice.js +125 -124
- package/esm/highlevel/types/media/dice.js.map +1 -1
- package/esm/highlevel/types/media/document-utils.js.map +1 -1
- package/esm/highlevel/types/media/document.js +2 -4
- package/esm/highlevel/types/media/document.js.map +1 -1
- package/esm/highlevel/types/media/game.js +2 -1
- package/esm/highlevel/types/media/game.js.map +1 -1
- package/esm/highlevel/types/media/invoice.js +4 -1
- package/esm/highlevel/types/media/invoice.js.map +1 -1
- package/esm/highlevel/types/media/location.js +4 -5
- package/esm/highlevel/types/media/location.js.map +1 -1
- package/esm/highlevel/types/media/photo.js +8 -1
- package/esm/highlevel/types/media/photo.js.map +1 -1
- package/esm/highlevel/types/media/poll.js +4 -1
- package/esm/highlevel/types/media/poll.js.map +1 -1
- package/esm/highlevel/types/media/sticker.js +3 -1
- package/esm/highlevel/types/media/sticker.js.map +1 -1
- package/esm/highlevel/types/media/story.js +3 -1
- package/esm/highlevel/types/media/story.js.map +1 -1
- package/esm/highlevel/types/media/thumbnail.js +35 -22
- package/esm/highlevel/types/media/thumbnail.js.map +1 -1
- package/esm/highlevel/types/media/venue.js +2 -1
- package/esm/highlevel/types/media/venue.js.map +1 -1
- package/esm/highlevel/types/media/video.js +3 -1
- package/esm/highlevel/types/media/video.js.map +1 -1
- package/esm/highlevel/types/media/voice.js +2 -1
- package/esm/highlevel/types/media/voice.js.map +1 -1
- package/esm/highlevel/types/media/web-page.js +2 -1
- package/esm/highlevel/types/media/web-page.js.map +1 -1
- package/esm/highlevel/types/messages/dialog.js +3 -0
- package/esm/highlevel/types/messages/dialog.js.map +1 -1
- package/esm/highlevel/types/messages/draft-message.js +1 -0
- package/esm/highlevel/types/messages/draft-message.js.map +1 -1
- package/esm/highlevel/types/messages/message-action.js.map +1 -1
- package/esm/highlevel/types/messages/message-entity.js +2 -0
- package/esm/highlevel/types/messages/message-entity.js.map +1 -1
- package/esm/highlevel/types/messages/message-forward.js +2 -0
- package/esm/highlevel/types/messages/message-forward.js.map +1 -1
- package/esm/highlevel/types/messages/message-media.js.map +1 -1
- package/esm/highlevel/types/messages/message-reactions.js +4 -0
- package/esm/highlevel/types/messages/message-reactions.js.map +1 -1
- package/esm/highlevel/types/messages/message-replies.js +2 -0
- package/esm/highlevel/types/messages/message-replies.js.map +1 -1
- package/esm/highlevel/types/messages/message.js +6 -0
- package/esm/highlevel/types/messages/message.js.map +1 -1
- package/esm/highlevel/types/messages/replied-message.js +2 -0
- package/esm/highlevel/types/messages/replied-message.js.map +1 -1
- package/esm/highlevel/types/misc/sticker-set.js +7 -1
- package/esm/highlevel/types/misc/sticker-set.js.map +1 -1
- package/esm/highlevel/types/misc/takeout-session.js +5 -0
- package/esm/highlevel/types/misc/takeout-session.js.map +1 -1
- package/esm/highlevel/types/peers/chat-colors.js +2 -0
- package/esm/highlevel/types/peers/chat-colors.js.map +1 -1
- package/esm/highlevel/types/peers/chat-event/actions.js.map +1 -1
- package/esm/highlevel/types/peers/chat-event/filters.js.map +1 -1
- package/esm/highlevel/types/peers/chat-event/index.js +2 -0
- package/esm/highlevel/types/peers/chat-event/index.js.map +1 -1
- package/esm/highlevel/types/peers/chat-invite-link-member.js +2 -0
- package/esm/highlevel/types/peers/chat-invite-link-member.js.map +1 -1
- package/esm/highlevel/types/peers/chat-invite-link.js +2 -0
- package/esm/highlevel/types/peers/chat-invite-link.js.map +1 -1
- package/esm/highlevel/types/peers/chat-location.js +1 -0
- package/esm/highlevel/types/peers/chat-location.js.map +1 -1
- package/esm/highlevel/types/peers/chat-member.js +2 -0
- package/esm/highlevel/types/peers/chat-member.js.map +1 -1
- package/esm/highlevel/types/peers/chat-permissions.js +1 -0
- package/esm/highlevel/types/peers/chat-permissions.js.map +1 -1
- package/esm/highlevel/types/peers/chat-photo.js +5 -0
- package/esm/highlevel/types/peers/chat-photo.js.map +1 -1
- package/esm/highlevel/types/peers/chat-preview.js +2 -0
- package/esm/highlevel/types/peers/chat-preview.js.map +1 -1
- package/esm/highlevel/types/peers/chat.js +12 -1
- package/esm/highlevel/types/peers/chat.js.map +1 -1
- package/esm/highlevel/types/peers/forum-topic.js +9 -6
- package/esm/highlevel/types/peers/forum-topic.js.map +1 -1
- package/esm/highlevel/types/peers/peer.js.map +1 -1
- package/esm/highlevel/types/peers/peers-index.js +3 -1
- package/esm/highlevel/types/peers/peers-index.js.map +1 -1
- package/esm/highlevel/types/peers/user.js +5 -1
- package/esm/highlevel/types/peers/user.js.map +1 -1
- package/esm/highlevel/types/premium/boost-slot.js +2 -0
- package/esm/highlevel/types/premium/boost-slot.js.map +1 -1
- package/esm/highlevel/types/premium/boost-stats.js +1 -0
- package/esm/highlevel/types/premium/boost-stats.js.map +1 -1
- package/esm/highlevel/types/premium/boost.js +2 -0
- package/esm/highlevel/types/premium/boost.js.map +1 -1
- package/esm/highlevel/types/reactions/emoji-status.js +1 -0
- package/esm/highlevel/types/reactions/emoji-status.js.map +1 -1
- package/esm/highlevel/types/reactions/peer-reaction.js +2 -0
- package/esm/highlevel/types/reactions/peer-reaction.js.map +1 -1
- package/esm/highlevel/types/reactions/reaction-count.js +1 -0
- package/esm/highlevel/types/reactions/reaction-count.js.map +1 -1
- package/esm/highlevel/types/reactions/types.js.map +1 -1
- package/esm/highlevel/types/stories/all-stories.d.ts +2 -2
- package/esm/highlevel/types/stories/all-stories.js +3 -1
- package/esm/highlevel/types/stories/all-stories.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/base.js +1 -0
- package/esm/highlevel/types/stories/interactive/base.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/channel-post.js +3 -1
- package/esm/highlevel/types/stories/interactive/channel-post.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/index.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/input.js +1 -0
- package/esm/highlevel/types/stories/interactive/input.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/location.js +2 -1
- package/esm/highlevel/types/stories/interactive/location.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/reaction.js +2 -1
- package/esm/highlevel/types/stories/interactive/reaction.js.map +1 -1
- package/esm/highlevel/types/stories/interactive/venue.js +2 -1
- package/esm/highlevel/types/stories/interactive/venue.js.map +1 -1
- package/esm/highlevel/types/stories/peer-stories.js +2 -0
- package/esm/highlevel/types/stories/peer-stories.js.map +1 -1
- package/esm/highlevel/types/stories/stealth-mode.js +1 -0
- package/esm/highlevel/types/stories/stealth-mode.js.map +1 -1
- package/esm/highlevel/types/stories/story-interactions.js +2 -0
- package/esm/highlevel/types/stories/story-interactions.js.map +1 -1
- package/esm/highlevel/types/stories/story-viewer.d.ts +1 -1
- package/esm/highlevel/types/stories/story-viewer.js +6 -0
- package/esm/highlevel/types/stories/story-viewer.js.map +1 -1
- package/esm/highlevel/types/stories/story.js +2 -0
- package/esm/highlevel/types/stories/story.js.map +1 -1
- package/esm/highlevel/types/updates/bot-chat-join-request.js +2 -0
- package/esm/highlevel/types/updates/bot-chat-join-request.js.map +1 -1
- package/esm/highlevel/types/updates/bot-reaction.js +4 -0
- package/esm/highlevel/types/updates/bot-reaction.js.map +1 -1
- package/esm/highlevel/types/updates/bot-stopped.js +2 -0
- package/esm/highlevel/types/updates/bot-stopped.js.map +1 -1
- package/esm/highlevel/types/updates/callback-query.js +4 -0
- package/esm/highlevel/types/updates/callback-query.js.map +1 -1
- package/esm/highlevel/types/updates/chat-join-request.js +2 -0
- package/esm/highlevel/types/updates/chat-join-request.js.map +1 -1
- package/esm/highlevel/types/updates/chat-member-update.js +2 -0
- package/esm/highlevel/types/updates/chat-member-update.js.map +1 -1
- package/esm/highlevel/types/updates/chosen-inline-result.js +2 -0
- package/esm/highlevel/types/updates/chosen-inline-result.js.map +1 -1
- package/esm/highlevel/types/updates/delete-message-update.js +1 -0
- package/esm/highlevel/types/updates/delete-message-update.js.map +1 -1
- package/esm/highlevel/types/updates/delete-story-update.js +2 -0
- package/esm/highlevel/types/updates/delete-story-update.js.map +1 -1
- package/esm/highlevel/types/updates/history-read-update.js +1 -0
- package/esm/highlevel/types/updates/history-read-update.js.map +1 -1
- package/esm/highlevel/types/updates/inline-query.js +2 -0
- package/esm/highlevel/types/updates/inline-query.js.map +1 -1
- package/esm/highlevel/types/updates/parse-update.js.map +1 -1
- package/esm/highlevel/types/updates/poll-update.js +2 -0
- package/esm/highlevel/types/updates/poll-update.js.map +1 -1
- package/esm/highlevel/types/updates/poll-vote.js +2 -0
- package/esm/highlevel/types/updates/poll-vote.js.map +1 -1
- package/esm/highlevel/types/updates/pre-checkout-query.js +2 -0
- package/esm/highlevel/types/updates/pre-checkout-query.js.map +1 -1
- package/esm/highlevel/types/updates/story-update.js +2 -0
- package/esm/highlevel/types/updates/story-update.js.map +1 -1
- package/esm/highlevel/types/updates/user-status-update.js +1 -0
- package/esm/highlevel/types/updates/user-status-update.js.map +1 -1
- package/esm/highlevel/types/updates/user-typing-update.js +1 -0
- package/esm/highlevel/types/updates/user-typing-update.js.map +1 -1
- package/esm/highlevel/updates/manager.js +50 -28
- package/esm/highlevel/updates/manager.js.map +1 -1
- package/esm/highlevel/updates/parsed.js.map +1 -1
- package/esm/highlevel/updates/utils.js.map +1 -1
- package/esm/highlevel/utils/convert-file-id.js.map +1 -1
- package/esm/highlevel/utils/entities.js.map +1 -1
- package/esm/highlevel/utils/file-type.d.ts +1 -0
- package/esm/highlevel/utils/file-type.js +34 -0
- package/esm/highlevel/utils/file-type.js.map +1 -1
- package/esm/highlevel/utils/file-utils.js +1 -1
- package/esm/highlevel/utils/file-utils.js.map +1 -1
- package/esm/highlevel/utils/inline-utils.js.map +1 -1
- package/esm/highlevel/utils/inspectable.js.map +1 -1
- package/esm/highlevel/utils/memoize.js.map +1 -1
- package/esm/highlevel/utils/peer-utils.js.map +1 -1
- package/esm/highlevel/utils/query-batcher.js.map +1 -1
- package/esm/highlevel/utils/rps-meter.js +3 -0
- package/esm/highlevel/utils/rps-meter.js.map +1 -1
- package/esm/highlevel/utils/stream-utils.js.map +1 -1
- package/esm/highlevel/utils/string-session.d.ts +1 -2
- package/esm/highlevel/utils/string-session.js +27 -7
- package/esm/highlevel/utils/string-session.js.map +1 -1
- package/esm/highlevel/utils/voice-utils.js.map +1 -1
- package/esm/highlevel/worker/app-config.d.ts +2 -3
- package/esm/highlevel/worker/app-config.js +6 -3
- package/esm/highlevel/worker/app-config.js.map +1 -1
- package/esm/highlevel/worker/errors.js.map +1 -1
- package/esm/highlevel/worker/invoker.js +3 -2
- package/esm/highlevel/worker/invoker.js.map +1 -1
- package/esm/highlevel/worker/port.d.ts +16 -17
- package/esm/highlevel/worker/port.js +74 -49
- package/esm/highlevel/worker/port.js.map +1 -1
- package/esm/highlevel/worker/protocol.d.ts +1 -1
- package/esm/highlevel/worker/protocol.js.map +1 -1
- package/esm/highlevel/worker/storage.d.ts +9 -13
- package/esm/highlevel/worker/storage.js +34 -19
- package/esm/highlevel/worker/storage.js.map +1 -1
- package/esm/highlevel/worker/worker.js +3 -0
- package/esm/highlevel/worker/worker.js.map +1 -1
- package/esm/network/auth-key.js +8 -1
- package/esm/network/auth-key.js.map +1 -1
- package/esm/network/authorization.js.map +1 -1
- package/esm/network/client.js +39 -14
- package/esm/network/client.js.map +1 -1
- package/esm/network/config-manager.js.map +1 -1
- package/esm/network/mtproto-session.js +40 -30
- package/esm/network/mtproto-session.js.map +1 -1
- package/esm/network/multi-session-connection.d.ts +1 -1
- package/esm/network/multi-session-connection.js +13 -7
- package/esm/network/multi-session-connection.js.map +1 -1
- package/esm/network/network-manager.d.ts +2 -3
- package/esm/network/network-manager.js +49 -28
- package/esm/network/network-manager.js.map +1 -1
- package/esm/network/persistent-connection.d.ts +2 -2
- package/esm/network/persistent-connection.js +33 -22
- package/esm/network/persistent-connection.js.map +1 -1
- package/esm/network/server-salt.js +4 -5
- package/esm/network/server-salt.js.map +1 -1
- package/esm/network/session-connection.d.ts +1 -1
- package/esm/network/session-connection.js +22 -12
- package/esm/network/session-connection.js.map +1 -1
- package/esm/network/transports/abstract.d.ts +1 -1
- package/esm/network/transports/abstract.js +1 -0
- package/esm/network/transports/abstract.js.map +1 -1
- package/esm/network/transports/intermediate.js +1 -0
- package/esm/network/transports/intermediate.js.map +1 -1
- package/esm/network/transports/obfuscated.js +3 -0
- package/esm/network/transports/obfuscated.js.map +1 -1
- package/esm/network/transports/streamed.js +1 -4
- package/esm/network/transports/streamed.js.map +1 -1
- package/esm/network/transports/wrapped.js +2 -0
- package/esm/network/transports/wrapped.js.map +1 -1
- package/esm/platform.js.map +1 -1
- package/esm/storage/driver.js +3 -4
- package/esm/storage/driver.js.map +1 -1
- package/esm/storage/memory/driver.js +1 -3
- package/esm/storage/memory/driver.js.map +1 -1
- package/esm/storage/memory/index.js +5 -7
- package/esm/storage/memory/index.js.map +1 -1
- package/esm/storage/memory/repository/auth-keys.d.ts +1 -1
- package/esm/storage/memory/repository/auth-keys.js +2 -0
- package/esm/storage/memory/repository/auth-keys.js.map +1 -1
- package/esm/storage/memory/repository/kv.d.ts +1 -1
- package/esm/storage/memory/repository/kv.js +2 -0
- package/esm/storage/memory/repository/kv.js.map +1 -1
- package/esm/storage/memory/repository/peers.d.ts +1 -1
- package/esm/storage/memory/repository/peers.js +2 -0
- package/esm/storage/memory/repository/peers.js.map +1 -1
- package/esm/storage/memory/repository/ref-messages.d.ts +1 -1
- package/esm/storage/memory/repository/ref-messages.js +2 -0
- package/esm/storage/memory/repository/ref-messages.js.map +1 -1
- package/esm/storage/service/auth-keys.js +2 -0
- package/esm/storage/service/auth-keys.js.map +1 -1
- package/esm/storage/service/base.js +4 -0
- package/esm/storage/service/base.js.map +1 -1
- package/esm/storage/service/default-dcs.js +2 -0
- package/esm/storage/service/default-dcs.js.map +1 -1
- package/esm/storage/service/future-salts.js +2 -1
- package/esm/storage/service/future-salts.js.map +1 -1
- package/esm/storage/sqlite/driver.js +10 -10
- package/esm/storage/sqlite/driver.js.map +1 -1
- package/esm/storage/sqlite/index.d.ts +1 -1
- package/esm/storage/sqlite/index.js +5 -0
- package/esm/storage/sqlite/index.js.map +1 -1
- package/esm/storage/sqlite/repository/auth-keys.js +9 -0
- package/esm/storage/sqlite/repository/auth-keys.js.map +1 -1
- package/esm/storage/sqlite/repository/kv.js +5 -0
- package/esm/storage/sqlite/repository/kv.js.map +1 -1
- package/esm/storage/sqlite/repository/peers.js +6 -0
- package/esm/storage/sqlite/repository/peers.js.map +1 -1
- package/esm/storage/sqlite/repository/ref-messages.d.ts +1 -1
- package/esm/storage/sqlite/repository/ref-messages.js +6 -0
- package/esm/storage/sqlite/repository/ref-messages.js.map +1 -1
- package/esm/storage/storage.d.ts +1 -3
- package/esm/storage/storage.js +21 -13
- package/esm/storage/storage.js.map +1 -1
- package/esm/types/errors.js +13 -0
- package/esm/types/errors.js.map +1 -1
- package/esm/utils/async-lock.js +1 -3
- package/esm/utils/async-lock.js.map +1 -1
- package/esm/utils/bigint-utils.js.map +1 -1
- package/esm/utils/binary/asn1-parser.js.map +1 -1
- package/esm/utils/buffer-utils.js.map +1 -1
- package/esm/utils/condition-variable.js +2 -0
- package/esm/utils/condition-variable.js.map +1 -1
- package/esm/utils/crypto/factorization.js.map +1 -1
- package/esm/utils/crypto/keys.js.map +1 -1
- package/esm/utils/crypto/miller-rabin.js.map +1 -1
- package/esm/utils/crypto/password.js.map +1 -1
- package/esm/utils/crypto/utils.js.map +1 -1
- package/esm/utils/dcs.js +1 -1
- package/esm/utils/dcs.js.map +1 -1
- package/esm/utils/deque.js +8 -2
- package/esm/utils/deque.js.map +1 -1
- package/esm/utils/early-timer.js +4 -1
- package/esm/utils/early-timer.js.map +1 -1
- package/esm/utils/error-reporting.js.map +1 -1
- package/esm/utils/function-utils.js.map +1 -1
- package/esm/utils/linked-list.js +4 -1
- package/esm/utils/linked-list.js.map +1 -1
- package/esm/utils/links/bots.js.map +1 -1
- package/esm/utils/links/chat.js.map +1 -1
- package/esm/utils/links/common.js.map +1 -1
- package/esm/utils/links/misc.js.map +1 -1
- package/esm/utils/logger.d.ts +2 -2
- package/esm/utils/logger.js +21 -14
- package/esm/utils/logger.js.map +1 -1
- package/esm/utils/long-utils.js +2 -6
- package/esm/utils/long-utils.js.map +1 -1
- package/esm/utils/lru-map.js +5 -1
- package/esm/utils/lru-map.js.map +1 -1
- package/esm/utils/lru-set.js +4 -0
- package/esm/utils/lru-set.js.map +1 -1
- package/esm/utils/peer-utils.js.map +1 -1
- package/esm/utils/reloadable.js +10 -7
- package/esm/utils/reloadable.js.map +1 -1
- package/esm/utils/sorted-array.js +2 -0
- package/esm/utils/sorted-array.js.map +1 -1
- package/esm/utils/tl-json.js.map +1 -1
- package/esm/utils/type-assertions.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../src/utils/links/chat.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAC7C,2CAA6C;AAE7C;;;;GAIG;AACU,QAAA,UAAU,GAAG,IAAA,2BAAe,EAAmB;IACxD,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvD,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QAEhC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAClC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QAExB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAC3B,CAAC;IACD,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC;IAC/C,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;QAC3D,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QAEnB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YACxB,eAAe;YACf,OAAO,IAAI,CAAA;SACd;QAED,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACzB,CAAC;CACJ,CAAC,CAAA;AAEF;;GAEG;AACU,QAAA,UAAU,GAAG,IAAA,2BAAe,EAAmB;IACxD,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC;IAClD,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAEnC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QAEtB,OAAO,EAAE,IAAI,EAAE,CAAA;IACnB,CAAC;IACD,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,CAAC;IACtD,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;QACpB,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAErC,OAAO,EAAE,IAAI,EAAE,CAAA;IACnB,CAAC;CACJ,CAAC,CAAA;AAEF,SAAS,mBAAmB,CAAC,SAAiB;IAC1C,IAAI,CAAC,CAAA;IAEL,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;QAClC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KACtB;IAED,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAAE;QAC5C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAC1C;IAED,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,EAAE;QACrE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;KACrF;IAED,OAAO,SAAS,CAAA;AACpB,CAAC;AAED;;;;;;GAMG;AACU,QAAA,OAAO,GAAG,IAAA,2BAAe,EAyBpC;IACE,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG;YACX,IAAI,EAAE,MAAM,CAAC,EAAE;YACf,MAAM,EAAE,MAAM,CAAC,QAAQ;YACvB,OAAO,EAAE,MAAM,CAAC,SAAS;YACzB,CAAC,EAAE,MAAM,CAAC,cAAc;YACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;SACzC,CAAA;QAED,IAAI,UAAU,IAAI,MAAM,EAAE;YACtB,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;SAC7D;QAED,OAAO,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IACpE,CAAC;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG;YACX,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7B,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACvE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1E,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YACjF,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;SAC9B,CAAA;QAED,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACpC,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAA;YAE1B,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAA;SACjC;QAED,IAAI,IAAI,KAAK,aAAa,EAAE;YACxB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;YAC9C,IAAI,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAA;YAE3B,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAA;SAClC;QAED,OAAO,IAAI,CAAA;IACf,CAAC;IAED,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG;YACX,OAAO,EAAE,MAAM,CAAC,SAAS;YACzB,CAAC,EAAE,MAAM,CAAC,cAAc;YACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;SACzC,CAAA;QAED,IAAI,UAAU,IAAI,MAAM,EAAE;YACtB,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACjB,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;aACxE;YAED,OAAO,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;SACrD;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAC,KAAK,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;SAC3E;QAED,OAAO,CAAC,KAAK,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IACzD,CAAC;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAE9B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QAElC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;QAC5C,IAAI,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAA;QAE1B,MAAM,MAAM,GAAG;YACX,EAAE;YACF,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1E,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YACjF,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;SAC9B,CAAA;QAED,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACnB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YACnC,IAAI,KAAK,CAAC,SAAS,CAAC;gBAAE,OAAO,IAAI,CAAA;YAEjC,OAAO;gBACH,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBACnD,GAAG,MAAM;aACZ,CAAA;SACJ;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAA;QAEpC,OAAO;YACH,QAAQ;YACR,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACnD,GAAG,MAAM;SACZ,CAAA;IACL,CAAC;CACJ,CAAC,CAAA","sourcesContent":["/* eslint-disable indent,func-call-spacing */\nimport { deeplinkBuilder } from './common.js'\n\n/**\n * Chat invite links\n *\n * Used to invite users to private groups and channels\n */\nexport const chatInvite = deeplinkBuilder<{ hash: string }>({\n internalBuild: ({ hash }) => ['join', { invite: hash }],\n internalParse: (path, query) => {\n if (path !== 'join') return null\n\n const invite = query.get('invite')\n if (!invite) return null\n\n return { hash: invite }\n },\n externalBuild: ({ hash }) => [`+${hash}`, null],\n externalParse: (path) => {\n const m = path.match(/^(?:\\+|joinchat\\/)([a-zA-Z0-9_-]+)$/)\n if (!m) return null\n\n if (m[1].match(/^[0-9]+$/)) {\n // phone number\n return null\n }\n\n return { hash: m[1] }\n },\n})\n\n/**\n * Chat folder links\n */\nexport const chatFolder = deeplinkBuilder<{ slug: string }>({\n internalBuild: ({ slug }) => ['addlist', { slug }],\n internalParse: (path, query) => {\n if (path !== 'addlist') return null\n\n const slug = query.get('slug')\n if (!slug) return null\n\n return { slug }\n },\n externalBuild: ({ slug }) => [`addlist/${slug}`, null],\n externalParse: (path) => {\n const [prefix, slug] = path.split('/')\n if (prefix !== 'addlist') return null\n\n return { slug }\n },\n})\n\nfunction parseMediaTimestamp(timestamp: string) {\n let m\n\n if ((m = timestamp.match(/^(\\d+)$/))) {\n return Number(m[1])\n }\n\n if ((m = timestamp.match(/^(\\d+):(\\d{1,2})$/))) {\n return Number(m[1]) * 60 + Number(m[2])\n }\n\n if ((m = timestamp.match(/^(?:(\\d+)h)?(?:(\\d{1,2})m)?(?:(\\d{1,2})s)$/))) {\n return (Number(m[1]) || 0) * 3600 + (Number(m[2]) || 0) * 60 + (Number(m[3]) || 0)\n }\n\n return undefined\n}\n\n/**\n * Message links\n *\n * Used to link to specific messages in public or private groups and channels.\n *\n * Note: `channelId` is a non-marked channel ID\n */\nexport const message = deeplinkBuilder<\n ({ username: string } | { channelId: number }) & {\n /** Message ID */\n id: number\n /** Thread ID */\n threadId?: number\n\n /**\n * For comments, `id` will contain the message ID of the channel message that started\n * the comment section and this field will contain the message ID of the comment in\n * the discussion group.\n */\n commentId?: number\n\n /**\n * Timestamp at which to start playing the media file present\n * in the body or in the webpage preview of the message\n */\n mediaTimestamp?: number\n\n /**\n * Whether this is a link to a specific message in the album or to the entire album\n */\n single?: boolean\n }\n>({\n internalBuild: (params) => {\n const common = {\n post: params.id,\n thread: params.threadId,\n comment: params.commentId,\n t: params.mediaTimestamp,\n single: params.single ? '' : undefined,\n }\n\n if ('username' in params) {\n return ['resolve', { domain: params.username, ...common }]\n }\n\n return ['privatepost', { channel: params.channelId, ...common }]\n },\n internalParse: (path, query) => {\n const common = {\n id: Number(query.get('post')),\n threadId: query.has('thread') ? Number(query.get('thread')) : undefined,\n commentId: query.has('comment') ? Number(query.get('comment')) : undefined,\n mediaTimestamp: query.has('t') ? parseMediaTimestamp(query.get('t')!) : undefined,\n single: query.has('single'),\n }\n\n if (path === 'resolve') {\n const username = query.get('domain')\n if (!username) return null\n\n return { username, ...common }\n }\n\n if (path === 'privatepost') {\n const channelId = Number(query.get('channel'))\n if (!channelId) return null\n\n return { channelId, ...common }\n }\n\n return null\n },\n\n externalBuild: (params) => {\n const common = {\n comment: params.commentId,\n t: params.mediaTimestamp,\n single: params.single ? '' : undefined,\n }\n\n if ('username' in params) {\n if (params.threadId) {\n return [`${params.username}/${params.threadId}/${params.id}`, common]\n }\n\n return [`${params.username}/${params.id}`, common]\n }\n\n if (params.threadId) {\n return [`c/${params.channelId}/${params.threadId}/${params.id}`, common]\n }\n\n return [`c/${params.channelId}/${params.id}`, common]\n },\n externalParse: (path, query) => {\n const chunks = path.split('/')\n\n if (chunks.length < 2) return null\n\n const id = Number(chunks[chunks.length - 1])\n if (isNaN(id)) return null\n\n const common = {\n id,\n commentId: query.has('comment') ? Number(query.get('comment')) : undefined,\n mediaTimestamp: query.has('t') ? parseMediaTimestamp(query.get('t')!) : undefined,\n single: query.has('single'),\n }\n\n if (chunks[0] === 'c') {\n const channelId = Number(chunks[1])\n if (isNaN(channelId)) return null\n\n return {\n channelId,\n threadId: chunks[3] ? Number(chunks[2]) : undefined,\n ...common,\n }\n }\n\n const username = chunks[0]\n if (username[0] === '+') return null\n\n return {\n username,\n threadId: chunks[2] ? Number(chunks[1]) : undefined,\n ...common,\n }\n },\n})\n"]}
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../src/utils/links/chat.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable indent,func-call-spacing */\nimport { deeplinkBuilder } from './common.js'\n\n/**\n * Chat invite links\n *\n * Used to invite users to private groups and channels\n */\nexport const chatInvite = deeplinkBuilder<{ hash: string }>({\n internalBuild: ({ hash }) => ['join', { invite: hash }],\n internalParse: (path, query) => {\n if (path !== 'join') return null\n\n const invite = query.get('invite')\n if (!invite) return null\n\n return { hash: invite }\n },\n externalBuild: ({ hash }) => [`+${hash}`, null],\n externalParse: (path) => {\n const m = path.match(/^(?:\\+|joinchat\\/)([a-zA-Z0-9_-]+)$/)\n if (!m) return null\n\n if (m[1].match(/^[0-9]+$/)) {\n // phone number\n return null\n }\n\n return { hash: m[1] }\n },\n})\n\n/**\n * Chat folder links\n */\nexport const chatFolder = deeplinkBuilder<{ slug: string }>({\n internalBuild: ({ slug }) => ['addlist', { slug }],\n internalParse: (path, query) => {\n if (path !== 'addlist') return null\n\n const slug = query.get('slug')\n if (!slug) return null\n\n return { slug }\n },\n externalBuild: ({ slug }) => [`addlist/${slug}`, null],\n externalParse: (path) => {\n const [prefix, slug] = path.split('/')\n if (prefix !== 'addlist') return null\n\n return { slug }\n },\n})\n\nfunction parseMediaTimestamp(timestamp: string) {\n let m\n\n if ((m = timestamp.match(/^(\\d+)$/))) {\n return Number(m[1])\n }\n\n if ((m = timestamp.match(/^(\\d+):(\\d{1,2})$/))) {\n return Number(m[1]) * 60 + Number(m[2])\n }\n\n if ((m = timestamp.match(/^(?:(\\d+)h)?(?:(\\d{1,2})m)?(?:(\\d{1,2})s)$/))) {\n return (Number(m[1]) || 0) * 3600 + (Number(m[2]) || 0) * 60 + (Number(m[3]) || 0)\n }\n\n return undefined\n}\n\n/**\n * Message links\n *\n * Used to link to specific messages in public or private groups and channels.\n *\n * Note: `channelId` is a non-marked channel ID\n */\nexport const message = deeplinkBuilder<\n ({ username: string } | { channelId: number }) & {\n /** Message ID */\n id: number\n /** Thread ID */\n threadId?: number\n\n /**\n * For comments, `id` will contain the message ID of the channel message that started\n * the comment section and this field will contain the message ID of the comment in\n * the discussion group.\n */\n commentId?: number\n\n /**\n * Timestamp at which to start playing the media file present\n * in the body or in the webpage preview of the message\n */\n mediaTimestamp?: number\n\n /**\n * Whether this is a link to a specific message in the album or to the entire album\n */\n single?: boolean\n }\n>({\n internalBuild: (params) => {\n const common = {\n post: params.id,\n thread: params.threadId,\n comment: params.commentId,\n t: params.mediaTimestamp,\n single: params.single ? '' : undefined,\n }\n\n if ('username' in params) {\n return ['resolve', { domain: params.username, ...common }]\n }\n\n return ['privatepost', { channel: params.channelId, ...common }]\n },\n internalParse: (path, query) => {\n const common = {\n id: Number(query.get('post')),\n threadId: query.has('thread') ? Number(query.get('thread')) : undefined,\n commentId: query.has('comment') ? Number(query.get('comment')) : undefined,\n mediaTimestamp: query.has('t') ? parseMediaTimestamp(query.get('t')!) : undefined,\n single: query.has('single'),\n }\n\n if (path === 'resolve') {\n const username = query.get('domain')\n if (!username) return null\n\n return { username, ...common }\n }\n\n if (path === 'privatepost') {\n const channelId = Number(query.get('channel'))\n if (!channelId) return null\n\n return { channelId, ...common }\n }\n\n return null\n },\n\n externalBuild: (params) => {\n const common = {\n comment: params.commentId,\n t: params.mediaTimestamp,\n single: params.single ? '' : undefined,\n }\n\n if ('username' in params) {\n if (params.threadId) {\n return [`${params.username}/${params.threadId}/${params.id}`, common]\n }\n\n return [`${params.username}/${params.id}`, common]\n }\n\n if (params.threadId) {\n return [`c/${params.channelId}/${params.threadId}/${params.id}`, common]\n }\n\n return [`c/${params.channelId}/${params.id}`, common]\n },\n externalParse: (path, query) => {\n const chunks = path.split('/')\n\n if (chunks.length < 2) return null\n\n const id = Number(chunks[chunks.length - 1])\n if (isNaN(id)) return null\n\n const common = {\n id,\n commentId: query.has('comment') ? Number(query.get('comment')) : undefined,\n mediaTimestamp: query.has('t') ? parseMediaTimestamp(query.get('t')!) : undefined,\n single: query.has('single'),\n }\n\n if (chunks[0] === 'c') {\n const channelId = Number(chunks[1])\n if (isNaN(channelId)) return null\n\n return {\n channelId,\n threadId: chunks[3] ? Number(chunks[2]) : undefined,\n ...common,\n }\n }\n\n const username = chunks[0]\n if (username[0] === '+') return null\n\n return {\n username,\n threadId: chunks[2] ? Number(chunks[1]) : undefined,\n ...common,\n }\n },\n})\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/links/common.ts"],"names":[],"mappings":";;;AAmCA,SAAS,UAAU,CAAC,KAAiB;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IAErB,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/links/common.ts"],"names":[],"mappings":";;;AAmCA,SAAS,UAAU,CAAC,KAAiB;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IAErB,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,kCAAkC;QAClC,IAAI,KAAK,IAAI,SAAS;YAAE,SAAQ;QAEhC,IAAI,GAAG;YAAE,GAAG,IAAI,GAAG,CAAA;QAEnB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACjB,GAAG,IAAI,GAAG,GAAG,EAAE,CAAA;YACf,SAAQ;QACZ,CAAC;QAED,GAAG,IAAI,GAAG,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAA;IAChD,CAAC;IAED,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAEnB,OAAO,IAAI,GAAG,EAAE,CAAA;AACpB,CAAC;AAED,0BAA0B,CAAC,SAAgB,eAAe,CAAI,MAA+B;IACzF,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAE7E,MAAM,GAAG,GAAG,CAAC,OAAkC,EAAE,EAAE;QAC/C,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;QAEhE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YAEtE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,IAAS,CAAC,CAAA;YAE9C,OAAO,QAAQ,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAA;QAC7C,CAAC;QAED,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAErE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,IAAS,CAAC,CAAA;QAE9C,OAAO,GAAG,QAAQ,MAAM,MAAM,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAA;IAChE,CAAC,CAAA;IAED,MAAM,EAAE,GAAG,GAAkB,CAAA;IAE7B,EAAE,CAAC,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAE1C,uEAAuE;QACvE,IAAI,UAAU;YAAE,GAAG,GAAG,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAEpD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAE3B,IAAI,UAAU,EAAE,CAAC;YACb,IAAI,CAAC,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YAEtE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAErC,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAErE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAErC,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;IACnD,CAAC,CAAA;IAED,OAAO,EAAE,CAAA;AACb,CAAC;AA/C0B,0CA+C1B","sourcesContent":["export interface CommonDeeplinkOptions {\n /**\n * Protocol to use for deeplink\n * - `tg` - use `tg://` protocol links (default)\n * - `http` - use `http://` protocol\n * - `https` - use `https://` protocol\n * - `none` - don't use any protocol\n *\n * @default 'https'\n */\n protocol?: 'tg' | 'http' | 'https' | 'none'\n\n /**\n * For protocols except `tg://`, domain to use\n *\n * @default 't.me'\n */\n domain?: string\n}\n\ntype InputQuery = Record<string, string | number | true | undefined> | null\n\ninterface BuildDeeplinkOptions<T> {\n internalBuild?: (options: T) => [string, InputQuery]\n internalParse?: (path: string, query: URLSearchParams) => T | null\n\n externalBuild?: (options: T) => [string, InputQuery]\n externalParse?: (path: string, query: URLSearchParams) => T | null\n}\n\nexport type Deeplink<T> = {\n (options: T & CommonDeeplinkOptions): string\n parse: (url: string) => T | null\n}\n\nfunction writeQuery(query: InputQuery) {\n if (!query) return ''\n\n let str = ''\n\n for (const [key, value] of Object.entries(query)) {\n // eslint-disable-next-line eqeqeq\n if (value == undefined) continue\n\n if (str) str += '&'\n\n if (value === true) {\n str += `${key}`\n continue\n }\n\n str += `${key}=${encodeURIComponent(value)}`\n }\n\n if (!str) return ''\n\n return `?${str}`\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function deeplinkBuilder<T>(params: BuildDeeplinkOptions<T>): Deeplink<T> {\n const { internalBuild, internalParse, externalBuild, externalParse } = params\n\n const fn_ = (options: T & CommonDeeplinkOptions) => {\n const { protocol = 'https', domain = 't.me', ...rest } = options\n\n if (protocol === 'tg') {\n if (!internalBuild) throw new Error('tg:// deeplink is not supported')\n\n const [path, query] = internalBuild(rest as T)\n\n return `tg://${path}${writeQuery(query)}`\n }\n\n if (!externalBuild) throw new Error('t.me deeplink is not supported')\n\n const [path, query] = externalBuild(rest as T)\n\n return `${protocol}://${domain}/${path}${writeQuery(query)}`\n }\n\n const fn = fn_ as Deeplink<T>\n\n fn.parse = (url: string) => {\n const isInternal = url.startsWith('tg://')\n\n // URL with non-standard protocols has bad behavior across environments\n if (isInternal) url = `https://fake/${url.slice(5)}`\n\n const parsed = new URL(url)\n\n if (isInternal) {\n if (!internalParse) throw new Error('tg:// deeplink is not supported')\n\n const path = parsed.pathname.slice(1)\n\n return internalParse(path, parsed.searchParams)\n }\n\n if (!externalParse) throw new Error('t.me deeplink is not supported')\n\n const path = parsed.pathname.slice(1)\n\n return externalParse(path, parsed.searchParams)\n }\n\n return fn\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../../src/utils/links/misc.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAE7C;;;;GAIG;AACU,QAAA,KAAK,GAAG,IAAA,2BAAe,EAAiC;IACjE,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC5D,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAEnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QAErB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE9B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,CAAA;IAC3C,CAAC;IACD,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC1D,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAA;QAEjC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QAErB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE9B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,CAAA;IAC3C,CAAC;CACJ,CAAC,CAAA;AAEF;;;;GAIG;AACU,QAAA,KAAK,GAAG,IAAA,2BAAe,EAA+C;IAC/E,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;QACtB,IAAI,UAAU,IAAI,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../../src/utils/links/misc.ts"],"names":[],"mappings":"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","sourcesContent":["import { deeplinkBuilder } from './common.js'\n\n/**\n * Share links\n *\n * Used to share a prepared message and URL into a chosen chat's text field.\n */\nexport const share = deeplinkBuilder<{ url: string; text?: string }>({\n internalBuild: ({ url, text }) => ['msg_url', { url, text }],\n internalParse: (path, query) => {\n if (path !== 'msg_url') return null\n\n const url = query.get('url')\n if (!url) return null\n\n const text = query.get('text')\n\n return { url, text: text || undefined }\n },\n externalBuild: ({ url, text }) => ['share', { url, text }],\n externalParse: (path, query) => {\n if (path !== 'share') return null\n\n const url = query.get('url')\n if (!url) return null\n\n const text = query.get('text')\n\n return { url, text: text || undefined }\n },\n})\n\n/**\n * Boost links\n *\n * Used by users to boost channels, granting them the ability to post stories.\n */\nexport const boost = deeplinkBuilder<{ username: string } | { channelId: number }>({\n internalBuild: (params) => {\n if ('username' in params) {\n return ['boost', { domain: params.username }]\n }\n\n return ['boost', { channel: params.channelId }]\n },\n internalParse: (path, query) => {\n if (path !== 'boost') return null\n\n const username = query.get('domain')\n\n if (username) {\n return { username }\n }\n\n const channelId = Number(query.get('channel'))\n\n if (!isNaN(channelId)) {\n return { channelId: Number(channelId) }\n }\n\n return null\n },\n externalBuild: (params) => {\n if ('username' in params) {\n return [params.username, { boost: true }]\n }\n\n return [`c/${params.channelId}`, { boost: true }]\n },\n externalParse: (path, query) => {\n if (!query.has('boost')) return null\n\n if (path.startsWith('c/')) {\n const channelId = Number(path.slice(2))\n if (isNaN(channelId)) return null\n\n return { channelId }\n }\n\n if (path.includes('/')) return null\n\n return { username: path }\n },\n})\n"]}
|
package/cjs/utils/logger.d.ts
CHANGED
|
@@ -34,11 +34,11 @@ export declare class LogManager extends Logger {
|
|
|
34
34
|
static INFO: number;
|
|
35
35
|
static DEBUG: number;
|
|
36
36
|
static VERBOSE: number;
|
|
37
|
-
constructor(tag?: string);
|
|
38
|
-
private _filter;
|
|
39
37
|
readonly platform: import("../platform.js").ICorePlatform;
|
|
40
38
|
level: number;
|
|
41
39
|
handler: (color: number, level: number, tag: string, fmt: string, args: unknown[]) => void;
|
|
40
|
+
constructor(tag?: string);
|
|
41
|
+
private _filter;
|
|
42
42
|
/**
|
|
43
43
|
* Create a {@link Logger} with the given tag
|
|
44
44
|
*
|
package/cjs/utils/logger.js
CHANGED
|
@@ -8,16 +8,15 @@ const FORMATTER_RE = /%[a-zA-Z]/g;
|
|
|
8
8
|
* Logger created by {@link LogManager}
|
|
9
9
|
*/
|
|
10
10
|
class Logger {
|
|
11
|
+
mgr;
|
|
12
|
+
tag;
|
|
13
|
+
parent;
|
|
14
|
+
color;
|
|
15
|
+
prefix = '';
|
|
11
16
|
constructor(mgr, tag, parent = mgr) {
|
|
12
17
|
this.mgr = mgr;
|
|
13
18
|
this.tag = tag;
|
|
14
19
|
this.parent = parent;
|
|
15
|
-
this.prefix = '';
|
|
16
|
-
this.error = this.log.bind(this, LogManager.ERROR);
|
|
17
|
-
this.warn = this.log.bind(this, LogManager.WARN);
|
|
18
|
-
this.info = this.log.bind(this, LogManager.INFO);
|
|
19
|
-
this.debug = this.log.bind(this, LogManager.DEBUG);
|
|
20
|
-
this.verbose = this.log.bind(this, LogManager.VERBOSE);
|
|
21
20
|
let hash = 0;
|
|
22
21
|
for (let i = 0; i < tag.length; i++) {
|
|
23
22
|
hash = (hash << 5) - hash + tag.charCodeAt(i);
|
|
@@ -96,6 +95,11 @@ class Logger {
|
|
|
96
95
|
}
|
|
97
96
|
this.mgr.handler(this.color, level, this.tag, this.getPrefix() + fmt, args);
|
|
98
97
|
}
|
|
98
|
+
error = this.log.bind(this, LogManager.ERROR);
|
|
99
|
+
warn = this.log.bind(this, LogManager.WARN);
|
|
100
|
+
info = this.log.bind(this, LogManager.INFO);
|
|
101
|
+
debug = this.log.bind(this, LogManager.DEBUG);
|
|
102
|
+
verbose = this.log.bind(this, LogManager.VERBOSE);
|
|
99
103
|
/**
|
|
100
104
|
* Create a {@link Logger} with the given tag
|
|
101
105
|
* from the same {@link LogManager} as the current
|
|
@@ -113,16 +117,25 @@ const defaultFilter = () => true;
|
|
|
113
117
|
* Log manager. A logger that allows managing child loggers
|
|
114
118
|
*/
|
|
115
119
|
class LogManager extends Logger {
|
|
120
|
+
static OFF = 0;
|
|
121
|
+
static ERROR = 1;
|
|
122
|
+
static WARN = 2;
|
|
123
|
+
static INFO = 3;
|
|
124
|
+
static DEBUG = 4;
|
|
125
|
+
static VERBOSE = 5;
|
|
126
|
+
platform;
|
|
127
|
+
level;
|
|
128
|
+
handler;
|
|
116
129
|
constructor(tag = 'base') {
|
|
117
130
|
// workaround because we cant pass this to super
|
|
118
131
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument
|
|
119
132
|
super(null, tag);
|
|
120
|
-
this.
|
|
133
|
+
this.mgr = this;
|
|
121
134
|
this.platform = (0, platform_js_1.getPlatform)();
|
|
122
135
|
this.level = this.platform.getDefaultLogLevel() ?? DEFAULT_LOG_LEVEL;
|
|
123
136
|
this.handler = this.platform.log.bind(this.platform);
|
|
124
|
-
this.mgr = this;
|
|
125
137
|
}
|
|
138
|
+
_filter = defaultFilter;
|
|
126
139
|
/**
|
|
127
140
|
* Create a {@link Logger} with the given tag
|
|
128
141
|
*
|
|
@@ -141,10 +154,4 @@ class LogManager extends Logger {
|
|
|
141
154
|
}
|
|
142
155
|
}
|
|
143
156
|
exports.LogManager = LogManager;
|
|
144
|
-
LogManager.OFF = 0;
|
|
145
|
-
LogManager.ERROR = 1;
|
|
146
|
-
LogManager.WARN = 2;
|
|
147
|
-
LogManager.INFO = 3;
|
|
148
|
-
LogManager.DEBUG = 4;
|
|
149
|
-
LogManager.VERBOSE = 5;
|
|
150
157
|
//# sourceMappingURL=logger.js.map
|
package/cjs/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { getPlatform } from '../platform.js'\n\nconst DEFAULT_LOG_LEVEL = 3\nconst FORMATTER_RE = /%[a-zA-Z]/g\n\n/**\n * Logger created by {@link LogManager}\n */\nexport class Logger {\n private color: number\n\n prefix = ''\n\n constructor(\n readonly mgr: LogManager,\n readonly tag: string,\n readonly parent: Logger = mgr,\n ) {\n let hash = 0\n\n for (let i = 0; i < tag.length; i++) {\n hash = (hash << 5) - hash + tag.charCodeAt(i)\n hash |= 0 // convert to 32bit int\n }\n\n this.color = Math.abs(hash) % 6\n }\n\n getPrefix(): string {\n let s = ''\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let obj: Logger | undefined = this\n\n while (obj) {\n if (obj.prefix) s = obj.prefix + s\n obj = obj.parent\n }\n\n return s\n }\n\n log(level: number, fmt: string, ...args: unknown[]): void {\n if (level > this.mgr.level) return\n // eslint-disable-next-line dot-notation\n if (!this.mgr['_filter'](this.tag)) return\n\n // custom formatters\n if (\n fmt.includes('%h') ||\n fmt.includes('%b') ||\n fmt.includes('%j') ||\n fmt.includes('%J') ||\n fmt.includes('%l') ||\n fmt.includes('%L')\n ) {\n let idx = 0\n fmt = fmt.replace(FORMATTER_RE, (m) => {\n if (m === '%h' || m === '%b' || m === '%j' || m === '%J' || m === '%l' || m === '%L') {\n let val = args[idx]\n\n args.splice(idx, 1)\n\n if (m === '%h') {\n if (ArrayBuffer.isView(val)) return this.mgr.platform.hexEncode(val as Uint8Array)\n if (typeof val === 'number' || typeof val === 'bigint') return val.toString(16)\n\n return String(val)\n }\n if (m === '%b') return String(Boolean(val))\n\n if (m === '%j' || m === '%J') {\n if (m === '%J') {\n val = [...(val as IterableIterator<unknown>)]\n }\n\n return JSON.stringify(val, (k, v) => {\n if (\n ArrayBuffer.isView(v) ||\n (typeof v === 'object' && v.type === 'Buffer' && Array.isArray(v.data)) // todo: how can we do this better?\n ) {\n // eslint-disable-next-line\n let str = v.data ? Buffer.from(v.data as number[]).toString('hex') : this.mgr.platform.hexEncode(v)\n\n if (str.length > 300) {\n str = str.slice(0, 300) + '...'\n }\n\n return str\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return v\n })\n }\n if (m === '%l') return String(val)\n\n if (m === '%L') {\n if (!Array.isArray(val)) return 'n/a'\n\n return `[${(val as unknown[]).map(String).join(', ')}]`\n }\n }\n\n idx++\n\n return m\n })\n }\n\n this.mgr.handler(this.color, level, this.tag, this.getPrefix() + fmt, args)\n }\n\n readonly error = this.log.bind(this, LogManager.ERROR)\n readonly warn = this.log.bind(this, LogManager.WARN)\n readonly info = this.log.bind(this, LogManager.INFO)\n readonly debug = this.log.bind(this, LogManager.DEBUG)\n readonly verbose = this.log.bind(this, LogManager.VERBOSE)\n\n /**\n * Create a {@link Logger} with the given tag\n * from the same {@link LogManager} as the current\n * Logger.\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this.mgr, tag, this)\n }\n}\n\nconst defaultFilter = () => true\n\n/**\n * Log manager. A logger that allows managing child loggers\n */\nexport class LogManager extends Logger {\n static OFF = 0\n static ERROR = 1\n static WARN = 2\n static INFO = 3\n static DEBUG = 4\n static VERBOSE = 5\n\n constructor(tag = 'base') {\n // workaround because we cant pass this to super\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument\n super(null as any, tag)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ;(this as any).mgr = this\n }\n\n private _filter: (tag: string) => boolean = defaultFilter\n\n readonly platform = getPlatform()\n\n level = this.platform.getDefaultLogLevel() ?? DEFAULT_LOG_LEVEL\n handler = this.platform.log.bind(this.platform)\n\n /**\n * Create a {@link Logger} with the given tag\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this, tag)\n }\n\n /**\n * Filter logging by tags.\n *\n * @param cb\n */\n filter(cb: ((tag: string) => boolean) | null): void {\n this._filter = cb ?? defaultFilter\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { getPlatform } from '../platform.js'\n\nconst DEFAULT_LOG_LEVEL = 3\nconst FORMATTER_RE = /%[a-zA-Z]/g\n\n/**\n * Logger created by {@link LogManager}\n */\nexport class Logger {\n private color: number\n\n prefix = ''\n\n constructor(\n readonly mgr: LogManager,\n readonly tag: string,\n readonly parent: Logger = mgr,\n ) {\n let hash = 0\n\n for (let i = 0; i < tag.length; i++) {\n hash = (hash << 5) - hash + tag.charCodeAt(i)\n hash |= 0 // convert to 32bit int\n }\n\n this.color = Math.abs(hash) % 6\n }\n\n getPrefix(): string {\n let s = ''\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let obj: Logger | undefined = this\n\n while (obj) {\n if (obj.prefix) s = obj.prefix + s\n obj = obj.parent\n }\n\n return s\n }\n\n log(level: number, fmt: string, ...args: unknown[]): void {\n if (level > this.mgr.level) return\n // eslint-disable-next-line dot-notation\n if (!this.mgr['_filter'](this.tag)) return\n\n // custom formatters\n if (\n fmt.includes('%h') ||\n fmt.includes('%b') ||\n fmt.includes('%j') ||\n fmt.includes('%J') ||\n fmt.includes('%l') ||\n fmt.includes('%L')\n ) {\n let idx = 0\n fmt = fmt.replace(FORMATTER_RE, (m) => {\n if (m === '%h' || m === '%b' || m === '%j' || m === '%J' || m === '%l' || m === '%L') {\n let val = args[idx]\n\n args.splice(idx, 1)\n\n if (m === '%h') {\n if (ArrayBuffer.isView(val)) return this.mgr.platform.hexEncode(val as Uint8Array)\n if (typeof val === 'number' || typeof val === 'bigint') return val.toString(16)\n\n return String(val)\n }\n if (m === '%b') return String(Boolean(val))\n\n if (m === '%j' || m === '%J') {\n if (m === '%J') {\n val = [...(val as IterableIterator<unknown>)]\n }\n\n return JSON.stringify(val, (k, v) => {\n if (\n ArrayBuffer.isView(v) ||\n (typeof v === 'object' && v.type === 'Buffer' && Array.isArray(v.data)) // todo: how can we do this better?\n ) {\n // eslint-disable-next-line\n let str = v.data ? Buffer.from(v.data as number[]).toString('hex') : this.mgr.platform.hexEncode(v)\n\n if (str.length > 300) {\n str = str.slice(0, 300) + '...'\n }\n\n return str\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return v\n })\n }\n if (m === '%l') return String(val)\n\n if (m === '%L') {\n if (!Array.isArray(val)) return 'n/a'\n\n return `[${(val as unknown[]).map(String).join(', ')}]`\n }\n }\n\n idx++\n\n return m\n })\n }\n\n this.mgr.handler(this.color, level, this.tag, this.getPrefix() + fmt, args)\n }\n\n readonly error = this.log.bind(this, LogManager.ERROR)\n readonly warn = this.log.bind(this, LogManager.WARN)\n readonly info = this.log.bind(this, LogManager.INFO)\n readonly debug = this.log.bind(this, LogManager.DEBUG)\n readonly verbose = this.log.bind(this, LogManager.VERBOSE)\n\n /**\n * Create a {@link Logger} with the given tag\n * from the same {@link LogManager} as the current\n * Logger.\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this.mgr, tag, this)\n }\n}\n\nconst defaultFilter = () => true\n\n/**\n * Log manager. A logger that allows managing child loggers\n */\nexport class LogManager extends Logger {\n static OFF = 0\n static ERROR = 1\n static WARN = 2\n static INFO = 3\n static DEBUG = 4\n static VERBOSE = 5\n\n readonly platform\n level: number\n handler\n\n constructor(tag = 'base') {\n // workaround because we cant pass this to super\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument\n super(null as any, tag)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ;(this as any).mgr = this\n\n this.platform = getPlatform()\n this.level = this.platform.getDefaultLogLevel() ?? DEFAULT_LOG_LEVEL\n this.handler = this.platform.log.bind(this.platform)\n }\n\n private _filter: (tag: string) => boolean = defaultFilter\n\n /**\n * Create a {@link Logger} with the given tag\n *\n * @param tag Logger tag\n */\n create(tag: string): Logger {\n return new Logger(this, tag)\n }\n\n /**\n * Filter logging by tags.\n *\n * @param cb\n */\n filter(cb: ((tag: string) => boolean) | null): void {\n this._filter = cb ?? defaultFilter\n }\n}\n"]}
|
package/cjs/utils/long-utils.js
CHANGED
|
@@ -106,9 +106,7 @@ exports.longFromFastString = longFromFastString;
|
|
|
106
106
|
* Uses fast string representation internally.
|
|
107
107
|
*/
|
|
108
108
|
class LongMap {
|
|
109
|
-
|
|
110
|
-
this._map = new Map();
|
|
111
|
-
}
|
|
109
|
+
_map = new Map();
|
|
112
110
|
set(key, value) {
|
|
113
111
|
this._map.set(longToFastString(key), value);
|
|
114
112
|
}
|
|
@@ -143,9 +141,7 @@ exports.LongMap = LongMap;
|
|
|
143
141
|
* Uses fast string representation internally
|
|
144
142
|
*/
|
|
145
143
|
class LongSet {
|
|
146
|
-
|
|
147
|
-
this._set = new Set();
|
|
148
|
-
}
|
|
144
|
+
_set = new Set();
|
|
149
145
|
get size() {
|
|
150
146
|
return this._set.size;
|
|
151
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"long-utils.js","sourceRoot":"","sources":["../../../src/utils/long-utils.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAEvB,uDAAsD;AACtD,mDAA8C;AAE9C;;;;GAIG;AACH,SAAgB,UAAU,CAAC,QAAQ,GAAG,KAAK;IACvC,MAAM,EAAE,GAAG,IAAA,4BAAY,EAAC,UAAU,CAAC,CAAA;IACnC,MAAM,EAAE,GAAG,IAAA,4BAAY,EAAC,UAAU,CAAC,CAAA;IAEnC,OAAO,IAAI,cAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AACrC,CAAC;AALD,gCAKC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,GAAe,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAE,GAAG,IAAI;IACvE,MAAM,EAAE,GAAG,IAAA,oCAAkB,EAAC,GAAG,CAAC,CAAA;IAElC,IAAI,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"long-utils.js","sourceRoot":"","sources":["../../../src/utils/long-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { dataViewFromBuffer } from './buffer-utils.js'\nimport { getRandomInt } from './misc-utils.js'\n\n/**\n * Get a random Long\n *\n * @param unsigned Whether the number should be unsigned\n */\nexport function randomLong(unsigned = false): Long {\n const lo = getRandomInt(0xffffffff)\n const hi = getRandomInt(0xffffffff)\n\n return new Long(lo, hi, unsigned)\n}\n\n/**\n * Read a Long from a buffer\n *\n * @param buf Buffer to read from\n * @param unsigned Whether the number should be unsigned\n * @param le Whether the number is little-endian\n */\nexport function longFromBuffer(buf: Uint8Array, unsigned = false, le = true): Long {\n const dv = dataViewFromBuffer(buf)\n\n if (le) {\n return new Long(dv.getInt32(0, true), dv.getInt32(4, true), unsigned)\n }\n\n return new Long(dv.getInt32(4, false), dv.getInt32(0, false), unsigned)\n}\n\n/**\n * Remove a Long from an array\n *\n * @param arr Array to remove from\n * @param val Value to remove\n */\nexport function removeFromLongArray(arr: Long[], val: Long): boolean {\n for (let i = 0; i < arr.length; i++) {\n const v = arr[i]\n\n // v === val for the case when the exact same object was passed\n if (v === val || v.eq(val)) {\n arr.splice(i, 1)\n\n return true\n }\n }\n\n return false\n}\n\n/**\n * Compare two Longs and return -1, 0 or 1,\n * to be used as a comparator function.\n */\nexport function compareLongs(a: Long, b: Long): number {\n if (a.eq(b)) return 0\n\n if (a.gt(b)) return 1\n\n return -1\n}\n\n/**\n * Serialize a Long (int64) to its fast string representation:\n * `$high|$low`.\n *\n * This method is about 500* times faster than using `Long.toString()`,\n * and very useful when the string will only ever be used internally\n * (e.g. for keying a map)\n *\n * _\\* benchmark result, YMMV_\n *\n * @param val\n */\nexport function longToFastString(val: Long): string {\n return `${val.low}|${val.high}`\n}\n\n/**\n * Parse a Long (int64) from its fast string representation:\n * `$high|$low`.\n *\n * This method is about 2 times faster than using Long.fromString.\n *\n * @param val\n * @param unsigned\n */\nexport function longFromFastString(val: string, unsigned = false): Long {\n const parts = val.split('|')\n\n if (parts.length !== 2) throw new Error(`Invalid long fast string: ${val}`)\n const low = parseInt(parts[0])\n const high = parseInt(parts[1])\n\n if (isNaN(low) || isNaN(high)) {\n throw new Error(`Invalid long fast string: ${val}`)\n }\n\n return new Long(low, high, unsigned)\n}\n\n/**\n * Map with Longs as key.\n *\n * Uses fast string representation internally.\n */\nexport class LongMap<V> {\n private _map = new Map<string, V>()\n\n set(key: Long, value: V): void {\n this._map.set(longToFastString(key), value)\n }\n\n has(key: Long): boolean {\n return this._map.has(longToFastString(key))\n }\n\n get(key: Long): V | undefined {\n return this._map.get(longToFastString(key))\n }\n\n delete(key: Long): void {\n this._map.delete(longToFastString(key))\n }\n\n *keys(unsigned?: boolean): IterableIterator<Long> {\n for (const v of this._map.keys()) {\n yield longFromFastString(v, unsigned)\n }\n }\n\n values(): IterableIterator<V> {\n return this._map.values()\n }\n\n clear(): void {\n this._map.clear()\n }\n\n size(): number {\n return this._map.size\n }\n}\n\n/**\n * Set for Longs.\n *\n * Uses fast string representation internally\n */\nexport class LongSet {\n private _set = new Set<string>()\n\n get size(): number {\n return this._set.size\n }\n\n add(val: Long) {\n this._set.add(longToFastString(val))\n }\n\n delete(val: Long) {\n this._set.delete(longToFastString(val))\n }\n\n has(val: Long) {\n return this._set.has(longToFastString(val))\n }\n\n clear() {\n this._set.clear()\n }\n\n toArray() {\n const arr: Long[] = []\n\n for (const v of this._set) {\n arr.push(longFromFastString(v))\n }\n\n return arr\n }\n}\n"]}
|
package/cjs/utils/lru-map.js
CHANGED
|
@@ -13,8 +13,12 @@ const long_utils_js_1 = require("./long-utils.js");
|
|
|
13
13
|
* Uses two-way linked list internally to keep track of insertion/access order
|
|
14
14
|
*/
|
|
15
15
|
class LruMap {
|
|
16
|
+
_capacity;
|
|
17
|
+
_first;
|
|
18
|
+
_last;
|
|
19
|
+
_map;
|
|
20
|
+
_size = 0;
|
|
16
21
|
constructor(capacity, forLong = false) {
|
|
17
|
-
this._size = 0;
|
|
18
22
|
this._capacity = capacity;
|
|
19
23
|
this._map = forLong ? new long_utils_js_1.LongMap() : new Map();
|
|
20
24
|
}
|
package/cjs/utils/lru-map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lru-map.js","sourceRoot":"","sources":["../../../src/utils/lru-map.ts"],"names":[],"mappings":";;;AAAA,+FAA+F;AAC/F,0DAA0D;AAC1D,oCAAoC;AACpC,mDAAyC;AAazC;;;;;;GAMG;AACH,MAAa,MAAM;
|
|
1
|
+
{"version":3,"file":"lru-map.js","sourceRoot":"","sources":["../../../src/utils/lru-map.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n// ^^ because of performance reasons\nimport { LongMap } from './long-utils.js'\n\ninterface TwoWayLinkedList<K, T> {\n // k = key\n k: K\n // v = value\n v: T\n // p = previous\n p?: TwoWayLinkedList<K, T>\n // n = next\n n?: TwoWayLinkedList<K, T>\n}\n\n/**\n * Simple class implementing LRU-like behaviour for a Map\n *\n * Can be used to handle local cache of *something*\n *\n * Uses two-way linked list internally to keep track of insertion/access order\n */\nexport class LruMap<K extends string | number, V> {\n private _capacity: number\n private _first?: TwoWayLinkedList<K, V>\n private _last?: TwoWayLinkedList<K, V>\n\n private _map: Map<K, TwoWayLinkedList<K, V>>\n\n private _size = 0\n\n constructor(capacity: number, forLong = false) {\n this._capacity = capacity\n\n this._map = forLong ? (new LongMap() as any) : new Map()\n }\n\n private _markUsed(item: TwoWayLinkedList<K, V>): void {\n if (item === this._first) {\n return // already the most recently used\n }\n\n if (item.p) {\n if (item === this._last) {\n this._last = item.p\n }\n item.p.n = item.n\n }\n\n if (item.n) {\n item.n.p = item.p\n }\n\n item.p = undefined\n item.n = this._first\n\n if (this._first) {\n this._first.p = item\n }\n this._first = item\n }\n\n get(key: K): V | undefined {\n const item = this._map.get(key)\n if (!item) return undefined\n\n this._markUsed(item)\n\n return item.v\n }\n\n has(key: K): boolean {\n return this._map.has(key)\n }\n\n private _remove(item: TwoWayLinkedList<K, V>): void {\n if (item.p) {\n this._last = item.p\n this._last.n = undefined\n } else {\n // exhausted\n this._last = undefined\n this._first = undefined\n }\n\n // remove strong refs to and from the item\n item.p = item.n = undefined\n this._map.delete(item.k)\n this._size -= 1\n }\n\n set(key: K, value: V): void {\n let item = this._map.get(key)\n\n if (item) {\n // already in cache, update\n item.v = value\n this._markUsed(item)\n\n return\n }\n\n item = {\n k: key,\n v: value,\n // for jit to optimize stuff\n n: undefined,\n p: undefined,\n }\n this._map.set(key, item as any)\n\n if (this._first) {\n this._first.p = item\n item.n = this._first\n } else {\n // first item ever\n this._last = item\n }\n\n this._first = item\n this._size += 1\n\n if (this._size > this._capacity) {\n // remove the last item\n const oldest = this._last\n\n if (oldest) {\n this._remove(oldest)\n }\n }\n }\n\n delete(key: K): void {\n const item = this._map.get(key)\n if (item) this._remove(item)\n }\n\n clear(): void {\n this._map.clear()\n this._first = undefined\n this._last = undefined\n this._size = 0\n }\n}\n"]}
|
package/cjs/utils/lru-set.js
CHANGED
|
@@ -14,6 +14,10 @@ const long_utils_js_1 = require("./long-utils.js");
|
|
|
14
14
|
* Uses one-way linked list internally to keep track of insertion order
|
|
15
15
|
*/
|
|
16
16
|
class LruSet {
|
|
17
|
+
_capacity;
|
|
18
|
+
_first;
|
|
19
|
+
_last;
|
|
20
|
+
_set;
|
|
17
21
|
constructor(capacity, forLong = false) {
|
|
18
22
|
this._capacity = capacity;
|
|
19
23
|
this._set = forLong ? new long_utils_js_1.LongSet() : new Set();
|
package/cjs/utils/lru-set.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lru-set.js","sourceRoot":"","sources":["../../../src/utils/lru-set.ts"],"names":[],"mappings":";;;AAKA,mDAAyC;AAOzC;;;;;;;;;;GAUG;AACH,MAAa,MAAM;
|
|
1
|
+
{"version":3,"file":"lru-set.js","sourceRoot":"","sources":["../../../src/utils/lru-set.ts"],"names":[],"mappings":";;;AAKA,mDAAyC;AAOzC;;;;;;;;;;GAUG;AACH,MAAa,MAAM;IACP,SAAS,CAAQ;IACjB,MAAM,CAAsB;IAC5B,KAAK,CAAsB;IAE3B,IAAI,CAAkB;IAE9B,YAAY,QAAgB,EAAE,OAAO,GAAG,KAAK;QACzC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QAEzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,uBAAO,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAA;IACnD,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACpC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED,GAAG,CAAC,GAAM;QACN,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAU,CAAC;YAAE,OAAM;QAErC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;QAE1C,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;aACpC,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAU,CAAC,CAAA;QAEzB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjD,6BAA6B;YAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAQ,CAAC,CAAA;YACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/B,CAAC;IACL,CAAC;IAED,GAAG,CAAC,GAAM;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAU,CAAC,CAAA;IACpC,CAAC;CACJ;AAzCD,wBAyCC","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n// ^^ because of performance reasons\nimport Long from 'long'\n\nimport { LongSet } from './long-utils.js'\n\ninterface OneWayLinkedList<T> {\n v: T\n n?: OneWayLinkedList<T>\n}\n\n/**\n * Simple class implementing LRU-like behaviour for a Set.\n *\n * Note: this is not exactly LRU, but rather \"least recently added\"\n * and doesn't mark items as recently added if they are already in the set.\n * This is enough for our use case, so we don't bother with more complex implementation.\n *\n * Used to store recently received message IDs in {@link SessionConnection}\n *\n * Uses one-way linked list internally to keep track of insertion order\n */\nexport class LruSet<T extends string | number | Long> {\n private _capacity: number\n private _first?: OneWayLinkedList<T>\n private _last?: OneWayLinkedList<T>\n\n private _set: Set<T> | LongSet\n\n constructor(capacity: number, forLong = false) {\n this._capacity = capacity\n\n this._set = forLong ? new LongSet() : new Set()\n }\n\n clear() {\n this._first = this._last = undefined\n this._set.clear()\n }\n\n add(val: T) {\n if (this._set.has(val as any)) return\n\n if (!this._first) this._first = { v: val }\n\n if (!this._last) this._last = this._first\n else {\n this._last.n = { v: val }\n this._last = this._last.n\n }\n\n this._set.add(val as any)\n\n if (this._set.size > this._capacity && this._first) {\n // remove least recently used\n this._set.delete(this._first.v as any)\n this._first = this._first.n\n }\n }\n\n has(val: T) {\n return this._set.has(val as any)\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-utils.js","sourceRoot":"","sources":["../../../src/utils/peer-utils.ts"],"names":[],"mappings":";;;AAEA,kDAAwE;AAGxE,sEAAsE;AACtE,MAAM,eAAe,GAAG,CAAC,aAAa,CAAA;AACtC,MAAM,mBAAmB,GAAG,CAAC,aAAa,CAAA;AAC1C,MAAM,kBAAkB,GAAG,CAAC,aAAa,CAAA,CAAC,mCAAmC;AAC7E,oEAAoE;AACpE,mCAAmC;AACnC,MAAM,kBAAkB,GAAG,CAAC,YAAY,CAAA,CAAC,eAAe;AACxD,oEAAoE;AACpE,gCAAgC;AAChC,MAAM,WAAW,GAAG,aAAa,CAAA;AACjC,uEAAuE;AACvE,qFAAqF;AACrF,iDAAiD;AACjD,sCAAsC;AACtC,MAAM,qBAAqB,GAAG,CAAC,aAAa,CAAA,CAAC,mCAAmC;AAEhF;;GAEG;AACH,SAAgB,mBAAmB,CAAC,EAAU;IAC1C,OAAO,eAAe,GAAG,EAAE,CAAA;AAC/B,CAAC;AAFD,kDAEC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAiB;IAC3C,QAAQ,IAAI,CAAC,CAAC,EAAE;QACZ,KAAK,UAAU;YACX,OAAO,IAAI,CAAC,MAAM,CAAA;QACtB,KAAK,UAAU;YACX,OAAO,IAAI,CAAC,MAAM,CAAA;QACtB,KAAK,aAAa;YACd,OAAO,IAAI,CAAC,SAAS,CAAA;KAC5B;AACL,CAAC;AATD,sCASC;AAeD,SAAgB,eAAe,CAC3B,IAAsF,EACtF,QAAwB;IAExB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC1B,QAAQ,QAAQ,EAAE;YACd,KAAK,MAAM;gBACP,OAAO,IAAI,CAAA;YACf,KAAK,MAAM;gBACP,OAAO,CAAC,IAAI,CAAA;YAChB,KAAK,SAAS;gBACV,OAAO,eAAe,GAAG,IAAI,CAAA;SACpC;QACD,MAAM,IAAI,2BAAe,CAAC,mBAAmB,CAAC,CAAA;KACjD;IAED,QAAQ,IAAI,CAAC,CAAC,EAAE;QACZ,KAAK,8BAA8B,CAAC;QACpC,KAAK,UAAU,CAAC;QAChB,KAAK,eAAe,CAAC;QACrB,KAAK,0BAA0B,CAAC;QAChC,KAAK,WAAW,CAAC;QACjB,KAAK,sBAAsB;YACvB,OAAO,IAAI,CAAC,MAAM,CAAA;QACtB,KAAK,UAAU,CAAC;QAChB,KAAK,eAAe;YAChB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;QACvB,KAAK,iCAAiC,CAAC;QACvC,KAAK,aAAa,CAAC;QACnB,KAAK,kBAAkB,CAAC;QACxB,KAAK,6BAA6B,CAAC;QACnC,KAAK,cAAc,CAAC;QACpB,KAAK,yBAAyB;YAC1B,OAAO,eAAe,GAAG,IAAI,CAAC,SAAS,CAAA;KAC9C;IAED,MAAM,IAAI,2BAAe,CAAC,iBAAiB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA;AACxD,CAAC;AArCD,0CAqCC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,EAAU;IACxC,IAAI,EAAE,GAAG,CAAC,EAAE;QACR,IAAI,kBAAkB,IAAI,EAAE,EAAE;YAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;SACvB;QAED,IAAI,qBAAqB,IAAI,EAAE,IAAI,EAAE,KAAK,eAAe,EAAE;YACvD,OAAO,CAAC,SAAS,EAAE,eAAe,GAAG,EAAE,CAAC,CAAA;SAC3C;QAED,IAAI,kBAAkB,IAAI,EAAE,IAAI,EAAE,KAAK,mBAAmB,EAAE;YACxD,kBAAkB;YAClB,MAAM,IAAI,8BAAkB,CAAC,gCAAgC,CAAC,CAAA;SACjE;KACJ;SAAM,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,WAAW,EAAE;QACpC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;KACtB;IAED,MAAM,IAAI,2BAAe,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAA;AAC9D,CAAC;AAnBD,8CAmBC;AAED;;;GAGG;AACH,QAAe,CAAC,CAAC,eAAe,CAAC,GAAgC;IAC7D,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAM;IAEnC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACpB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;YAClB,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;SAC7B;QAED,OAAM;KACT;IAED,QAAQ,GAAG,CAAC,CAAC,EAAE;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,eAAe,CAAC;QACrB,KAAK,kBAAkB;YACnB,MAAM,GAAG,CAAA;YAET,OAAM;KACb;IAED,IAAI,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE;QACxE,MAAM,GAAG,CAAC,IAAI,CAAA;KACjB;IAED,IAAI,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC/C,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;YAChB,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC;YACf,KAAK,eAAe,CAAC;YACrB,KAAK,kBAAkB;gBACnB,MAAM,GAAG,CAAC,IAAI,CAAA;gBACd,MAAK;SACZ;KACJ;IAED,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE;QACrD,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE;YACnB,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC;YACf,KAAK,eAAe,CAAC;YACrB,KAAK,kBAAkB;gBACnB,MAAM,GAAG,CAAC,OAAO,CAAA;gBACjB,MAAK;SACZ;KACJ;IAED,IAAI,OAAO,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE;QAChE,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE;YAC1B,+BAA+B;YAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE;gBAC/C,MAAM,IAAI,CAAA;aACb;SACJ;KACJ;IAED,IAAI,OAAO,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE;QAChE,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE;YAC1B,+BAA+B;YAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC1B,QAAQ,IAAI,CAAC,CAAC,EAAE;oBACZ,KAAK,MAAM,CAAC;oBACZ,KAAK,SAAS,CAAC;oBACf,KAAK,eAAe,CAAC;oBACrB,KAAK,kBAAkB;wBACnB,MAAM,IAAI,CAAA;wBACV,MAAK;iBACZ;aACJ;SACJ;KACJ;AACL,CAAC;AAxED,0CAwEC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError, MtUnsupportedError } from '../types/errors.js'\nimport { BasicPeerType } from '../types/peers.js'\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.h\nconst ZERO_CHANNEL_ID = -1000000000000\nconst ZERO_SECRET_CHAT_ID = -2000000000000\nconst MAX_SECRET_CHAT_ID = -1997852516353 // ZERO_SECRET_CHAT_ID + 0x7fffffff\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChatId.h\n// const MAX_CHAT_ID = 999999999999\nconst MIN_MARKED_CHAT_ID = -999999999999 // -MAX_CHAT_ID\n// src: https://github.com/tdlib/td/blob/master/td/telegram/UserId.h\n// MAX_USER_ID = (1ll << 40) - 1\nconst MAX_USER_ID = 1099511627775\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChannelId.h\n// the last (1 << 31) - 1 identifiers will be used for secret chat dialog identifiers\n// MAX_CHANNEL_ID = 1000000000000ll - (1ll << 31)\n// const MAX_CHANNEL_ID = 997852516352\nconst MIN_MARKED_CHANNEL_ID = -1997852516352 // ZERO_CHANNEL_ID - MAX_CHANNEL_ID\n\n/**\n * Add or remove channel marker from ID\n */\nexport function toggleChannelIdMark(id: number): number {\n return ZERO_CHANNEL_ID - id\n}\n\n/**\n * Get the bare (non-marked) ID from a {@link tl.TypePeer}\n */\nexport function getBarePeerId(peer: tl.TypePeer): number {\n switch (peer._) {\n case 'peerUser':\n return peer.userId\n case 'peerChat':\n return peer.chatId\n case 'peerChannel':\n return peer.channelId\n }\n}\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.cpp\n\n/**\n * Get the marked (non-bare) ID from a {@link tl.TypePeer}\n *\n * *Mark* is bot API compatible, which is:\n * - ID stays the same for users\n * - ID is negated for chats\n * - ID is negated and `-1e12` is subtracted for channels\n */\nexport function getMarkedPeerId(peerId: number, peerType: BasicPeerType): number\nexport function getMarkedPeerId(peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel): number\n\nexport function getMarkedPeerId(\n peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel | number,\n peerType?: BasicPeerType,\n): number {\n if (typeof peer === 'number') {\n switch (peerType) {\n case 'user':\n return peer\n case 'chat':\n return -peer\n case 'channel':\n return ZERO_CHANNEL_ID - peer\n }\n throw new MtArgumentError('Invalid peer type')\n }\n\n switch (peer._) {\n case 'mtcute.dummyInputPeerMinUser':\n case 'peerUser':\n case 'inputPeerUser':\n case 'inputPeerUserFromMessage':\n case 'inputUser':\n case 'inputUserFromMessage':\n return peer.userId\n case 'peerChat':\n case 'inputPeerChat':\n return -peer.chatId\n case 'mtcute.dummyInputPeerMinChannel':\n case 'peerChannel':\n case 'inputPeerChannel':\n case 'inputPeerChannelFromMessage':\n case 'inputChannel':\n case 'inputChannelFromMessage':\n return ZERO_CHANNEL_ID - peer.channelId\n }\n\n throw new MtArgumentError(`Invalid peer: ${peer._}`)\n}\n\n/**\n * Parse a marked ID into a {@link BasicPeerType} and a bare ID\n */\nexport function parseMarkedPeerId(id: number): [BasicPeerType, number] {\n if (id < 0) {\n if (MIN_MARKED_CHAT_ID <= id) {\n return ['chat', -id]\n }\n\n if (MIN_MARKED_CHANNEL_ID <= id && id !== ZERO_CHANNEL_ID) {\n return ['channel', ZERO_CHANNEL_ID - id]\n }\n\n if (MAX_SECRET_CHAT_ID >= id && id !== ZERO_SECRET_CHAT_ID) {\n // return 'secret'\n throw new MtUnsupportedError('Secret chats are not supported')\n }\n } else if (id > 0 && id <= MAX_USER_ID) {\n return ['user', id]\n }\n\n throw new MtArgumentError(`Invalid marked peer id: ${id}`)\n}\n\n/**\n * Extracts all (cacheable) entities from a TlObject or a list of them.\n * Only checks `.user`, `.chat`, `.channel`, `.users` and `.chats` properties\n */\nexport function* getAllPeersFrom(obj: tl.TlObject | tl.TlObject[]): Iterable<tl.TypeUser | tl.TypeChat> {\n if (typeof obj !== 'object') return\n\n if (Array.isArray(obj)) {\n for (const it of obj) {\n yield* getAllPeersFrom(it)\n }\n\n return\n }\n\n switch (obj._) {\n case 'user':\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj\n\n return\n }\n\n if ('user' in obj && typeof obj.user === 'object' && obj.user._ === 'user') {\n yield obj.user\n }\n\n if ('chat' in obj && typeof obj.chat === 'object') {\n switch (obj.chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.chat\n break\n }\n }\n\n if ('channel' in obj && typeof obj.channel === 'object') {\n switch (obj.channel._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.channel\n break\n }\n }\n\n if ('users' in obj && Array.isArray(obj.users) && obj.users.length) {\n for (const user of obj.users) {\n // .users is sometimes number[]\n if (typeof user === 'object' && user._ === 'user') {\n yield user\n }\n }\n }\n\n if ('chats' in obj && Array.isArray(obj.chats) && obj.chats.length) {\n for (const chat of obj.chats) {\n // .chats is sometimes number[]\n if (typeof chat === 'object') {\n switch (chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield chat\n break\n }\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"peer-utils.js","sourceRoot":"","sources":["../../../src/utils/peer-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError, MtUnsupportedError } from '../types/errors.js'\nimport { BasicPeerType } from '../types/peers.js'\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.h\nconst ZERO_CHANNEL_ID = -1000000000000\nconst ZERO_SECRET_CHAT_ID = -2000000000000\nconst MAX_SECRET_CHAT_ID = -1997852516353 // ZERO_SECRET_CHAT_ID + 0x7fffffff\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChatId.h\n// const MAX_CHAT_ID = 999999999999\nconst MIN_MARKED_CHAT_ID = -999999999999 // -MAX_CHAT_ID\n// src: https://github.com/tdlib/td/blob/master/td/telegram/UserId.h\n// MAX_USER_ID = (1ll << 40) - 1\nconst MAX_USER_ID = 1099511627775\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChannelId.h\n// the last (1 << 31) - 1 identifiers will be used for secret chat dialog identifiers\n// MAX_CHANNEL_ID = 1000000000000ll - (1ll << 31)\n// const MAX_CHANNEL_ID = 997852516352\nconst MIN_MARKED_CHANNEL_ID = -1997852516352 // ZERO_CHANNEL_ID - MAX_CHANNEL_ID\n\n/**\n * Add or remove channel marker from ID\n */\nexport function toggleChannelIdMark(id: number): number {\n return ZERO_CHANNEL_ID - id\n}\n\n/**\n * Get the bare (non-marked) ID from a {@link tl.TypePeer}\n */\nexport function getBarePeerId(peer: tl.TypePeer): number {\n switch (peer._) {\n case 'peerUser':\n return peer.userId\n case 'peerChat':\n return peer.chatId\n case 'peerChannel':\n return peer.channelId\n }\n}\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.cpp\n\n/**\n * Get the marked (non-bare) ID from a {@link tl.TypePeer}\n *\n * *Mark* is bot API compatible, which is:\n * - ID stays the same for users\n * - ID is negated for chats\n * - ID is negated and `-1e12` is subtracted for channels\n */\nexport function getMarkedPeerId(peerId: number, peerType: BasicPeerType): number\nexport function getMarkedPeerId(peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel): number\n\nexport function getMarkedPeerId(\n peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel | number,\n peerType?: BasicPeerType,\n): number {\n if (typeof peer === 'number') {\n switch (peerType) {\n case 'user':\n return peer\n case 'chat':\n return -peer\n case 'channel':\n return ZERO_CHANNEL_ID - peer\n }\n throw new MtArgumentError('Invalid peer type')\n }\n\n switch (peer._) {\n case 'mtcute.dummyInputPeerMinUser':\n case 'peerUser':\n case 'inputPeerUser':\n case 'inputPeerUserFromMessage':\n case 'inputUser':\n case 'inputUserFromMessage':\n return peer.userId\n case 'peerChat':\n case 'inputPeerChat':\n return -peer.chatId\n case 'mtcute.dummyInputPeerMinChannel':\n case 'peerChannel':\n case 'inputPeerChannel':\n case 'inputPeerChannelFromMessage':\n case 'inputChannel':\n case 'inputChannelFromMessage':\n return ZERO_CHANNEL_ID - peer.channelId\n }\n\n throw new MtArgumentError(`Invalid peer: ${peer._}`)\n}\n\n/**\n * Parse a marked ID into a {@link BasicPeerType} and a bare ID\n */\nexport function parseMarkedPeerId(id: number): [BasicPeerType, number] {\n if (id < 0) {\n if (MIN_MARKED_CHAT_ID <= id) {\n return ['chat', -id]\n }\n\n if (MIN_MARKED_CHANNEL_ID <= id && id !== ZERO_CHANNEL_ID) {\n return ['channel', ZERO_CHANNEL_ID - id]\n }\n\n if (MAX_SECRET_CHAT_ID >= id && id !== ZERO_SECRET_CHAT_ID) {\n // return 'secret'\n throw new MtUnsupportedError('Secret chats are not supported')\n }\n } else if (id > 0 && id <= MAX_USER_ID) {\n return ['user', id]\n }\n\n throw new MtArgumentError(`Invalid marked peer id: ${id}`)\n}\n\n/**\n * Extracts all (cacheable) entities from a TlObject or a list of them.\n * Only checks `.user`, `.chat`, `.channel`, `.users` and `.chats` properties\n */\nexport function* getAllPeersFrom(obj: tl.TlObject | tl.TlObject[]): Iterable<tl.TypeUser | tl.TypeChat> {\n if (typeof obj !== 'object') return\n\n if (Array.isArray(obj)) {\n for (const it of obj) {\n yield* getAllPeersFrom(it)\n }\n\n return\n }\n\n switch (obj._) {\n case 'user':\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj\n\n return\n }\n\n if ('user' in obj && typeof obj.user === 'object' && obj.user._ === 'user') {\n yield obj.user\n }\n\n if ('chat' in obj && typeof obj.chat === 'object') {\n switch (obj.chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.chat\n break\n }\n }\n\n if ('channel' in obj && typeof obj.channel === 'object') {\n switch (obj.channel._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.channel\n break\n }\n }\n\n if ('users' in obj && Array.isArray(obj.users) && obj.users.length) {\n for (const user of obj.users) {\n // .users is sometimes number[]\n if (typeof user === 'object' && user._ === 'user') {\n yield user\n }\n }\n }\n\n if ('chats' in obj && Array.isArray(obj.chats) && obj.chats.length) {\n for (const chat of obj.chats) {\n // .chats is sometimes number[]\n if (typeof chat === 'object') {\n switch (chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield chat\n break\n }\n }\n }\n }\n}\n"]}
|
package/cjs/utils/reloadable.js
CHANGED
|
@@ -3,16 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Reloadable = void 0;
|
|
4
4
|
const function_utils_js_1 = require("./function-utils.js");
|
|
5
5
|
class Reloadable {
|
|
6
|
+
params;
|
|
6
7
|
constructor(params) {
|
|
7
8
|
this.params = params;
|
|
8
|
-
this._expiresAt = 0;
|
|
9
|
-
this._listeners = [];
|
|
10
|
-
this._reload = (0, function_utils_js_1.asyncResettable)(async () => {
|
|
11
|
-
const data = await this.params.reload(this._data);
|
|
12
|
-
this.setData(data);
|
|
13
|
-
this._listeners.forEach((cb) => cb(data));
|
|
14
|
-
});
|
|
15
9
|
}
|
|
10
|
+
_data;
|
|
11
|
+
_expiresAt = 0;
|
|
12
|
+
_listeners = [];
|
|
13
|
+
_timeout;
|
|
14
|
+
_reload = (0, function_utils_js_1.asyncResettable)(async () => {
|
|
15
|
+
const data = await this.params.reload(this._data);
|
|
16
|
+
this.setData(data);
|
|
17
|
+
this._listeners.forEach((cb) => cb(data));
|
|
18
|
+
});
|
|
16
19
|
get isStale() {
|
|
17
20
|
return !this._data || this._expiresAt <= Date.now();
|
|
18
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reloadable.js","sourceRoot":"","sources":["../../../src/utils/reloadable.ts"],"names":[],"mappings":";;;AAAA,2DAAqD;AASrD,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"reloadable.js","sourceRoot":"","sources":["../../../src/utils/reloadable.ts"],"names":[],"mappings":";;;AAAA,2DAAqD;AASrD,MAAa,UAAU;IACE;IAArB,YAAqB,MAA8B;QAA9B,WAAM,GAAN,MAAM,CAAwB;IAAG,CAAC;IAE7C,KAAK,CAAO;IACZ,UAAU,GAAG,CAAC,CAAA;IACd,UAAU,GAA6B,EAAE,CAAA;IACzC,QAAQ,CAAiB;IAE3B,OAAO,GAAG,IAAA,mCAAe,EAAC,KAAK,IAAI,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAElB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,IAAI,OAAO;QACP,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IACvD,CAAC;IAED,OAAO,CAAC,IAAU;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAE3B,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;gBACpB,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAA;gBAC9B,CAAC,CAAC,CAAA;YACN,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAC9B,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,KAAK;QAChB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAErD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;IAC7B,CAAC;IAED,QAAQ,CAAC,EAAwB;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC;IAED,SAAS,CAAC,EAAwB;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACvC,IAAI,GAAG,IAAI,CAAC;YAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QAEnB,OAAO,IAAI,CAAC,KAAM,CAAA;IACtB,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,QAAQ;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;QAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACJ;AAnED,gCAmEC","sourcesContent":["import { asyncResettable } from './function-utils.js'\n\nexport interface ReloadableParams<Data> {\n reload: (old?: Data) => Promise<Data>\n getExpiresAt: (data: Data) => number\n onError?: (err: unknown) => void\n disableAutoReload?: boolean\n}\n\nexport class Reloadable<Data> {\n constructor(readonly params: ReloadableParams<Data>) {}\n\n protected _data?: Data\n protected _expiresAt = 0\n protected _listeners: ((data: Data) => void)[] = []\n protected _timeout?: NodeJS.Timeout\n\n private _reload = asyncResettable(async () => {\n const data = await this.params.reload(this._data)\n this.setData(data)\n\n this._listeners.forEach((cb) => cb(data))\n })\n\n get isStale(): boolean {\n return !this._data || this._expiresAt <= Date.now()\n }\n\n setData(data: Data): void {\n const expiresAt = this.params.getExpiresAt(data)\n\n this._data = data\n this._expiresAt = expiresAt\n\n if (this._timeout) clearTimeout(this._timeout)\n\n if (!this.params.disableAutoReload) {\n this._timeout = setTimeout(() => {\n this._reload.reset()\n this.update().catch((err: unknown) => {\n this.params.onError?.(err)\n })\n }, expiresAt - Date.now())\n }\n }\n\n update(force = false): Promise<void> {\n if (!force && !this.isStale) return Promise.resolve()\n\n return this._reload.run()\n }\n\n onReload(cb: (data: Data) => void): void {\n this._listeners.push(cb)\n }\n\n offReload(cb: (data: Data) => void): void {\n const idx = this._listeners.indexOf(cb)\n if (idx >= 0) this._listeners.splice(idx, 1)\n }\n\n getNow(): Data | undefined {\n return this._data\n }\n\n async get(): Promise<Data> {\n await this.update()\n\n return this._data!\n }\n\n destroy(): void {\n if (this._timeout) clearTimeout(this._timeout)\n this._listeners.length = 0\n this._reload.reset()\n }\n}\n"]}
|
|
@@ -7,6 +7,8 @@ exports.SortedArray = void 0;
|
|
|
7
7
|
* Comparator is always called like: comparator(itemFromSortedArray, yourItem)
|
|
8
8
|
*/
|
|
9
9
|
class SortedArray {
|
|
10
|
+
comparator;
|
|
11
|
+
raw;
|
|
10
12
|
constructor(array = [], comparator) {
|
|
11
13
|
this.comparator = comparator;
|
|
12
14
|
this.raw = array.sort(comparator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sorted-array.js","sourceRoot":"","sources":["../../../src/utils/sorted-array.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,MAAa,WAAW;
|
|
1
|
+
{"version":3,"file":"sorted-array.js","sourceRoot":"","sources":["../../../src/utils/sorted-array.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Array that adds elements in sorted order.\n *\n * Comparator is always called like: comparator(itemFromSortedArray, yourItem)\n */\nexport class SortedArray<T> {\n readonly raw: T[]\n\n constructor(\n array: T[] = [],\n readonly comparator: (a: T, b: T) => number,\n ) {\n this.raw = array.sort(comparator)\n this.comparator = comparator\n }\n\n get length(): number {\n return this.raw.length\n }\n\n insert(item: T | T[]): number {\n if (Array.isArray(item)) {\n let ind = -1\n item.forEach((it) => {\n ind = this.insert(it)\n })\n\n return ind\n }\n\n if (this.raw.length === 0) {\n this.raw.push(item)\n\n return 0\n }\n\n // find insert position\n let lo = 0\n let hi = this.raw.length\n\n while (lo < hi) {\n const mid = Math.floor((lo + hi) / 2)\n\n if (this.comparator(this.raw[mid], item) > 0) {\n hi = mid\n } else {\n lo = mid + 1\n }\n }\n\n this.raw.splice(lo, 0, item)\n\n return lo\n }\n\n // closest: return the closest value (right-hand side)\n // meaning that raw[idx - 1] <= item <= raw[idx]\n // in other words, smallest idx such that raw[idx] >= item\n index(item: T, closest = false): number {\n let lo = 0\n let hi = this.raw.length\n\n while (lo < hi) {\n const mid = Math.floor((lo + hi) / 2)\n const cmp = this.comparator(this.raw[mid], item)\n\n if (cmp === 0) {\n return mid\n }\n if (cmp > 0) {\n hi = mid\n } else {\n lo = mid + 1\n }\n }\n\n return closest ? lo : -1\n }\n\n remove(item: T): void {\n const idx = this.index(item)\n if (idx === -1) return\n\n this.raw.splice(idx, 1)\n }\n\n includes(item: T): boolean {\n return this.index(item) !== -1\n }\n\n find(item: T): T | null {\n const ind = this.index(item)\n\n return ind === -1 ? null : this.raw[ind]\n }\n\n clear(): void {\n this.raw.length = 0\n }\n}\n"]}
|
package/cjs/utils/tl-json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tl-json.js","sourceRoot":"","sources":["../../../src/utils/tl-json.ts"],"names":[],"mappings":";;;AAEA,kDAAoD;AAEpD;;;;GAIG;AAEH,SAAgB,YAAY,CAAC,GAAY;IACrC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAA;IAC/D,IAAI,OAAO,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAClE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IACnE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAEnE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"tl-json.js","sourceRoot":"","sources":["../../../src/utils/tl-json.ts"],"names":[],"mappings":";;;AAEA,kDAAoD;AAEpD;;;;GAIG;AAEH,SAAgB,YAAY,CAAC,GAAY;IACrC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAA;IAC/D,IAAI,OAAO,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAClE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IACnE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAEnE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAA;IAC3D,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,2BAAe,CAAC,qBAAqB,OAAO,GAAG,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,MAAM,KAAK,GAA6B,EAAE,CAAA;IAE1C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACzC,KAAK,CAAC,IAAI,CAAC;YACP,CAAC,EAAE,iBAAiB;YACpB,GAAG;YACH,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;SAC7B,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,OAAO;QACH,CAAC,EAAE,YAAY;QACf,KAAK,EAAE,KAAK;KACf,CAAA;AACL,CAAC;AA5BD,oCA4BC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,GAAqB;IAC9C,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;QACZ,KAAK,UAAU;YACX,OAAO,IAAI,CAAA;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YACb,OAAO,GAAG,CAAC,KAAK,CAAA;QACpB,KAAK,WAAW;YACZ,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,GAAG,GAA4B,EAAE,CAAA;IAEvC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACvB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACd,CAAC;AAnBD,oCAmBC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../types/errors.js'\n\n/**\n * Convert a JS object to TL JSON\n *\n * @param obj Object to be converted\n */\n\nexport function jsonToTlJson(obj: unknown): tl.TypeJSONValue {\n if (obj === null || obj === undefined) return { _: 'jsonNull' }\n if (typeof obj === 'boolean') return { _: 'jsonBool', value: obj }\n if (typeof obj === 'number') return { _: 'jsonNumber', value: obj }\n if (typeof obj === 'string') return { _: 'jsonString', value: obj }\n\n if (Array.isArray(obj)) {\n return { _: 'jsonArray', value: obj.map(jsonToTlJson) }\n }\n\n if (typeof obj !== 'object') {\n throw new MtArgumentError(`Unsupported type: ${typeof obj}`)\n }\n\n const items: tl.TypeJSONObjectValue[] = []\n\n Object.entries(obj).forEach(([key, value]) => {\n items.push({\n _: 'jsonObjectValue',\n key,\n value: jsonToTlJson(value),\n })\n })\n\n return {\n _: 'jsonObject',\n value: items,\n }\n}\n\n/**\n * Convert TL JSON object to plain JS object\n *\n * @param obj TL JSON object to convert\n */\nexport function tlJsonToJson(obj: tl.TypeJSONValue): unknown {\n switch (obj._) {\n case 'jsonNull':\n return null\n case 'jsonBool':\n case 'jsonNumber':\n case 'jsonString':\n return obj.value\n case 'jsonArray':\n return obj.value.map(tlJsonToJson)\n }\n\n const ret: Record<string, unknown> = {}\n\n obj.value.forEach((item) => {\n ret[item.key] = tlJsonToJson(item.value)\n })\n\n return ret\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-assertions.js","sourceRoot":"","sources":["../../../src/utils/type-assertions.ts"],"names":[],"mappings":";;;AAEA,kDAAyD;AAEzD,qEAAqE;AAErE,SAAgB,SAAS,CAAI,CAA8B;IACvD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAA;AACxC,CAAC;AAFD,8BAEC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,aAAa,CAAqC,CAAI;IAClE,OAAO,UAAiB,CAA8B;QAClD,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC9C,CAAC,CAAA;AACL,CAAC;AAJD,sCAIC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,aAAa,CAAoD,CAAI,EAAE,CAAI;IACvF,OAAO,UAAc,CAA4B;QAC7C,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC,CAAA;AACL,CAAC;AAJD,sCAIC;AAED,SAAgB,YAAY,CACxB,OAAe,EACf,GAAM,EACN,QAAW;IAEX,IAAI,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"type-assertions.js","sourceRoot":"","sources":["../../../src/utils/type-assertions.ts"],"names":[],"mappings":";;;AAEA,kDAAyD;AAEzD,qEAAqE;AAErE,SAAgB,SAAS,CAAI,CAA8B;IACvD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAA;AACxC,CAAC;AAFD,8BAEC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,aAAa,CAAqC,CAAI;IAClE,OAAO,UAAiB,CAA8B;QAClD,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC9C,CAAC,CAAA;AACL,CAAC;AAJD,sCAIC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,aAAa,CAAoD,CAAI,EAAE,CAAI;IACvF,OAAO,UAAc,CAA4B;QAC7C,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC,CAAA;AACL,CAAC;AAJD,sCAIC;AAED,SAAgB,YAAY,CACxB,OAAe,EACf,GAAM,EACN,QAAW;IAEX,IAAI,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,gCAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IAC5D,CAAC;AACL,CAAC;AARD,oCAQC;AAED,SAAgB,eAAe,CAC3B,OAAe,EACf,GAAM,EACN,WAAc;IAEd,IAAI,GAAG,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,gCAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IACxE,CAAC;AACL,CAAC;AARD,0CAQC;AAED,SAAgB,eAAe,CAC3B,OAAe,EACf,GAAM,EACN,QAAW;IAEX,IAAI,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,gCAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IAC5D,CAAC;AACL,CAAC;AARD,0CAQC;AAED,SAAgB,UAAU,CAAC,OAAe,EAAE,IAAa;IACrD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,gCAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5D,CAAC;AACL,CAAC;AAJD,gCAIC","sourcesContent":["import { mtp, tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../types/errors.js'\n\n// mostly taken from https://github.com/robertmassaioli/ts-is-present\n\nexport function isPresent<T>(t: T | undefined | null | void): t is T {\n return t !== undefined && t !== null\n}\n\n/**\n * Returns a function that can be used to filter down objects\n * to the ones that have a defined non-null value under the key `k`.\n *\n * @example\n * ```ts\n * const filesWithUrl = files.filter(file => file.url);\n * files[0].url // In this case, TS might still treat this as undefined/null\n *\n * const filesWithUrl = files.filter(hasPresentKey(\"url\"));\n * files[0].url // TS will know that this is present\n * ```\n */\nexport function hasPresentKey<K extends string | number | symbol>(k: K) {\n return function <T, V> (a: T & { [k in K]?: V | null }): a is T & { [k in K]: V } {\n return a[k] !== undefined && a[k] !== null\n }\n}\n\n/**\n * Returns a function that can be used to filter down objects\n * to the ones that have a specific value V under a key `k`.\n *\n * @example\n * ```ts\n * type File = { type: \"image\", imageUrl: string } | { type: \"pdf\", pdfUrl: string };\n * const files: File[] = [];\n *\n * const imageFiles = files.filter(file => file.type === \"image\");\n * files[0].type // In this case, TS will still treat it as `\"image\" | \"pdf\"`\n *\n * const filesWithUrl = files.filter(hasValueKey(\"type\", \"image\" as const));\n * files[0].type // TS will now know that this is \"image\"\n * files[0].imageUrl // TS will know this is present, because already it excluded the other union members.\n * ```\n */\nexport function hasValueAtKey<const K extends string | number | symbol, const V>(k: K, v: V) {\n return function <T> (a: T & { [k in K]: unknown }): a is T & { [k in K]: V } {\n return a[k] === v\n }\n}\n\nexport function assertTypeIs<T extends tl.TlObject, K extends T['_']>(\n context: string,\n obj: T,\n expected: K,\n): asserts obj is tl.FindByName<T, K> {\n if (obj._ !== expected) {\n throw new MtTypeAssertionError(context, expected, obj._)\n }\n}\n\nexport function assertTypeIsNot<T extends tl.TlObject, K extends T['_']>(\n context: string,\n obj: T,\n expectedNot: K,\n): asserts obj is Exclude<T, tl.FindByName<T, K>> {\n if (obj._ === expectedNot) {\n throw new MtTypeAssertionError(context, 'not ' + expectedNot, obj._)\n }\n}\n\nexport function mtpAssertTypeIs<T extends mtp.TlObject, K extends T['_']>(\n context: string,\n obj: T,\n expected: K,\n): asserts obj is mtp.FindByName<T, K> {\n if (obj._ !== expected) {\n throw new MtTypeAssertionError(context, expected, obj._)\n }\n}\n\nexport function assertTrue(context: string, cond: boolean): asserts cond {\n if (!cond) {\n throw new MtTypeAssertionError(context, 'true', 'false')\n }\n}\n"]}
|