@mtcute/core 0.10.2 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +199 -18
- package/cjs/highlevel/client.js +54 -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/_imports.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.d.ts +3 -0
- 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.d.ts +5 -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.d.ts +10 -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.d.ts +2 -2
- package/cjs/highlevel/methods/chats/get-full-chat.js +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.d.ts +3 -0
- 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.d.ts +9 -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.d.ts +1 -0
- package/cjs/highlevel/methods/files/normalize-input-media.js +12 -12
- 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/_business-connection.d.ts +7 -0
- package/cjs/highlevel/methods/messages/_business-connection.js +42 -0
- package/cjs/highlevel/methods/messages/_business-connection.js.map +1 -0
- package/cjs/highlevel/methods/messages/close-poll.js +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.d.ts +1 -0
- package/cjs/highlevel/methods/messages/edit-message.js +2 -1
- package/cjs/highlevel/methods/messages/edit-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/find-in-update.d.ts +13 -1
- package/cjs/highlevel/methods/messages/find-in-update.js +7 -2
- package/cjs/highlevel/methods/messages/find-in-update.js.map +1 -1
- package/cjs/highlevel/methods/messages/forward-messages.d.ts +5 -0
- package/cjs/highlevel/methods/messages/forward-messages.js +2 -0
- package/cjs/highlevel/methods/messages/forward-messages.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-all-scheduled-messages.d.ts +8 -0
- package/cjs/highlevel/methods/messages/get-all-scheduled-messages.js +32 -0
- package/cjs/highlevel/methods/messages/get-all-scheduled-messages.js.map +1 -0
- package/cjs/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
- package/cjs/highlevel/methods/messages/get-discussion-message.d.ts +4 -0
- 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 +2 -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/search-global.d.ts +4 -0
- package/cjs/highlevel/methods/messages/search-global.js +2 -1
- package/cjs/highlevel/methods/messages/search-global.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.d.ts +28 -0
- package/cjs/highlevel/methods/messages/send-common.js +21 -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 +5 -2
- package/cjs/highlevel/methods/messages/send-media-group.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-media.js +4 -2
- 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 +4 -2
- package/cjs/highlevel/methods/messages/send-text.js.map +1 -1
- package/cjs/highlevel/methods/messages/send-typing.d.ts +4 -0
- package/cjs/highlevel/methods/messages/send-typing.js +2 -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/chain-id.d.ts +4 -1
- package/cjs/highlevel/methods/misc/get-collectible-info.d.ts +6 -0
- package/cjs/highlevel/methods/misc/get-collectible-info.js +26 -0
- package/cjs/highlevel/methods/misc/get-collectible-info.js.map +1 -0
- package/cjs/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
- package/cjs/highlevel/methods/misc/normalize-text.d.ts +5 -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/create-business-chat-link.d.ts +12 -0
- package/cjs/highlevel/methods/premium/create-business-chat-link.js +26 -0
- package/cjs/highlevel/methods/premium/create-business-chat-link.js.map +1 -0
- package/cjs/highlevel/methods/premium/edit-business-chat-link.d.ts +20 -0
- package/cjs/highlevel/methods/premium/edit-business-chat-link.js +42 -0
- package/cjs/highlevel/methods/premium/edit-business-chat-link.js.map +1 -0
- package/cjs/highlevel/methods/premium/get-business-chat-links.d.ts +6 -0
- package/cjs/highlevel/methods/premium/get-business-chat-links.js +14 -0
- package/cjs/highlevel/methods/premium/get-business-chat-links.js.map +1 -0
- package/cjs/highlevel/methods/premium/get-business-connection.d.ts +8 -0
- package/cjs/highlevel/methods/premium/get-business-connection.js +25 -0
- package/cjs/highlevel/methods/premium/get-business-connection.js.map +1 -0
- package/cjs/highlevel/methods/premium/iter-boosters.js.map +1 -1
- package/cjs/highlevel/methods/premium/set-business-intro.d.ts +22 -0
- package/cjs/highlevel/methods/premium/set-business-intro.js +42 -0
- package/cjs/highlevel/methods/premium/set-business-intro.js.map +1 -0
- package/cjs/highlevel/methods/premium/set-business-work-hours.d.ts +18 -0
- package/cjs/highlevel/methods/premium/set-business-work-hours.js +33 -0
- package/cjs/highlevel/methods/premium/set-business-work-hours.js.map +1 -0
- package/cjs/highlevel/methods/stickers/_utils.d.ts +10 -0
- package/cjs/highlevel/methods/stickers/_utils.js +27 -0
- package/cjs/highlevel/methods/stickers/_utils.js.map +1 -0
- package/cjs/highlevel/methods/stickers/add-sticker-to-set.d.ts +1 -2
- package/cjs/highlevel/methods/stickers/add-sticker-to-set.js +3 -17
- package/cjs/highlevel/methods/stickers/add-sticker-to-set.js.map +1 -1
- package/cjs/highlevel/methods/stickers/create-sticker-set.d.ts +0 -3
- package/cjs/highlevel/methods/stickers/create-sticker-set.js +2 -19
- package/cjs/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
- package/cjs/highlevel/methods/stickers/delete-sticker-from-set.d.ts +1 -2
- package/cjs/highlevel/methods/stickers/delete-sticker-from-set.js +1 -2
- 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/get-installed-stickers.d.ts +1 -2
- package/cjs/highlevel/methods/stickers/get-installed-stickers.js +1 -2
- package/cjs/highlevel/methods/stickers/get-installed-stickers.js.map +1 -1
- package/cjs/highlevel/methods/stickers/get-my-sticker-sets.d.ts +13 -0
- package/cjs/highlevel/methods/stickers/get-my-sticker-sets.js +24 -0
- package/cjs/highlevel/methods/stickers/get-my-sticker-sets.js.map +1 -0
- package/cjs/highlevel/methods/stickers/get-sticker-set.d.ts +2 -2
- package/cjs/highlevel/methods/stickers/get-sticker-set.js +2 -2
- package/cjs/highlevel/methods/stickers/get-sticker-set.js.map +1 -1
- package/cjs/highlevel/methods/stickers/move-sticker-in-set.d.ts +2 -3
- package/cjs/highlevel/methods/stickers/move-sticker-in-set.js +2 -3
- package/cjs/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
- package/cjs/highlevel/methods/stickers/replace-sticker-in-set.d.ts +24 -0
- package/cjs/highlevel/methods/stickers/replace-sticker-in-set.js +32 -0
- package/cjs/highlevel/methods/stickers/replace-sticker-in-set.js.map +1 -0
- 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.d.ts +5 -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-birthday.d.ts +12 -0
- package/cjs/highlevel/methods/users/set-my-birthday.js +22 -0
- package/cjs/highlevel/methods/users/set-my-birthday.js.map +1 -0
- 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/methods.d.ts +12 -0
- package/cjs/highlevel/methods.js +33 -3
- package/cjs/highlevel/methods.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 +8 -3
- package/cjs/highlevel/storage/storage.js +17 -4
- package/cjs/highlevel/storage/storage.js.map +1 -1
- package/cjs/highlevel/types/auth/sent-code.d.ts +7 -2
- package/cjs/highlevel/types/auth/sent-code.js +15 -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.d.ts +5 -1
- package/cjs/highlevel/types/bots/inline-message/factories.js.map +1 -1
- package/cjs/highlevel/types/bots/inline-result/factories.d.ts +4 -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.d.ts +7 -1
- package/cjs/highlevel/types/bots/keyboards/factories.js.map +1 -1
- package/cjs/highlevel/types/calls/discard-reason.d.ts +5 -0
- 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.d.ts +2 -0
- 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 +6 -5
- 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.d.ts +5 -0
- package/cjs/highlevel/types/media/document-utils.js +9 -2
- 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/input-media/types.d.ts +2 -2
- package/cjs/highlevel/types/media/input-media/types.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.d.ts +17 -6
- package/cjs/highlevel/types/media/poll.js +69 -19
- 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 +4 -12
- 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/input-message-id.d.ts +5 -0
- package/cjs/highlevel/types/messages/message-action.d.ts +19 -2
- package/cjs/highlevel/types/messages/message-action.js +6 -0
- 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.d.ts +4 -0
- 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.d.ts +59 -1
- package/cjs/highlevel/types/messages/message.js +102 -1
- 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/collectible-info.d.ts +27 -0
- package/cjs/highlevel/types/misc/collectible-info.js +46 -0
- package/cjs/highlevel/types/misc/collectible-info.js.map +1 -0
- package/cjs/highlevel/types/misc/entities.d.ts +7 -0
- package/cjs/highlevel/types/misc/entities.js +15 -0
- package/cjs/highlevel/types/misc/entities.js.map +1 -1
- package/cjs/highlevel/types/misc/index.d.ts +1 -0
- package/cjs/highlevel/types/misc/index.js +1 -0
- package/cjs/highlevel/types/misc/index.js.map +1 -1
- package/cjs/highlevel/types/misc/sticker-set.d.ts +8 -1
- package/cjs/highlevel/types/misc/sticker-set.js +43 -6
- 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.d.ts +3 -0
- package/cjs/highlevel/types/peers/chat-event/actions.js.map +1 -1
- package/cjs/highlevel/types/peers/chat-event/filters.d.ts +2 -0
- 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.d.ts +7 -93
- package/cjs/highlevel/types/peers/chat.js +10 -192
- 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/full-chat.d.ts +103 -0
- package/cjs/highlevel/types/peers/full-chat.js +237 -0
- package/cjs/highlevel/types/peers/full-chat.js.map +1 -0
- package/cjs/highlevel/types/peers/index.d.ts +1 -0
- package/cjs/highlevel/types/peers/index.js +1 -0
- package/cjs/highlevel/types/peers/index.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.d.ts +5 -0
- package/cjs/highlevel/types/peers/user.js +12 -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/premium/business-account.d.ts +19 -0
- package/cjs/highlevel/types/premium/business-account.js +45 -0
- package/cjs/highlevel/types/premium/business-account.js.map +1 -0
- package/cjs/highlevel/types/premium/business-chat-link.d.ts +19 -0
- package/cjs/highlevel/types/premium/business-chat-link.js +39 -0
- package/cjs/highlevel/types/premium/business-chat-link.js.map +1 -0
- package/cjs/highlevel/types/premium/business-connection.d.ts +23 -0
- package/cjs/highlevel/types/premium/business-connection.js +45 -0
- package/cjs/highlevel/types/premium/business-connection.js.map +1 -0
- package/cjs/highlevel/types/premium/business-intro.d.ts +22 -0
- package/cjs/highlevel/types/premium/business-intro.js +43 -0
- package/cjs/highlevel/types/premium/business-intro.js.map +1 -0
- package/cjs/highlevel/types/premium/business-location.d.ts +10 -0
- package/cjs/highlevel/types/premium/business-location.js +26 -0
- package/cjs/highlevel/types/premium/business-location.js.map +1 -0
- package/cjs/highlevel/types/premium/business-work-hours.d.ts +42 -0
- package/cjs/highlevel/types/premium/business-work-hours.js +141 -0
- package/cjs/highlevel/types/premium/business-work-hours.js.map +1 -0
- package/cjs/highlevel/types/premium/index.d.ts +5 -0
- package/cjs/highlevel/types/premium/index.js +5 -0
- package/cjs/highlevel/types/premium/index.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/business-message.d.ts +18 -0
- package/cjs/highlevel/types/updates/business-message.js +35 -0
- package/cjs/highlevel/types/updates/business-message.js.map +1 -0
- 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-business-message-update.d.ts +21 -0
- package/cjs/highlevel/types/updates/delete-business-message-update.js +37 -0
- package/cjs/highlevel/types/updates/delete-business-message-update.js.map +1 -0
- 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/index.d.ts +19 -2
- package/cjs/highlevel/types/updates/index.js +5 -1
- package/cjs/highlevel/types/updates/index.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.d.ts +4 -1
- package/cjs/highlevel/types/updates/parse-update.js +8 -0
- package/cjs/highlevel/types/updates/parse-update.js.map +1 -1
- package/cjs/highlevel/types/updates/poll-update.js +4 -2
- 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 +0 -1
- package/cjs/highlevel/updates/manager.js +57 -30
- package/cjs/highlevel/updates/manager.js.map +1 -1
- package/cjs/highlevel/updates/parsed.js +8 -2
- package/cjs/highlevel/updates/parsed.js.map +1 -1
- package/cjs/highlevel/updates/types.d.ts +57 -0
- package/cjs/highlevel/updates/utils.d.ts +2 -0
- 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 +7 -0
- 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/index.js +6 -0
- 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 +1 -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/index.js +6 -0
- 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 +0 -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 +0 -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 +1 -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 +10 -3
- package/cjs/network/network-manager.js +57 -31
- package/cjs/network/network-manager.js.map +1 -1
- package/cjs/network/persistent-connection.d.ts +2 -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 +32 -12
- package/cjs/network/session-connection.js.map +1 -1
- package/cjs/network/transports/abstract.d.ts +1 -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 +0 -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 +0 -1
- package/cjs/network/transports/wrapped.js +2 -0
- package/cjs/network/transports/wrapped.js.map +1 -1
- package/cjs/platform.js +6 -0
- 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 +7 -2
- 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 +22 -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/types/utils.d.ts +1 -0
- package/cjs/types/utils.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/index.js +6 -0
- 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 +0 -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/client.d.ts +1 -0
- package/client.js +1 -0
- 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 +199 -18
- package/esm/highlevel/client.js +48 -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/_imports.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.d.ts +3 -0
- 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.d.ts +5 -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.d.ts +10 -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.d.ts +2 -2
- package/esm/highlevel/methods/chats/get-full-chat.js +2 -2
- 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.d.ts +3 -0
- 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.d.ts +9 -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.d.ts +1 -0
- package/esm/highlevel/methods/files/normalize-input-media.js +12 -12
- 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/_business-connection.d.ts +7 -0
- package/esm/highlevel/methods/messages/_business-connection.js +38 -0
- package/esm/highlevel/methods/messages/_business-connection.js.map +1 -0
- package/esm/highlevel/methods/messages/close-poll.js +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.d.ts +1 -0
- package/esm/highlevel/methods/messages/edit-message.js +2 -1
- package/esm/highlevel/methods/messages/edit-message.js.map +1 -1
- package/esm/highlevel/methods/messages/find-in-update.d.ts +13 -1
- package/esm/highlevel/methods/messages/find-in-update.js +7 -2
- package/esm/highlevel/methods/messages/find-in-update.js.map +1 -1
- package/esm/highlevel/methods/messages/forward-messages.d.ts +5 -0
- package/esm/highlevel/methods/messages/forward-messages.js +2 -0
- package/esm/highlevel/methods/messages/forward-messages.js.map +1 -1
- package/esm/highlevel/methods/messages/get-all-scheduled-messages.d.ts +8 -0
- package/esm/highlevel/methods/messages/get-all-scheduled-messages.js +25 -0
- package/esm/highlevel/methods/messages/get-all-scheduled-messages.js.map +1 -0
- package/esm/highlevel/methods/messages/get-callback-query-message.js.map +1 -1
- package/esm/highlevel/methods/messages/get-discussion-message.d.ts +4 -0
- 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 +2 -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/search-global.d.ts +4 -0
- package/esm/highlevel/methods/messages/search-global.js +2 -1
- package/esm/highlevel/methods/messages/search-global.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.d.ts +28 -0
- package/esm/highlevel/methods/messages/send-common.js +19 -0
- 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 +5 -2
- package/esm/highlevel/methods/messages/send-media-group.js.map +1 -1
- package/esm/highlevel/methods/messages/send-media.js +4 -2
- 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 +4 -2
- package/esm/highlevel/methods/messages/send-text.js.map +1 -1
- package/esm/highlevel/methods/messages/send-typing.d.ts +4 -0
- package/esm/highlevel/methods/messages/send-typing.js +2 -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/chain-id.d.ts +4 -1
- package/esm/highlevel/methods/misc/get-collectible-info.d.ts +6 -0
- package/esm/highlevel/methods/misc/get-collectible-info.js +22 -0
- package/esm/highlevel/methods/misc/get-collectible-info.js.map +1 -0
- package/esm/highlevel/methods/misc/normalize-privacy-rules.js.map +1 -1
- package/esm/highlevel/methods/misc/normalize-text.d.ts +5 -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/create-business-chat-link.d.ts +12 -0
- package/esm/highlevel/methods/premium/create-business-chat-link.js +22 -0
- package/esm/highlevel/methods/premium/create-business-chat-link.js.map +1 -0
- package/esm/highlevel/methods/premium/edit-business-chat-link.d.ts +20 -0
- package/esm/highlevel/methods/premium/edit-business-chat-link.js +37 -0
- package/esm/highlevel/methods/premium/edit-business-chat-link.js.map +1 -0
- package/esm/highlevel/methods/premium/get-business-chat-links.d.ts +6 -0
- package/esm/highlevel/methods/premium/get-business-chat-links.js +10 -0
- package/esm/highlevel/methods/premium/get-business-chat-links.js.map +1 -0
- package/esm/highlevel/methods/premium/get-business-connection.d.ts +8 -0
- package/esm/highlevel/methods/premium/get-business-connection.js +21 -0
- package/esm/highlevel/methods/premium/get-business-connection.js.map +1 -0
- package/esm/highlevel/methods/premium/iter-boosters.js.map +1 -1
- package/esm/highlevel/methods/premium/set-business-intro.d.ts +22 -0
- package/esm/highlevel/methods/premium/set-business-intro.js +38 -0
- package/esm/highlevel/methods/premium/set-business-intro.js.map +1 -0
- package/esm/highlevel/methods/premium/set-business-work-hours.d.ts +18 -0
- package/esm/highlevel/methods/premium/set-business-work-hours.js +29 -0
- package/esm/highlevel/methods/premium/set-business-work-hours.js.map +1 -0
- package/esm/highlevel/methods/stickers/_utils.d.ts +10 -0
- package/esm/highlevel/methods/stickers/_utils.js +23 -0
- package/esm/highlevel/methods/stickers/_utils.js.map +1 -0
- package/esm/highlevel/methods/stickers/add-sticker-to-set.d.ts +1 -2
- package/esm/highlevel/methods/stickers/add-sticker-to-set.js +4 -18
- package/esm/highlevel/methods/stickers/add-sticker-to-set.js.map +1 -1
- package/esm/highlevel/methods/stickers/create-sticker-set.d.ts +0 -3
- package/esm/highlevel/methods/stickers/create-sticker-set.js +3 -20
- package/esm/highlevel/methods/stickers/create-sticker-set.js.map +1 -1
- package/esm/highlevel/methods/stickers/delete-sticker-from-set.d.ts +1 -2
- package/esm/highlevel/methods/stickers/delete-sticker-from-set.js +1 -2
- 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/get-installed-stickers.d.ts +1 -2
- package/esm/highlevel/methods/stickers/get-installed-stickers.js +1 -2
- package/esm/highlevel/methods/stickers/get-installed-stickers.js.map +1 -1
- package/esm/highlevel/methods/stickers/get-my-sticker-sets.d.ts +13 -0
- package/esm/highlevel/methods/stickers/get-my-sticker-sets.js +17 -0
- package/esm/highlevel/methods/stickers/get-my-sticker-sets.js.map +1 -0
- package/esm/highlevel/methods/stickers/get-sticker-set.d.ts +2 -2
- package/esm/highlevel/methods/stickers/get-sticker-set.js +2 -2
- package/esm/highlevel/methods/stickers/get-sticker-set.js.map +1 -1
- package/esm/highlevel/methods/stickers/move-sticker-in-set.d.ts +2 -3
- package/esm/highlevel/methods/stickers/move-sticker-in-set.js +2 -3
- package/esm/highlevel/methods/stickers/move-sticker-in-set.js.map +1 -1
- package/esm/highlevel/methods/stickers/replace-sticker-in-set.d.ts +24 -0
- package/esm/highlevel/methods/stickers/replace-sticker-in-set.js +28 -0
- package/esm/highlevel/methods/stickers/replace-sticker-in-set.js.map +1 -0
- 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.d.ts +5 -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-birthday.d.ts +12 -0
- package/esm/highlevel/methods/users/set-my-birthday.js +18 -0
- package/esm/highlevel/methods/users/set-my-birthday.js.map +1 -0
- 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/methods.d.ts +12 -0
- package/esm/highlevel/methods.js +12 -0
- package/esm/highlevel/methods.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 +8 -3
- package/esm/highlevel/storage/storage.js +17 -4
- package/esm/highlevel/storage/storage.js.map +1 -1
- package/esm/highlevel/types/auth/sent-code.d.ts +7 -2
- package/esm/highlevel/types/auth/sent-code.js +15 -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.d.ts +5 -1
- package/esm/highlevel/types/bots/inline-message/factories.js.map +1 -1
- package/esm/highlevel/types/bots/inline-result/factories.d.ts +4 -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.d.ts +7 -1
- package/esm/highlevel/types/bots/keyboards/factories.js.map +1 -1
- package/esm/highlevel/types/calls/discard-reason.d.ts +5 -0
- 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.d.ts +2 -0
- 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 +6 -5
- 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.d.ts +5 -0
- package/esm/highlevel/types/media/document-utils.js +7 -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/input-media/types.d.ts +2 -2
- package/esm/highlevel/types/media/input-media/types.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.d.ts +17 -6
- package/esm/highlevel/types/media/poll.js +68 -18
- 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 +4 -12
- 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/input-message-id.d.ts +5 -0
- package/esm/highlevel/types/messages/message-action.d.ts +19 -2
- package/esm/highlevel/types/messages/message-action.js +6 -0
- 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.d.ts +4 -0
- 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.d.ts +59 -1
- package/esm/highlevel/types/messages/message.js +102 -1
- 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/collectible-info.d.ts +27 -0
- package/esm/highlevel/types/misc/collectible-info.js +43 -0
- package/esm/highlevel/types/misc/collectible-info.js.map +1 -0
- package/esm/highlevel/types/misc/entities.d.ts +7 -0
- package/esm/highlevel/types/misc/entities.js +13 -1
- package/esm/highlevel/types/misc/entities.js.map +1 -1
- package/esm/highlevel/types/misc/index.d.ts +1 -0
- package/esm/highlevel/types/misc/index.js +1 -0
- package/esm/highlevel/types/misc/index.js.map +1 -1
- package/esm/highlevel/types/misc/sticker-set.d.ts +8 -1
- package/esm/highlevel/types/misc/sticker-set.js +45 -8
- 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.d.ts +3 -0
- package/esm/highlevel/types/peers/chat-event/actions.js.map +1 -1
- package/esm/highlevel/types/peers/chat-event/filters.d.ts +2 -0
- 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.d.ts +7 -93
- package/esm/highlevel/types/peers/chat.js +10 -192
- 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/full-chat.d.ts +103 -0
- package/esm/highlevel/types/peers/full-chat.js +234 -0
- package/esm/highlevel/types/peers/full-chat.js.map +1 -0
- package/esm/highlevel/types/peers/index.d.ts +1 -0
- package/esm/highlevel/types/peers/index.js +1 -0
- package/esm/highlevel/types/peers/index.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.d.ts +5 -0
- package/esm/highlevel/types/peers/user.js +12 -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/premium/business-account.d.ts +19 -0
- package/esm/highlevel/types/premium/business-account.js +42 -0
- package/esm/highlevel/types/premium/business-account.js.map +1 -0
- package/esm/highlevel/types/premium/business-chat-link.d.ts +19 -0
- package/esm/highlevel/types/premium/business-chat-link.js +36 -0
- package/esm/highlevel/types/premium/business-chat-link.js.map +1 -0
- package/esm/highlevel/types/premium/business-connection.d.ts +23 -0
- package/esm/highlevel/types/premium/business-connection.js +42 -0
- package/esm/highlevel/types/premium/business-connection.js.map +1 -0
- package/esm/highlevel/types/premium/business-intro.d.ts +22 -0
- package/esm/highlevel/types/premium/business-intro.js +40 -0
- package/esm/highlevel/types/premium/business-intro.js.map +1 -0
- package/esm/highlevel/types/premium/business-location.d.ts +10 -0
- package/esm/highlevel/types/premium/business-location.js +23 -0
- package/esm/highlevel/types/premium/business-location.js.map +1 -0
- package/esm/highlevel/types/premium/business-work-hours.d.ts +42 -0
- package/esm/highlevel/types/premium/business-work-hours.js +137 -0
- package/esm/highlevel/types/premium/business-work-hours.js.map +1 -0
- package/esm/highlevel/types/premium/index.d.ts +5 -0
- package/esm/highlevel/types/premium/index.js +5 -0
- package/esm/highlevel/types/premium/index.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/business-message.d.ts +18 -0
- package/esm/highlevel/types/updates/business-message.js +31 -0
- package/esm/highlevel/types/updates/business-message.js.map +1 -0
- 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-business-message-update.d.ts +21 -0
- package/esm/highlevel/types/updates/delete-business-message-update.js +34 -0
- package/esm/highlevel/types/updates/delete-business-message-update.js.map +1 -0
- 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/index.d.ts +19 -2
- package/esm/highlevel/types/updates/index.js +3 -1
- package/esm/highlevel/types/updates/index.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.d.ts +4 -1
- package/esm/highlevel/types/updates/parse-update.js +9 -1
- package/esm/highlevel/types/updates/parse-update.js.map +1 -1
- package/esm/highlevel/types/updates/poll-update.js +4 -2
- 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.d.ts +0 -1
- package/esm/highlevel/updates/manager.js +57 -30
- package/esm/highlevel/updates/manager.js.map +1 -1
- package/esm/highlevel/updates/parsed.js +8 -2
- package/esm/highlevel/updates/parsed.js.map +1 -1
- package/esm/highlevel/updates/types.d.ts +57 -0
- package/esm/highlevel/updates/utils.d.ts +2 -0
- 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 +4 -0
- 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 -2
- 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.d.ts +0 -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.d.ts +0 -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 -2
- 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 +10 -3
- package/esm/network/network-manager.js +57 -31
- package/esm/network/network-manager.js.map +1 -1
- package/esm/network/persistent-connection.d.ts +2 -3
- 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 +32 -12
- package/esm/network/session-connection.js.map +1 -1
- package/esm/network/transports/abstract.d.ts +1 -2
- 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.d.ts +0 -1
- package/esm/network/transports/streamed.js +1 -4
- package/esm/network/transports/streamed.js.map +1 -1
- package/esm/network/transports/wrapped.d.ts +0 -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 +7 -2
- 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 +22 -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/types/utils.d.ts +1 -0
- package/esm/types/utils.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.d.ts +0 -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/index.d.ts +1 -0
- package/index.js +1 -0
- package/methods.d.ts +1 -0
- package/methods.js +1 -0
- package/package.json +13 -13
- package/platform.d.ts +1 -0
- package/platform.js +1 -0
- package/utils.d.ts +1 -0
- package/utils.js +1 -0
- package/worker.d.ts +1 -0
- package/worker.js +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/port.ts"],"names":[],"mappings":";;;AAEA,qDAAkD;AAElD,kEAA0D;AAE1D,mDAAuD;AACvD,6CAA4C;AAE5C,6CAAmD;AAMnD,MAAsB,kBAAkB;
|
|
1
|
+
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/port.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { LogManager } from '../../utils/logger.js'\nimport { ConnectionState, ITelegramClient } from '../client.types.js'\nimport { PeersIndex } from '../types/peers/peers-index.js'\nimport { RawUpdateHandler } from '../updates/types.js'\nimport { AppConfigManagerProxy } from './app-config.js'\nimport { WorkerInvoker } from './invoker.js'\nimport { ClientMessageHandler, SendFn, SomeWorker, WorkerCustomMethods } from './protocol.js'\nimport { TelegramStorageProxy } from './storage.js'\n\nexport interface TelegramWorkerPortOptions {\n worker: SomeWorker\n}\n\nexport abstract class TelegramWorkerPort<Custom extends WorkerCustomMethods> implements ITelegramClient {\n readonly log\n\n private _connection\n private _invoker\n\n readonly storage\n readonly appConfig\n\n // bound methods\n readonly prepare\n private _connect\n readonly close\n readonly notifyLoggedIn\n readonly notifyLoggedOut\n readonly notifyChannelOpened\n readonly notifyChannelClosed\n readonly call\n readonly importSession\n readonly exportSession\n readonly handleClientUpdate\n readonly getApiCrenetials\n readonly getPoolSize\n readonly getPrimaryDcId\n readonly computeSrpParams\n readonly computeNewPasswordHash\n readonly startUpdatesLoop\n readonly stopUpdatesLoop\n\n constructor(readonly options: TelegramWorkerPortOptions) {\n this.log = new LogManager('worker')\n\n this._connection = this.connectToWorker(this.options.worker, this._onMessage)\n this._invoker = new WorkerInvoker(this._connection[0])\n\n this.storage = new TelegramStorageProxy(this._invoker)\n this.appConfig = new AppConfigManagerProxy(this._invoker)\n\n const bind = this._invoker.makeBinder<ITelegramClient>('client')\n\n this.prepare = bind('prepare')\n this._connect = bind('connect')\n\n this.close = bind('close')\n this.notifyLoggedIn = bind('notifyLoggedIn')\n this.notifyLoggedOut = bind('notifyLoggedOut')\n this.notifyChannelOpened = bind('notifyChannelOpened')\n this.notifyChannelClosed = bind('notifyChannelClosed')\n this.call = bind('call')\n this.importSession = bind('importSession')\n this.exportSession = bind('exportSession')\n this.handleClientUpdate = bind('handleClientUpdate', true)\n this.getApiCrenetials = bind('getApiCrenetials')\n this.getPoolSize = bind('getPoolSize')\n this.getPrimaryDcId = bind('getPrimaryDcId')\n this.computeSrpParams = bind('computeSrpParams')\n this.computeNewPasswordHash = bind('computeNewPasswordHash')\n this.startUpdatesLoop = bind('startUpdatesLoop')\n this.stopUpdatesLoop = bind('stopUpdatesLoop')\n }\n\n abstract connectToWorker(worker: SomeWorker, handler: ClientMessageHandler): [SendFn, () => void]\n\n private _serverUpdatesHandler: (updates: tl.TypeUpdates) => void = () => {}\n onServerUpdate(handler: (updates: tl.TypeUpdates) => void): void {\n this._serverUpdatesHandler = handler\n }\n\n private _errorHandler: (err: unknown) => void = () => {}\n onError(handler: (err: unknown) => void): void {\n this._errorHandler = handler\n }\n emitError(err: unknown): void {\n this._errorHandler(err)\n }\n\n private _updateHandler: RawUpdateHandler = () => {}\n onUpdate(handler: RawUpdateHandler): void {\n this._updateHandler = handler\n }\n\n private _connectionStateHandler: (state: ConnectionState) => void = () => {}\n onConnectionState(handler: (state: ConnectionState) => void): void {\n this._connectionStateHandler = handler\n }\n\n private _onMessage: ClientMessageHandler = (message) => {\n switch (message.type) {\n case 'log':\n this.log.handler(message.color, message.level, message.tag, message.fmt, message.args)\n break\n case 'server_update':\n this._serverUpdatesHandler(message.update)\n break\n case 'conn_state':\n this._connectionStateHandler(message.state)\n break\n case 'update': {\n const peers = new PeersIndex(message.users, message.chats)\n peers.hasMin = message.hasMin\n this._updateHandler(message.update, peers)\n break\n }\n case 'result':\n this._invoker.handleResult(message)\n break\n case 'error':\n this.emitError(message.error)\n break\n }\n }\n\n private _destroyed = false\n destroy(terminate = false): void {\n if (this._destroyed) return\n this._connection[1]()\n this._destroyed = true\n\n if (terminate && 'terminate' in this.options.worker) {\n Promise.resolve(this.options.worker.terminate()).catch(() => {})\n }\n }\n\n invokeCustom<T extends keyof Custom>(method: T, ...args: Parameters<Custom[T]>): Promise<ReturnType<Custom[T]>> {\n return this._invoker.invoke('custom', method as string, args) as Promise<ReturnType<Custom[T]>>\n }\n\n async connect(): Promise<void> {\n await this._connect()\n await this.storage.self.fetch() // force cache self locally\n }\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import type { Worker as NodeWorker } from 'worker_threads';
|
|
1
|
+
import type { Worker as NodeWorker } from 'node:worker_threads';
|
|
3
2
|
import { tl } from '@mtcute/tl';
|
|
4
3
|
import { ConnectionState } from '../client.types.js';
|
|
5
4
|
import { SerializedError } from './errors.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/protocol.ts"],"names":[],"mappings":"","sourcesContent":["import type { Worker as NodeWorker } from 'worker_threads'\n\nimport { tl } from '@mtcute/tl'\n\nimport { ConnectionState } from '../client.types.js'\nimport { SerializedError } from './errors.js'\n\nexport type WorkerInboundMessage = {\n type: 'invoke'\n id: number\n target: 'custom' | 'client' | 'storage' | 'storage-self' | 'storage-peers' | 'app-config'\n method: string\n args: unknown[]\n void: boolean\n}\n\nexport type WorkerOutboundMessage =\n | { type: 'server_update'; update: tl.TypeUpdates }\n | {\n type: 'update'\n update: tl.TypeUpdate\n users: Map<number, tl.TypeUser>\n chats: Map<number, tl.TypeChat>\n hasMin: boolean\n }\n | { type: 'error'; error: unknown }\n | { type: 'conn_state'; state: ConnectionState }\n | {\n type: 'log'\n color: number\n level: number\n tag: string\n fmt: string\n args: unknown[]\n }\n | {\n type: 'result'\n id: number\n result?: unknown\n error?: SerializedError\n }\n\nexport type SomeWorker = NodeWorker | Worker | SharedWorker\n\nexport type SendFn = (message: WorkerInboundMessage) => void\nexport type ClientMessageHandler = (message: WorkerOutboundMessage) => void\n\nexport type RespondFn = (message: WorkerOutboundMessage) => void\nexport type WorkerMessageHandler = (message: WorkerInboundMessage, respond: RespondFn) => void\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type WorkerCustomMethods = Record<string, (...args: any[]) => Promise<any>>\n"]}
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/protocol.ts"],"names":[],"mappings":"","sourcesContent":["import type { Worker as NodeWorker } from 'node:worker_threads'\n\nimport { tl } from '@mtcute/tl'\n\nimport { ConnectionState } from '../client.types.js'\nimport { SerializedError } from './errors.js'\n\nexport type WorkerInboundMessage = {\n type: 'invoke'\n id: number\n target: 'custom' | 'client' | 'storage' | 'storage-self' | 'storage-peers' | 'app-config'\n method: string\n args: unknown[]\n void: boolean\n}\n\nexport type WorkerOutboundMessage =\n | { type: 'server_update'; update: tl.TypeUpdates }\n | {\n type: 'update'\n update: tl.TypeUpdate\n users: Map<number, tl.TypeUser>\n chats: Map<number, tl.TypeChat>\n hasMin: boolean\n }\n | { type: 'error'; error: unknown }\n | { type: 'conn_state'; state: ConnectionState }\n | {\n type: 'log'\n color: number\n level: number\n tag: string\n fmt: string\n args: unknown[]\n }\n | {\n type: 'result'\n id: number\n result?: unknown\n error?: SerializedError\n }\n\nexport type SomeWorker = NodeWorker | Worker | SharedWorker\n\nexport type SendFn = (message: WorkerInboundMessage) => void\nexport type ClientMessageHandler = (message: WorkerOutboundMessage) => void\n\nexport type RespondFn = (message: WorkerOutboundMessage) => void\nexport type WorkerMessageHandler = (message: WorkerInboundMessage, respond: RespondFn) => void\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type WorkerCustomMethods = Record<string, (...args: any[]) => Promise<any>>\n"]}
|
|
@@ -5,39 +5,35 @@ import type { PeersService } from '../storage/service/peers.js';
|
|
|
5
5
|
import { TelegramStorageManager } from '../storage/storage.js';
|
|
6
6
|
import { WorkerInvoker } from './invoker.js';
|
|
7
7
|
declare class CurrentUserServiceProxy implements PublicPart<CurrentUserService> {
|
|
8
|
-
private _invoker;
|
|
9
|
-
constructor(_invoker: WorkerInvoker);
|
|
10
|
-
private _bind;
|
|
11
|
-
private _cached?;
|
|
12
8
|
private _store;
|
|
13
|
-
store(info: CurrentUserInfo | null): Promise<void>;
|
|
14
9
|
private _storeFrom;
|
|
15
|
-
storeFrom(user: tl.TypeUser): Promise<CurrentUserInfo>;
|
|
16
10
|
private _fetch;
|
|
11
|
+
private _update;
|
|
12
|
+
constructor(invoker: WorkerInvoker);
|
|
13
|
+
private _cached?;
|
|
14
|
+
store(info: CurrentUserInfo | null): Promise<void>;
|
|
15
|
+
storeFrom(user: tl.TypeUser): Promise<CurrentUserInfo>;
|
|
17
16
|
fetch(): Promise<CurrentUserInfo | null>;
|
|
18
17
|
getCached(safe?: boolean): CurrentUserInfo | null;
|
|
19
|
-
private _update;
|
|
20
18
|
update(params: Parameters<CurrentUserService['update']>[0]): Promise<void>;
|
|
21
19
|
}
|
|
22
20
|
declare class PeersServiceProxy implements PublicPart<PeersService> {
|
|
23
21
|
private _invoker;
|
|
24
|
-
constructor(_invoker: WorkerInvoker);
|
|
25
|
-
private _bind;
|
|
26
22
|
readonly updatePeersFrom: (obj: tl.TlObject | tl.TlObject[]) => Promise<boolean>;
|
|
27
23
|
readonly store: (peer: tl.TypeUser | tl.TypeChat) => Promise<void>;
|
|
28
24
|
readonly getById: (id: number, allowRefs?: boolean) => Promise<tl.TypeInputPeer | null>;
|
|
29
25
|
readonly getByPhone: (phone: string) => Promise<tl.TypeInputPeer | null>;
|
|
30
26
|
readonly getByUsername: (username: string) => Promise<tl.TypeInputPeer | null>;
|
|
31
27
|
readonly getCompleteById: (id: number) => Promise<tl.TypeUser | tl.TypeChat | null>;
|
|
28
|
+
constructor(_invoker: WorkerInvoker);
|
|
32
29
|
}
|
|
33
30
|
export declare class TelegramStorageProxy implements PublicPart<TelegramStorageManager> {
|
|
34
31
|
private _invoker;
|
|
35
|
-
constructor(_invoker: WorkerInvoker);
|
|
36
|
-
private _bind;
|
|
37
|
-
readonly updates: never;
|
|
38
|
-
readonly refMsgs: never;
|
|
39
32
|
readonly self: CurrentUserServiceProxy;
|
|
40
33
|
readonly peers: PeersServiceProxy;
|
|
41
34
|
readonly clear: (withAuthKeys?: boolean) => Promise<void>;
|
|
35
|
+
constructor(_invoker: WorkerInvoker);
|
|
36
|
+
readonly updates: never;
|
|
37
|
+
readonly refMsgs: never;
|
|
42
38
|
}
|
|
43
39
|
export {};
|
|
@@ -3,14 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TelegramStorageProxy = void 0;
|
|
4
4
|
const errors_js_1 = require("../../types/errors.js");
|
|
5
5
|
class CurrentUserServiceProxy {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
this.
|
|
6
|
+
_store;
|
|
7
|
+
_storeFrom;
|
|
8
|
+
_fetch;
|
|
9
|
+
_update;
|
|
10
|
+
constructor(invoker) {
|
|
11
|
+
const bind = invoker.makeBinder('storage-self');
|
|
12
|
+
this._store = bind('store');
|
|
13
|
+
this._storeFrom = bind('storeFrom');
|
|
14
|
+
this._fetch = bind('fetch');
|
|
15
|
+
this._update = bind('update');
|
|
13
16
|
}
|
|
17
|
+
_cached;
|
|
14
18
|
async store(info) {
|
|
15
19
|
await this._store(info);
|
|
16
20
|
this._cached = info;
|
|
@@ -39,28 +43,39 @@ class CurrentUserServiceProxy {
|
|
|
39
43
|
}
|
|
40
44
|
}
|
|
41
45
|
class PeersServiceProxy {
|
|
46
|
+
_invoker;
|
|
47
|
+
updatePeersFrom;
|
|
48
|
+
store;
|
|
49
|
+
getById;
|
|
50
|
+
getByPhone;
|
|
51
|
+
getByUsername;
|
|
52
|
+
getCompleteById;
|
|
42
53
|
constructor(_invoker) {
|
|
43
54
|
this._invoker = _invoker;
|
|
44
|
-
|
|
45
|
-
this.updatePeersFrom =
|
|
46
|
-
this.store =
|
|
47
|
-
this.getById =
|
|
48
|
-
this.getByPhone =
|
|
49
|
-
this.getByUsername =
|
|
50
|
-
this.getCompleteById =
|
|
55
|
+
const bind = this._invoker.makeBinder('storage-peers');
|
|
56
|
+
this.updatePeersFrom = bind('updatePeersFrom');
|
|
57
|
+
this.store = bind('store');
|
|
58
|
+
this.getById = bind('getById');
|
|
59
|
+
this.getByPhone = bind('getByPhone');
|
|
60
|
+
this.getByUsername = bind('getByUsername');
|
|
61
|
+
this.getCompleteById = bind('getCompleteById');
|
|
51
62
|
}
|
|
52
63
|
}
|
|
53
64
|
class TelegramStorageProxy {
|
|
65
|
+
_invoker;
|
|
66
|
+
self;
|
|
67
|
+
peers;
|
|
68
|
+
clear;
|
|
54
69
|
constructor(_invoker) {
|
|
55
70
|
this._invoker = _invoker;
|
|
56
|
-
|
|
57
|
-
// todo - remove once we move these to updates manager
|
|
58
|
-
this.updates = null;
|
|
59
|
-
this.refMsgs = null;
|
|
71
|
+
const bind = this._invoker.makeBinder('storage');
|
|
60
72
|
this.self = new CurrentUserServiceProxy(this._invoker);
|
|
61
73
|
this.peers = new PeersServiceProxy(this._invoker);
|
|
62
|
-
this.clear =
|
|
74
|
+
this.clear = bind('clear');
|
|
63
75
|
}
|
|
76
|
+
// todo - remove once we move these to updates manager
|
|
77
|
+
updates = null;
|
|
78
|
+
refMsgs = null;
|
|
64
79
|
}
|
|
65
80
|
exports.TelegramStorageProxy = TelegramStorageProxy;
|
|
66
81
|
//# sourceMappingURL=storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/storage.ts"],"names":[],"mappings":";;;AAEA,qDAAuD;AAOvD,MAAM,uBAAuB;
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/storage.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../../types/errors.js'\nimport { PublicPart } from '../../types/utils.js'\nimport type { CurrentUserInfo, CurrentUserService } from '../storage/service/current-user.js'\nimport type { PeersService } from '../storage/service/peers.js'\nimport { TelegramStorageManager } from '../storage/storage.js'\nimport { WorkerInvoker } from './invoker.js'\n\nclass CurrentUserServiceProxy implements PublicPart<CurrentUserService> {\n private _store\n private _storeFrom\n private _fetch\n private _update\n\n constructor(invoker: WorkerInvoker) {\n const bind = invoker.makeBinder<CurrentUserService>('storage-self')\n this._store = bind('store')\n this._storeFrom = bind('storeFrom')\n this._fetch = bind('fetch')\n this._update = bind('update')\n }\n\n private _cached?: CurrentUserInfo | null\n\n async store(info: CurrentUserInfo | null): Promise<void> {\n await this._store(info)\n this._cached = info\n }\n\n async storeFrom(user: tl.TypeUser): Promise<CurrentUserInfo> {\n this._cached = await this._storeFrom(user)\n\n return this._cached\n }\n\n async fetch(): Promise<CurrentUserInfo | null> {\n if (this._cached) return this._cached\n\n this._cached = await this._fetch()\n\n return this._cached\n }\n\n getCached(safe?: boolean): CurrentUserInfo | null {\n if (this._cached === undefined) {\n if (safe) return null\n\n throw new MtArgumentError('User info is not cached yet')\n }\n\n return this._cached\n }\n\n async update(params: Parameters<CurrentUserService['update']>[0]): Promise<void> {\n await this._update(params)\n this._cached = await this._fetch()\n }\n}\n\nclass PeersServiceProxy implements PublicPart<PeersService> {\n readonly updatePeersFrom\n readonly store\n readonly getById\n readonly getByPhone\n readonly getByUsername\n readonly getCompleteById\n\n constructor(private _invoker: WorkerInvoker) {\n const bind = this._invoker.makeBinder<PeersService>('storage-peers')\n\n this.updatePeersFrom = bind('updatePeersFrom')\n this.store = bind('store')\n this.getById = bind('getById')\n this.getByPhone = bind('getByPhone')\n this.getByUsername = bind('getByUsername')\n this.getCompleteById = bind('getCompleteById')\n }\n}\n\nexport class TelegramStorageProxy implements PublicPart<TelegramStorageManager> {\n readonly self\n readonly peers\n\n readonly clear\n\n constructor(private _invoker: WorkerInvoker) {\n const bind = this._invoker.makeBinder<TelegramStorageManager>('storage')\n\n this.self = new CurrentUserServiceProxy(this._invoker)\n this.peers = new PeersServiceProxy(this._invoker)\n\n this.clear = bind('clear')\n }\n\n // todo - remove once we move these to updates manager\n readonly updates = null as never\n readonly refMsgs = null as never\n}\n"]}
|
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TelegramWorker = void 0;
|
|
4
4
|
const errors_js_1 = require("./errors.js");
|
|
5
5
|
class TelegramWorker {
|
|
6
|
+
params;
|
|
7
|
+
client;
|
|
8
|
+
broadcast;
|
|
6
9
|
constructor(params) {
|
|
7
10
|
this.params = params;
|
|
8
11
|
this.broadcast = this.registerWorker((message, respond) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/worker.ts"],"names":[],"mappings":";;;AACA,2CAA4C;AAQ5C,MAAsB,cAAc;
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/highlevel/worker/worker.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseTelegramClient } from '../base.js'\nimport { serializeError } from './errors.js'\nimport { RespondFn, WorkerCustomMethods, WorkerInboundMessage, WorkerMessageHandler } from './protocol.js'\n\nexport interface TelegramWorkerOptions<T extends WorkerCustomMethods> {\n client: BaseTelegramClient\n customMethods?: T\n}\n\nexport abstract class TelegramWorker<T extends WorkerCustomMethods> {\n readonly client: BaseTelegramClient\n readonly broadcast: RespondFn\n\n abstract registerWorker(handler: WorkerMessageHandler): RespondFn\n\n constructor(readonly params: TelegramWorkerOptions<T>) {\n this.broadcast = this.registerWorker((message, respond) => {\n switch (message.type) {\n case 'invoke':\n this.onInvoke(message, respond)\n break\n }\n })\n\n const client = params.client\n this.client = client\n\n client.log.mgr.handler = (color, level, tag, fmt, args) =>\n this.broadcast({\n type: 'log',\n color,\n level,\n tag,\n fmt,\n args,\n })\n client.onError((err) =>\n this.broadcast({\n type: 'error',\n error: err,\n }),\n )\n client.onConnectionState((state) =>\n this.broadcast({\n type: 'conn_state',\n state,\n }),\n )\n\n if (client.updates) {\n client.onUpdate((update, peers) =>\n this.broadcast({\n type: 'update',\n update,\n users: peers.users,\n chats: peers.chats,\n hasMin: peers.hasMin,\n }),\n )\n } else {\n client.onServerUpdate((update) =>\n this.broadcast({\n type: 'server_update',\n update,\n }),\n )\n }\n }\n\n private onInvoke(msg: Extract<WorkerInboundMessage, { type: 'invoke' }>, respond: RespondFn) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let target: any\n\n switch (msg.target) {\n case 'custom':\n target = this.params.customMethods\n break\n case 'client':\n target = this.client\n break\n case 'storage':\n target = this.client.storage\n break\n case 'storage-self':\n target = this.client.storage.self\n break\n case 'storage-peers':\n target = this.client.storage.peers\n break\n case 'app-config':\n target = this.client.appConfig\n break\n\n default: {\n respond({\n type: 'result',\n id: msg.id,\n error: new Error(`Unknown target ${msg.target}`),\n })\n\n return\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const method = target[msg.method]\n\n if (!method) {\n respond({\n type: 'result',\n id: msg.id,\n error: new Error(`Method ${msg.method} not found on ${msg.target}`),\n })\n\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n Promise.resolve(method.apply(target, msg.args))\n .then((res) => {\n if (msg.void) return\n\n respond({\n type: 'result',\n id: msg.id,\n result: res,\n })\n })\n .catch((err) => {\n respond({\n type: 'result',\n id: msg.id,\n error: serializeError(err),\n })\n })\n }\n}\n"]}
|
package/cjs/index.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
if (typeof globalThis !== 'undefined' && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
|
|
3
|
+
globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true
|
|
4
|
+
console.warn("[@mtcute/core] CommonJS support is deprecated and will be removed soon. Please consider switching to ESM, it's "+(new Date()).getFullYear()+" already.")
|
|
5
|
+
console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c")
|
|
6
|
+
}
|
|
7
|
+
"use strict";
|
|
2
8
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
9
|
if (k2 === undefined) k2 = k;
|
|
4
10
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
package/cjs/network/auth-key.js
CHANGED
|
@@ -6,11 +6,18 @@ const errors_js_1 = require("../types/errors.js");
|
|
|
6
6
|
const mtproto_js_1 = require("../utils/crypto/mtproto.js");
|
|
7
7
|
const index_js_1 = require("../utils/index.js");
|
|
8
8
|
class AuthKey {
|
|
9
|
+
_crypto;
|
|
10
|
+
log;
|
|
11
|
+
_readerMap;
|
|
12
|
+
ready = false;
|
|
13
|
+
key;
|
|
14
|
+
id;
|
|
15
|
+
clientSalt;
|
|
16
|
+
serverSalt;
|
|
9
17
|
constructor(_crypto, log, _readerMap) {
|
|
10
18
|
this._crypto = _crypto;
|
|
11
19
|
this.log = log;
|
|
12
20
|
this._readerMap = _readerMap;
|
|
13
|
-
this.ready = false;
|
|
14
21
|
}
|
|
15
22
|
match(keyId) {
|
|
16
23
|
return this.ready && (0, index_js_1.buffersEqual)(keyId, this.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-key.js","sourceRoot":"","sources":["../../../src/network/auth-key.ts"],"names":[],"mappings":";;;AAGA,mDAAgE;AAEhE,kDAAgD;AAChD,2DAAmE;AACnE,gDAA4G;AAE5G,MAAa,OAAO;
|
|
1
|
+
{"version":3,"file":"auth-key.js","sourceRoot":"","sources":["../../../src/network/auth-key.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { tl } from '@mtcute/tl'\nimport { TlBinaryReader, TlReaderMap } from '@mtcute/tl-runtime'\n\nimport { MtcuteError } from '../types/errors.js'\nimport { createAesIgeForMessage } from '../utils/crypto/mtproto.js'\nimport { buffersEqual, concatBuffers, dataViewFromBuffer, ICryptoProvider, Logger } from '../utils/index.js'\n\nexport class AuthKey {\n ready = false\n\n key!: Uint8Array\n id!: Uint8Array\n clientSalt!: Uint8Array\n serverSalt!: Uint8Array\n\n constructor(\n readonly _crypto: ICryptoProvider,\n readonly log: Logger,\n readonly _readerMap: TlReaderMap,\n ) {}\n\n match(keyId: Uint8Array): boolean {\n return this.ready && buffersEqual(keyId, this.id)\n }\n\n setup(authKey?: Uint8Array | null): void {\n if (!authKey) return this.reset()\n\n this.ready = true\n this.key = authKey\n this.clientSalt = authKey.subarray(88, 120)\n this.serverSalt = authKey.subarray(96, 128)\n this.id = this._crypto.sha1(authKey).subarray(-8)\n\n this.log.verbose('auth key set up, id = %h', this.id)\n }\n\n encryptMessage(message: Uint8Array, serverSalt: Long, sessionId: Long): Uint8Array {\n if (!this.ready) throw new MtcuteError('Keys are not set up!')\n\n let padding = (16 /* header size */ + message.length + 12) /* min padding */ % 16\n padding = 12 + (padding ? 16 - padding : 0)\n\n const buf = new Uint8Array(16 + message.length + padding)\n const dv = dataViewFromBuffer(buf)\n\n dv.setInt32(0, serverSalt.low, true)\n dv.setInt32(4, serverSalt.high, true)\n dv.setInt32(8, sessionId.low, true)\n dv.setInt32(12, sessionId.high, true)\n buf.set(message, 16)\n this._crypto.randomFill(buf.subarray(16 + message.length, 16 + message.length + padding))\n\n const messageKey = this._crypto.sha256(concatBuffers([this.clientSalt, buf])).subarray(8, 24)\n const ige = createAesIgeForMessage(this._crypto, this.key, messageKey, true)\n const encryptedData = ige.encrypt(buf)\n\n return concatBuffers([this.id, messageKey, encryptedData])\n }\n\n decryptMessage(\n data: Uint8Array,\n sessionId: Long,\n callback: (msgId: tl.Long, seqNo: number, data: TlBinaryReader) => void,\n ): void {\n const messageKey = data.subarray(8, 24)\n let encryptedData = data.subarray(24)\n\n const mod16 = encryptedData.byteLength % 16\n\n if (mod16 !== 0) {\n // strip padding in case of padded transport.\n // i wish this could be done at transport level, but we can't properly align anything there\n // because padding size is not known, and transport level should not be aware of MTProto structure\n encryptedData = encryptedData.subarray(0, encryptedData.byteLength - mod16)\n }\n\n const ige = createAesIgeForMessage(this._crypto, this.key, messageKey, false)\n const innerData = ige.decrypt(encryptedData)\n\n const msgKeySource = this._crypto.sha256(concatBuffers([this.serverSalt, innerData]))\n const expectedMessageKey = msgKeySource.subarray(8, 24)\n\n if (!buffersEqual(messageKey, expectedMessageKey)) {\n this.log.warn('received message with invalid messageKey = %h (expected %h)', messageKey, expectedMessageKey)\n\n return\n }\n\n const innerReader = new TlBinaryReader(this._readerMap, innerData)\n innerReader.seek(8) // skip salt\n const sessionId_ = innerReader.long()\n const messageId = innerReader.long(true)\n\n if (sessionId_.neq(sessionId)) {\n this.log.warn('ignoring message with invalid sessionId = %h', sessionId_)\n\n return\n }\n\n const seqNo = innerReader.uint()\n const length = innerReader.uint()\n\n if (length > innerData.length - 32 /* header size */) {\n this.log.warn('ignoring message with invalid length: %d > %d', length, innerData.length - 32)\n\n return\n }\n\n if (length % 4 !== 0) {\n this.log.warn('ignoring message with invalid length: %d is not a multiple of 4', length)\n\n return\n }\n\n const paddingSize = innerData.length - length - 32 // header size\n\n if (paddingSize < 12 || paddingSize > 1024) {\n this.log.warn('ignoring message with invalid padding size: %d', paddingSize)\n\n return\n }\n\n callback(messageId, seqNo, innerReader)\n }\n\n copyFrom(authKey: AuthKey): void {\n this.ready = authKey.ready\n this.key = authKey.key\n this.id = authKey.id\n this.serverSalt = authKey.serverSalt\n this.clientSalt = authKey.clientSalt\n }\n\n reset(): void {\n this.ready = false\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization.js","sourceRoot":"","sources":["../../../src/network/authorization.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { mtp } from '@mtcute/tl'\nimport { TlPublicKey } from '@mtcute/tl/binary/rsa-keys.js'\nimport { TlBinaryReader, TlBinaryWriter, TlSerializationCounter } from '@mtcute/tl-runtime'\n\nimport { MtArgumentError, MtSecurityError, MtTypeAssertionError } from '../types/index.js'\nimport { buffersEqual, concatBuffers, dataViewFromBuffer } from '../utils/buffer-utils.js'\nimport { findKeyByFingerprints } from '../utils/crypto/keys.js'\nimport { millerRabin } from '../utils/crypto/miller-rabin.js'\nimport { generateKeyAndIvFromNonce } from '../utils/crypto/mtproto.js'\nimport { xorBuffer, xorBufferInPlace } from '../utils/crypto/utils.js'\nimport { bigIntModPow, bigIntToBuffer, bufferToBigInt, ICryptoProvider, Logger } from '../utils/index.js'\nimport { mtpAssertTypeIs } from '../utils/type-assertions.js'\nimport { SessionConnection } from './session-connection.js'\n\n// Heavily based on code from https://github.com/LonamiWebs/Telethon/blob/master/telethon/network/authenticator.py\n\n// see https://core.telegram.org/mtproto/security_guidelines\n// const DH_SAFETY_RANGE = bigInt[2].pow(2048 - 64)\nconst DH_SAFETY_RANGE = 2n ** (2048n - 64n)\nconst KNOWN_DH_PRIME =\n // eslint-disable-next-line max-len\n 0xc71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5bn\nconst TWO_POW_2047 = 2n ** 2047n\nconst TWO_POW_2048 = 2n ** 2048n\n\ninterface CheckedPrime {\n prime: bigint\n generators: number[]\n}\n\nconst checkedPrimesCache: CheckedPrime[] = []\n\nfunction checkDhPrime(crypto: ICryptoProvider, log: Logger, dhPrime: bigint, g: number) {\n if (KNOWN_DH_PRIME === dhPrime) {\n log.debug('server is using known dh prime, skipping validation')\n\n return\n }\n\n let checkedPrime = checkedPrimesCache.find((x) => x.prime === dhPrime)\n\n if (!checkedPrime) {\n if (dhPrime <= TWO_POW_2047 || dhPrime >= TWO_POW_2048) {\n throw new MtSecurityError('Step 3: dh_prime is not in the 2048-bit range')\n }\n\n if (!millerRabin(crypto, dhPrime)) {\n throw new MtSecurityError('Step 3: dh_prime is not prime')\n }\n if (!millerRabin(crypto, (dhPrime - 1n) / 2n)) {\n throw new MtSecurityError('Step 3: dh_prime is not a safe prime - (dh_prime-1)/2 is not prime')\n }\n\n log.debug('dh_prime is probably prime')\n\n checkedPrime = {\n prime: dhPrime,\n generators: [],\n }\n checkedPrimesCache.push(checkedPrime)\n } else {\n log.debug('dh_prime is probably prime (cached)')\n }\n\n const generatorChecked = checkedPrime.generators.includes(g)\n\n if (generatorChecked) {\n log.debug('g = %d is already checked for dh_prime', g)\n\n return\n }\n\n switch (g) {\n case 2:\n if (dhPrime % 8n !== 7n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 8 != 7')\n }\n break\n case 3:\n if (dhPrime % 3n !== 2n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 3 != 2')\n }\n break\n case 4:\n break\n case 5: {\n const mod = dhPrime % 5n\n\n if (mod !== 1n && mod !== 4n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 5 != 1 && dh_prime mod 5 != 4')\n }\n break\n }\n case 6: {\n const mod = dhPrime % 24n\n\n if (mod !== 19n && mod !== 23n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 24 != 19 && dh_prime mod 24 != 23')\n }\n break\n }\n case 7: {\n const mod = dhPrime % 7n\n\n if (mod !== 3n && mod !== 5n && mod !== 6n) {\n throw new MtSecurityError(\n 'Step 3: ivalid g - dh_prime mod 7 != 3 && dh_prime mod 7 != 5 && dh_prime mod 7 != 6',\n )\n }\n break\n }\n default:\n throw new MtSecurityError(`Step 3: ivalid g - unknown g = ${g}`)\n }\n\n checkedPrime.generators.push(g)\n\n log.debug('g = %d is safe to use with dh_prime', g)\n}\n\nfunction rsaPad(data: Uint8Array, crypto: ICryptoProvider, key: TlPublicKey): Uint8Array {\n // since Summer 2021, they use \"version of RSA with a variant of OAEP+ padding explained below\"\n\n const keyModulus = BigInt(`0x${key.modulus}`)\n const keyExponent = BigInt(`0x${key.exponent}`)\n\n if (data.length > 144) {\n throw new MtArgumentError('Failed to pad: too big data')\n }\n\n const dataPadded = new Uint8Array(192)\n dataPadded.set(data, 0)\n crypto.randomFill(dataPadded.subarray(data.length))\n data = dataPadded\n\n for (;;) {\n const aesIv = new Uint8Array(32)\n\n const aesKey = crypto.randomBytes(32)\n\n const dataWithHash = concatBuffers([data, crypto.sha256(concatBuffers([aesKey, data]))])\n // we only need to reverse the data\n dataWithHash.subarray(0, 192).reverse()\n\n const aes = crypto.createAesIge(aesKey, aesIv)\n const encrypted = aes.encrypt(dataWithHash)\n const encryptedHash = crypto.sha256(encrypted)\n\n xorBufferInPlace(aesKey, encryptedHash)\n const decryptedData = concatBuffers([aesKey, encrypted])\n\n const decryptedDataBigint = bufferToBigInt(decryptedData)\n\n if (decryptedDataBigint >= keyModulus) {\n continue\n }\n\n const encryptedBigint = bigIntModPow(decryptedDataBigint, keyExponent, keyModulus)\n\n return bigIntToBuffer(encryptedBigint, 256)\n }\n}\n\nfunction rsaEncrypt(data: Uint8Array, crypto: ICryptoProvider, key: TlPublicKey): Uint8Array {\n const toEncrypt = concatBuffers([\n crypto.sha1(data),\n data,\n // sha1 is always 20 bytes, so we're left with 255 - 20 - x padding\n crypto.randomBytes(235 - data.length),\n ])\n\n const encryptedBigInt = bigIntModPow(\n bufferToBigInt(toEncrypt),\n BigInt(`0x${key.exponent}`),\n BigInt(`0x${key.modulus}`),\n )\n\n return bigIntToBuffer(encryptedBigInt)\n}\n\n/**\n * Execute authorization flow on `connection` using `crypto`.\n *\n * @returns tuple: [authKey, serverSalt, timeOffset]\n */\nexport async function doAuthorization(\n connection: SessionConnection,\n crypto: ICryptoProvider,\n expiresIn?: number,\n): Promise<[Uint8Array, Long, number]> {\n // eslint-disable-next-line dot-notation\n const session = connection['_session']\n const readerMap = session._readerMap\n const writerMap = session._writerMap\n const log = connection.log.create('auth')\n\n function sendPlainMessage(message: mtp.TlObject): Promise<void> {\n const length = TlSerializationCounter.countNeededBytes(writerMap, message)\n const writer = TlBinaryWriter.alloc(writerMap, length + 20) // 20 bytes for mtproto header\n\n const messageId = session.getMessageId()\n\n log.verbose('[PLAIN] >>> %j', message)\n writer.long(Long.ZERO)\n writer.long(messageId)\n writer.uint(length)\n writer.object(message)\n\n return connection.send(writer.result())\n }\n\n async function readNext(): Promise<mtp.TlObject> {\n const res = TlBinaryReader.deserializeObject<mtp.TlObject>(\n readerMap,\n await connection.waitForUnencryptedMessage(),\n 20, // skip mtproto header\n )\n\n log.verbose('[PLAIN] <<< %j', res)\n\n return res\n }\n\n if (expiresIn) log.prefix = '[PFS] '\n\n const nonce = crypto.randomBytes(16)\n // Step 1: PQ request\n log.debug('starting PQ handshake (temp = %b), nonce = %h', expiresIn, nonce)\n\n await sendPlainMessage({ _: 'mt_req_pq_multi', nonce })\n const resPq = await readNext()\n\n mtpAssertTypeIs('auth step 1', resPq, 'mt_resPQ')\n\n if (!buffersEqual(resPq.nonce, nonce)) {\n throw new MtSecurityError('Step 1: invalid nonce from server')\n }\n\n const serverKeys = resPq.serverPublicKeyFingerprints.map((it) => it.toUnsigned().toString(16))\n log.debug('received PQ, keys: %j', serverKeys)\n\n // Step 2: DH exchange\n const publicKey = findKeyByFingerprints(serverKeys)\n\n if (!publicKey) {\n throw new MtSecurityError(\n 'Step 2: Could not find server public key with any of these fingerprints: ' + serverKeys.join(', '),\n )\n }\n log.debug('found server key, fp = %s, old = %s', publicKey.fingerprint, publicKey.old)\n\n if (millerRabin(crypto, bufferToBigInt(resPq.pq))) {\n throw new MtSecurityError('Step 2: pq is prime')\n }\n\n const [p, q] = await crypto.factorizePQ(resPq.pq)\n log.debug('factorized PQ: PQ = %h, P = %h, Q = %h', resPq.pq, p, q)\n\n const newNonce = crypto.randomBytes(32)\n\n let dcId = connection.params.dc.id\n if (connection.params.testMode) dcId += 10000\n if (connection.params.dc.mediaOnly) dcId = -dcId\n\n const _pqInnerData: mtp.TypeP_Q_inner_data = {\n _: expiresIn ? 'mt_p_q_inner_data_temp_dc' : 'mt_p_q_inner_data_dc',\n pq: resPq.pq,\n p,\n q,\n nonce,\n newNonce,\n serverNonce: resPq.serverNonce,\n dc: dcId,\n expiresIn: expiresIn!, // whatever\n }\n const pqInnerData = TlBinaryWriter.serializeObject(writerMap, _pqInnerData)\n\n const encryptedData = publicKey.old ?\n rsaEncrypt(pqInnerData, crypto, publicKey) :\n rsaPad(pqInnerData, crypto, publicKey)\n\n log.debug('requesting DH params')\n\n await sendPlainMessage({\n _: 'mt_req_DH_params',\n nonce,\n serverNonce: resPq.serverNonce,\n p,\n q,\n publicKeyFingerprint: Long.fromString(publicKey.fingerprint, true, 16),\n encryptedData,\n })\n const serverDhParams = await readNext()\n\n mtpAssertTypeIs('auth step 2', serverDhParams, 'mt_server_DH_params_ok')\n\n if (!buffersEqual(serverDhParams.nonce, nonce)) {\n throw new MtSecurityError('Step 2: invalid nonce from server')\n }\n if (!buffersEqual(serverDhParams.serverNonce, resPq.serverNonce)) {\n throw new MtSecurityError('Step 2: invalid server nonce from server')\n }\n\n log.debug('server DH ok')\n\n if (serverDhParams.encryptedAnswer.length % 16 !== 0) {\n throw new MtSecurityError('Step 2: AES block size is invalid')\n }\n\n // Step 3: complete DH exchange\n const [key, iv] = generateKeyAndIvFromNonce(crypto, resPq.serverNonce, newNonce)\n const ige = crypto.createAesIge(key, iv)\n\n const plainTextAnswer = ige.decrypt(serverDhParams.encryptedAnswer)\n const innerDataHash = plainTextAnswer.subarray(0, 20)\n const serverDhInnerReader = new TlBinaryReader(readerMap, plainTextAnswer, 20)\n const serverDhInner = serverDhInnerReader.object() as mtp.TlObject\n\n if (!buffersEqual(innerDataHash, crypto.sha1(plainTextAnswer.subarray(20, serverDhInnerReader.pos)))) {\n throw new MtSecurityError('Step 3: invalid inner data hash')\n }\n\n mtpAssertTypeIs('auth step 3', serverDhInner, 'mt_server_DH_inner_data')\n\n if (!buffersEqual(serverDhInner.nonce, nonce)) {\n throw Error('Step 3: invalid nonce from server')\n }\n if (!buffersEqual(serverDhInner.serverNonce, resPq.serverNonce)) {\n throw Error('Step 3: invalid server nonce from server')\n }\n\n const dhPrime = bufferToBigInt(serverDhInner.dhPrime)\n const timeOffset = Math.floor(Date.now() / 1000) - serverDhInner.serverTime\n session.updateTimeOffset(timeOffset)\n\n const g = BigInt(serverDhInner.g)\n const gA = bufferToBigInt(serverDhInner.gA)\n\n checkDhPrime(crypto, log, dhPrime, serverDhInner.g)\n\n let retryId = Long.ZERO\n const serverSalt = xorBuffer(newNonce.subarray(0, 8), resPq.serverNonce.subarray(0, 8))\n\n for (;;) {\n const b = bufferToBigInt(crypto.randomBytes(256))\n const gB = bigIntModPow(g, b, dhPrime)\n\n const authKey = bigIntToBuffer(bigIntModPow(gA, b, dhPrime))\n const authKeyAuxHash = crypto.sha1(authKey).subarray(0, 8)\n\n // validate DH params\n if (g <= 1 || g >= dhPrime - 1n) {\n throw new MtSecurityError('g is not within (1, dh_prime - 1)')\n }\n if (gA <= 1 || gA >= dhPrime - 1n) {\n throw new MtSecurityError('g_a is not within (1, dh_prime - 1)')\n }\n if (gB <= 1 || gB >= dhPrime - 1n) {\n throw new MtSecurityError('g_b is not within (1, dh_prime - 1)')\n }\n\n if (gA <= DH_SAFETY_RANGE || gA >= dhPrime - DH_SAFETY_RANGE) {\n throw new MtSecurityError('g_a is not within (2^{2048-64}, dh_prime - 2^{2048-64})')\n }\n if (gB <= DH_SAFETY_RANGE || gB >= dhPrime - DH_SAFETY_RANGE) {\n throw new MtSecurityError('g_b is not within (2^{2048-64}, dh_prime - 2^{2048-64})')\n }\n\n const gB_ = bigIntToBuffer(gB, 0, false)\n\n // Step 4: send client DH\n const clientDhInner: mtp.RawMt_client_DH_inner_data = {\n _: 'mt_client_DH_inner_data',\n nonce,\n serverNonce: resPq.serverNonce,\n retryId,\n gB: gB_,\n }\n let innerLength = TlSerializationCounter.countNeededBytes(writerMap, clientDhInner) + 20 // for hash\n const innerPaddingLength = innerLength % 16\n if (innerPaddingLength > 0) innerLength += 16 - innerPaddingLength\n\n const clientDhInnerWriter = TlBinaryWriter.alloc(writerMap, innerLength)\n clientDhInnerWriter.pos = 20\n clientDhInnerWriter.object(clientDhInner)\n const clientDhInnerHash = crypto.sha1(clientDhInnerWriter.uint8View.subarray(20, clientDhInnerWriter.pos))\n clientDhInnerWriter.pos = 0\n clientDhInnerWriter.raw(clientDhInnerHash)\n\n log.debug('sending client DH (timeOffset = %d)', timeOffset)\n\n const clientDhEncrypted = ige.encrypt(clientDhInnerWriter.uint8View)\n await sendPlainMessage({\n _: 'mt_set_client_DH_params',\n nonce,\n serverNonce: resPq.serverNonce,\n encryptedData: clientDhEncrypted,\n })\n\n const dhGen = await readNext()\n\n if (!mtp.isAnySet_client_DH_params_answer(dhGen)) {\n throw new MtTypeAssertionError('auth step 4', 'set_client_DH_params_answer', dhGen._)\n }\n\n if (!buffersEqual(dhGen.nonce, nonce)) {\n throw new MtSecurityError('Step 4: invalid nonce from server')\n }\n if (!buffersEqual(dhGen.serverNonce, resPq.serverNonce)) {\n throw new MtSecurityError('Step 4: invalid server nonce from server')\n }\n\n log.debug('DH result: %s', dhGen._)\n\n if (dhGen._ === 'mt_dh_gen_fail') {\n // in theory i would be supposed to calculate newNonceHash, but why, we are failing anyway\n throw new MtTypeAssertionError('auth step 4', '!mt_dh_gen_fail', dhGen._)\n }\n\n if (dhGen._ === 'mt_dh_gen_retry') {\n const expectedHash = crypto.sha1(concatBuffers([newNonce, new Uint8Array([2]), authKeyAuxHash]))\n\n if (!buffersEqual(expectedHash.subarray(4, 20), dhGen.newNonceHash2)) {\n throw new MtSecurityError('Step 4: invalid retry nonce hash from server')\n }\n retryId = Long.fromBytesLE(authKeyAuxHash as unknown as number[])\n continue\n }\n\n if (dhGen._ !== 'mt_dh_gen_ok') throw new Error() // unreachable\n\n const expectedHash = crypto.sha1(concatBuffers([newNonce, new Uint8Array([1]), authKeyAuxHash]))\n\n if (!buffersEqual(expectedHash.subarray(4, 20), dhGen.newNonceHash1)) {\n throw new MtSecurityError('Step 4: invalid nonce hash from server')\n }\n\n log.info('authorization successful')\n\n const dv = dataViewFromBuffer(serverSalt)\n\n return [authKey, new Long(dv.getInt32(0, true), dv.getInt32(4, true)), timeOffset]\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"authorization.js","sourceRoot":"","sources":["../../../src/network/authorization.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { mtp } from '@mtcute/tl'\nimport { TlPublicKey } from '@mtcute/tl/binary/rsa-keys.js'\nimport { TlBinaryReader, TlBinaryWriter, TlSerializationCounter } from '@mtcute/tl-runtime'\n\nimport { MtArgumentError, MtSecurityError, MtTypeAssertionError } from '../types/index.js'\nimport { buffersEqual, concatBuffers, dataViewFromBuffer } from '../utils/buffer-utils.js'\nimport { findKeyByFingerprints } from '../utils/crypto/keys.js'\nimport { millerRabin } from '../utils/crypto/miller-rabin.js'\nimport { generateKeyAndIvFromNonce } from '../utils/crypto/mtproto.js'\nimport { xorBuffer, xorBufferInPlace } from '../utils/crypto/utils.js'\nimport { bigIntModPow, bigIntToBuffer, bufferToBigInt, ICryptoProvider, Logger } from '../utils/index.js'\nimport { mtpAssertTypeIs } from '../utils/type-assertions.js'\nimport { SessionConnection } from './session-connection.js'\n\n// Heavily based on code from https://github.com/LonamiWebs/Telethon/blob/master/telethon/network/authenticator.py\n\n// see https://core.telegram.org/mtproto/security_guidelines\n// const DH_SAFETY_RANGE = bigInt[2].pow(2048 - 64)\nconst DH_SAFETY_RANGE = 2n ** (2048n - 64n)\nconst KNOWN_DH_PRIME =\n // eslint-disable-next-line max-len\n 0xc71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5bn\nconst TWO_POW_2047 = 2n ** 2047n\nconst TWO_POW_2048 = 2n ** 2048n\n\ninterface CheckedPrime {\n prime: bigint\n generators: number[]\n}\n\nconst checkedPrimesCache: CheckedPrime[] = []\n\nfunction checkDhPrime(crypto: ICryptoProvider, log: Logger, dhPrime: bigint, g: number) {\n if (KNOWN_DH_PRIME === dhPrime) {\n log.debug('server is using known dh prime, skipping validation')\n\n return\n }\n\n let checkedPrime = checkedPrimesCache.find((x) => x.prime === dhPrime)\n\n if (!checkedPrime) {\n if (dhPrime <= TWO_POW_2047 || dhPrime >= TWO_POW_2048) {\n throw new MtSecurityError('Step 3: dh_prime is not in the 2048-bit range')\n }\n\n if (!millerRabin(crypto, dhPrime)) {\n throw new MtSecurityError('Step 3: dh_prime is not prime')\n }\n if (!millerRabin(crypto, (dhPrime - 1n) / 2n)) {\n throw new MtSecurityError('Step 3: dh_prime is not a safe prime - (dh_prime-1)/2 is not prime')\n }\n\n log.debug('dh_prime is probably prime')\n\n checkedPrime = {\n prime: dhPrime,\n generators: [],\n }\n checkedPrimesCache.push(checkedPrime)\n } else {\n log.debug('dh_prime is probably prime (cached)')\n }\n\n const generatorChecked = checkedPrime.generators.includes(g)\n\n if (generatorChecked) {\n log.debug('g = %d is already checked for dh_prime', g)\n\n return\n }\n\n switch (g) {\n case 2:\n if (dhPrime % 8n !== 7n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 8 != 7')\n }\n break\n case 3:\n if (dhPrime % 3n !== 2n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 3 != 2')\n }\n break\n case 4:\n break\n case 5: {\n const mod = dhPrime % 5n\n\n if (mod !== 1n && mod !== 4n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 5 != 1 && dh_prime mod 5 != 4')\n }\n break\n }\n case 6: {\n const mod = dhPrime % 24n\n\n if (mod !== 19n && mod !== 23n) {\n throw new MtSecurityError('Step 3: ivalid g - dh_prime mod 24 != 19 && dh_prime mod 24 != 23')\n }\n break\n }\n case 7: {\n const mod = dhPrime % 7n\n\n if (mod !== 3n && mod !== 5n && mod !== 6n) {\n throw new MtSecurityError(\n 'Step 3: ivalid g - dh_prime mod 7 != 3 && dh_prime mod 7 != 5 && dh_prime mod 7 != 6',\n )\n }\n break\n }\n default:\n throw new MtSecurityError(`Step 3: ivalid g - unknown g = ${g}`)\n }\n\n checkedPrime.generators.push(g)\n\n log.debug('g = %d is safe to use with dh_prime', g)\n}\n\nfunction rsaPad(data: Uint8Array, crypto: ICryptoProvider, key: TlPublicKey): Uint8Array {\n // since Summer 2021, they use \"version of RSA with a variant of OAEP+ padding explained below\"\n\n const keyModulus = BigInt(`0x${key.modulus}`)\n const keyExponent = BigInt(`0x${key.exponent}`)\n\n if (data.length > 144) {\n throw new MtArgumentError('Failed to pad: too big data')\n }\n\n const dataPadded = new Uint8Array(192)\n dataPadded.set(data, 0)\n crypto.randomFill(dataPadded.subarray(data.length))\n data = dataPadded\n\n for (;;) {\n const aesIv = new Uint8Array(32)\n\n const aesKey = crypto.randomBytes(32)\n\n const dataWithHash = concatBuffers([data, crypto.sha256(concatBuffers([aesKey, data]))])\n // we only need to reverse the data\n dataWithHash.subarray(0, 192).reverse()\n\n const aes = crypto.createAesIge(aesKey, aesIv)\n const encrypted = aes.encrypt(dataWithHash)\n const encryptedHash = crypto.sha256(encrypted)\n\n xorBufferInPlace(aesKey, encryptedHash)\n const decryptedData = concatBuffers([aesKey, encrypted])\n\n const decryptedDataBigint = bufferToBigInt(decryptedData)\n\n if (decryptedDataBigint >= keyModulus) {\n continue\n }\n\n const encryptedBigint = bigIntModPow(decryptedDataBigint, keyExponent, keyModulus)\n\n return bigIntToBuffer(encryptedBigint, 256)\n }\n}\n\nfunction rsaEncrypt(data: Uint8Array, crypto: ICryptoProvider, key: TlPublicKey): Uint8Array {\n const toEncrypt = concatBuffers([\n crypto.sha1(data),\n data,\n // sha1 is always 20 bytes, so we're left with 255 - 20 - x padding\n crypto.randomBytes(235 - data.length),\n ])\n\n const encryptedBigInt = bigIntModPow(\n bufferToBigInt(toEncrypt),\n BigInt(`0x${key.exponent}`),\n BigInt(`0x${key.modulus}`),\n )\n\n return bigIntToBuffer(encryptedBigInt)\n}\n\n/**\n * Execute authorization flow on `connection` using `crypto`.\n *\n * @returns tuple: [authKey, serverSalt, timeOffset]\n */\nexport async function doAuthorization(\n connection: SessionConnection,\n crypto: ICryptoProvider,\n expiresIn?: number,\n): Promise<[Uint8Array, Long, number]> {\n // eslint-disable-next-line dot-notation\n const session = connection['_session']\n const readerMap = session._readerMap\n const writerMap = session._writerMap\n const log = connection.log.create('auth')\n\n function sendPlainMessage(message: mtp.TlObject): Promise<void> {\n const length = TlSerializationCounter.countNeededBytes(writerMap, message)\n const writer = TlBinaryWriter.alloc(writerMap, length + 20) // 20 bytes for mtproto header\n\n const messageId = session.getMessageId()\n\n log.verbose('[PLAIN] >>> %j', message)\n writer.long(Long.ZERO)\n writer.long(messageId)\n writer.uint(length)\n writer.object(message)\n\n return connection.send(writer.result())\n }\n\n async function readNext(): Promise<mtp.TlObject> {\n const res = TlBinaryReader.deserializeObject<mtp.TlObject>(\n readerMap,\n await connection.waitForUnencryptedMessage(),\n 20, // skip mtproto header\n )\n\n log.verbose('[PLAIN] <<< %j', res)\n\n return res\n }\n\n if (expiresIn) log.prefix = '[PFS] '\n\n const nonce = crypto.randomBytes(16)\n // Step 1: PQ request\n log.debug('starting PQ handshake (temp = %b), nonce = %h', expiresIn, nonce)\n\n await sendPlainMessage({ _: 'mt_req_pq_multi', nonce })\n const resPq = await readNext()\n\n mtpAssertTypeIs('auth step 1', resPq, 'mt_resPQ')\n\n if (!buffersEqual(resPq.nonce, nonce)) {\n throw new MtSecurityError('Step 1: invalid nonce from server')\n }\n\n const serverKeys = resPq.serverPublicKeyFingerprints.map((it) => it.toUnsigned().toString(16))\n log.debug('received PQ, keys: %j', serverKeys)\n\n // Step 2: DH exchange\n const publicKey = findKeyByFingerprints(serverKeys)\n\n if (!publicKey) {\n throw new MtSecurityError(\n 'Step 2: Could not find server public key with any of these fingerprints: ' + serverKeys.join(', '),\n )\n }\n log.debug('found server key, fp = %s, old = %s', publicKey.fingerprint, publicKey.old)\n\n if (millerRabin(crypto, bufferToBigInt(resPq.pq))) {\n throw new MtSecurityError('Step 2: pq is prime')\n }\n\n const [p, q] = await crypto.factorizePQ(resPq.pq)\n log.debug('factorized PQ: PQ = %h, P = %h, Q = %h', resPq.pq, p, q)\n\n const newNonce = crypto.randomBytes(32)\n\n let dcId = connection.params.dc.id\n if (connection.params.testMode) dcId += 10000\n if (connection.params.dc.mediaOnly) dcId = -dcId\n\n const _pqInnerData: mtp.TypeP_Q_inner_data = {\n _: expiresIn ? 'mt_p_q_inner_data_temp_dc' : 'mt_p_q_inner_data_dc',\n pq: resPq.pq,\n p,\n q,\n nonce,\n newNonce,\n serverNonce: resPq.serverNonce,\n dc: dcId,\n expiresIn: expiresIn!, // whatever\n }\n const pqInnerData = TlBinaryWriter.serializeObject(writerMap, _pqInnerData)\n\n const encryptedData = publicKey.old ?\n rsaEncrypt(pqInnerData, crypto, publicKey) :\n rsaPad(pqInnerData, crypto, publicKey)\n\n log.debug('requesting DH params')\n\n await sendPlainMessage({\n _: 'mt_req_DH_params',\n nonce,\n serverNonce: resPq.serverNonce,\n p,\n q,\n publicKeyFingerprint: Long.fromString(publicKey.fingerprint, true, 16),\n encryptedData,\n })\n const serverDhParams = await readNext()\n\n mtpAssertTypeIs('auth step 2', serverDhParams, 'mt_server_DH_params_ok')\n\n if (!buffersEqual(serverDhParams.nonce, nonce)) {\n throw new MtSecurityError('Step 2: invalid nonce from server')\n }\n if (!buffersEqual(serverDhParams.serverNonce, resPq.serverNonce)) {\n throw new MtSecurityError('Step 2: invalid server nonce from server')\n }\n\n log.debug('server DH ok')\n\n if (serverDhParams.encryptedAnswer.length % 16 !== 0) {\n throw new MtSecurityError('Step 2: AES block size is invalid')\n }\n\n // Step 3: complete DH exchange\n const [key, iv] = generateKeyAndIvFromNonce(crypto, resPq.serverNonce, newNonce)\n const ige = crypto.createAesIge(key, iv)\n\n const plainTextAnswer = ige.decrypt(serverDhParams.encryptedAnswer)\n const innerDataHash = plainTextAnswer.subarray(0, 20)\n const serverDhInnerReader = new TlBinaryReader(readerMap, plainTextAnswer, 20)\n const serverDhInner = serverDhInnerReader.object() as mtp.TlObject\n\n if (!buffersEqual(innerDataHash, crypto.sha1(plainTextAnswer.subarray(20, serverDhInnerReader.pos)))) {\n throw new MtSecurityError('Step 3: invalid inner data hash')\n }\n\n mtpAssertTypeIs('auth step 3', serverDhInner, 'mt_server_DH_inner_data')\n\n if (!buffersEqual(serverDhInner.nonce, nonce)) {\n throw Error('Step 3: invalid nonce from server')\n }\n if (!buffersEqual(serverDhInner.serverNonce, resPq.serverNonce)) {\n throw Error('Step 3: invalid server nonce from server')\n }\n\n const dhPrime = bufferToBigInt(serverDhInner.dhPrime)\n const timeOffset = Math.floor(Date.now() / 1000) - serverDhInner.serverTime\n session.updateTimeOffset(timeOffset)\n\n const g = BigInt(serverDhInner.g)\n const gA = bufferToBigInt(serverDhInner.gA)\n\n checkDhPrime(crypto, log, dhPrime, serverDhInner.g)\n\n let retryId = Long.ZERO\n const serverSalt = xorBuffer(newNonce.subarray(0, 8), resPq.serverNonce.subarray(0, 8))\n\n for (;;) {\n const b = bufferToBigInt(crypto.randomBytes(256))\n const gB = bigIntModPow(g, b, dhPrime)\n\n const authKey = bigIntToBuffer(bigIntModPow(gA, b, dhPrime))\n const authKeyAuxHash = crypto.sha1(authKey).subarray(0, 8)\n\n // validate DH params\n if (g <= 1 || g >= dhPrime - 1n) {\n throw new MtSecurityError('g is not within (1, dh_prime - 1)')\n }\n if (gA <= 1 || gA >= dhPrime - 1n) {\n throw new MtSecurityError('g_a is not within (1, dh_prime - 1)')\n }\n if (gB <= 1 || gB >= dhPrime - 1n) {\n throw new MtSecurityError('g_b is not within (1, dh_prime - 1)')\n }\n\n if (gA <= DH_SAFETY_RANGE || gA >= dhPrime - DH_SAFETY_RANGE) {\n throw new MtSecurityError('g_a is not within (2^{2048-64}, dh_prime - 2^{2048-64})')\n }\n if (gB <= DH_SAFETY_RANGE || gB >= dhPrime - DH_SAFETY_RANGE) {\n throw new MtSecurityError('g_b is not within (2^{2048-64}, dh_prime - 2^{2048-64})')\n }\n\n const gB_ = bigIntToBuffer(gB, 0, false)\n\n // Step 4: send client DH\n const clientDhInner: mtp.RawMt_client_DH_inner_data = {\n _: 'mt_client_DH_inner_data',\n nonce,\n serverNonce: resPq.serverNonce,\n retryId,\n gB: gB_,\n }\n let innerLength = TlSerializationCounter.countNeededBytes(writerMap, clientDhInner) + 20 // for hash\n const innerPaddingLength = innerLength % 16\n if (innerPaddingLength > 0) innerLength += 16 - innerPaddingLength\n\n const clientDhInnerWriter = TlBinaryWriter.alloc(writerMap, innerLength)\n clientDhInnerWriter.pos = 20\n clientDhInnerWriter.object(clientDhInner)\n const clientDhInnerHash = crypto.sha1(clientDhInnerWriter.uint8View.subarray(20, clientDhInnerWriter.pos))\n clientDhInnerWriter.pos = 0\n clientDhInnerWriter.raw(clientDhInnerHash)\n\n log.debug('sending client DH (timeOffset = %d)', timeOffset)\n\n const clientDhEncrypted = ige.encrypt(clientDhInnerWriter.uint8View)\n await sendPlainMessage({\n _: 'mt_set_client_DH_params',\n nonce,\n serverNonce: resPq.serverNonce,\n encryptedData: clientDhEncrypted,\n })\n\n const dhGen = await readNext()\n\n if (!mtp.isAnySet_client_DH_params_answer(dhGen)) {\n throw new MtTypeAssertionError('auth step 4', 'set_client_DH_params_answer', dhGen._)\n }\n\n if (!buffersEqual(dhGen.nonce, nonce)) {\n throw new MtSecurityError('Step 4: invalid nonce from server')\n }\n if (!buffersEqual(dhGen.serverNonce, resPq.serverNonce)) {\n throw new MtSecurityError('Step 4: invalid server nonce from server')\n }\n\n log.debug('DH result: %s', dhGen._)\n\n if (dhGen._ === 'mt_dh_gen_fail') {\n // in theory i would be supposed to calculate newNonceHash, but why, we are failing anyway\n throw new MtTypeAssertionError('auth step 4', '!mt_dh_gen_fail', dhGen._)\n }\n\n if (dhGen._ === 'mt_dh_gen_retry') {\n const expectedHash = crypto.sha1(concatBuffers([newNonce, new Uint8Array([2]), authKeyAuxHash]))\n\n if (!buffersEqual(expectedHash.subarray(4, 20), dhGen.newNonceHash2)) {\n throw new MtSecurityError('Step 4: invalid retry nonce hash from server')\n }\n retryId = Long.fromBytesLE(authKeyAuxHash as unknown as number[])\n continue\n }\n\n if (dhGen._ !== 'mt_dh_gen_ok') throw new Error() // unreachable\n\n const expectedHash = crypto.sha1(concatBuffers([newNonce, new Uint8Array([1]), authKeyAuxHash]))\n\n if (!buffersEqual(expectedHash.subarray(4, 20), dhGen.newNonceHash1)) {\n throw new MtSecurityError('Step 4: invalid nonce hash from server')\n }\n\n log.info('authorization successful')\n\n const dv = dataViewFromBuffer(serverSalt)\n\n return [authKey, new Long(dv.getInt32(0, true), dv.getInt32(4, true)), timeOffset]\n }\n}\n"]}
|
package/cjs/network/client.d.ts
CHANGED
package/cjs/network/client.js
CHANGED
|
@@ -19,22 +19,36 @@ const network_manager_js_1 = require("./network-manager.js");
|
|
|
19
19
|
* some APIs to manage that.
|
|
20
20
|
*/
|
|
21
21
|
class MtClient extends events_1.default {
|
|
22
|
+
params;
|
|
23
|
+
/**
|
|
24
|
+
* Crypto provider taken from {@link MtClientOptions.crypto}
|
|
25
|
+
*/
|
|
26
|
+
crypto;
|
|
27
|
+
/** Storage manager */
|
|
28
|
+
storage;
|
|
29
|
+
/**
|
|
30
|
+
* "Test mode" taken from {@link MtClientOptions.testMode}
|
|
31
|
+
*/
|
|
32
|
+
_testMode;
|
|
33
|
+
/**
|
|
34
|
+
* Primary DCs taken from {@link MtClientOptions.defaultDcs},
|
|
35
|
+
* loaded from session or changed by other means (like redirecting).
|
|
36
|
+
*/
|
|
37
|
+
_defaultDcs;
|
|
38
|
+
_niceStacks;
|
|
39
|
+
/** TL layer used by the client */
|
|
40
|
+
_layer;
|
|
41
|
+
/** TL readers map used by the client */
|
|
42
|
+
_readerMap;
|
|
43
|
+
/** TL writers map used by the client */
|
|
44
|
+
_writerMap;
|
|
45
|
+
_config = new config_manager_js_1.ConfigManager(() => this.call({ _: 'help.getConfig' }));
|
|
46
|
+
emitError = console.error.bind(console);
|
|
47
|
+
log;
|
|
48
|
+
network;
|
|
22
49
|
constructor(params) {
|
|
23
50
|
super();
|
|
24
51
|
this.params = params;
|
|
25
|
-
this._config = new config_manager_js_1.ConfigManager(() => this.call({ _: 'help.getConfig' }));
|
|
26
|
-
this.emitError = console.error.bind(console);
|
|
27
|
-
this._prepare = (0, index_js_1.asyncResettable)(async () => {
|
|
28
|
-
await this.crypto.initialize?.();
|
|
29
|
-
await this.storage.load();
|
|
30
|
-
const primaryDc = await this.storage.dcs.fetch();
|
|
31
|
-
if (primaryDc !== null)
|
|
32
|
-
this._defaultDcs = primaryDc;
|
|
33
|
-
});
|
|
34
|
-
this._connect = (0, index_js_1.asyncResettable)(async () => {
|
|
35
|
-
await this._prepare.run();
|
|
36
|
-
await this.network.connect(this._defaultDcs);
|
|
37
|
-
});
|
|
38
52
|
this.log = params.logger ?? new index_js_1.LogManager();
|
|
39
53
|
if (params.logLevel !== undefined) {
|
|
40
54
|
this.log.mgr.level = params.logLevel;
|
|
@@ -88,6 +102,13 @@ class MtClient extends events_1.default {
|
|
|
88
102
|
...params.network,
|
|
89
103
|
}, this._config);
|
|
90
104
|
}
|
|
105
|
+
_prepare = (0, index_js_1.asyncResettable)(async () => {
|
|
106
|
+
await this.crypto.initialize?.();
|
|
107
|
+
await this.storage.load();
|
|
108
|
+
const primaryDc = await this.storage.dcs.fetch();
|
|
109
|
+
if (primaryDc !== null)
|
|
110
|
+
this._defaultDcs = primaryDc;
|
|
111
|
+
});
|
|
91
112
|
/**
|
|
92
113
|
* **ADVANCED**
|
|
93
114
|
*
|
|
@@ -100,6 +121,10 @@ class MtClient extends events_1.default {
|
|
|
100
121
|
prepare() {
|
|
101
122
|
return this._prepare.run();
|
|
102
123
|
}
|
|
124
|
+
_connect = (0, index_js_1.asyncResettable)(async () => {
|
|
125
|
+
await this._prepare.run();
|
|
126
|
+
await this.network.connect(this._defaultDcs);
|
|
127
|
+
});
|
|
103
128
|
/**
|
|
104
129
|
* Initialize the connection to the primary DC.
|
|
105
130
|
*
|
|
@@ -114,7 +139,7 @@ class MtClient extends events_1.default {
|
|
|
114
139
|
*/
|
|
115
140
|
async close() {
|
|
116
141
|
this._config.destroy();
|
|
117
|
-
this.network.destroy();
|
|
142
|
+
await this.network.destroy();
|
|
118
143
|
await this.storage.save();
|
|
119
144
|
await this.storage.destroy?.();
|
|
120
145
|
this._prepare.reset();
|