@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":"download-iterable.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/download-iterable.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { ConnectionKind } from '../../../network/network-manager.js'\nimport { getPlatform } from '../../../platform.js'\nimport { MtArgumentError, MtUnsupportedError } from '../../../types/errors.js'\nimport { ConditionVariable } from '../../../utils/condition-variable.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { FileDownloadLocation, FileDownloadParameters, FileLocation } from '../../types/index.js'\nimport { fileIdToInputFileLocation, fileIdToInputWebFileLocation } from '../../utils/convert-file-id.js'\nimport { determinePartSize } from '../../utils/file-utils.js'\n\n// small files (less than 128 kb) are downloaded using the \"downloadSmall\" pool\n// furthermore, if the file is small and is located on our main DC, it will be downloaded\n// using the current main connection\nconst SMALL_FILE_MAX_SIZE = 131072\nconst REQUESTS_PER_CONNECTION = 3 // some arbitrary magic value that seems to work best\n\n/**\n * Download a file and return it as an iterable, which yields file contents\n * in chunks of a given size. Order of the chunks is guaranteed to be\n * consecutive.\n *\n * @param params Download parameters\n */\nexport async function* downloadAsIterable(\n client: ITelegramClient,\n input: FileDownloadLocation,\n params?: FileDownloadParameters,\n): AsyncIterableIterator<Uint8Array> {\n const offset = params?.offset ?? 0\n\n if (offset % 4096 !== 0) {\n throw new MtArgumentError(`Invalid offset: ${offset}. Must be divisible by 4096`)\n }\n\n let dcId = params?.dcId\n let fileSize = params?.fileSize\n\n const abortSignal = params?.abortSignal\n let aborted = false\n\n let location: tl.TypeInputFileLocation | tl.TypeInputWebFileLocation\n if (input instanceof FileLocation) {\n let locationInner = input.location\n\n if (typeof locationInner === 'function') {\n locationInner = locationInner()\n }\n\n if (ArrayBuffer.isView(locationInner)) {\n yield locationInner\n\n return\n }\n if (!dcId) dcId = input.dcId\n if (!fileSize) fileSize = input.fileSize\n location = locationInner\n } else if (typeof input === 'string') {\n const parsed = parseFileId(getPlatform(), input)\n\n if (parsed.location._ === 'web') {\n location = fileIdToInputWebFileLocation(parsed)\n } else {\n location = fileIdToInputFileLocation(parsed)\n }\n } else location = input\n\n const isWeb = tl.isAnyInputWebFileLocation(location)\n\n // we will receive a FileMigrateError in case this is invalid\n const primaryDcId = await client.getPrimaryDcId()\n if (!dcId) dcId = primaryDcId\n\n const partSizeKb = params?.partSize ?? (fileSize ? determinePartSize(fileSize) : 64)\n\n if (partSizeKb % 4 !== 0) {\n throw new MtArgumentError(`Invalid part size: ${partSizeKb}. Must be divisible by 4.`)\n }\n\n const chunkSize = partSizeKb * 1024\n\n let limitBytes = params?.limit ?? fileSize ?? Infinity\n if (limitBytes === 0) return\n\n let numChunks = limitBytes === Infinity ? Infinity : ~~((limitBytes + chunkSize - offset - 1) / chunkSize)\n\n let nextChunkIdx = 0\n let nextWorkerChunkIdx = 0\n const nextChunkCv = new ConditionVariable()\n const buffer: Record<number, Uint8Array> = {}\n\n const isSmall = fileSize && fileSize <= SMALL_FILE_MAX_SIZE\n let connectionKind: ConnectionKind\n\n if (isSmall) {\n connectionKind = dcId === primaryDcId ? 'main' : 'downloadSmall'\n } else {\n connectionKind = 'download'\n }\n const poolSize = await client.getPoolSize(connectionKind, dcId)\n\n client.log.debug(\n 'Downloading file of size %d from dc %d using %s connection pool (pool size: %d)',\n limitBytes,\n dcId,\n connectionKind,\n poolSize,\n )\n\n const downloadChunk = async (chunk = nextWorkerChunkIdx++): Promise<void> => {\n let result: tl.RpcCallReturn['upload.getFile'] | tl.RpcCallReturn['upload.getWebFile']\n\n if (aborted) {\n return\n }\n\n try {\n result = await client.call(\n {\n _: isWeb ? 'upload.getWebFile' : 'upload.getFile',\n // eslint-disable-next-line\n location: location as any,\n offset: chunkSize * chunk,\n limit: chunkSize,\n },\n {\n dcId,\n kind: connectionKind,\n maxRetryCount: Infinity, // retry until explicitly aborted (or finished)\n abortSignal,\n },\n )\n } catch (e: unknown) {\n if (e instanceof DOMException && e.name === 'AbortError') return\n if (!tl.RpcError.is(e)) throw e\n\n if (e.is('FILE_MIGRATE_%d')) {\n dcId = e.newDc\n\n return downloadChunk(chunk)\n } else if (e.is('FILEREF_UPGRADE_NEEDED')) {\n // todo: implement someday\n // see: https://github.com/LonamiWebs/Telethon/blob/0e8bd8248cc649637b7c392616887c50986427a0/telethon/client/downloads.py#L99\n throw new MtUnsupportedError('File ref expired!')\n } else throw e\n }\n\n if (result._ === 'upload.fileCdnRedirect') {\n // we shouldnt receive them since cdnSupported is not set in the getFile request.\n // also, i couldnt find any media that would be downloaded from cdn, so even if\n // i implemented that, i wouldnt be able to test that, so :shrug:\n throw new MtUnsupportedError('Received CDN redirect, which is not supported (yet)')\n }\n\n if (aborted) {\n return\n }\n\n if (result._ === 'upload.webFile' && result.size && limitBytes === Infinity) {\n limitBytes = result.size\n numChunks = ~~((limitBytes + chunkSize - offset - 1) / chunkSize)\n }\n\n buffer[chunk] = result.bytes\n\n if (chunk === nextChunkIdx) {\n nextChunkCv.notify()\n }\n\n if (nextWorkerChunkIdx < numChunks && result.bytes.length === chunkSize) {\n return downloadChunk()\n }\n }\n\n let error: unknown = undefined\n void Promise.all(Array.from({ length: Math.min(poolSize * REQUESTS_PER_CONNECTION, numChunks) }, downloadChunk))\n .catch((e) => {\n client.log.debug('download workers errored: %s', e.message)\n error = e\n aborted = true // not really aborted, but we dont want to download more chunks\n nextChunkCv.notify()\n })\n .then(() => {\n client.log.debug('download workers finished')\n })\n\n // to avoid MaxListenersExceededWarning we do this instead\n // already sent requests can go to hell (they will get ignored)\n abortSignal?.addEventListener('abort', () => {\n client.log.debug('download aborted')\n error = abortSignal.reason\n aborted = true\n nextChunkCv.notify()\n })\n\n let position = offset\n\n while (position < limitBytes) {\n await nextChunkCv.wait()\n\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n if (error) throw error\n\n while (nextChunkIdx in buffer) {\n const buf = buffer[nextChunkIdx]\n delete buffer[nextChunkIdx]\n\n position += buf.length\n\n params?.progressCallback?.(position, limitBytes)\n\n yield buf\n\n nextChunkIdx++\n\n if (buf.length < chunkSize) {\n // we received the last chunk\n return\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"download-iterable.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/download-iterable.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { ConnectionKind } from '../../../network/network-manager.js'\nimport { getPlatform } from '../../../platform.js'\nimport { MtArgumentError, MtUnsupportedError } from '../../../types/errors.js'\nimport { ConditionVariable } from '../../../utils/condition-variable.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { FileDownloadLocation, FileDownloadParameters, FileLocation } from '../../types/index.js'\nimport { fileIdToInputFileLocation, fileIdToInputWebFileLocation } from '../../utils/convert-file-id.js'\nimport { determinePartSize } from '../../utils/file-utils.js'\n\n// small files (less than 128 kb) are downloaded using the \"downloadSmall\" pool\n// furthermore, if the file is small and is located on our main DC, it will be downloaded\n// using the current main connection\nconst SMALL_FILE_MAX_SIZE = 131072\nconst REQUESTS_PER_CONNECTION = 3 // some arbitrary magic value that seems to work best\n\n/**\n * Download a file and return it as an iterable, which yields file contents\n * in chunks of a given size. Order of the chunks is guaranteed to be\n * consecutive.\n *\n * @param params Download parameters\n */\nexport async function* downloadAsIterable(\n client: ITelegramClient,\n input: FileDownloadLocation,\n params?: FileDownloadParameters,\n): AsyncIterableIterator<Uint8Array> {\n const offset = params?.offset ?? 0\n\n if (offset % 4096 !== 0) {\n throw new MtArgumentError(`Invalid offset: ${offset}. Must be divisible by 4096`)\n }\n\n let dcId = params?.dcId\n let fileSize = params?.fileSize\n\n const abortSignal = params?.abortSignal\n let aborted = false\n\n let location: tl.TypeInputFileLocation | tl.TypeInputWebFileLocation\n if (input instanceof FileLocation) {\n let locationInner = input.location\n\n if (typeof locationInner === 'function') {\n locationInner = locationInner()\n }\n\n if (ArrayBuffer.isView(locationInner)) {\n yield locationInner\n\n return\n }\n if (!dcId) dcId = input.dcId\n if (!fileSize) fileSize = input.fileSize\n location = locationInner\n } else if (typeof input === 'string') {\n const parsed = parseFileId(getPlatform(), input)\n\n if (parsed.location._ === 'web') {\n location = fileIdToInputWebFileLocation(parsed)\n } else {\n location = fileIdToInputFileLocation(parsed)\n }\n } else location = input\n\n const isWeb = tl.isAnyInputWebFileLocation(location)\n\n // we will receive a FileMigrateError in case this is invalid\n const primaryDcId = await client.getPrimaryDcId()\n if (!dcId) dcId = primaryDcId\n\n const partSizeKb = params?.partSize ?? (fileSize ? determinePartSize(fileSize) : 64)\n\n if (partSizeKb % 4 !== 0) {\n throw new MtArgumentError(`Invalid part size: ${partSizeKb}. Must be divisible by 4.`)\n }\n\n const chunkSize = partSizeKb * 1024\n\n let limitBytes = params?.limit ?? fileSize ?? Infinity\n if (limitBytes === 0) return\n\n let numChunks = limitBytes === Infinity ? Infinity : ~~((limitBytes + chunkSize - offset - 1) / chunkSize)\n\n let nextChunkIdx = 0\n let nextWorkerChunkIdx = 0\n const nextChunkCv = new ConditionVariable()\n const buffer: Record<number, Uint8Array> = {}\n\n const isSmall = fileSize && fileSize <= SMALL_FILE_MAX_SIZE\n let connectionKind: ConnectionKind\n\n if (isSmall) {\n connectionKind = dcId === primaryDcId ? 'main' : 'downloadSmall'\n } else {\n connectionKind = 'download'\n }\n const poolSize = await client.getPoolSize(connectionKind, dcId)\n\n client.log.debug(\n 'Downloading file of size %d from dc %d using %s connection pool (pool size: %d)',\n limitBytes,\n dcId,\n connectionKind,\n poolSize,\n )\n\n const downloadChunk = async (chunk = nextWorkerChunkIdx++): Promise<void> => {\n let result: tl.RpcCallReturn['upload.getFile'] | tl.RpcCallReturn['upload.getWebFile']\n\n if (aborted) {\n return\n }\n\n try {\n result = await client.call(\n {\n _: isWeb ? 'upload.getWebFile' : 'upload.getFile',\n // eslint-disable-next-line\n location: location as any,\n offset: chunkSize * chunk,\n limit: chunkSize,\n },\n {\n dcId,\n kind: connectionKind,\n maxRetryCount: Infinity, // retry until explicitly aborted (or finished)\n abortSignal,\n },\n )\n } catch (e: unknown) {\n if (e instanceof DOMException && e.name === 'AbortError') return\n if (!tl.RpcError.is(e)) throw e\n\n if (e.is('FILE_MIGRATE_%d')) {\n dcId = e.newDc\n\n return downloadChunk(chunk)\n } else if (e.is('FILEREF_UPGRADE_NEEDED')) {\n // todo: implement someday\n // see: https://github.com/LonamiWebs/Telethon/blob/0e8bd8248cc649637b7c392616887c50986427a0/telethon/client/downloads.py#L99\n throw new MtUnsupportedError('File ref expired!')\n } else throw e\n }\n\n if (result._ === 'upload.fileCdnRedirect') {\n // we shouldnt receive them since cdnSupported is not set in the getFile request.\n // also, i couldnt find any media that would be downloaded from cdn, so even if\n // i implemented that, i wouldnt be able to test that, so :shrug:\n throw new MtUnsupportedError('Received CDN redirect, which is not supported (yet)')\n }\n\n if (aborted) {\n return\n }\n\n if (result._ === 'upload.webFile' && result.size && limitBytes === Infinity) {\n limitBytes = result.size\n numChunks = ~~((limitBytes + chunkSize - offset - 1) / chunkSize)\n }\n\n buffer[chunk] = result.bytes\n\n if (chunk === nextChunkIdx) {\n nextChunkCv.notify()\n }\n\n if (nextWorkerChunkIdx < numChunks && result.bytes.length === chunkSize) {\n return downloadChunk()\n }\n }\n\n let error: unknown = undefined\n void Promise.all(Array.from({ length: Math.min(poolSize * REQUESTS_PER_CONNECTION, numChunks) }, downloadChunk))\n .catch((e) => {\n client.log.debug('download workers errored: %s', e.message)\n error = e\n aborted = true // not really aborted, but we dont want to download more chunks\n nextChunkCv.notify()\n })\n .then(() => {\n client.log.debug('download workers finished')\n })\n\n // to avoid MaxListenersExceededWarning we do this instead\n // already sent requests can go to hell (they will get ignored)\n abortSignal?.addEventListener('abort', () => {\n client.log.debug('download aborted')\n error = abortSignal.reason\n aborted = true\n nextChunkCv.notify()\n })\n\n let position = offset\n\n while (position < limitBytes) {\n await nextChunkCv.wait()\n\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n if (error) throw error\n\n while (nextChunkIdx in buffer) {\n const buf = buffer[nextChunkIdx]\n delete buffer[nextChunkIdx]\n\n position += buf.length\n\n params?.progressCallback?.(position, limitBytes)\n\n yield buf\n\n nextChunkIdx++\n\n if (buf.length < chunkSize) {\n // we received the last chunk\n return\n }\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-node-stream.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/download-node-stream.ts"],"names":[],"mappings":";AAAA,sDAAsD","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { ITelegramClient } from '../../client.types.js'\nimport { FileDownloadLocation, FileDownloadParameters } from '../../types/index.js'\n\n// @available=both\n/**\n * Download a remote file as a Node.js Readable stream.\n *\n * @param params File download parameters\n */\ndeclare function downloadAsNodeStream(\n client: ITelegramClient,\n location: FileDownloadLocation,\n params?: FileDownloadParameters,\n): import('stream').Readable\n"]}
|
|
1
|
+
{"version":3,"file":"download-node-stream.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/download-node-stream.ts"],"names":[],"mappings":";AAAA,sDAAsD","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport { ITelegramClient } from '../../client.types.js'\nimport { FileDownloadLocation, FileDownloadParameters } from '../../types/index.js'\n\n// @available=both\n/**\n * Download a remote file as a Node.js Readable stream.\n *\n * @param params File download parameters\n */\ndeclare function downloadAsNodeStream(\n client: ITelegramClient,\n location: FileDownloadLocation,\n params?: FileDownloadParameters,\n): import('node:stream').Readable\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-stream.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/download-stream.ts"],"names":[],"mappings":";;;AACA,mDAAiG;AACjG,iEAA4D;AAC5D,iEAA2D;AAE3D;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC5B,MAAuB,EACvB,QAA8B,EAC9B,MAA+B;IAE/B,IAAI,QAAQ,YAAY,uBAAY,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"download-stream.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/download-stream.ts"],"names":[],"mappings":";;;AACA,mDAAiG;AACjG,iEAA4D;AAC5D,iEAA2D;AAE3D;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC5B,MAAuB,EACvB,QAA8B,EAC9B,MAA+B;IAE/B,IAAI,QAAQ,YAAY,uBAAY,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAA,gCAAc,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;IAEpC,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;QACtB,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,KAAK,EAAE,CAAA;QAClB,CAAC,CAAC,CAAA;IACN,CAAC;IAED,OAAO,IAAI,cAAc,CAAa;QAClC,KAAK,CAAC,UAAU;YACZ,CAAC,KAAK,IAAI,EAAE;gBACR,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAA,yCAAkB,EAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;oBACrE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBAC7B,CAAC;gBAED,UAAU,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1C,CAAC;QACD,MAAM;YACF,MAAM,CAAC,KAAK,EAAE,CAAA;QAClB,CAAC;KACJ,CAAC,CAAA;AACN,CAAC;AA/BD,4CA+BC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { FileDownloadLocation, FileDownloadParameters, FileLocation } from '../../types/index.js'\nimport { bufferToStream } from '../../utils/stream-utils.js'\nimport { downloadAsIterable } from './download-iterable.js'\n\n/**\n * Download a file and return it as a readable stream,\n * streaming file contents.\n *\n * @param params File download parameters\n */\nexport function downloadAsStream(\n client: ITelegramClient,\n location: FileDownloadLocation,\n params?: FileDownloadParameters,\n): ReadableStream<Uint8Array> {\n if (location instanceof FileLocation && ArrayBuffer.isView(location.location)) {\n return bufferToStream(location.location)\n }\n\n const cancel = new AbortController()\n\n if (params?.abortSignal) {\n params?.abortSignal.addEventListener('abort', () => {\n cancel.abort()\n })\n }\n\n return new ReadableStream<Uint8Array>({\n start(controller) {\n (async () => {\n for await (const chunk of downloadAsIterable(client, location, params)) {\n controller.enqueue(chunk)\n }\n\n controller.close()\n })().catch((e) => controller.error(e))\n },\n cancel() {\n cancel.abort()\n },\n })\n}\n"]}
|
|
@@ -1 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { tl } from '@mtcute/tl';
|
|
2
|
+
import { ITelegramClient } from '../../client.types.js';
|
|
3
|
+
import { InputFileLike } from '../../types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export declare function _normalizeFileToDocument(client: ITelegramClient, file: InputFileLike | tl.TypeInputDocument, params: {
|
|
8
|
+
progressCallback?: (uploaded: number, total: number) => void;
|
|
9
|
+
}): Promise<tl.TypeInputDocument>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-file-to-document.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-file-to-document.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAE/B,0EAAgE;AAGhE,yEAAiE;AAEjE;;GAEG;AACI,KAAK,UAAU,wBAAwB,CAC1C,MAAuB,EACvB,IAA0C,EAC1C,MAEC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"normalize-file-to-document.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-file-to-document.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAE/B,0EAAgE;AAGhE,yEAAiE;AAEjE;;GAEG;AACI,KAAK,UAAU,wBAAwB,CAC1C,MAAuB,EACvB,IAA0C,EAC1C,MAEC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAA;IACf,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,+CAAoB,EACpC,MAAM,EACN;QACI,IAAI,EAAE,UAAU;QAChB,IAAI;KACP,EACD,MAAM,EACN,IAAI,CACP,CAAA;IAED,IAAA,iCAAY,EAAC,0BAA0B,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAA;IACrE,IAAA,iCAAY,EAAC,0BAA0B,EAAE,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,CAAA;IAEnE,OAAO,KAAK,CAAC,EAAE,CAAA;AACnB,CAAC;AAzBD,4DAyBC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputFileLike } from '../../types/index.js'\nimport { _normalizeInputMedia } from './normalize-input-media.js'\n\n/**\n * @internal\n */\nexport async function _normalizeFileToDocument(\n client: ITelegramClient,\n file: InputFileLike | tl.TypeInputDocument,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n },\n): Promise<tl.TypeInputDocument> {\n if (typeof file === 'object' && tl.isAnyInputDocument(file)) {\n return file\n }\n\n const media = await _normalizeInputMedia(\n client,\n {\n type: 'document',\n file,\n },\n params,\n true,\n )\n\n assertTypeIs('_normalizeFileToDocument', media, 'inputMediaDocument')\n assertTypeIs('_normalizeFileToDocument', media.id, 'inputDocument')\n\n return media.id\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-input-file.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-input-file.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAC1C,mCAA+B;AAE/B,wDAA0D;AAE1D,yDAA0E;AAC1E,qDAA6C;AAE7C;;;GAGG;AACI,KAAK,UAAU,mBAAmB,CACrC,MAAuB,EACvB,KAAoB,EACpB,MAKC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"normalize-input-file.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-input-file.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAC1C,mCAA+B;AAE/B,wDAA0D;AAE1D,yDAA0E;AAC1E,qDAA6C;AAE7C;;;GAGG;AACI,KAAK,UAAU,mBAAmB,CACrC,MAAuB,EACvB,KAAoB,EACpB,MAKC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,2BAAe,CAAC,+CAA+C,CAAC,CAAA;IAC9E,CAAC;SAAM,IAAI,kBAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAU,EAAC,MAAM,EAAE;gBACtC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxB,GAAG,MAAM;aACZ,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAC,SAAS,CAAA;QAC7B,CAAC;QACD,MAAM,IAAI,2BAAe,CAAC,qDAAqD,CAAC,CAAA;IACpF,CAAC;SAAM,IAAI,IAAA,yBAAc,EAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,SAAS,CAAA;IAC1B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAA;IAChB,CAAC;SAAM,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAU,EAAC,MAAM,EAAE;YACtC,IAAI,EAAE,KAAK;YACX,GAAG,MAAM;SACZ,CAAC,CAAA;QAEF,OAAO,QAAQ,CAAC,SAAS,CAAA;IAC7B,CAAC;AACL,CAAC;AAlCD,kDAkCC","sourcesContent":["import { tdFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../../../types/errors.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputFileLike, isUploadedFile } from '../../types/files/index.js'\nimport { uploadFile } from './upload-file.js'\n\n/**\n * Normalize a {@link InputFileLike} to `InputFile`,\n * uploading it if needed.\n */\nexport async function _normalizeInputFile(\n client: ITelegramClient,\n input: InputFileLike,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n fileName?: string\n fileSize?: number\n fileMime?: string\n },\n): Promise<tl.TypeInputFile> {\n if (typeof input === 'object' && tl.isAnyInputMedia(input)) {\n throw new MtArgumentError(\"InputFile can't be created from an InputMedia\")\n } else if (tdFileId.isFileIdLike(input)) {\n if (typeof input === 'string' && input.match(/^file:/)) {\n const uploaded = await uploadFile(client, {\n file: input.substring(5),\n ...params,\n })\n\n return uploaded.inputFile\n }\n throw new MtArgumentError(\"InputFile can't be created from an URL or a File ID\")\n } else if (isUploadedFile(input)) {\n return input.inputFile\n } else if (typeof input === 'object' && tl.isAnyInputFile(input)) {\n return input\n } else {\n const uploaded = await uploadFile(client, {\n file: input,\n ...params,\n })\n\n return uploaded.inputFile\n }\n}\n"]}
|
|
@@ -8,4 +8,5 @@ import { InputMediaLike } from '../../types/media/input-media/types.js';
|
|
|
8
8
|
export declare function _normalizeInputMedia(client: ITelegramClient, media: InputMediaLike, params?: {
|
|
9
9
|
progressCallback?: (uploaded: number, total: number) => void;
|
|
10
10
|
uploadPeer?: tl.TypeInputPeer;
|
|
11
|
+
businessConnectionId?: string;
|
|
11
12
|
}, uploadMedia?: boolean): Promise<tl.TypeInputMedia>;
|
|
@@ -10,8 +10,8 @@ const tl_1 = require("@mtcute/tl");
|
|
|
10
10
|
const platform_js_1 = require("../../../platform.js");
|
|
11
11
|
const type_assertions_js_1 = require("../../../utils/type-assertions.js");
|
|
12
12
|
const uploaded_file_js_1 = require("../../types/files/uploaded-file.js");
|
|
13
|
+
const entities_js_1 = require("../../types/misc/entities.js");
|
|
13
14
|
const convert_file_id_js_1 = require("../../utils/convert-file-id.js");
|
|
14
|
-
const file_utils_js_1 = require("../../utils/file-utils.js");
|
|
15
15
|
const misc_utils_js_1 = require("../../utils/misc-utils.js");
|
|
16
16
|
const voice_utils_js_1 = require("../../utils/voice-utils.js");
|
|
17
17
|
const normalize_text_js_1 = require("../misc/normalize-text.js");
|
|
@@ -131,15 +131,14 @@ async function _normalizeInputMedia(client, media, params = {}, uploadMedia = fa
|
|
|
131
131
|
}
|
|
132
132
|
if (media.type === 'poll' || media.type === 'quiz') {
|
|
133
133
|
const answers = media.answers.map((ans, idx) => {
|
|
134
|
-
if (typeof ans === '
|
|
135
|
-
return
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
142
|
-
return ans;
|
|
134
|
+
if (typeof ans === 'object' && tl_1.tl.isAnyPollAnswer(ans))
|
|
135
|
+
return ans;
|
|
136
|
+
return {
|
|
137
|
+
_: 'pollAnswer',
|
|
138
|
+
text: (0, entities_js_1.inputTextToTl)(ans),
|
|
139
|
+
// emulate the behaviour of most implementations
|
|
140
|
+
option: new Uint8Array([48 /* '0' */ + idx]),
|
|
141
|
+
};
|
|
143
142
|
});
|
|
144
143
|
let correct = undefined;
|
|
145
144
|
let solution = undefined;
|
|
@@ -167,7 +166,7 @@ async function _normalizeInputMedia(client, media, params = {}, uploadMedia = fa
|
|
|
167
166
|
publicVoters: media.public,
|
|
168
167
|
multipleChoice: media.multiple,
|
|
169
168
|
quiz: media.type === 'quiz',
|
|
170
|
-
question: media.question,
|
|
169
|
+
question: (0, entities_js_1.inputTextToTl)(media.question),
|
|
171
170
|
answers,
|
|
172
171
|
closePeriod: media.closePeriod,
|
|
173
172
|
closeDate: (0, misc_utils_js_1.normalizeDate)(media.closeDate),
|
|
@@ -223,6 +222,7 @@ async function _normalizeInputMedia(client, media, params = {}, uploadMedia = fa
|
|
|
223
222
|
_: 'messages.uploadMedia',
|
|
224
223
|
peer: uploadPeer,
|
|
225
224
|
media: inputMedia,
|
|
225
|
+
businessConnectionId: params.businessConnectionId,
|
|
226
226
|
});
|
|
227
227
|
if (photo) {
|
|
228
228
|
(0, type_assertions_js_1.assertTypeIs)('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaPhoto');
|
|
@@ -316,7 +316,7 @@ async function _normalizeInputMedia(client, media, params = {}, uploadMedia = fa
|
|
|
316
316
|
if (media.type !== 'voice') {
|
|
317
317
|
attributes.push({
|
|
318
318
|
_: 'documentAttributeFilename',
|
|
319
|
-
fileName: media.fileName ||
|
|
319
|
+
fileName: media.fileName || inputFile.name,
|
|
320
320
|
});
|
|
321
321
|
}
|
|
322
322
|
if (media.type === 'video') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-input-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-input-media.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { parseFileId, tdFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../../platform.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { isUploadedFile } from '../../types/files/uploaded-file.js'\nimport { UploadFileLike } from '../../types/files/utils.js'\nimport { InputMediaLike } from '../../types/media/input-media/types.js'\nimport { fileIdToInputDocument, fileIdToInputPhoto } from '../../utils/convert-file-id.js'\nimport { extractFileName } from '../../utils/file-utils.js'\nimport { normalizeDate } from '../../utils/misc-utils.js'\nimport { encodeWaveform } from '../../utils/voice-utils.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _normalizeInputFile } from './normalize-input-file.js'\nimport { uploadFile } from './upload-file.js'\n\n/**\n * Normalize an {@link InputMediaLike} to `InputMedia`,\n * uploading the file if needed.\n */\nexport async function _normalizeInputMedia(\n client: ITelegramClient,\n media: InputMediaLike,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n uploadPeer?: tl.TypeInputPeer\n } = {},\n uploadMedia = false,\n): Promise<tl.TypeInputMedia> {\n // my condolences to those poor souls who are going to maintain this (myself included)\n\n // thanks to @pacificescape for pointing out messages.uploadMedia method\n\n if (tl.isAnyInputMedia(media)) {\n // make sure the peers in the media are correctly resolved (i.e. mtcute.* ones are replaced with proper ones)\n switch (media._) {\n case 'inputMediaStory':\n return {\n ...media,\n peer: await resolvePeer(client, media.peer),\n }\n }\n\n return media\n }\n\n if (media.type === 'venue') {\n return {\n _: 'inputMediaVenue',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n title: media.title,\n address: media.address,\n provider: media.source?.provider ?? '',\n venueId: media.source?.id ?? '',\n venueType: media.source?.type ?? '',\n }\n }\n\n if (media.type === 'geo') {\n return {\n _: 'inputMediaGeoPoint',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n }\n }\n\n if (media.type === 'geo_live') {\n return {\n _: 'inputMediaGeoLive',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n stopped: media.stopped,\n heading: media.heading,\n period: media.period,\n proximityNotificationRadius: media.proximityNotificationRadius,\n }\n }\n\n if (media.type === 'dice') {\n return {\n _: 'inputMediaDice',\n emoticon: media.emoji,\n }\n }\n\n if (media.type === 'contact') {\n return {\n _: 'inputMediaContact',\n phoneNumber: media.phone,\n firstName: media.firstName,\n lastName: media.lastName ?? '',\n vcard: media.vcard ?? '',\n }\n }\n\n if (media.type === 'game') {\n return {\n _: 'inputMediaGame',\n id:\n typeof media.game === 'string' ?\n {\n _: 'inputGameShortName',\n botId: { _: 'inputUserSelf' },\n shortName: media.game,\n } :\n media.game,\n }\n }\n\n if (media.type === 'invoice') {\n return {\n _: 'inputMediaInvoice',\n title: media.title,\n description: media.description,\n photo:\n typeof media.photo === 'string' ?\n {\n _: 'inputWebDocument',\n url: media.photo,\n mimeType: 'image/jpeg',\n size: 0,\n attributes: [],\n } :\n media.photo,\n invoice: media.invoice,\n payload: media.payload,\n provider: media.token,\n providerData: {\n _: 'dataJSON',\n data: JSON.stringify(media.providerData),\n },\n startParam: media.startParam,\n extendedMedia: media.extendedMedia ?\n await _normalizeInputMedia(client, media.extendedMedia, params) :\n undefined,\n }\n }\n\n if (media.type === 'poll' || media.type === 'quiz') {\n const answers: tl.TypePollAnswer[] = media.answers.map((ans, idx) => {\n if (typeof ans === 'string') {\n return {\n _: 'pollAnswer',\n text: ans,\n // emulate the behaviour of most implementations\n option: new Uint8Array([48 /* '0' */ + idx]),\n }\n }\n\n return ans\n })\n\n let correct: Uint8Array[] | undefined = undefined\n let solution: string | undefined = undefined\n let solutionEntities: tl.TypeMessageEntity[] | undefined = undefined\n\n if (media.type === 'quiz') {\n let input = media.correct\n if (!Array.isArray(input)) input = [input]\n correct = input.map((it) => {\n if (typeof it === 'number') {\n return answers[it].option\n }\n\n return it\n })\n\n if (media.solution) {\n [solution, solutionEntities] = await _normalizeInputText(client, media.solution)\n }\n }\n\n return {\n _: 'inputMediaPoll',\n poll: {\n _: 'poll',\n closed: media.closed,\n id: Long.ZERO,\n publicVoters: media.public,\n multipleChoice: media.multiple,\n quiz: media.type === 'quiz',\n question: media.question,\n answers,\n closePeriod: media.closePeriod,\n closeDate: normalizeDate(media.closeDate),\n },\n correctAnswers: correct,\n solution,\n solutionEntities,\n }\n }\n\n if (media.type === 'story') {\n return {\n _: 'inputMediaStory',\n peer: await resolvePeer(client, media.peer),\n id: media.id,\n }\n }\n\n if (media.type === 'webpage') {\n return {\n _: 'inputMediaWebPage',\n forceLargeMedia: media.size === 'large',\n forceSmallMedia: media.size === 'small',\n optional: !media.required,\n url: media.url,\n }\n }\n\n let inputFile: tl.TypeInputFile | undefined = undefined\n let thumb: tl.TypeInputFile | undefined = undefined\n let mime = 'application/octet-stream'\n\n const upload = async (file: UploadFileLike): Promise<void> => {\n let sendMime\n\n if (media.type === 'sticker') {\n sendMime = media.isAnimated ? 'application/x-tgsticker' : 'image/webp'\n } else {\n sendMime = media.fileMime\n }\n\n const uploaded = await uploadFile(client, {\n file,\n progressCallback: params.progressCallback,\n fileName: media.fileName,\n fileMime: sendMime,\n fileSize: media.fileSize,\n requireFileSize: media.type === 'photo',\n })\n inputFile = uploaded.inputFile\n mime = uploaded.mime\n }\n\n const uploadPeer = params.uploadPeer ?? { _: 'inputPeerSelf' }\n\n const uploadMediaIfNeeded = async (inputMedia: tl.TypeInputMedia, photo: boolean): Promise<tl.TypeInputMedia> => {\n if (!uploadMedia) return inputMedia\n\n const res = await client.call({\n _: 'messages.uploadMedia',\n peer: uploadPeer,\n media: inputMedia,\n })\n\n if (photo) {\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaPhoto')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.photo!, 'photo')\n\n return {\n _: 'inputMediaPhoto',\n id: {\n _: 'inputPhoto',\n id: res.photo.id,\n accessHash: res.photo.accessHash,\n fileReference: res.photo.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaDocument')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.document!, 'document')\n\n return {\n _: 'inputMediaDocument',\n id: {\n _: 'inputDocument',\n id: res.document.id,\n accessHash: res.document.accessHash,\n fileReference: res.document.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n\n const input = media.file\n\n if (tdFileId.isFileIdLike(input)) {\n if (typeof input === 'string' && input.match(/^https?:\\/\\//)) {\n return uploadMediaIfNeeded(\n {\n _: media.type === 'photo' ? 'inputMediaPhotoExternal' : 'inputMediaDocumentExternal',\n url: input,\n },\n media.type === 'photo',\n )\n } else if (typeof input === 'string' && input.match(/^file:/)) {\n await upload(input.substring(5))\n } else {\n const parsed = typeof input === 'string' ? parseFileId(getPlatform(), input) : input\n\n if (parsed.location._ === 'photo') {\n return {\n _: 'inputMediaPhoto',\n id: fileIdToInputPhoto(parsed),\n }\n } else if (parsed.location._ === 'web') {\n return uploadMediaIfNeeded(\n {\n _:\n parsed.type === tdFileId.FileType.Photo ?\n 'inputMediaPhotoExternal' :\n 'inputMediaDocumentExternal',\n url: parsed.location.url,\n },\n parsed.type === tdFileId.FileType.Photo,\n )\n }\n\n return {\n _: 'inputMediaDocument',\n id: fileIdToInputDocument(parsed),\n }\n }\n } else if (typeof input === 'object' && tl.isAnyInputMedia(input)) {\n return input\n } else if (isUploadedFile(input)) {\n inputFile = input.inputFile\n mime = input.mime\n } else if (typeof input === 'object' && tl.isAnyInputFile(input)) {\n inputFile = input\n } else {\n await upload(input)\n }\n\n if (!inputFile) throw new Error('should not happen')\n\n if (media.type === 'photo') {\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedPhoto',\n file: inputFile,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.spoiler,\n },\n true,\n )\n }\n\n if ('thumb' in media && media.thumb) {\n thumb = await _normalizeInputFile(client, media.thumb, {})\n }\n\n const attributes: tl.TypeDocumentAttribute[] = []\n\n if (media.type !== 'voice') {\n attributes.push({\n _: 'documentAttributeFilename',\n fileName: media.fileName || (typeof media.file === 'string' ? extractFileName(media.file) : 'unnamed'),\n })\n }\n\n if (media.type === 'video') {\n attributes.push({\n _: 'documentAttributeVideo',\n duration: media.duration || 0,\n w: media.width || 0,\n h: media.height || 0,\n supportsStreaming: media.supportsStreaming,\n roundMessage: media.isRound,\n })\n\n if (media.isAnimated) {\n attributes.push({ _: 'documentAttributeAnimated' })\n }\n }\n\n if (media.type === 'audio' || media.type === 'voice') {\n attributes.push({\n _: 'documentAttributeAudio',\n voice: media.type === 'voice',\n duration: media.duration || 0,\n title: media.type === 'audio' ? media.title : undefined,\n performer: media.type === 'audio' ? media.performer : undefined,\n waveform: media.type === 'voice' && media.waveform ? encodeWaveform(media.waveform) : undefined,\n })\n }\n\n if (media.type === 'sticker') {\n attributes.push({\n _: 'documentAttributeSticker',\n stickerset: {\n _: 'inputStickerSetEmpty',\n },\n alt: media.alt ?? '',\n })\n }\n\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedDocument',\n nosoundVideo: media.type === 'video' && media.isAnimated,\n forceFile: media.type === 'document',\n file: inputFile,\n thumb,\n mimeType: mime,\n attributes,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n },\n false,\n )\n}\n"]}
|
|
1
|
+
{"version":3,"file":"normalize-input-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/normalize-input-media.ts"],"names":[],"mappings":"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","sourcesContent":["import Long from 'long'\n\nimport { parseFileId, tdFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../../platform.js'\nimport { assertTypeIs } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { isUploadedFile } from '../../types/files/uploaded-file.js'\nimport { UploadFileLike } from '../../types/files/utils.js'\nimport { InputMediaLike } from '../../types/media/input-media/types.js'\nimport { inputTextToTl } from '../../types/misc/entities.js'\nimport { fileIdToInputDocument, fileIdToInputPhoto } from '../../utils/convert-file-id.js'\nimport { normalizeDate } from '../../utils/misc-utils.js'\nimport { encodeWaveform } from '../../utils/voice-utils.js'\nimport { _normalizeInputText } from '../misc/normalize-text.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _normalizeInputFile } from './normalize-input-file.js'\nimport { uploadFile } from './upload-file.js'\n\n/**\n * Normalize an {@link InputMediaLike} to `InputMedia`,\n * uploading the file if needed.\n */\nexport async function _normalizeInputMedia(\n client: ITelegramClient,\n media: InputMediaLike,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n uploadPeer?: tl.TypeInputPeer\n businessConnectionId?: string\n } = {},\n uploadMedia = false,\n): Promise<tl.TypeInputMedia> {\n // my condolences to those poor souls who are going to maintain this (myself included)\n\n // thanks to @pacificescape for pointing out messages.uploadMedia method\n\n if (tl.isAnyInputMedia(media)) {\n // make sure the peers in the media are correctly resolved (i.e. mtcute.* ones are replaced with proper ones)\n switch (media._) {\n case 'inputMediaStory':\n return {\n ...media,\n peer: await resolvePeer(client, media.peer),\n }\n }\n\n return media\n }\n\n if (media.type === 'venue') {\n return {\n _: 'inputMediaVenue',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n title: media.title,\n address: media.address,\n provider: media.source?.provider ?? '',\n venueId: media.source?.id ?? '',\n venueType: media.source?.type ?? '',\n }\n }\n\n if (media.type === 'geo') {\n return {\n _: 'inputMediaGeoPoint',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n }\n }\n\n if (media.type === 'geo_live') {\n return {\n _: 'inputMediaGeoLive',\n geoPoint: {\n _: 'inputGeoPoint',\n lat: media.latitude,\n long: media.longitude,\n },\n stopped: media.stopped,\n heading: media.heading,\n period: media.period,\n proximityNotificationRadius: media.proximityNotificationRadius,\n }\n }\n\n if (media.type === 'dice') {\n return {\n _: 'inputMediaDice',\n emoticon: media.emoji,\n }\n }\n\n if (media.type === 'contact') {\n return {\n _: 'inputMediaContact',\n phoneNumber: media.phone,\n firstName: media.firstName,\n lastName: media.lastName ?? '',\n vcard: media.vcard ?? '',\n }\n }\n\n if (media.type === 'game') {\n return {\n _: 'inputMediaGame',\n id:\n typeof media.game === 'string' ?\n {\n _: 'inputGameShortName',\n botId: { _: 'inputUserSelf' },\n shortName: media.game,\n } :\n media.game,\n }\n }\n\n if (media.type === 'invoice') {\n return {\n _: 'inputMediaInvoice',\n title: media.title,\n description: media.description,\n photo:\n typeof media.photo === 'string' ?\n {\n _: 'inputWebDocument',\n url: media.photo,\n mimeType: 'image/jpeg',\n size: 0,\n attributes: [],\n } :\n media.photo,\n invoice: media.invoice,\n payload: media.payload,\n provider: media.token,\n providerData: {\n _: 'dataJSON',\n data: JSON.stringify(media.providerData),\n },\n startParam: media.startParam,\n extendedMedia: media.extendedMedia ?\n await _normalizeInputMedia(client, media.extendedMedia, params) :\n undefined,\n }\n }\n\n if (media.type === 'poll' || media.type === 'quiz') {\n const answers: tl.TypePollAnswer[] = media.answers.map((ans, idx) => {\n if (typeof ans === 'object' && tl.isAnyPollAnswer(ans)) return ans\n\n return {\n _: 'pollAnswer',\n text: inputTextToTl(ans),\n // emulate the behaviour of most implementations\n option: new Uint8Array([48 /* '0' */ + idx]),\n }\n })\n\n let correct: Uint8Array[] | undefined = undefined\n let solution: string | undefined = undefined\n let solutionEntities: tl.TypeMessageEntity[] | undefined = undefined\n\n if (media.type === 'quiz') {\n let input = media.correct\n if (!Array.isArray(input)) input = [input]\n correct = input.map((it) => {\n if (typeof it === 'number') {\n return answers[it].option\n }\n\n return it\n })\n\n if (media.solution) {\n [solution, solutionEntities] = await _normalizeInputText(client, media.solution)\n }\n }\n\n return {\n _: 'inputMediaPoll',\n poll: {\n _: 'poll',\n closed: media.closed,\n id: Long.ZERO,\n publicVoters: media.public,\n multipleChoice: media.multiple,\n quiz: media.type === 'quiz',\n question: inputTextToTl(media.question),\n answers,\n closePeriod: media.closePeriod,\n closeDate: normalizeDate(media.closeDate),\n },\n correctAnswers: correct,\n solution,\n solutionEntities,\n }\n }\n\n if (media.type === 'story') {\n return {\n _: 'inputMediaStory',\n peer: await resolvePeer(client, media.peer),\n id: media.id,\n }\n }\n\n if (media.type === 'webpage') {\n return {\n _: 'inputMediaWebPage',\n forceLargeMedia: media.size === 'large',\n forceSmallMedia: media.size === 'small',\n optional: !media.required,\n url: media.url,\n }\n }\n\n let inputFile: tl.TypeInputFile | undefined = undefined\n let thumb: tl.TypeInputFile | undefined = undefined\n let mime = 'application/octet-stream'\n\n const upload = async (file: UploadFileLike): Promise<void> => {\n let sendMime\n\n if (media.type === 'sticker') {\n sendMime = media.isAnimated ? 'application/x-tgsticker' : 'image/webp'\n } else {\n sendMime = media.fileMime\n }\n\n const uploaded = await uploadFile(client, {\n file,\n progressCallback: params.progressCallback,\n fileName: media.fileName,\n fileMime: sendMime,\n fileSize: media.fileSize,\n requireFileSize: media.type === 'photo',\n })\n inputFile = uploaded.inputFile\n mime = uploaded.mime\n }\n\n const uploadPeer = params.uploadPeer ?? { _: 'inputPeerSelf' }\n\n const uploadMediaIfNeeded = async (inputMedia: tl.TypeInputMedia, photo: boolean): Promise<tl.TypeInputMedia> => {\n if (!uploadMedia) return inputMedia\n\n const res = await client.call({\n _: 'messages.uploadMedia',\n peer: uploadPeer,\n media: inputMedia,\n businessConnectionId: params.businessConnectionId,\n })\n\n if (photo) {\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaPhoto')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.photo!, 'photo')\n\n return {\n _: 'inputMediaPhoto',\n id: {\n _: 'inputPhoto',\n id: res.photo.id,\n accessHash: res.photo.accessHash,\n fileReference: res.photo.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res, 'messageMediaDocument')\n assertTypeIs('normalizeInputMedia (@ messages.uploadMedia)', res.document!, 'document')\n\n return {\n _: 'inputMediaDocument',\n id: {\n _: 'inputDocument',\n id: res.document.id,\n accessHash: res.document.accessHash,\n fileReference: res.document.fileReference,\n },\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n }\n }\n\n const input = media.file\n\n if (tdFileId.isFileIdLike(input)) {\n if (typeof input === 'string' && input.match(/^https?:\\/\\//)) {\n return uploadMediaIfNeeded(\n {\n _: media.type === 'photo' ? 'inputMediaPhotoExternal' : 'inputMediaDocumentExternal',\n url: input,\n },\n media.type === 'photo',\n )\n } else if (typeof input === 'string' && input.match(/^file:/)) {\n await upload(input.substring(5))\n } else {\n const parsed = typeof input === 'string' ? parseFileId(getPlatform(), input) : input\n\n if (parsed.location._ === 'photo') {\n return {\n _: 'inputMediaPhoto',\n id: fileIdToInputPhoto(parsed),\n }\n } else if (parsed.location._ === 'web') {\n return uploadMediaIfNeeded(\n {\n _:\n parsed.type === tdFileId.FileType.Photo ?\n 'inputMediaPhotoExternal' :\n 'inputMediaDocumentExternal',\n url: parsed.location.url,\n },\n parsed.type === tdFileId.FileType.Photo,\n )\n }\n\n return {\n _: 'inputMediaDocument',\n id: fileIdToInputDocument(parsed),\n }\n }\n } else if (typeof input === 'object' && tl.isAnyInputMedia(input)) {\n return input\n } else if (isUploadedFile(input)) {\n inputFile = input.inputFile\n mime = input.mime\n } else if (typeof input === 'object' && tl.isAnyInputFile(input)) {\n inputFile = input\n } else {\n await upload(input)\n }\n\n if (!inputFile) throw new Error('should not happen')\n\n if (media.type === 'photo') {\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedPhoto',\n file: inputFile,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.spoiler,\n },\n true,\n )\n }\n\n if ('thumb' in media && media.thumb) {\n thumb = await _normalizeInputFile(client, media.thumb, {})\n }\n\n const attributes: tl.TypeDocumentAttribute[] = []\n\n if (media.type !== 'voice') {\n attributes.push({\n _: 'documentAttributeFilename',\n fileName: media.fileName || inputFile.name,\n })\n }\n\n if (media.type === 'video') {\n attributes.push({\n _: 'documentAttributeVideo',\n duration: media.duration || 0,\n w: media.width || 0,\n h: media.height || 0,\n supportsStreaming: media.supportsStreaming,\n roundMessage: media.isRound,\n })\n\n if (media.isAnimated) {\n attributes.push({ _: 'documentAttributeAnimated' })\n }\n }\n\n if (media.type === 'audio' || media.type === 'voice') {\n attributes.push({\n _: 'documentAttributeAudio',\n voice: media.type === 'voice',\n duration: media.duration || 0,\n title: media.type === 'audio' ? media.title : undefined,\n performer: media.type === 'audio' ? media.performer : undefined,\n waveform: media.type === 'voice' && media.waveform ? encodeWaveform(media.waveform) : undefined,\n })\n }\n\n if (media.type === 'sticker') {\n attributes.push({\n _: 'documentAttributeSticker',\n stickerset: {\n _: 'inputStickerSetEmpty',\n },\n alt: media.alt ?? '',\n })\n }\n\n return uploadMediaIfNeeded(\n {\n _: 'inputMediaUploadedDocument',\n nosoundVideo: media.type === 'video' && media.isAnimated,\n forceFile: media.type === 'document',\n file: inputFile,\n thumb,\n mimeType: mime,\n attributes,\n ttlSeconds: media.ttlSeconds,\n spoiler: media.type === 'video' && media.spoiler,\n },\n false,\n )\n}\n"]}
|
|
@@ -37,7 +37,7 @@ async function uploadFile(client, params) {
|
|
|
37
37
|
// normalize params
|
|
38
38
|
let file = params.file;
|
|
39
39
|
let fileSize = -1; // unknown
|
|
40
|
-
let fileName =
|
|
40
|
+
let fileName = params.fileName;
|
|
41
41
|
let fileMime = params.fileMime;
|
|
42
42
|
const platform = (0, platform_js_1.getPlatform)();
|
|
43
43
|
if (platform.normalizeFile) {
|
|
@@ -95,9 +95,6 @@ async function uploadFile(client, params) {
|
|
|
95
95
|
if (!(file instanceof ReadableStream)) {
|
|
96
96
|
throw new errors_js_1.MtArgumentError('Could not convert input `file` to stream!');
|
|
97
97
|
}
|
|
98
|
-
// override file name and mime (if any)
|
|
99
|
-
if (params.fileName)
|
|
100
|
-
fileName = params.fileName;
|
|
101
98
|
// set file size if not automatically inferred
|
|
102
99
|
if (fileSize === -1 && params.fileSize)
|
|
103
100
|
fileSize = params.fileSize;
|
|
@@ -132,8 +129,6 @@ async function uploadFile(client, params) {
|
|
|
132
129
|
const connectionPoolSize = Math.min(await client.getPoolSize(connectionKind), partCount);
|
|
133
130
|
const requestsPerConnection = params.requestsPerConnection ?? REQUESTS_PER_CONNECTION;
|
|
134
131
|
client.log.debug('uploading %d bytes file in %d chunks, each %d bytes in %s connection pool of size %d', fileSize, partCount, partSize, connectionKind, connectionPoolSize);
|
|
135
|
-
// why is the file id generated by the client?
|
|
136
|
-
// isn't the server supposed to generate it and handle collisions?
|
|
137
132
|
const fileId = (0, long_utils_js_1.randomLong)();
|
|
138
133
|
const stream = file;
|
|
139
134
|
let pos = 0;
|
|
@@ -200,6 +195,12 @@ async function uploadFile(client, params) {
|
|
|
200
195
|
if (partCount !== -1 && poolSize > partCount)
|
|
201
196
|
poolSize = partCount;
|
|
202
197
|
await Promise.all(Array.from({ length: poolSize }, uploadNextPart));
|
|
198
|
+
if (fileName === undefined) {
|
|
199
|
+
// infer file extension from mime type. for some media types,
|
|
200
|
+
// telegram requires us to specify the file extension
|
|
201
|
+
const ext = file_type_js_1.MIME_TO_EXTENSION[fileMime];
|
|
202
|
+
fileName = ext ? `${DEFAULT_FILE_NAME}.${ext}` : DEFAULT_FILE_NAME;
|
|
203
|
+
}
|
|
203
204
|
let inputFile;
|
|
204
205
|
if (isBig) {
|
|
205
206
|
inputFile = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-file.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/upload-file.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../../platform.js'\nimport { MtArgumentError } from '../../../types/errors.js'\nimport { randomLong } from '../../../utils/long-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { UploadedFile, UploadFileLike } from '../../types/index.js'\nimport { guessFileMime } from '../../utils/file-type.js'\nimport { determinePartSize, isProbablyPlainText } from '../../utils/file-utils.js'\nimport { bufferToStream, createChunkedReader, streamToBuffer } from '../../utils/stream-utils.js'\n\nconst OVERRIDE_MIME: Record<string, string> = {\n // tg doesn't interpret `audio/opus` files as voice messages for some reason\n 'audio/opus': 'audio/ogg',\n}\n\n// small files (less than 128 kb) are uploaded using the current connection and not the \"upload\" pool\nconst SMALL_FILE_MAX_SIZE = 131072\nconst BIG_FILE_MIN_SIZE = 10485760 // files >10 MB are considered \"big\"\nconst DEFAULT_FILE_NAME = 'unnamed'\nconst REQUESTS_PER_CONNECTION = 3\nconst MAX_PART_COUNT = 4000 // 512 kb * 4000 = 2000 MiB\nconst MAX_PART_COUNT_PREMIUM = 8000 // 512 kb * 8000 = 4000 MiB\n\n// platform-specific\nconst HAS_FILE = typeof File !== 'undefined'\nconst HAS_RESPONSE = typeof Response !== 'undefined'\nconst HAS_URL = typeof URL !== 'undefined'\nconst HAS_BLOB = typeof Blob !== 'undefined'\n\n// @available=both\n/**\n * Upload a file to Telegram servers, without actually\n * sending a message anywhere. Useful when an `InputFile` is required.\n *\n * This method is quite low-level, and you should use other\n * methods like {@link sendMedia} that handle this under the hood.\n *\n * @param params Upload parameters\n */\nexport async function uploadFile(\n client: ITelegramClient,\n params: {\n /**\n * Upload file source.\n */\n file: UploadFileLike\n\n /**\n * File name for the uploaded file. Is usually inferred from path,\n * but should be provided for files sent as `Buffer` or stream.\n *\n * When file name can't be inferred, it falls back to \"unnamed\"\n */\n fileName?: string\n\n /**\n * Total file size. Automatically inferred for Buffer, File and local files.\n */\n fileSize?: number\n\n /**\n * If the file size is unknown, you can provide an estimate,\n * which will be used to determine appropriate part size.\n */\n estimatedSize?: number\n\n /**\n * File MIME type. By default is automatically inferred from magic number\n * If MIME can't be inferred, it defaults to `application/octet-stream`\n */\n fileMime?: string\n\n /**\n * Upload part size (in KB).\n *\n * By default, automatically selected by file size.\n * Must not be bigger than 512 and must not be a fraction.\n */\n partSize?: number\n\n /**\n * Number of parts to be sent in parallel per connection.\n */\n requestsPerConnection?: number\n\n /**\n * Function that will be called after some part has been uploaded.\n *\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size, if known\n */\n progressCallback?: (uploaded: number, total: number) => void\n\n /**\n * When using `inputMediaUploadedPhoto` (e.g. when sending an uploaded photo) require\n * the file size to be known beforehand.\n *\n * In case this is set to `true`, a stream is passed as `file` and the file size is unknown,\n * the stream will be buffered in memory and the file size will be inferred from the buffer.\n */\n requireFileSize?: boolean\n },\n): Promise<UploadedFile> {\n // normalize params\n let file = params.file\n let fileSize = -1 // unknown\n let fileName = DEFAULT_FILE_NAME\n let fileMime = params.fileMime\n\n const platform = getPlatform()\n\n if (platform.normalizeFile) {\n const res = await platform.normalizeFile(file)\n\n if (res?.file) {\n file = res.file\n if (res.fileSize) fileSize = res.fileSize\n if (res.fileName) fileName = res.fileName\n }\n }\n\n if (ArrayBuffer.isView(file)) {\n fileSize = file.length\n file = bufferToStream(file)\n }\n\n if (HAS_FILE && file instanceof File) {\n fileName = file.name\n fileSize = file.size\n file = file.stream()\n }\n\n if (HAS_URL && file instanceof URL) {\n file = await fetch(file)\n }\n\n if (HAS_BLOB && file instanceof Blob) {\n fileSize = file.size\n file = file.stream()\n }\n\n if (HAS_RESPONSE && file instanceof Response) {\n const length = parseInt(file.headers.get('content-length') || '0')\n if (!isNaN(length) && length) fileSize = length\n\n fileMime = file.headers.get('content-type')?.split(';')[0]\n\n const disposition = file.headers.get('content-disposition')\n\n if (disposition) {\n const idx = disposition.indexOf('filename=')\n\n if (idx > -1) {\n const raw = disposition.slice(idx + 9).split(';')[0]\n fileName = JSON.parse(raw) as string\n }\n }\n\n if (fileName === DEFAULT_FILE_NAME) {\n // try to infer from url\n const url = new URL(file.url)\n const name = url.pathname.split('/').pop()\n\n if (name && name.includes('.')) {\n fileName = name\n }\n }\n\n if (!file.body) {\n throw new MtArgumentError('Fetch response contains `null` body')\n }\n\n file = file.body\n }\n\n if (!(file instanceof ReadableStream)) {\n throw new MtArgumentError('Could not convert input `file` to stream!')\n }\n\n // override file name and mime (if any)\n if (params.fileName) fileName = params.fileName\n\n // set file size if not automatically inferred\n if (fileSize === -1 && params.fileSize) fileSize = params.fileSize\n\n if (fileSize === -1 && params.requireFileSize) {\n // buffer the entire stream in memory, then convert it back to stream (bruh)\n const buffer = await streamToBuffer(file)\n fileSize = buffer.length\n file = bufferToStream(buffer)\n }\n\n let partSizeKb = params.partSize\n\n if (!partSizeKb) {\n if (fileSize === -1) {\n partSizeKb = params.estimatedSize ? determinePartSize(params.estimatedSize) : 64\n } else {\n partSizeKb = determinePartSize(fileSize)\n }\n }\n\n if (partSizeKb > 512) {\n throw new MtArgumentError(`Invalid part size: ${partSizeKb}KB`)\n }\n const partSize = partSizeKb * 1024\n\n let partCount = fileSize === -1 ? -1 : ~~((fileSize + partSize - 1) / partSize)\n const maxPartCount = client.storage.self.getCached()?.isPremium ? MAX_PART_COUNT_PREMIUM : MAX_PART_COUNT\n\n if (partCount > maxPartCount) {\n throw new MtArgumentError(`File is too large (max ${maxPartCount} parts, got ${partCount})`)\n }\n\n const isBig = fileSize === -1 || fileSize > BIG_FILE_MIN_SIZE\n const isSmall = fileSize !== -1 && fileSize < SMALL_FILE_MAX_SIZE\n const connectionKind = isSmall ? 'main' : 'upload'\n // streamed uploads must be serialized, otherwise we'll get FILE_PART_SIZE_INVALID\n const connectionPoolSize = Math.min(await client.getPoolSize(connectionKind), partCount)\n const requestsPerConnection = params.requestsPerConnection ?? REQUESTS_PER_CONNECTION\n\n client.log.debug(\n 'uploading %d bytes file in %d chunks, each %d bytes in %s connection pool of size %d',\n fileSize,\n partCount,\n partSize,\n connectionKind,\n connectionPoolSize,\n )\n\n // why is the file id generated by the client?\n // isn't the server supposed to generate it and handle collisions?\n const fileId = randomLong()\n const stream = file\n\n let pos = 0\n let idx = 0\n const reader = createChunkedReader(stream, partSize)\n\n const uploadNextPart = async (): Promise<void> => {\n const thisIdx = idx++\n\n let part = await reader.read()\n\n if (!part && fileSize !== -1) {\n throw new MtArgumentError(`Unexpected EOS (there were only ${idx - 1} parts, but expected ${partCount})`)\n }\n\n if (fileSize === -1 && (reader.ended() || !part)) {\n fileSize = pos + (part?.length ?? 0)\n partCount = ~~((fileSize + partSize - 1) / partSize)\n if (!part) part = new Uint8Array(0)\n client.log.debug('readable ended, file size = %d, part count = %d', fileSize, partCount)\n }\n\n if (!ArrayBuffer.isView(part)) {\n throw new MtArgumentError(`Part ${thisIdx} was not a Uint8Array!`)\n }\n if (part.length > partSize) {\n throw new MtArgumentError(`Part ${thisIdx} had invalid size (expected ${partSize}, got ${part.length})`)\n }\n\n if (thisIdx === 0 && fileMime === undefined) {\n const mime = guessFileMime(part)\n\n if (mime) {\n fileMime = mime\n } else {\n // either plain text or random binary gibberish\n // make an assumption based on the first 8 bytes\n // if all 8 bytes are printable ASCII characters,\n // the entire file is probably plain text\n const isPlainText = isProbablyPlainText(part.slice(0, 8))\n fileMime = isPlainText ? 'text/plain' : 'application/octet-stream'\n }\n }\n\n // why\n const request = isBig ?\n ({\n _: 'upload.saveBigFilePart',\n fileId,\n filePart: thisIdx,\n fileTotalParts: partCount,\n bytes: part,\n } satisfies tl.upload.RawSaveBigFilePartRequest) :\n ({\n _: 'upload.saveFilePart',\n fileId,\n filePart: thisIdx,\n bytes: part,\n } satisfies tl.upload.RawSaveFilePartRequest)\n\n const result = await client.call(request, { kind: connectionKind })\n if (!result) throw new Error(`Failed to upload part ${idx}`)\n\n pos += part.length\n\n params.progressCallback?.(pos, fileSize)\n\n if (idx === partCount) return\n\n return uploadNextPart()\n }\n\n let poolSize = partCount === -1 ? 1 : connectionPoolSize * requestsPerConnection\n if (partCount !== -1 && poolSize > partCount) poolSize = partCount\n\n await Promise.all(Array.from({ length: poolSize }, uploadNextPart))\n\n let inputFile: tl.TypeInputFile\n\n if (isBig) {\n inputFile = {\n _: 'inputFileBig',\n id: fileId,\n parts: partCount,\n name: fileName,\n }\n } else {\n inputFile = {\n _: 'inputFile',\n id: fileId,\n parts: partCount,\n name: fileName,\n md5Checksum: '', // tdlib doesn't do this, why should we?\n }\n }\n\n if (fileMime! in OVERRIDE_MIME) fileMime = OVERRIDE_MIME[fileMime!]\n\n return {\n inputFile,\n size: fileSize,\n mime: fileMime!,\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"upload-file.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/upload-file.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { getPlatform } from '../../../platform.js'\nimport { MtArgumentError } from '../../../types/errors.js'\nimport { randomLong } from '../../../utils/long-utils.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { UploadedFile, UploadFileLike } from '../../types/index.js'\nimport { guessFileMime, MIME_TO_EXTENSION } from '../../utils/file-type.js'\nimport { determinePartSize, isProbablyPlainText } from '../../utils/file-utils.js'\nimport { bufferToStream, createChunkedReader, streamToBuffer } from '../../utils/stream-utils.js'\n\nconst OVERRIDE_MIME: Record<string, string> = {\n // tg doesn't interpret `audio/opus` files as voice messages for some reason\n 'audio/opus': 'audio/ogg',\n}\n\n// small files (less than 128 kb) are uploaded using the current connection and not the \"upload\" pool\nconst SMALL_FILE_MAX_SIZE = 131072\nconst BIG_FILE_MIN_SIZE = 10485760 // files >10 MB are considered \"big\"\nconst DEFAULT_FILE_NAME = 'unnamed'\nconst REQUESTS_PER_CONNECTION = 3\nconst MAX_PART_COUNT = 4000 // 512 kb * 4000 = 2000 MiB\nconst MAX_PART_COUNT_PREMIUM = 8000 // 512 kb * 8000 = 4000 MiB\n\n// platform-specific\nconst HAS_FILE = typeof File !== 'undefined'\nconst HAS_RESPONSE = typeof Response !== 'undefined'\nconst HAS_URL = typeof URL !== 'undefined'\nconst HAS_BLOB = typeof Blob !== 'undefined'\n\n// @available=both\n/**\n * Upload a file to Telegram servers, without actually\n * sending a message anywhere. Useful when an `InputFile` is required.\n *\n * This method is quite low-level, and you should use other\n * methods like {@link sendMedia} that handle this under the hood.\n *\n * @param params Upload parameters\n */\nexport async function uploadFile(\n client: ITelegramClient,\n params: {\n /**\n * Upload file source.\n */\n file: UploadFileLike\n\n /**\n * File name for the uploaded file. Is usually inferred from path,\n * but should be provided for files sent as `Buffer` or stream.\n *\n * When file name can't be inferred, it falls back to \"unnamed\"\n */\n fileName?: string\n\n /**\n * Total file size. Automatically inferred for Buffer, File and local files.\n */\n fileSize?: number\n\n /**\n * If the file size is unknown, you can provide an estimate,\n * which will be used to determine appropriate part size.\n */\n estimatedSize?: number\n\n /**\n * File MIME type. By default is automatically inferred from magic number\n * If MIME can't be inferred, it defaults to `application/octet-stream`\n */\n fileMime?: string\n\n /**\n * Upload part size (in KB).\n *\n * By default, automatically selected by file size.\n * Must not be bigger than 512 and must not be a fraction.\n */\n partSize?: number\n\n /**\n * Number of parts to be sent in parallel per connection.\n */\n requestsPerConnection?: number\n\n /**\n * Function that will be called after some part has been uploaded.\n *\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size, if known\n */\n progressCallback?: (uploaded: number, total: number) => void\n\n /**\n * When using `inputMediaUploadedPhoto` (e.g. when sending an uploaded photo) require\n * the file size to be known beforehand.\n *\n * In case this is set to `true`, a stream is passed as `file` and the file size is unknown,\n * the stream will be buffered in memory and the file size will be inferred from the buffer.\n */\n requireFileSize?: boolean\n },\n): Promise<UploadedFile> {\n // normalize params\n let file = params.file\n let fileSize = -1 // unknown\n let fileName = params.fileName\n let fileMime = params.fileMime\n\n const platform = getPlatform()\n\n if (platform.normalizeFile) {\n const res = await platform.normalizeFile(file)\n\n if (res?.file) {\n file = res.file\n if (res.fileSize) fileSize = res.fileSize\n if (res.fileName) fileName = res.fileName\n }\n }\n\n if (ArrayBuffer.isView(file)) {\n fileSize = file.length\n file = bufferToStream(file)\n }\n\n if (HAS_FILE && file instanceof File) {\n fileName = file.name\n fileSize = file.size\n file = file.stream()\n }\n\n if (HAS_URL && file instanceof URL) {\n file = await fetch(file)\n }\n\n if (HAS_BLOB && file instanceof Blob) {\n fileSize = file.size\n file = file.stream()\n }\n\n if (HAS_RESPONSE && file instanceof Response) {\n const length = parseInt(file.headers.get('content-length') || '0')\n if (!isNaN(length) && length) fileSize = length\n\n fileMime = file.headers.get('content-type')?.split(';')[0]\n\n const disposition = file.headers.get('content-disposition')\n\n if (disposition) {\n const idx = disposition.indexOf('filename=')\n\n if (idx > -1) {\n const raw = disposition.slice(idx + 9).split(';')[0]\n fileName = JSON.parse(raw) as string\n }\n }\n\n if (fileName === DEFAULT_FILE_NAME) {\n // try to infer from url\n const url = new URL(file.url)\n const name = url.pathname.split('/').pop()\n\n if (name && name.includes('.')) {\n fileName = name\n }\n }\n\n if (!file.body) {\n throw new MtArgumentError('Fetch response contains `null` body')\n }\n\n file = file.body\n }\n\n if (!(file instanceof ReadableStream)) {\n throw new MtArgumentError('Could not convert input `file` to stream!')\n }\n\n // set file size if not automatically inferred\n if (fileSize === -1 && params.fileSize) fileSize = params.fileSize\n\n if (fileSize === -1 && params.requireFileSize) {\n // buffer the entire stream in memory, then convert it back to stream (bruh)\n const buffer = await streamToBuffer(file)\n fileSize = buffer.length\n file = bufferToStream(buffer)\n }\n\n let partSizeKb = params.partSize\n\n if (!partSizeKb) {\n if (fileSize === -1) {\n partSizeKb = params.estimatedSize ? determinePartSize(params.estimatedSize) : 64\n } else {\n partSizeKb = determinePartSize(fileSize)\n }\n }\n\n if (partSizeKb > 512) {\n throw new MtArgumentError(`Invalid part size: ${partSizeKb}KB`)\n }\n const partSize = partSizeKb * 1024\n\n let partCount = fileSize === -1 ? -1 : ~~((fileSize + partSize - 1) / partSize)\n const maxPartCount = client.storage.self.getCached()?.isPremium ? MAX_PART_COUNT_PREMIUM : MAX_PART_COUNT\n\n if (partCount > maxPartCount) {\n throw new MtArgumentError(`File is too large (max ${maxPartCount} parts, got ${partCount})`)\n }\n\n const isBig = fileSize === -1 || fileSize > BIG_FILE_MIN_SIZE\n const isSmall = fileSize !== -1 && fileSize < SMALL_FILE_MAX_SIZE\n const connectionKind = isSmall ? 'main' : 'upload'\n // streamed uploads must be serialized, otherwise we'll get FILE_PART_SIZE_INVALID\n const connectionPoolSize = Math.min(await client.getPoolSize(connectionKind), partCount)\n const requestsPerConnection = params.requestsPerConnection ?? REQUESTS_PER_CONNECTION\n\n client.log.debug(\n 'uploading %d bytes file in %d chunks, each %d bytes in %s connection pool of size %d',\n fileSize,\n partCount,\n partSize,\n connectionKind,\n connectionPoolSize,\n )\n\n const fileId = randomLong()\n const stream = file\n\n let pos = 0\n let idx = 0\n const reader = createChunkedReader(stream, partSize)\n\n const uploadNextPart = async (): Promise<void> => {\n const thisIdx = idx++\n\n let part = await reader.read()\n\n if (!part && fileSize !== -1) {\n throw new MtArgumentError(`Unexpected EOS (there were only ${idx - 1} parts, but expected ${partCount})`)\n }\n\n if (fileSize === -1 && (reader.ended() || !part)) {\n fileSize = pos + (part?.length ?? 0)\n partCount = ~~((fileSize + partSize - 1) / partSize)\n if (!part) part = new Uint8Array(0)\n client.log.debug('readable ended, file size = %d, part count = %d', fileSize, partCount)\n }\n\n if (!ArrayBuffer.isView(part)) {\n throw new MtArgumentError(`Part ${thisIdx} was not a Uint8Array!`)\n }\n if (part.length > partSize) {\n throw new MtArgumentError(`Part ${thisIdx} had invalid size (expected ${partSize}, got ${part.length})`)\n }\n\n if (thisIdx === 0 && fileMime === undefined) {\n const mime = guessFileMime(part)\n\n if (mime) {\n fileMime = mime\n } else {\n // either plain text or random binary gibberish\n // make an assumption based on the first 8 bytes\n // if all 8 bytes are printable ASCII characters,\n // the entire file is probably plain text\n const isPlainText = isProbablyPlainText(part.slice(0, 8))\n fileMime = isPlainText ? 'text/plain' : 'application/octet-stream'\n }\n }\n\n // why\n const request = isBig ?\n ({\n _: 'upload.saveBigFilePart',\n fileId,\n filePart: thisIdx,\n fileTotalParts: partCount,\n bytes: part,\n } satisfies tl.upload.RawSaveBigFilePartRequest) :\n ({\n _: 'upload.saveFilePart',\n fileId,\n filePart: thisIdx,\n bytes: part,\n } satisfies tl.upload.RawSaveFilePartRequest)\n\n const result = await client.call(request, { kind: connectionKind })\n if (!result) throw new Error(`Failed to upload part ${idx}`)\n\n pos += part.length\n\n params.progressCallback?.(pos, fileSize)\n\n if (idx === partCount) return\n\n return uploadNextPart()\n }\n\n let poolSize = partCount === -1 ? 1 : connectionPoolSize * requestsPerConnection\n if (partCount !== -1 && poolSize > partCount) poolSize = partCount\n\n await Promise.all(Array.from({ length: poolSize }, uploadNextPart))\n\n if (fileName === undefined) {\n // infer file extension from mime type. for some media types,\n // telegram requires us to specify the file extension\n const ext = MIME_TO_EXTENSION[fileMime!]\n fileName = ext ? `${DEFAULT_FILE_NAME}.${ext}` : DEFAULT_FILE_NAME\n }\n\n let inputFile: tl.TypeInputFile\n\n if (isBig) {\n inputFile = {\n _: 'inputFileBig',\n id: fileId,\n parts: partCount,\n name: fileName,\n }\n } else {\n inputFile = {\n _: 'inputFile',\n id: fileId,\n parts: partCount,\n name: fileName,\n md5Checksum: '', // tdlib doesn't do this, why should we?\n }\n }\n\n if (fileMime! in OVERRIDE_MIME) fileMime = OVERRIDE_MIME[fileMime!]\n\n return {\n inputFile,\n size: fileSize,\n mime: fileMime!,\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/upload-media.ts"],"names":[],"mappings":";;;AAAA,wDAA0D;AAC1D,sDAAqD;AACrD,0EAAiF;AAEjF,mDAAsG;AACtG,2EAAmE;AACnE,8DAAsD;AACtD,yEAAiE;AAEjE;;;;;;;;;;GAUG;AACI,KAAK,UAAU,WAAW,CAC7B,MAAuB,EACvB,KAAqB,EACrB,SAeI,EAAE;IAEN,MAAM,SAAS,GAAG,MAAM,IAAA,+CAAoB,EAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAE1E,QAAQ,SAAS,CAAC,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"upload-media.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/files/upload-media.ts"],"names":[],"mappings":";;;AAAA,wDAA0D;AAC1D,sDAAqD;AACrD,0EAAiF;AAEjF,mDAAsG;AACtG,2EAAmE;AACnE,8DAAsD;AACtD,yEAAiE;AAEjE;;;;;;;;;;GAUG;AACI,KAAK,UAAU,WAAW,CAC7B,MAAuB,EACvB,KAAqB,EACrB,SAeI,EAAE;IAEN,MAAM,SAAS,GAAG,MAAM,IAAA,+CAAoB,EAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAE1E,QAAQ,SAAS,CAAC,CAAC,EAAE,CAAC;QAClB,KAAK,iBAAiB,CAAC;QACvB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,mBAAmB,CAAC;QACzB,KAAK,mBAAmB,CAAC;QACzB,KAAK,iBAAiB,CAAC;QACvB,KAAK,gBAAgB,CAAC;QACtB,KAAK,mBAAmB,CAAC;QACzB,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB;YACjB,MAAM,IAAI,2BAAe,CAAC,8BAA8B,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,sBAAsB;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC;gBACI,CAAC,EAAE,eAAe;aACrB;QACL,KAAK,EAAE,SAAS;KACnB,CAAC,CAAA;IAEF,IAAA,oCAAe,EAAC,aAAa,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAA;IAExD,QAAQ,SAAS,CAAC,CAAC,EAAE,CAAC;QAClB,KAAK,yBAAyB,CAAC;QAC/B,KAAK,iBAAiB,CAAC;QACvB,KAAK,yBAAyB;YAC1B,IAAA,iCAAY,EAAC,aAAa,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAA;YACrD,IAAA,iCAAY,EAAC,aAAa,EAAE,GAAG,CAAC,KAAM,EAAE,OAAO,CAAC,CAAA;YAEhD,OAAO,IAAI,gBAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC/B,KAAK,4BAA4B,CAAC;QAClC,KAAK,oBAAoB,CAAC;QAC1B,KAAK,4BAA4B;YAC7B,IAAA,iCAAY,EAAC,aAAa,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAA;YACxD,IAAA,iCAAY,EAAC,aAAa,EAAE,GAAG,CAAC,QAAS,EAAE,UAAU,CAAC,CAAA;YAEtD,2BAA2B;YAC3B,OAAO,IAAA,iCAAa,EAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAQ,CAAA;QAClD,KAAK,iBAAiB,CAAC;QACvB,KAAK,mBAAmB;YACpB,MAAM,IAAI,2BAAe,CAAC,eAAe,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAA;QAC9E;YACI,IAAA,sBAAW,EAAC,SAAS,CAAC,CAAA;IAC9B,CAAC;AACL,CAAC;AArED,kCAqEC","sourcesContent":["import { MtArgumentError } from '../../../types/errors.js'\nimport { assertNever } from '../../../types/utils.js'\nimport { assertTypeIs, assertTypeIsNot } from '../../../utils/type-assertions.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { InputMediaLike, InputPeerLike, MessageMedia, Photo, RawDocument } from '../../types/index.js'\nimport { parseDocument } from '../../types/media/document-utils.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { _normalizeInputMedia } from './normalize-input-media.js'\n\n/**\n * Upload a media to Telegram servers, without actually\n * sending a message anywhere. Useful when File ID is needed.\n *\n * The difference with {@link uploadFile} is that\n * the returned object will act like a message media\n * and contain fields like File ID.\n *\n * @param media Media to upload\n * @param params Upload parameters\n */\nexport async function uploadMedia(\n client: ITelegramClient,\n media: InputMediaLike,\n params: {\n /**\n * Peer to associate this media with.\n *\n * @default `self`\n */\n peer?: InputPeerLike\n\n /**\n * Upload progress callback\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size\n */\n progressCallback?: (uploaded: number, total: number) => void\n } = {},\n): Promise<Extract<MessageMedia, Photo | RawDocument>> {\n const normMedia = await _normalizeInputMedia(client, media, params, false)\n\n switch (normMedia._) {\n case 'inputMediaEmpty':\n case 'inputMediaGeoPoint':\n case 'inputMediaGeoLive':\n case 'inputMediaContact':\n case 'inputMediaVenue':\n case 'inputMediaGame':\n case 'inputMediaInvoice':\n case 'inputMediaPoll':\n case 'inputMediaDice':\n throw new MtArgumentError(\"This media can't be uploaded\")\n }\n\n const res = await client.call({\n _: 'messages.uploadMedia',\n peer: params.peer ?\n await resolvePeer(client, params.peer) :\n {\n _: 'inputPeerSelf',\n },\n media: normMedia,\n })\n\n assertTypeIsNot('uploadMedia', res, 'messageMediaEmpty')\n\n switch (normMedia._) {\n case 'inputMediaUploadedPhoto':\n case 'inputMediaPhoto':\n case 'inputMediaPhotoExternal':\n assertTypeIs('uploadMedia', res, 'messageMediaPhoto')\n assertTypeIs('uploadMedia', res.photo!, 'photo')\n\n return new Photo(res.photo)\n case 'inputMediaUploadedDocument':\n case 'inputMediaDocument':\n case 'inputMediaDocumentExternal':\n assertTypeIs('uploadMedia', res, 'messageMediaDocument')\n assertTypeIs('uploadMedia', res.document!, 'document')\n\n // eslint-disable-next-line\n return parseDocument(res.document, res) as any\n case 'inputMediaStory':\n case 'inputMediaWebPage':\n throw new MtArgumentError(`This media (${normMedia._}) can't be uploaded`)\n default:\n assertNever(normMedia)\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iter-forum-topics.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/forums/iter-forum-topics.ts"],"names":[],"mappings":";;;AAEA,8DAAyD;AACzD,+DAAsD;AAEtD;;;;GAIG;AACI,KAAK,SAAS,CAAC,CAAC,eAAe,CAClC,MAAuB,EACvB,MAAqB,EACrB,MAYC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,MAAM,CAAA;IAE3D,MAAM,IAAI,GAAG,MAAM,IAAA,gCAAc,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEjD,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACvB,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,SAAS;
|
|
1
|
+
{"version":3,"file":"iter-forum-topics.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/forums/iter-forum-topics.ts"],"names":[],"mappings":";;;AAEA,8DAAyD;AACzD,+DAAsD;AAEtD;;;;GAIG;AACI,KAAK,SAAS,CAAC,CAAC,eAAe,CAClC,MAAuB,EACvB,MAAqB,EACrB,MAYC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,MAAM,CAAA;IAE3D,MAAM,IAAI,GAAG,MAAM,IAAA,gCAAc,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEjD,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACvB,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,SAAS,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,IAAA,oCAAc,EAAC,MAAM,EAAE,IAAI,EAAE;YAC3C,KAAK;YACL,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;SAC9C,CAAC,CAAA;QAEF,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACtB,MAAM,KAAK,CAAA;YAEX,IAAI,EAAE,OAAO,IAAI,KAAK;gBAAE,OAAM;QAClC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,OAAM;QACrB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAA;IACrB,CAAC;AACL,CAAC;AA1CD,0CA0CC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { ForumTopic, InputPeerLike } from '../../types/index.js'\nimport { resolveChannel } from '../users/resolve-peer.js'\nimport { getForumTopics } from './get-forum-topics.js'\n\n/**\n * Iterate over forum topics. Wrapper over {@link getForumTopics}.\n *\n * @param chatId Chat ID or username\n */\nexport async function* iterForumTopics(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: Parameters<typeof getForumTopics>[2] & {\n /**\n * Maximum number of topics to return.\n *\n * @default `Infinity`, i.e. return all topics\n */\n limit?: number\n\n /**\n * Chunk size. Usually you shouldn't care about this.\n */\n chunkSize?: number\n },\n): AsyncIterableIterator<ForumTopic> {\n if (!params) params = {}\n\n const { query, limit = Infinity, chunkSize = 100 } = params\n\n const peer = await resolveChannel(client, chatId)\n\n let { offset } = params\n let current = 0\n\n for (;;) {\n const res = await getForumTopics(client, peer, {\n query,\n offset,\n limit: Math.min(chunkSize, limit - current),\n })\n\n for (const topic of res) {\n yield topic\n\n if (++current >= limit) return\n }\n\n if (!res.next) return\n offset = res.next\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-primary-invite-link.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/get-primary-invite-link.ts"],"names":[],"mappings":";;;AAAA,wDAA+D;AAE/D,mDAAgF;AAChF,8DAAsD;AAEtD;;;;GAIG;AACI,KAAK,UAAU,oBAAoB,CAAC,MAAuB,EAAE,MAAqB;IACrF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,iCAAiC;QACpC,IAAI,EAAE,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC;QACvC,OAAO,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE;QAC/B,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,KAAK;KACjB,CAAC,CAAA;IAEF,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,oBAAoB,EAAE;
|
|
1
|
+
{"version":3,"file":"get-primary-invite-link.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/get-primary-invite-link.ts"],"names":[],"mappings":";;;AAAA,wDAA+D;AAE/D,mDAAgF;AAChF,8DAAsD;AAEtD;;;;GAIG;AACI,KAAK,UAAU,oBAAoB,CAAC,MAAuB,EAAE,MAAqB;IACrF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC,EAAE,iCAAiC;QACpC,IAAI,EAAE,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC;QACvC,OAAO,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE;QAC/B,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,KAAK;KACjB,CAAC,CAAA;IAEF,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,gCAAoB,CAC1B,iDAAiD,EACjD,oBAAoB,EACpB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CACpB,CAAA;IACL,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,gCAAoB,CAAC,2DAA2D,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAChH,CAAC;IAED,MAAM,KAAK,GAAG,qBAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAElC,OAAO,IAAI,yBAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACpD,CAAC;AAxBD,oDAwBC","sourcesContent":["import { MtTypeAssertionError } from '../../../types/errors.js'\nimport { ITelegramClient } from '../../client.types.js'\nimport { ChatInviteLink, InputPeerLike, PeersIndex } from '../../types/index.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\n\n/**\n * Get primary invite link of a chat\n *\n * @param chatId Chat ID\n */\nexport async function getPrimaryInviteLink(client: ITelegramClient, chatId: InputPeerLike): Promise<ChatInviteLink> {\n const res = await client.call({\n _: 'messages.getExportedChatInvites',\n peer: await resolvePeer(client, chatId),\n adminId: { _: 'inputUserSelf' },\n limit: 1,\n revoked: false,\n })\n\n if (res.invites[0]?._ !== 'chatInviteExported') {\n throw new MtTypeAssertionError(\n 'messages.getExportedChatInvites (@ .invites[0])',\n 'chatInviteExported',\n res.invites[0]?._,\n )\n }\n\n if (!res.invites[0].permanent) {\n throw new MtTypeAssertionError('messages.getExportedChatInvites (@ .invites[0].permanent)', 'true', 'false')\n }\n\n const peers = PeersIndex.from(res)\n\n return new ChatInviteLink(res.invites[0], peers)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iter-invite-link-members.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/iter-invite-link-members.ts"],"names":[],"mappings":";;;AAEA,8DAAsD;AACtD,6EAAmE;AAEnE;;;;;;GAMG;AACI,KAAK,SAAS,CAAC,CAAC,qBAAqB,CACxC,MAAuB,EACvB,MAAqB,EACrB,MAeC;IAED,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,CAAA;IAEjH,IAAI,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,GAAG,MAAM,CAAA;IAEjE,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,SAAS;
|
|
1
|
+
{"version":3,"file":"iter-invite-link-members.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/iter-invite-link-members.ts"],"names":[],"mappings":";;;AAEA,8DAAsD;AACtD,6EAAmE;AAEnE;;;;;;GAMG;AACI,KAAK,SAAS,CAAC,CAAC,qBAAqB,CACxC,MAAuB,EACvB,MAAqB,EACrB,MAeC;IAED,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,CAAA;IAEjH,IAAI,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,GAAG,MAAM,CAAA;IAEjE,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,SAAS,CAAC;QACN,MAAM,KAAK,GAAG,MAAM,IAAA,iDAAoB,EAAC,MAAM,EAAE,IAAI,EAAE;YACnD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;YAC3C,IAAI;YACJ,SAAS;YACT,eAAe;YACf,UAAU;YACV,UAAU;SACb,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,MAAK;QAExB,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACrB,MAAM,EAAE,CAAA;YAER,IAAI,EAAE,OAAO,IAAI,KAAK;gBAAE,OAAM;QAClC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAM;QAEvB,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;QAC5B,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA;IAChC,CAAC;AACL,CAAC;AApDD,sDAoDC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { ChatInviteLinkMember, InputPeerLike } from '../../types/index.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { getInviteLinkMembers } from './get-invite-link-members.js'\n\n/**\n * Iterate over users who have joined\n * the chat with the given invite link.\n *\n * @param chatId Chat ID\n * @param params Additional params\n */\nexport async function* iterInviteLinkMembers(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: Parameters<typeof getInviteLinkMembers>[2] & {\n /**\n * Maximum number of users to return\n *\n * @default `Infinity`, i.e. all users are fetched\n */\n limit?: number\n\n /**\n * Chunk size which will be passed to `messages.getChatInviteImporters`.\n * You shouldn't usually care about this.\n *\n * @default 100.\n */\n chunkSize?: number\n },\n): AsyncIterableIterator<ChatInviteLinkMember> {\n const peer = await resolvePeer(client, chatId)\n if (!params) params = {}\n\n const { limit = Infinity, chunkSize = 100, link, requestedSearch, requested = Boolean(requestedSearch) } = params\n\n let { offsetDate, offsetUser = { _: 'inputUserEmpty' } } = params\n\n let current = 0\n\n for (;;) {\n const items = await getInviteLinkMembers(client, peer, {\n limit: Math.min(chunkSize, limit - current),\n link,\n requested,\n requestedSearch,\n offsetDate,\n offsetUser,\n })\n\n if (!items.length) break\n\n for (const it of items) {\n yield it\n\n if (++current >= limit) return\n }\n\n if (!items.next) return\n\n offsetDate = items.next.date\n offsetUser = items.next.user\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iter-invite-links.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/iter-invite-links.ts"],"names":[],"mappings":";;;AAEA,8DAAsD;AACtD,+DAAsD;AAEtD;;;;;;;;;;GAUG;AACI,KAAK,SAAS,CAAC,CAAC,eAAe,CAClC,MAAuB,EACvB,MAAqB,EACrB,MAaC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAE5E,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAEvB,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,EAAE,eAAe,EAAY,CAAA;IAElG,SAAS;
|
|
1
|
+
{"version":3,"file":"iter-invite-links.js","sourceRoot":"","sources":["../../../../../src/highlevel/methods/invite-links/iter-invite-links.ts"],"names":[],"mappings":";;;AAEA,8DAAsD;AACtD,+DAAsD;AAEtD;;;;;;;;;;GAUG;AACI,KAAK,SAAS,CAAC,CAAC,eAAe,CAClC,MAAuB,EACvB,MAAqB,EACrB,MAaC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAA;IAExB,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAE5E,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAEvB,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,IAAA,6BAAW,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,EAAE,eAAe,EAAY,CAAA;IAElG,SAAS,CAAC;QACN,MAAM,KAAK,GAAG,MAAM,IAAA,oCAAc,EAAC,MAAM,EAAE,IAAI,EAAE;YAC7C,KAAK,EAAE,aAAa;YACpB,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,OAAO,CAAC;YAC3C,MAAM;SACT,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAM;QAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,CAAA;YAEV,IAAI,EAAE,OAAO,IAAI,KAAK;gBAAE,MAAK;QACjC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAM;QACvB,MAAM,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,CAAC;AACL,CAAC;AAhDD,0CAgDC","sourcesContent":["import { ITelegramClient } from '../../client.types.js'\nimport { ChatInviteLink, InputPeerLike } from '../../types/index.js'\nimport { resolvePeer } from '../users/resolve-peer.js'\nimport { getInviteLinks } from './get-invite-links.js'\n\n/**\n * Iterate over invite links created by some administrator in the chat.\n *\n * As an administrator you can only get your own links\n * (i.e. `adminId = \"self\"`), as a creator you can get\n * any other admin's links.\n *\n * @param chatId Chat ID\n * @param adminId Admin who created the links\n * @param params\n */\nexport async function* iterInviteLinks(\n client: ITelegramClient,\n chatId: InputPeerLike,\n params?: Parameters<typeof getInviteLinks>[2] & {\n /**\n * Limit the number of invite links to be fetched.\n * By default, all links are fetched.\n */\n limit?: number\n\n /**\n * Size of chunks which are fetched. Usually not needed.\n *\n * @default `100`\n */\n chunkSize?: number\n },\n): AsyncIterableIterator<ChatInviteLink> {\n if (!params) params = {}\n\n const { revoked = false, limit = Infinity, chunkSize = 100, admin } = params\n\n let { offset } = params\n\n let current = 0\n\n const peer = await resolvePeer(client, chatId)\n const adminResolved = admin ? await resolvePeer(client, admin) : ({ _: 'inputUserSelf' } as const)\n\n for (;;) {\n const links = await getInviteLinks(client, peer, {\n admin: adminResolved,\n revoked,\n limit: Math.min(chunkSize, limit - current),\n offset,\n })\n\n if (!links.length) return\n\n for (const link of links) {\n yield link\n\n if (++current >= limit) break\n }\n\n if (!links.next) return\n offset = links.next\n }\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { tl } from '@mtcute/tl';
|
|
2
|
+
import { RpcCallOptions } from '../../../network/network-manager.js';
|
|
3
|
+
import { ITelegramClient } from '../../client.types.js';
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export declare function _maybeInvokeWithBusinessConnection<T extends tl.RpcMethod>(client: ITelegramClient, businessConnectionId: string | undefined, request: T, params?: RpcCallOptions): Promise<tl.RpcCallReturn[T['_']]>;
|