@mtcute/core 0.30.2 → 0.31.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/client.cjs +73 -0
- package/client.js +73 -0
- package/highlevel/client.d.cts +344 -114
- package/highlevel/client.d.ts +344 -114
- package/highlevel/methods/auth/sign-in-qr.cjs +2 -0
- package/highlevel/methods/auth/sign-in-qr.js +2 -0
- package/highlevel/methods/auth/sign-in-qr.test.d.cts +1 -0
- package/highlevel/methods/auth/sign-in-qr.test.d.ts +1 -0
- package/highlevel/methods/chats/join-chat.cjs +1 -1
- package/highlevel/methods/chats/join-chat.d.cts +2 -1
- package/highlevel/methods/chats/join-chat.d.ts +2 -1
- package/highlevel/methods/chats/join-chat.js +1 -1
- package/highlevel/methods/chats/transfer-chat-ownership.cjs +6 -17
- package/highlevel/methods/chats/transfer-chat-ownership.js +6 -17
- package/highlevel/methods/communities/ban-community-participant.cjs +30 -0
- package/highlevel/methods/communities/ban-community-participant.d.cts +20 -0
- package/highlevel/methods/communities/ban-community-participant.d.ts +20 -0
- package/highlevel/methods/communities/ban-community-participant.js +25 -0
- package/highlevel/methods/communities/create-community.cjs +29 -0
- package/highlevel/methods/communities/create-community.d.cts +22 -0
- package/highlevel/methods/communities/create-community.d.ts +22 -0
- package/highlevel/methods/communities/create-community.js +24 -0
- package/highlevel/methods/communities/get-community-link-requests.cjs +27 -0
- package/highlevel/methods/communities/get-community-link-requests.d.cts +17 -0
- package/highlevel/methods/communities/get-community-link-requests.d.ts +17 -0
- package/highlevel/methods/communities/get-community-link-requests.js +22 -0
- package/highlevel/methods/communities/get-community-participant-chats.cjs +24 -0
- package/highlevel/methods/communities/get-community-participant-chats.d.cts +17 -0
- package/highlevel/methods/communities/get-community-participant-chats.d.ts +17 -0
- package/highlevel/methods/communities/get-community-participant-chats.js +19 -0
- package/highlevel/methods/communities/get-joined-communities.cjs +21 -0
- package/highlevel/methods/communities/get-joined-communities.d.cts +6 -0
- package/highlevel/methods/communities/get-joined-communities.d.ts +6 -0
- package/highlevel/methods/communities/get-joined-communities.js +16 -0
- package/highlevel/methods/communities/hide-community-link-request.cjs +30 -0
- package/highlevel/methods/communities/hide-community-link-request.d.cts +22 -0
- package/highlevel/methods/communities/hide-community-link-request.d.ts +22 -0
- package/highlevel/methods/communities/hide-community-link-request.js +25 -0
- package/highlevel/methods/communities/link-community-peer.cjs +32 -0
- package/highlevel/methods/communities/link-community-peer.d.cts +22 -0
- package/highlevel/methods/communities/link-community-peer.d.ts +22 -0
- package/highlevel/methods/communities/link-community-peer.js +27 -0
- package/highlevel/methods/communities/toggle-community-collapsed.cjs +18 -0
- package/highlevel/methods/communities/toggle-community-collapsed.d.cts +16 -0
- package/highlevel/methods/communities/toggle-community-collapsed.d.ts +16 -0
- package/highlevel/methods/communities/toggle-community-collapsed.js +13 -0
- package/highlevel/methods/ephemeral/delete-ephemeral-message.cjs +20 -0
- package/highlevel/methods/ephemeral/delete-ephemeral-message.d.cts +13 -0
- package/highlevel/methods/ephemeral/delete-ephemeral-message.d.ts +13 -0
- package/highlevel/methods/ephemeral/delete-ephemeral-message.js +15 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.cjs +33 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.d.cts +25 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.d.ts +25 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.js +28 -0
- package/highlevel/methods/ephemeral/find-in-update.cjs +27 -0
- package/highlevel/methods/ephemeral/find-in-update.d.cts +8 -0
- package/highlevel/methods/ephemeral/find-in-update.d.ts +8 -0
- package/highlevel/methods/ephemeral/find-in-update.js +22 -0
- package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.cjs +31 -0
- package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.d.cts +29 -0
- package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.d.ts +29 -0
- package/highlevel/methods/ephemeral/get-ephemeral-callback-answer.js +26 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.cjs +38 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.d.cts +29 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.d.ts +29 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.js +33 -0
- package/highlevel/methods/files/download-iterable.cjs +4 -2
- package/highlevel/methods/files/download-iterable.js +4 -2
- package/highlevel/methods/files/download-iterable.test.d.cts +1 -0
- package/highlevel/methods/files/download-iterable.test.d.ts +1 -0
- package/highlevel/methods/files/download-stream.cjs +5 -6
- package/highlevel/methods/files/download-stream.js +5 -6
- package/highlevel/methods/forums/create-forum-topic.d.cts +7 -0
- package/highlevel/methods/forums/create-forum-topic.d.ts +7 -0
- package/highlevel/methods/forums/delete-forum-topic-history.d.cts +1 -1
- package/highlevel/methods/forums/delete-forum-topic-history.d.ts +1 -1
- package/highlevel/methods/forums/edit-forum-topic.cjs +1 -1
- package/highlevel/methods/forums/edit-forum-topic.d.cts +2 -2
- package/highlevel/methods/forums/edit-forum-topic.d.ts +2 -2
- package/highlevel/methods/forums/edit-forum-topic.js +1 -1
- package/highlevel/methods/forums/get-forum-topics-by-id.cjs +5 -1
- package/highlevel/methods/forums/get-forum-topics-by-id.d.cts +9 -1
- package/highlevel/methods/forums/get-forum-topics-by-id.d.ts +9 -1
- package/highlevel/methods/forums/get-forum-topics-by-id.js +5 -1
- package/highlevel/methods/forums/get-forum-topics-by-id.test.d.cts +1 -0
- package/highlevel/methods/forums/get-forum-topics-by-id.test.d.ts +1 -0
- package/highlevel/methods/forums/get-forum-topics.cjs +1 -1
- package/highlevel/methods/forums/get-forum-topics.js +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-closed.d.cts +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-closed.d.ts +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-pinned.d.cts +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-pinned.d.ts +1 -1
- package/highlevel/methods/forums/toggle-general-topic-hidden.cjs +2 -2
- package/highlevel/methods/forums/toggle-general-topic-hidden.js +3 -3
- package/highlevel/methods/messages/send-common.d.cts +7 -1
- package/highlevel/methods/messages/send-common.d.ts +7 -1
- package/highlevel/methods/messages/send-text.cjs +70 -4
- package/highlevel/methods/messages/send-text.js +70 -4
- package/highlevel/methods/users/resolve-peer.cjs +11 -1
- package/highlevel/methods/users/resolve-peer.js +11 -1
- package/highlevel/methods.d.cts +16 -0
- package/highlevel/methods.d.ts +16 -0
- package/highlevel/storage/service/peers.cjs +25 -0
- package/highlevel/storage/service/peers.js +25 -0
- package/highlevel/storage/service/peers.test.d.cts +1 -0
- package/highlevel/storage/service/peers.test.d.ts +1 -0
- package/highlevel/types/conversation.cjs +8 -0
- package/highlevel/types/conversation.d.cts +1 -0
- package/highlevel/types/conversation.d.ts +1 -0
- package/highlevel/types/conversation.js +10 -2
- package/highlevel/types/conversation.test.d.cts +1 -0
- package/highlevel/types/conversation.test.d.ts +1 -0
- package/highlevel/types/messages/ephemeral-message.cjs +103 -0
- package/highlevel/types/messages/ephemeral-message.d.cts +55 -0
- package/highlevel/types/messages/ephemeral-message.d.ts +55 -0
- package/highlevel/types/messages/ephemeral-message.js +98 -0
- package/highlevel/types/messages/index.d.cts +1 -0
- package/highlevel/types/messages/index.d.ts +1 -0
- package/highlevel/types/messages/message-action.cjs +6 -0
- package/highlevel/types/messages/message-action.d.cts +8 -1
- package/highlevel/types/messages/message-action.d.ts +8 -1
- package/highlevel/types/messages/message-action.js +6 -0
- package/highlevel/types/messages/replied-message.cjs +5 -1
- package/highlevel/types/messages/replied-message.d.cts +5 -1
- package/highlevel/types/messages/replied-message.d.ts +5 -1
- package/highlevel/types/messages/replied-message.js +5 -1
- package/highlevel/types/peers/chat.cjs +23 -3
- package/highlevel/types/peers/chat.d.cts +8 -3
- package/highlevel/types/peers/chat.d.ts +8 -3
- package/highlevel/types/peers/chat.js +24 -4
- package/highlevel/types/peers/community-peer.cjs +60 -0
- package/highlevel/types/peers/community-peer.d.cts +37 -0
- package/highlevel/types/peers/community-peer.d.ts +37 -0
- package/highlevel/types/peers/community-peer.js +55 -0
- package/highlevel/types/peers/full-chat.cjs +20 -5
- package/highlevel/types/peers/full-chat.d.cts +5 -0
- package/highlevel/types/peers/full-chat.d.ts +5 -0
- package/highlevel/types/peers/full-chat.js +20 -5
- package/highlevel/types/peers/index.d.cts +1 -0
- package/highlevel/types/peers/index.d.ts +1 -0
- package/highlevel/types/peers/peer.cjs +2 -0
- package/highlevel/types/peers/peer.js +2 -0
- package/highlevel/types/peers/user.cjs +6 -0
- package/highlevel/types/peers/user.d.cts +2 -0
- package/highlevel/types/peers/user.d.ts +2 -0
- package/highlevel/types/peers/user.js +6 -0
- package/highlevel/types/updates/delete-ephemeral-messages-update.cjs +27 -0
- package/highlevel/types/updates/delete-ephemeral-messages-update.d.cts +15 -0
- package/highlevel/types/updates/delete-ephemeral-messages-update.d.ts +15 -0
- package/highlevel/types/updates/delete-ephemeral-messages-update.js +22 -0
- package/highlevel/types/updates/ephemeral-callback-query.cjs +61 -0
- package/highlevel/types/updates/ephemeral-callback-query.d.cts +38 -0
- package/highlevel/types/updates/ephemeral-callback-query.d.ts +38 -0
- package/highlevel/types/updates/ephemeral-callback-query.js +56 -0
- package/highlevel/types/updates/index.d.cts +16 -2
- package/highlevel/types/updates/index.d.ts +16 -2
- package/highlevel/types/updates/parse-update.cjs +12 -1
- package/highlevel/types/updates/parse-update.js +12 -1
- package/highlevel/updates/manager.cjs +31 -13
- package/highlevel/updates/manager.d.cts +1 -0
- package/highlevel/updates/manager.d.ts +1 -0
- package/highlevel/updates/manager.js +31 -13
- package/highlevel/updates/manager.test.d.cts +1 -0
- package/highlevel/updates/manager.test.d.ts +1 -0
- package/highlevel/utils/stream-utils.cjs +8 -4
- package/highlevel/utils/stream-utils.js +8 -4
- package/highlevel/utils/stream-utils.test.d.cts +1 -0
- package/highlevel/utils/stream-utils.test.d.ts +1 -0
- package/highlevel/utils/walk-page-blocks.cjs +4 -0
- package/highlevel/utils/walk-page-blocks.js +4 -0
- package/index.cjs +10 -0
- package/index.js +11 -1
- package/methods.cjs +27 -0
- package/methods.js +27 -0
- package/network/client.cjs +4 -3
- package/network/client.d.cts +1 -0
- package/network/client.d.ts +1 -0
- package/network/client.js +4 -3
- package/network/middlewares/flood-waiter.cjs +2 -2
- package/network/middlewares/flood-waiter.js +2 -2
- package/network/middlewares/internal-errors.cjs +1 -1
- package/network/middlewares/internal-errors.js +1 -1
- package/network/middlewares/media-throttle.cjs +1 -1
- package/network/middlewares/media-throttle.js +1 -1
- package/network/mtproxy/index.cjs +4 -3
- package/network/mtproxy/index.d.cts +2 -2
- package/network/mtproxy/index.d.ts +2 -2
- package/network/mtproxy/index.js +4 -3
- package/network/network-manager.cjs +44 -16
- package/network/network-manager.d.cts +10 -3
- package/network/network-manager.d.ts +10 -3
- package/network/network-manager.js +45 -17
- package/network/network-manager.test.d.cts +1 -0
- package/network/network-manager.test.d.ts +1 -0
- package/network/persistent-connection.cjs +10 -2
- package/network/persistent-connection.js +10 -2
- package/network/session-connection.cjs +3 -0
- package/network/session-connection.js +3 -0
- package/network/transports/abstract.cjs +16 -0
- package/network/transports/abstract.d.cts +8 -2
- package/network/transports/abstract.d.ts +8 -2
- package/network/transports/abstract.js +17 -1
- package/network/transports/obfuscated.cjs +3 -1
- package/network/transports/obfuscated.js +3 -1
- package/package.json +6 -6
- package/tl/api-schema.json +1 -1
- package/tl/binary/reader.cjs +90 -15
- package/tl/binary/reader.js +90 -15
- package/tl/binary/writer.cjs +385 -80
- package/tl/binary/writer.js +385 -80
- package/tl/compat/reader.cjs +11 -0
- package/tl/compat/reader.js +11 -0
- package/tl/index.d.cts +12380 -4272
- package/tl/index.d.ts +12380 -4272
- package/tl/inner-tl.cjs +70 -20
- package/tl/inner-tl.js +70 -20
- package/tl/raw-errors.json +1 -1
- package/utils/abort-signal.cjs +1 -12
- package/utils/abort-signal.js +1 -12
- package/utils/abort-signal.test.d.cts +1 -0
- package/utils/abort-signal.test.d.ts +1 -0
- package/utils/binary/compat.cjs +14 -0
- package/utils/binary/compat.js +14 -0
- package/utils/early-timer.cjs +3 -11
- package/utils/early-timer.js +3 -11
- package/utils/early-timer.test.d.cts +1 -0
- package/utils/early-timer.test.d.ts +1 -0
- package/utils/function-utils.cjs +9 -4
- package/utils/function-utils.js +9 -4
- package/utils/links/bots.cjs +3 -0
- package/utils/links/bots.js +3 -0
- package/utils/peer-utils.cjs +8 -0
- package/utils/peer-utils.js +8 -0
package/methods.cjs
CHANGED
|
@@ -88,6 +88,14 @@ const toggleJoinToSend = require("./highlevel/methods/chats/toggle-join-to-send.
|
|
|
88
88
|
const transferChatOwnership = require("./highlevel/methods/chats/transfer-chat-ownership.cjs");
|
|
89
89
|
const unarchiveChats = require("./highlevel/methods/chats/unarchive-chats.cjs");
|
|
90
90
|
const unbanChatMember = require("./highlevel/methods/chats/unban-chat-member.cjs");
|
|
91
|
+
const banCommunityParticipant = require("./highlevel/methods/communities/ban-community-participant.cjs");
|
|
92
|
+
const createCommunity = require("./highlevel/methods/communities/create-community.cjs");
|
|
93
|
+
const getCommunityLinkRequests = require("./highlevel/methods/communities/get-community-link-requests.cjs");
|
|
94
|
+
const getCommunityParticipantChats = require("./highlevel/methods/communities/get-community-participant-chats.cjs");
|
|
95
|
+
const getJoinedCommunities = require("./highlevel/methods/communities/get-joined-communities.cjs");
|
|
96
|
+
const hideCommunityLinkRequest = require("./highlevel/methods/communities/hide-community-link-request.cjs");
|
|
97
|
+
const linkCommunityPeer = require("./highlevel/methods/communities/link-community-peer.cjs");
|
|
98
|
+
const toggleCommunityCollapsed = require("./highlevel/methods/communities/toggle-community-collapsed.cjs");
|
|
91
99
|
const addContact = require("./highlevel/methods/contacts/add-contact.cjs");
|
|
92
100
|
const deleteContacts = require("./highlevel/methods/contacts/delete-contacts.cjs");
|
|
93
101
|
const getContacts = require("./highlevel/methods/contacts/get-contacts.cjs");
|
|
@@ -104,6 +112,10 @@ const getPeerDialogs = require("./highlevel/methods/dialogs/get-peer-dialogs.cjs
|
|
|
104
112
|
const iterDialogs = require("./highlevel/methods/dialogs/iter-dialogs.cjs");
|
|
105
113
|
const joinChatlist = require("./highlevel/methods/dialogs/join-chatlist.cjs");
|
|
106
114
|
const setFoldersOrder = require("./highlevel/methods/dialogs/set-folders-order.cjs");
|
|
115
|
+
const deleteEphemeralMessage = require("./highlevel/methods/ephemeral/delete-ephemeral-message.cjs");
|
|
116
|
+
const editEphemeralMessage = require("./highlevel/methods/ephemeral/edit-ephemeral-message.cjs");
|
|
117
|
+
const getEphemeralCallbackAnswer = require("./highlevel/methods/ephemeral/get-ephemeral-callback-answer.cjs");
|
|
118
|
+
const sendEphemeralMessage = require("./highlevel/methods/ephemeral/send-ephemeral-message.cjs");
|
|
107
119
|
const downloadBuffer = require("./highlevel/methods/files/download-buffer.cjs");
|
|
108
120
|
const downloadChunk = require("./highlevel/methods/files/download-chunk.cjs");
|
|
109
121
|
const downloadIterable = require("./highlevel/methods/files/download-iterable.cjs");
|
|
@@ -376,6 +388,17 @@ exports.toggleJoinToSend = toggleJoinToSend.toggleJoinToSend;
|
|
|
376
388
|
exports.transferChatOwnership = transferChatOwnership.transferChatOwnership;
|
|
377
389
|
exports.unarchiveChats = unarchiveChats.unarchiveChats;
|
|
378
390
|
exports.unbanChatMember = unbanChatMember.unbanChatMember;
|
|
391
|
+
exports.banCommunityParticipant = banCommunityParticipant.banCommunityParticipant;
|
|
392
|
+
exports.unbanCommunityParticipant = banCommunityParticipant.unbanCommunityParticipant;
|
|
393
|
+
exports.createCommunity = createCommunity.createCommunity;
|
|
394
|
+
exports.getCommunityLinkRequests = getCommunityLinkRequests.getCommunityLinkRequests;
|
|
395
|
+
exports.getCommunityParticipantChats = getCommunityParticipantChats.getCommunityParticipantChats;
|
|
396
|
+
exports.getJoinedCommunities = getJoinedCommunities.getJoinedCommunities;
|
|
397
|
+
exports.hideAllCommunityLinkRequests = hideCommunityLinkRequest.hideAllCommunityLinkRequests;
|
|
398
|
+
exports.hideCommunityLinkRequest = hideCommunityLinkRequest.hideCommunityLinkRequest;
|
|
399
|
+
exports.linkCommunityPeer = linkCommunityPeer.linkCommunityPeer;
|
|
400
|
+
exports.unlinkCommunityPeer = linkCommunityPeer.unlinkCommunityPeer;
|
|
401
|
+
exports.toggleCommunityCollapsed = toggleCommunityCollapsed.toggleCommunityCollapsed;
|
|
379
402
|
exports.addContact = addContact.addContact;
|
|
380
403
|
exports.deleteContacts = deleteContacts.deleteContacts;
|
|
381
404
|
exports.getContacts = getContacts.getContacts;
|
|
@@ -392,6 +415,10 @@ exports.getPeerDialogs = getPeerDialogs.getPeerDialogs;
|
|
|
392
415
|
exports.iterDialogs = iterDialogs.iterDialogs;
|
|
393
416
|
exports.joinChatlist = joinChatlist.joinChatlist;
|
|
394
417
|
exports.setFoldersOrder = setFoldersOrder.setFoldersOrder;
|
|
418
|
+
exports.deleteEphemeralMessage = deleteEphemeralMessage.deleteEphemeralMessage;
|
|
419
|
+
exports.editEphemeralMessage = editEphemeralMessage.editEphemeralMessage;
|
|
420
|
+
exports.getEphemeralCallbackAnswer = getEphemeralCallbackAnswer.getEphemeralCallbackAnswer;
|
|
421
|
+
exports.sendEphemeralMessage = sendEphemeralMessage.sendEphemeralMessage;
|
|
395
422
|
exports.downloadAsBuffer = downloadBuffer.downloadAsBuffer;
|
|
396
423
|
exports.downloadChunk = downloadChunk.downloadChunk;
|
|
397
424
|
exports._normalizeFileDownloadLocation = downloadIterable._normalizeFileDownloadLocation;
|
package/methods.js
CHANGED
|
@@ -81,6 +81,14 @@ import { toggleJoinToSend } from "./highlevel/methods/chats/toggle-join-to-send.
|
|
|
81
81
|
import { transferChatOwnership } from "./highlevel/methods/chats/transfer-chat-ownership.js";
|
|
82
82
|
import { unarchiveChats } from "./highlevel/methods/chats/unarchive-chats.js";
|
|
83
83
|
import { unbanChatMember } from "./highlevel/methods/chats/unban-chat-member.js";
|
|
84
|
+
import { banCommunityParticipant, unbanCommunityParticipant } from "./highlevel/methods/communities/ban-community-participant.js";
|
|
85
|
+
import { createCommunity } from "./highlevel/methods/communities/create-community.js";
|
|
86
|
+
import { getCommunityLinkRequests } from "./highlevel/methods/communities/get-community-link-requests.js";
|
|
87
|
+
import { getCommunityParticipantChats } from "./highlevel/methods/communities/get-community-participant-chats.js";
|
|
88
|
+
import { getJoinedCommunities } from "./highlevel/methods/communities/get-joined-communities.js";
|
|
89
|
+
import { hideAllCommunityLinkRequests, hideCommunityLinkRequest } from "./highlevel/methods/communities/hide-community-link-request.js";
|
|
90
|
+
import { linkCommunityPeer, unlinkCommunityPeer } from "./highlevel/methods/communities/link-community-peer.js";
|
|
91
|
+
import { toggleCommunityCollapsed } from "./highlevel/methods/communities/toggle-community-collapsed.js";
|
|
84
92
|
import { addContact } from "./highlevel/methods/contacts/add-contact.js";
|
|
85
93
|
import { deleteContacts } from "./highlevel/methods/contacts/delete-contacts.js";
|
|
86
94
|
import { getContacts } from "./highlevel/methods/contacts/get-contacts.js";
|
|
@@ -97,6 +105,10 @@ import { getPeerDialogs } from "./highlevel/methods/dialogs/get-peer-dialogs.js"
|
|
|
97
105
|
import { iterDialogs } from "./highlevel/methods/dialogs/iter-dialogs.js";
|
|
98
106
|
import { joinChatlist } from "./highlevel/methods/dialogs/join-chatlist.js";
|
|
99
107
|
import { setFoldersOrder } from "./highlevel/methods/dialogs/set-folders-order.js";
|
|
108
|
+
import { deleteEphemeralMessage } from "./highlevel/methods/ephemeral/delete-ephemeral-message.js";
|
|
109
|
+
import { editEphemeralMessage } from "./highlevel/methods/ephemeral/edit-ephemeral-message.js";
|
|
110
|
+
import { getEphemeralCallbackAnswer } from "./highlevel/methods/ephemeral/get-ephemeral-callback-answer.js";
|
|
111
|
+
import { sendEphemeralMessage } from "./highlevel/methods/ephemeral/send-ephemeral-message.js";
|
|
100
112
|
import { downloadAsBuffer } from "./highlevel/methods/files/download-buffer.js";
|
|
101
113
|
import { downloadChunk } from "./highlevel/methods/files/download-chunk.js";
|
|
102
114
|
import { _normalizeFileDownloadLocation, downloadAsIterable } from "./highlevel/methods/files/download-iterable.js";
|
|
@@ -303,6 +315,7 @@ export {
|
|
|
303
315
|
applyBoost,
|
|
304
316
|
archiveChats,
|
|
305
317
|
banChatMember,
|
|
318
|
+
banCommunityParticipant,
|
|
306
319
|
blockUser,
|
|
307
320
|
buyResaleGift,
|
|
308
321
|
canApplyBoost,
|
|
@@ -318,6 +331,7 @@ export {
|
|
|
318
331
|
commentText,
|
|
319
332
|
createBusinessChatLink,
|
|
320
333
|
createChannel,
|
|
334
|
+
createCommunity,
|
|
321
335
|
createFolder,
|
|
322
336
|
createForumTopic,
|
|
323
337
|
createGroup,
|
|
@@ -330,6 +344,7 @@ export {
|
|
|
330
344
|
deleteChannel,
|
|
331
345
|
deleteChatPhoto,
|
|
332
346
|
deleteContacts,
|
|
347
|
+
deleteEphemeralMessage,
|
|
333
348
|
deleteFolder,
|
|
334
349
|
deleteForumTopicHistory,
|
|
335
350
|
deleteGroup,
|
|
@@ -351,6 +366,7 @@ export {
|
|
|
351
366
|
editChatMemberRank,
|
|
352
367
|
editCloseFriends,
|
|
353
368
|
editCloseFriendsRaw,
|
|
369
|
+
editEphemeralMessage,
|
|
354
370
|
editFolder,
|
|
355
371
|
editForumTopic,
|
|
356
372
|
editInlineMessage,
|
|
@@ -383,11 +399,14 @@ export {
|
|
|
383
399
|
getChats,
|
|
384
400
|
getCollectibleInfo,
|
|
385
401
|
getCommonChats,
|
|
402
|
+
getCommunityLinkRequests,
|
|
403
|
+
getCommunityParticipantChats,
|
|
386
404
|
getContacts,
|
|
387
405
|
getCreatorAfterLeave,
|
|
388
406
|
getCustomEmojis,
|
|
389
407
|
getCustomEmojisFromMessages,
|
|
390
408
|
getDiscussionMessage,
|
|
409
|
+
getEphemeralCallbackAnswer,
|
|
391
410
|
getFactCheck,
|
|
392
411
|
getFolders,
|
|
393
412
|
getForumTopics,
|
|
@@ -402,6 +421,7 @@ export {
|
|
|
402
421
|
getInviteLink,
|
|
403
422
|
getInviteLinkMembers,
|
|
404
423
|
getInviteLinks,
|
|
424
|
+
getJoinedCommunities,
|
|
405
425
|
getMe,
|
|
406
426
|
getMessageAuthor,
|
|
407
427
|
getMessageByLink,
|
|
@@ -446,7 +466,9 @@ export {
|
|
|
446
466
|
getUser,
|
|
447
467
|
getUsers,
|
|
448
468
|
getWebPagePreview,
|
|
469
|
+
hideAllCommunityLinkRequests,
|
|
449
470
|
hideAllJoinRequests,
|
|
471
|
+
hideCommunityLinkRequest,
|
|
450
472
|
hideJoinRequest,
|
|
451
473
|
hideMyStoriesViews,
|
|
452
474
|
importContacts,
|
|
@@ -476,6 +498,7 @@ export {
|
|
|
476
498
|
joinChatlist,
|
|
477
499
|
kickChatMember,
|
|
478
500
|
leaveChat,
|
|
501
|
+
linkCommunityPeer,
|
|
479
502
|
logOut,
|
|
480
503
|
markChatUnread,
|
|
481
504
|
moveStickerInSet,
|
|
@@ -517,6 +540,7 @@ export {
|
|
|
517
540
|
sendCode,
|
|
518
541
|
sendCopy,
|
|
519
542
|
sendCopyGroup,
|
|
543
|
+
sendEphemeralMessage,
|
|
520
544
|
sendMedia,
|
|
521
545
|
sendMediaGroup,
|
|
522
546
|
sendOnline,
|
|
@@ -565,6 +589,7 @@ export {
|
|
|
565
589
|
signInQr,
|
|
566
590
|
start,
|
|
567
591
|
startTest,
|
|
592
|
+
toggleCommunityCollapsed,
|
|
568
593
|
toggleContentProtection,
|
|
569
594
|
toggleEmojiStatusPermission,
|
|
570
595
|
toggleForumTopicClosed,
|
|
@@ -583,7 +608,9 @@ export {
|
|
|
583
608
|
translateText,
|
|
584
609
|
unarchiveChats,
|
|
585
610
|
unbanChatMember,
|
|
611
|
+
unbanCommunityParticipant,
|
|
586
612
|
unblockUser,
|
|
613
|
+
unlinkCommunityPeer,
|
|
587
614
|
unpinAllMessages,
|
|
588
615
|
unpinMessage,
|
|
589
616
|
unsaveMusicFromProfile,
|
package/network/client.cjs
CHANGED
|
@@ -70,7 +70,6 @@ class MtClient {
|
|
|
70
70
|
onConnecting: this.onConnecting.emit.bind(this.onConnecting),
|
|
71
71
|
onNetworkChanged: this.onNetworkChanged.emit.bind(this.onNetworkChanged),
|
|
72
72
|
onUpdate: this.onUpdate.emit.bind(this.onUpdate),
|
|
73
|
-
stopSignal: this.stopSignal,
|
|
74
73
|
platform: params.platform,
|
|
75
74
|
...miscUtils.dropUndefined(params.network)
|
|
76
75
|
},
|
|
@@ -106,6 +105,7 @@ class MtClient {
|
|
|
106
105
|
log;
|
|
107
106
|
network;
|
|
108
107
|
_abortController;
|
|
108
|
+
/** Signal that is aborted when the client is destroyed */
|
|
109
109
|
stopSignal;
|
|
110
110
|
onUsable = new utils.Emitter();
|
|
111
111
|
onConnecting = new utils.Emitter();
|
|
@@ -143,12 +143,11 @@ class MtClient {
|
|
|
143
143
|
return this._connect.run();
|
|
144
144
|
}
|
|
145
145
|
async disconnect() {
|
|
146
|
-
await this.network.
|
|
146
|
+
await this.network.disconnect();
|
|
147
147
|
await this.storage.save();
|
|
148
148
|
this._config.destroy();
|
|
149
149
|
this._prepare.reset();
|
|
150
150
|
this._connect.reset();
|
|
151
|
-
this._abortController.abort();
|
|
152
151
|
this.log.debug("client disconnected");
|
|
153
152
|
}
|
|
154
153
|
/**
|
|
@@ -157,6 +156,8 @@ class MtClient {
|
|
|
157
156
|
* **Note**: must be called *after* {@link disconnect}
|
|
158
157
|
*/
|
|
159
158
|
async destroy() {
|
|
159
|
+
this._abortController.abort();
|
|
160
|
+
await this.network.destroy();
|
|
160
161
|
await this.storage.destroy();
|
|
161
162
|
this.log.debug("client destroyed");
|
|
162
163
|
}
|
package/network/client.d.cts
CHANGED
|
@@ -156,6 +156,7 @@ export declare class MtClient {
|
|
|
156
156
|
readonly log: Logger;
|
|
157
157
|
readonly network: NetworkManager;
|
|
158
158
|
private _abortController;
|
|
159
|
+
/** Signal that is aborted when the client is destroyed */
|
|
159
160
|
readonly stopSignal: AbortSignal;
|
|
160
161
|
readonly onUsable: Emitter<void>;
|
|
161
162
|
readonly onConnecting: Emitter<void>;
|
package/network/client.d.ts
CHANGED
|
@@ -156,6 +156,7 @@ export declare class MtClient {
|
|
|
156
156
|
readonly log: Logger;
|
|
157
157
|
readonly network: NetworkManager;
|
|
158
158
|
private _abortController;
|
|
159
|
+
/** Signal that is aborted when the client is destroyed */
|
|
159
160
|
readonly stopSignal: AbortSignal;
|
|
160
161
|
readonly onUsable: Emitter<void>;
|
|
161
162
|
readonly onConnecting: Emitter<void>;
|
package/network/client.js
CHANGED
|
@@ -63,7 +63,6 @@ class MtClient {
|
|
|
63
63
|
onConnecting: this.onConnecting.emit.bind(this.onConnecting),
|
|
64
64
|
onNetworkChanged: this.onNetworkChanged.emit.bind(this.onNetworkChanged),
|
|
65
65
|
onUpdate: this.onUpdate.emit.bind(this.onUpdate),
|
|
66
|
-
stopSignal: this.stopSignal,
|
|
67
66
|
platform: params.platform,
|
|
68
67
|
...dropUndefined(params.network)
|
|
69
68
|
},
|
|
@@ -99,6 +98,7 @@ class MtClient {
|
|
|
99
98
|
log;
|
|
100
99
|
network;
|
|
101
100
|
_abortController;
|
|
101
|
+
/** Signal that is aborted when the client is destroyed */
|
|
102
102
|
stopSignal;
|
|
103
103
|
onUsable = new Emitter();
|
|
104
104
|
onConnecting = new Emitter();
|
|
@@ -136,12 +136,11 @@ class MtClient {
|
|
|
136
136
|
return this._connect.run();
|
|
137
137
|
}
|
|
138
138
|
async disconnect() {
|
|
139
|
-
await this.network.
|
|
139
|
+
await this.network.disconnect();
|
|
140
140
|
await this.storage.save();
|
|
141
141
|
this._config.destroy();
|
|
142
142
|
this._prepare.reset();
|
|
143
143
|
this._connect.reset();
|
|
144
|
-
this._abortController.abort();
|
|
145
144
|
this.log.debug("client disconnected");
|
|
146
145
|
}
|
|
147
146
|
/**
|
|
@@ -150,6 +149,8 @@ class MtClient {
|
|
|
150
149
|
* **Note**: must be called *after* {@link disconnect}
|
|
151
150
|
*/
|
|
152
151
|
async destroy() {
|
|
152
|
+
this._abortController.abort();
|
|
153
|
+
await this.network.destroy();
|
|
153
154
|
await this.storage.destroy();
|
|
154
155
|
this.log.debug("client destroyed");
|
|
155
156
|
}
|
|
@@ -35,7 +35,7 @@ function floodWaiter(options) {
|
|
|
35
35
|
if (delta <= minStoredWait) {
|
|
36
36
|
storage.delete(method);
|
|
37
37
|
} else if (delta <= floodSleepThreshold) {
|
|
38
|
-
await miscUtils.sleepWithAbort(delta, abortSignal.combineAbortSignals(ctx.manager.
|
|
38
|
+
await miscUtils.sleepWithAbort(delta, abortSignal.combineAbortSignals(ctx.manager.teardownSignal, ctx.params?.abortSignal));
|
|
39
39
|
storage.delete(method);
|
|
40
40
|
} else {
|
|
41
41
|
return {
|
|
@@ -74,7 +74,7 @@ function floodWaiter(options) {
|
|
|
74
74
|
}
|
|
75
75
|
await miscUtils.sleepWithAbort(
|
|
76
76
|
ms,
|
|
77
|
-
abortSignal.combineAbortSignals(ctx.manager.
|
|
77
|
+
abortSignal.combineAbortSignals(ctx.manager.teardownSignal, ctx.params?.abortSignal)
|
|
78
78
|
);
|
|
79
79
|
continue;
|
|
80
80
|
}
|
|
@@ -28,7 +28,7 @@ function floodWaiter(options) {
|
|
|
28
28
|
if (delta <= minStoredWait) {
|
|
29
29
|
storage.delete(method);
|
|
30
30
|
} else if (delta <= floodSleepThreshold) {
|
|
31
|
-
await sleepWithAbort(delta, combineAbortSignals(ctx.manager.
|
|
31
|
+
await sleepWithAbort(delta, combineAbortSignals(ctx.manager.teardownSignal, ctx.params?.abortSignal));
|
|
32
32
|
storage.delete(method);
|
|
33
33
|
} else {
|
|
34
34
|
return {
|
|
@@ -67,7 +67,7 @@ function floodWaiter(options) {
|
|
|
67
67
|
}
|
|
68
68
|
await sleepWithAbort(
|
|
69
69
|
ms,
|
|
70
|
-
combineAbortSignals(ctx.manager.
|
|
70
|
+
combineAbortSignals(ctx.manager.teardownSignal, ctx.params?.abortSignal)
|
|
71
71
|
);
|
|
72
72
|
continue;
|
|
73
73
|
}
|
|
@@ -50,7 +50,7 @@ function internalErrorsHandler(params) {
|
|
|
50
50
|
if (waitSeconds > 0) {
|
|
51
51
|
await miscUtils.sleepWithAbort(
|
|
52
52
|
waitSeconds * 1e3,
|
|
53
|
-
abortSignal.combineAbortSignals(ctx.manager.
|
|
53
|
+
abortSignal.combineAbortSignals(ctx.manager.teardownSignal, ctx.params?.abortSignal)
|
|
54
54
|
);
|
|
55
55
|
}
|
|
56
56
|
continue;
|
|
@@ -43,7 +43,7 @@ function internalErrorsHandler(params) {
|
|
|
43
43
|
if (waitSeconds > 0) {
|
|
44
44
|
await sleepWithAbort(
|
|
45
45
|
waitSeconds * 1e3,
|
|
46
|
-
combineAbortSignals(ctx.manager.
|
|
46
|
+
combineAbortSignals(ctx.manager.teardownSignal, ctx.params?.abortSignal)
|
|
47
47
|
);
|
|
48
48
|
}
|
|
49
49
|
continue;
|
|
@@ -52,7 +52,7 @@ function mediaThrottle(params) {
|
|
|
52
52
|
const dcId = ctx.params?.dcId ?? ctx.manager.getPrimaryDcId();
|
|
53
53
|
const limiter = getLimiter(kind, dcId, ctx.manager.params.isPremium);
|
|
54
54
|
if (!limiter.tryAcquire(bytes)) {
|
|
55
|
-
const abortSignal$1 = abortSignal.combineAbortSignals(ctx.manager.
|
|
55
|
+
const abortSignal$1 = abortSignal.combineAbortSignals(ctx.manager.teardownSignal, ctx.params?.abortSignal);
|
|
56
56
|
await limiter.acquire(bytes, abortSignal$1);
|
|
57
57
|
}
|
|
58
58
|
try {
|
|
@@ -45,7 +45,7 @@ function mediaThrottle(params) {
|
|
|
45
45
|
const dcId = ctx.params?.dcId ?? ctx.manager.getPrimaryDcId();
|
|
46
46
|
const limiter = getLimiter(kind, dcId, ctx.manager.params.isPremium);
|
|
47
47
|
if (!limiter.tryAcquire(bytes)) {
|
|
48
|
-
const abortSignal = combineAbortSignals(ctx.manager.
|
|
48
|
+
const abortSignal = combineAbortSignals(ctx.manager.teardownSignal, ctx.params?.abortSignal);
|
|
49
49
|
await limiter.acquire(bytes, abortSignal);
|
|
50
50
|
}
|
|
51
51
|
try {
|
|
@@ -11,6 +11,7 @@ const errors = require("../../types/errors.cjs");
|
|
|
11
11
|
const _fakeTls = require("./_fake-tls.cjs");
|
|
12
12
|
const obfuscated = require("../transports/obfuscated.cjs");
|
|
13
13
|
const intermediate = require("../transports/intermediate.cjs");
|
|
14
|
+
const abstract = require("../transports/abstract.cjs");
|
|
14
15
|
const MAX_DOMAIN_LENGTH = 182;
|
|
15
16
|
const TLS_START_SERVER = [
|
|
16
17
|
new Uint8Array([22, 3, 3]),
|
|
@@ -86,13 +87,13 @@ class BaseMtProxyTransport {
|
|
|
86
87
|
new obfuscated.ObfuscatedPacketCodec(new intermediate.PaddedIntermediatePacketCodec(), proxy)
|
|
87
88
|
);
|
|
88
89
|
}
|
|
89
|
-
async connect() {
|
|
90
|
+
async connect(_dc, abortSignal) {
|
|
90
91
|
const conn = await this._connectTcp({
|
|
91
92
|
address: this._proxy.host,
|
|
92
93
|
port: this._proxy.port
|
|
93
|
-
});
|
|
94
|
+
}, abortSignal);
|
|
94
95
|
if (this._fakeTlsDomain) {
|
|
95
|
-
await this._handleConnectFakeTls(conn);
|
|
96
|
+
await abstract.performHandshakeWithAbort(conn, abortSignal, () => this._handleConnectFakeTls(conn));
|
|
96
97
|
}
|
|
97
98
|
return conn;
|
|
98
99
|
}
|
|
@@ -23,7 +23,7 @@ export interface MtProxySettings {
|
|
|
23
23
|
* Base for a TCP transport that connects via an MTProxy
|
|
24
24
|
*/
|
|
25
25
|
export declare abstract class BaseMtProxyTransport implements TelegramTransport {
|
|
26
|
-
abstract _connectTcp(endpoint: TcpEndpoint): Promise<ITcpConnection>;
|
|
26
|
+
abstract _connectTcp(endpoint: TcpEndpoint, abortSignal: AbortSignal): Promise<ITcpConnection>;
|
|
27
27
|
readonly _proxy: MtProxySettings;
|
|
28
28
|
private _rawSecret;
|
|
29
29
|
private _randomPadding;
|
|
@@ -37,6 +37,6 @@ export declare abstract class BaseMtProxyTransport implements TelegramTransport
|
|
|
37
37
|
constructor(proxy: MtProxySettings);
|
|
38
38
|
getMtproxyInfo(): tl.RawInputClientProxy;
|
|
39
39
|
packetCodec(dc: BasicDcOption): IPacketCodec;
|
|
40
|
-
connect(): Promise<ITelegramConnection>;
|
|
40
|
+
connect(_dc: BasicDcOption, abortSignal: AbortSignal): Promise<ITelegramConnection>;
|
|
41
41
|
private _handleConnectFakeTls;
|
|
42
42
|
}
|
|
@@ -23,7 +23,7 @@ export interface MtProxySettings {
|
|
|
23
23
|
* Base for a TCP transport that connects via an MTProxy
|
|
24
24
|
*/
|
|
25
25
|
export declare abstract class BaseMtProxyTransport implements TelegramTransport {
|
|
26
|
-
abstract _connectTcp(endpoint: TcpEndpoint): Promise<ITcpConnection>;
|
|
26
|
+
abstract _connectTcp(endpoint: TcpEndpoint, abortSignal: AbortSignal): Promise<ITcpConnection>;
|
|
27
27
|
readonly _proxy: MtProxySettings;
|
|
28
28
|
private _rawSecret;
|
|
29
29
|
private _randomPadding;
|
|
@@ -37,6 +37,6 @@ export declare abstract class BaseMtProxyTransport implements TelegramTransport
|
|
|
37
37
|
constructor(proxy: MtProxySettings);
|
|
38
38
|
getMtproxyInfo(): tl.RawInputClientProxy;
|
|
39
39
|
packetCodec(dc: BasicDcOption): IPacketCodec;
|
|
40
|
-
connect(): Promise<ITelegramConnection>;
|
|
40
|
+
connect(_dc: BasicDcOption, abortSignal: AbortSignal): Promise<ITelegramConnection>;
|
|
41
41
|
private _handleConnectFakeTls;
|
|
42
42
|
}
|
package/network/mtproxy/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { MtSecurityError, MtUnsupportedError } from "../../types/errors.js";
|
|
|
4
4
|
import { FakeTlsPacketCodec, generateFakeTlsHeader } from "./_fake-tls.js";
|
|
5
5
|
import { ObfuscatedPacketCodec } from "../transports/obfuscated.js";
|
|
6
6
|
import { PaddedIntermediatePacketCodec, IntermediatePacketCodec } from "../transports/intermediate.js";
|
|
7
|
+
import { performHandshakeWithAbort } from "../transports/abstract.js";
|
|
7
8
|
const MAX_DOMAIN_LENGTH = 182;
|
|
8
9
|
const TLS_START_SERVER = [
|
|
9
10
|
new Uint8Array([22, 3, 3]),
|
|
@@ -79,13 +80,13 @@ class BaseMtProxyTransport {
|
|
|
79
80
|
new ObfuscatedPacketCodec(new PaddedIntermediatePacketCodec(), proxy)
|
|
80
81
|
);
|
|
81
82
|
}
|
|
82
|
-
async connect() {
|
|
83
|
+
async connect(_dc, abortSignal) {
|
|
83
84
|
const conn = await this._connectTcp({
|
|
84
85
|
address: this._proxy.host,
|
|
85
86
|
port: this._proxy.port
|
|
86
|
-
});
|
|
87
|
+
}, abortSignal);
|
|
87
88
|
if (this._fakeTlsDomain) {
|
|
88
|
-
await this._handleConnectFakeTls(conn);
|
|
89
|
+
await performHandshakeWithAbort(conn, abortSignal, () => this._handleConnectFakeTls(conn));
|
|
89
90
|
}
|
|
90
91
|
return conn;
|
|
91
92
|
}
|
|
@@ -227,7 +227,7 @@ class NetworkManager {
|
|
|
227
227
|
_: "initConnection",
|
|
228
228
|
deviceModel,
|
|
229
229
|
systemVersion: "1.0",
|
|
230
|
-
appVersion: "0.
|
|
230
|
+
appVersion: "0.31.0",
|
|
231
231
|
systemLangCode: "en",
|
|
232
232
|
langPack: "",
|
|
233
233
|
// "langPacks are for official apps only"
|
|
@@ -279,34 +279,45 @@ class NetworkManager {
|
|
|
279
279
|
return { main, media };
|
|
280
280
|
}
|
|
281
281
|
_resetOnNetworkChange;
|
|
282
|
+
_destroyed = false;
|
|
283
|
+
_teardownAbort = new AbortController();
|
|
284
|
+
/** Signal that is aborted when the network manager is disconnected or destroyed */
|
|
285
|
+
get teardownSignal() {
|
|
286
|
+
return this._teardownAbort.signal;
|
|
287
|
+
}
|
|
288
|
+
_onPrimaryUsable = () => this.params.onUsable();
|
|
289
|
+
_onPrimaryWait = () => this.params.onConnecting();
|
|
290
|
+
_onPrimaryUpdate = (update) => this._updateHandler(update, false);
|
|
282
291
|
_switchPrimaryDc(dc) {
|
|
283
292
|
if (this._primaryDc && this._primaryDc !== dc) {
|
|
284
293
|
this._primaryDc.setIsPrimary(false);
|
|
294
|
+
this._primaryDc.main.onUsable.remove(this._onPrimaryUsable);
|
|
295
|
+
this._primaryDc.main.onWait.remove(this._onPrimaryWait);
|
|
296
|
+
this._primaryDc.main.onUpdate.remove(this._onPrimaryUpdate);
|
|
285
297
|
}
|
|
286
298
|
this._primaryDc = dc;
|
|
287
299
|
dc.setIsPrimary(true);
|
|
288
300
|
this.params.onConnecting();
|
|
289
|
-
dc.main.onUsable.
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
dc.main.onWait.add(
|
|
294
|
-
|
|
295
|
-
this.params.onConnecting();
|
|
296
|
-
});
|
|
297
|
-
dc.main.onUpdate.add((update) => {
|
|
298
|
-
this._updateHandler(update, false);
|
|
299
|
-
});
|
|
301
|
+
dc.main.onUsable.remove(this._onPrimaryUsable);
|
|
302
|
+
dc.main.onWait.remove(this._onPrimaryWait);
|
|
303
|
+
dc.main.onUpdate.remove(this._onPrimaryUpdate);
|
|
304
|
+
dc.main.onUsable.add(this._onPrimaryUsable);
|
|
305
|
+
dc.main.onWait.add(this._onPrimaryWait);
|
|
306
|
+
dc.main.onUpdate.add(this._onPrimaryUpdate);
|
|
300
307
|
return dc.loadKeys().then(() => dc.main.ensureConnected());
|
|
301
308
|
}
|
|
302
309
|
_dcCreationPromise = /* @__PURE__ */ new Map();
|
|
303
310
|
async _getOtherDc(dcId) {
|
|
311
|
+
if (this._destroyed) {
|
|
312
|
+
throw new errors.MtcuteError("Network manager is destroyed");
|
|
313
|
+
}
|
|
304
314
|
if (!this._dcConnections.has(dcId)) {
|
|
305
315
|
if (this._dcCreationPromise.has(dcId)) {
|
|
306
316
|
await this._dcCreationPromise.get(dcId);
|
|
307
317
|
return utils.asNonNull(this._dcConnections.get(dcId));
|
|
308
318
|
}
|
|
309
319
|
const promise = new utils.Deferred();
|
|
320
|
+
promise.promise.catch(utils.noop);
|
|
310
321
|
this._dcCreationPromise.set(dcId, promise.promise);
|
|
311
322
|
this._log.debug("creating new DC %d", dcId);
|
|
312
323
|
try {
|
|
@@ -323,7 +334,7 @@ class NetworkManager {
|
|
|
323
334
|
this._log.debug("dc %d was not created: %e", dcId, e);
|
|
324
335
|
promise.reject(e);
|
|
325
336
|
this._dcCreationPromise.delete(dcId);
|
|
326
|
-
|
|
337
|
+
throw e;
|
|
327
338
|
}
|
|
328
339
|
}
|
|
329
340
|
return this._dcConnections.get(dcId);
|
|
@@ -334,9 +345,15 @@ class NetworkManager {
|
|
|
334
345
|
* @param defaultDcs Default DCs to connect to
|
|
335
346
|
*/
|
|
336
347
|
async connect(defaultDcs) {
|
|
348
|
+
if (this._destroyed) {
|
|
349
|
+
throw new errors.MtcuteError("Network manager is destroyed");
|
|
350
|
+
}
|
|
337
351
|
if (defaultDcs.main.id !== defaultDcs.media.id) {
|
|
338
352
|
throw new errors.MtArgumentError("Default DCs must be the same");
|
|
339
353
|
}
|
|
354
|
+
if (this._teardownAbort.signal.aborted) {
|
|
355
|
+
this._teardownAbort = new AbortController();
|
|
356
|
+
}
|
|
340
357
|
if (this._dcConnections.has(defaultDcs.main.id)) {
|
|
341
358
|
throw new errors.MtArgumentError("DC manager already exists");
|
|
342
359
|
}
|
|
@@ -375,11 +392,12 @@ class NetworkManager {
|
|
|
375
392
|
}
|
|
376
393
|
typeAssertions.assertTypeIs("auth.importAuthorization", res, "auth.authorization");
|
|
377
394
|
promise.resolve();
|
|
378
|
-
this._pendingExports.delete(manager.dcId);
|
|
379
395
|
} catch (e) {
|
|
380
396
|
this._log.warn("failed to export auth to dc %d: %s", manager.dcId, e);
|
|
381
397
|
promise.reject(e);
|
|
382
398
|
throw e;
|
|
399
|
+
} finally {
|
|
400
|
+
this._pendingExports.delete(manager.dcId);
|
|
383
401
|
}
|
|
384
402
|
}
|
|
385
403
|
setIsPremium(isPremium) {
|
|
@@ -449,6 +467,9 @@ class NetworkManager {
|
|
|
449
467
|
}
|
|
450
468
|
}
|
|
451
469
|
async changePrimaryDc(newDc) {
|
|
470
|
+
if (this._destroyed) {
|
|
471
|
+
throw new errors.MtcuteError("Network manager is destroyed");
|
|
472
|
+
}
|
|
452
473
|
if (newDc === this._primaryDc?.dcId) return;
|
|
453
474
|
const options = await this._findDcOptions(newDc);
|
|
454
475
|
if (!this._dcConnections.has(newDc)) {
|
|
@@ -581,13 +602,20 @@ class NetworkManager {
|
|
|
581
602
|
if (!this._primaryDc) throw new errors.MtcuteError("Not connected to any DC");
|
|
582
603
|
return this._primaryDc.dcId;
|
|
583
604
|
}
|
|
584
|
-
async
|
|
605
|
+
async disconnect() {
|
|
606
|
+
this._teardownAbort.abort();
|
|
607
|
+
this._primaryDc = void 0;
|
|
585
608
|
for (const dc of this._dcConnections.values()) {
|
|
586
609
|
await dc.destroy();
|
|
587
610
|
}
|
|
588
611
|
this._dcConnections.clear();
|
|
589
|
-
this.config.onUpdated.remove(this._onConfigChanged);
|
|
590
612
|
this._resetOnNetworkChange?.();
|
|
613
|
+
this._resetOnNetworkChange = void 0;
|
|
614
|
+
}
|
|
615
|
+
async destroy() {
|
|
616
|
+
this._destroyed = true;
|
|
617
|
+
await this.disconnect();
|
|
618
|
+
this.config.onUpdated.remove(this._onConfigChanged);
|
|
591
619
|
}
|
|
592
620
|
getMtprotoMessageId() {
|
|
593
621
|
return this._primaryDc.main._connections[0]._session.getMessageId();
|
|
@@ -36,7 +36,6 @@ export interface NetworkManagerParams {
|
|
|
36
36
|
onUsable: () => void;
|
|
37
37
|
onConnecting: () => void;
|
|
38
38
|
onNetworkChanged: (connected: boolean) => void;
|
|
39
|
-
stopSignal: AbortSignal;
|
|
40
39
|
}
|
|
41
40
|
export type ConnectionCountDelegate = (kind: ConnectionKind, dcId: number, isPremium: boolean) => number;
|
|
42
41
|
/**
|
|
@@ -238,13 +237,20 @@ export declare class NetworkManager {
|
|
|
238
237
|
readonly _transport: TelegramTransport;
|
|
239
238
|
readonly _reconnectionStrategy: ReconnectionStrategy;
|
|
240
239
|
readonly _connectionCount: ConnectionCountDelegate;
|
|
241
|
-
|
|
242
|
-
|
|
240
|
+
readonly _dcConnections: Map<number, DcConnectionManager>;
|
|
241
|
+
_primaryDc?: DcConnectionManager;
|
|
243
242
|
protected _primaryDcRecreationPromise?: Deferred<void>;
|
|
244
243
|
private _updateHandler;
|
|
245
244
|
constructor(params: NetworkManagerParams & NetworkManagerExtraParams, config: ConfigManager);
|
|
246
245
|
private _findDcOptions;
|
|
247
246
|
private _resetOnNetworkChange?;
|
|
247
|
+
private _destroyed;
|
|
248
|
+
private _teardownAbort;
|
|
249
|
+
/** Signal that is aborted when the network manager is disconnected or destroyed */
|
|
250
|
+
get teardownSignal(): AbortSignal;
|
|
251
|
+
private _onPrimaryUsable;
|
|
252
|
+
private _onPrimaryWait;
|
|
253
|
+
private _onPrimaryUpdate;
|
|
248
254
|
private _switchPrimaryDc;
|
|
249
255
|
private _dcCreationPromise;
|
|
250
256
|
_getOtherDc(dcId: number): Promise<DcConnectionManager>;
|
|
@@ -271,6 +277,7 @@ export declare class NetworkManager {
|
|
|
271
277
|
changeTransport(transport: TelegramTransport): Promise<void>;
|
|
272
278
|
getPoolSize(kind: ConnectionKind, dcId?: number): number;
|
|
273
279
|
getPrimaryDcId(): number;
|
|
280
|
+
disconnect(): Promise<void>;
|
|
274
281
|
destroy(): Promise<void>;
|
|
275
282
|
getMtprotoMessageId(): Long;
|
|
276
283
|
recreateDc(dcId: number): Promise<void>;
|
|
@@ -36,7 +36,6 @@ export interface NetworkManagerParams {
|
|
|
36
36
|
onUsable: () => void;
|
|
37
37
|
onConnecting: () => void;
|
|
38
38
|
onNetworkChanged: (connected: boolean) => void;
|
|
39
|
-
stopSignal: AbortSignal;
|
|
40
39
|
}
|
|
41
40
|
export type ConnectionCountDelegate = (kind: ConnectionKind, dcId: number, isPremium: boolean) => number;
|
|
42
41
|
/**
|
|
@@ -238,13 +237,20 @@ export declare class NetworkManager {
|
|
|
238
237
|
readonly _transport: TelegramTransport;
|
|
239
238
|
readonly _reconnectionStrategy: ReconnectionStrategy;
|
|
240
239
|
readonly _connectionCount: ConnectionCountDelegate;
|
|
241
|
-
|
|
242
|
-
|
|
240
|
+
readonly _dcConnections: Map<number, DcConnectionManager>;
|
|
241
|
+
_primaryDc?: DcConnectionManager;
|
|
243
242
|
protected _primaryDcRecreationPromise?: Deferred<void>;
|
|
244
243
|
private _updateHandler;
|
|
245
244
|
constructor(params: NetworkManagerParams & NetworkManagerExtraParams, config: ConfigManager);
|
|
246
245
|
private _findDcOptions;
|
|
247
246
|
private _resetOnNetworkChange?;
|
|
247
|
+
private _destroyed;
|
|
248
|
+
private _teardownAbort;
|
|
249
|
+
/** Signal that is aborted when the network manager is disconnected or destroyed */
|
|
250
|
+
get teardownSignal(): AbortSignal;
|
|
251
|
+
private _onPrimaryUsable;
|
|
252
|
+
private _onPrimaryWait;
|
|
253
|
+
private _onPrimaryUpdate;
|
|
248
254
|
private _switchPrimaryDc;
|
|
249
255
|
private _dcCreationPromise;
|
|
250
256
|
_getOtherDc(dcId: number): Promise<DcConnectionManager>;
|
|
@@ -271,6 +277,7 @@ export declare class NetworkManager {
|
|
|
271
277
|
changeTransport(transport: TelegramTransport): Promise<void>;
|
|
272
278
|
getPoolSize(kind: ConnectionKind, dcId?: number): number;
|
|
273
279
|
getPrimaryDcId(): number;
|
|
280
|
+
disconnect(): Promise<void>;
|
|
274
281
|
destroy(): Promise<void>;
|
|
275
282
|
getMtprotoMessageId(): Long;
|
|
276
283
|
recreateDc(dcId: number): Promise<void>;
|