@mtcute/core 0.31.0 → 0.32.1
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 +12 -0
- package/client.js +12 -0
- package/highlevel/client.d.cts +79 -10
- package/highlevel/client.d.ts +79 -10
- package/highlevel/methods/chats/build-peers-index.cjs +45 -0
- package/highlevel/methods/chats/build-peers-index.d.cts +13 -0
- package/highlevel/methods/chats/build-peers-index.d.ts +13 -0
- package/highlevel/methods/chats/build-peers-index.js +40 -0
- package/highlevel/methods/ephemeral/delete-all-welcome-messages.cjs +17 -0
- package/highlevel/methods/ephemeral/delete-all-welcome-messages.d.cts +8 -0
- package/highlevel/methods/ephemeral/delete-all-welcome-messages.d.ts +8 -0
- package/highlevel/methods/ephemeral/delete-all-welcome-messages.js +12 -0
- package/highlevel/methods/ephemeral/delete-ephemeral-message.cjs +1 -1
- package/highlevel/methods/ephemeral/delete-ephemeral-message.d.cts +2 -2
- package/highlevel/methods/ephemeral/delete-ephemeral-message.d.ts +2 -2
- package/highlevel/methods/ephemeral/delete-ephemeral-message.js +1 -1
- package/highlevel/methods/ephemeral/delete-welcome-message.cjs +18 -0
- package/highlevel/methods/ephemeral/delete-welcome-message.d.cts +9 -0
- package/highlevel/methods/ephemeral/delete-welcome-message.d.ts +9 -0
- package/highlevel/methods/ephemeral/delete-welcome-message.js +13 -0
- package/highlevel/methods/ephemeral/edit-ephemeral-message.cjs +11 -3
- package/highlevel/methods/ephemeral/edit-ephemeral-message.d.cts +16 -2
- package/highlevel/methods/ephemeral/edit-ephemeral-message.d.ts +16 -2
- package/highlevel/methods/ephemeral/edit-ephemeral-message.js +11 -3
- package/highlevel/methods/ephemeral/get-welcome-messages.cjs +29 -0
- package/highlevel/methods/ephemeral/get-welcome-messages.d.cts +8 -0
- package/highlevel/methods/ephemeral/get-welcome-messages.d.ts +8 -0
- package/highlevel/methods/ephemeral/get-welcome-messages.js +24 -0
- package/highlevel/methods/ephemeral/send-ephemeral-message.cjs +13 -3
- package/highlevel/methods/ephemeral/send-ephemeral-message.d.cts +20 -2
- package/highlevel/methods/ephemeral/send-ephemeral-message.d.ts +20 -2
- package/highlevel/methods/ephemeral/send-ephemeral-message.js +13 -3
- package/highlevel/methods/files/download-iterable.cjs +3 -0
- package/highlevel/methods/files/download-iterable.js +3 -0
- package/highlevel/methods/files/normalize-input-media.cjs +25 -4
- package/highlevel/methods/files/normalize-input-media.js +25 -4
- package/highlevel/methods/forums/edit-forum-topic.cjs +1 -1
- package/highlevel/methods/forums/edit-forum-topic.js +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-closed.cjs +1 -1
- package/highlevel/methods/forums/toggle-forum-topic-closed.js +1 -1
- package/highlevel/methods/forums/toggle-general-topic-hidden.cjs +1 -1
- package/highlevel/methods/forums/toggle-general-topic-hidden.js +1 -1
- package/highlevel/methods/gifts/buy-resale-gift.cjs +5 -2
- package/highlevel/methods/gifts/buy-resale-gift.d.cts +11 -1
- package/highlevel/methods/gifts/buy-resale-gift.d.ts +11 -1
- package/highlevel/methods/gifts/buy-resale-gift.js +5 -2
- package/highlevel/methods/messages/edit-message.cjs +7 -1
- package/highlevel/methods/messages/edit-message.d.cts +6 -2
- package/highlevel/methods/messages/edit-message.d.ts +6 -2
- package/highlevel/methods/messages/edit-message.js +7 -1
- package/highlevel/methods/messages/edit-message.test.d.cts +1 -0
- package/highlevel/methods/messages/edit-message.test.d.ts +1 -0
- package/highlevel/methods/messages/forward-messages.cjs +1 -0
- package/highlevel/methods/messages/forward-messages.d.cts +2 -0
- package/highlevel/methods/messages/forward-messages.d.ts +2 -0
- package/highlevel/methods/messages/forward-messages.js +1 -0
- package/highlevel/methods/messages/normalize-rich-message.cjs +3 -0
- package/highlevel/methods/messages/normalize-rich-message.js +3 -0
- package/highlevel/methods/messages/send-text.cjs +2 -33
- package/highlevel/methods/messages/send-text.js +2 -33
- package/highlevel/methods/messages/send-typing.d.cts +3 -3
- package/highlevel/methods/messages/send-typing.d.ts +3 -3
- package/highlevel/methods/messages/set-typing.cjs +1 -1
- package/highlevel/methods/messages/set-typing.d.cts +2 -2
- package/highlevel/methods/messages/set-typing.d.ts +2 -2
- package/highlevel/methods/messages/set-typing.js +1 -1
- package/highlevel/methods.d.cts +3 -0
- package/highlevel/methods.d.ts +3 -0
- package/highlevel/types/bots/keyboards/builder.cjs +5 -5
- package/highlevel/types/bots/keyboards/builder.d.cts +8 -9
- package/highlevel/types/bots/keyboards/builder.d.ts +8 -9
- package/highlevel/types/bots/keyboards/builder.js +5 -5
- package/highlevel/types/bots/keyboards/factories.cjs +51 -103
- package/highlevel/types/bots/keyboards/factories.d.cts +58 -89
- package/highlevel/types/bots/keyboards/factories.d.ts +58 -89
- package/highlevel/types/bots/keyboards/factories.js +51 -103
- package/highlevel/types/bots/keyboards/index.d.cts +3 -3
- package/highlevel/types/bots/keyboards/index.d.ts +3 -3
- package/highlevel/types/bots/keyboards/normalize.cjs +131 -0
- package/highlevel/types/bots/keyboards/normalize.d.cts +10 -0
- package/highlevel/types/bots/keyboards/normalize.d.ts +10 -0
- package/highlevel/types/bots/keyboards/normalize.js +126 -0
- package/highlevel/types/bots/keyboards/types.d.cts +160 -4
- package/highlevel/types/bots/keyboards/types.d.ts +160 -4
- package/highlevel/types/messages/dialog.cjs +8 -1
- package/highlevel/types/messages/dialog.d.cts +3 -0
- package/highlevel/types/messages/dialog.d.ts +3 -0
- package/highlevel/types/messages/dialog.js +8 -1
- package/highlevel/types/messages/dialog.test.d.cts +1 -0
- package/highlevel/types/messages/dialog.test.d.ts +1 -0
- package/highlevel/types/messages/ephemeral-message.cjs +35 -3
- package/highlevel/types/messages/ephemeral-message.d.cts +22 -2
- package/highlevel/types/messages/ephemeral-message.d.ts +22 -2
- package/highlevel/types/messages/ephemeral-message.js +35 -3
- package/highlevel/types/messages/message-action.cjs +8 -1
- package/highlevel/types/messages/message-action.d.cts +11 -1
- package/highlevel/types/messages/message-action.d.ts +11 -1
- package/highlevel/types/messages/message-action.js +8 -1
- package/highlevel/types/messages/message.cjs +7 -2
- package/highlevel/types/messages/message.d.cts +2 -2
- package/highlevel/types/messages/message.d.ts +2 -2
- package/highlevel/types/messages/message.js +8 -3
- package/highlevel/types/messages/rich/inner.cjs +37 -0
- package/highlevel/types/messages/rich/inner.d.cts +19 -0
- package/highlevel/types/messages/rich/inner.d.ts +19 -0
- package/highlevel/types/messages/rich/inner.js +37 -0
- package/highlevel/types/peers/full-chat.cjs +4 -0
- package/highlevel/types/peers/full-chat.d.cts +2 -0
- package/highlevel/types/peers/full-chat.d.ts +2 -0
- package/highlevel/types/peers/full-chat.js +4 -0
- package/highlevel/types/peers/typing-status.d.cts +4 -1
- package/highlevel/types/peers/typing-status.d.ts +4 -1
- package/highlevel/types/updates/ephemeral-callback-query.cjs +10 -2
- package/highlevel/types/updates/ephemeral-callback-query.d.cts +8 -2
- package/highlevel/types/updates/ephemeral-callback-query.d.ts +8 -2
- package/highlevel/types/updates/ephemeral-callback-query.js +10 -2
- package/highlevel/types/updates/user-typing-update.cjs +18 -0
- package/highlevel/types/updates/user-typing-update.d.cts +9 -0
- package/highlevel/types/updates/user-typing-update.d.ts +9 -0
- package/highlevel/types/updates/user-typing-update.js +18 -0
- package/highlevel/updates/manager.cjs +40 -28
- package/highlevel/updates/manager.js +40 -28
- package/highlevel/utils/walk-page-blocks.cjs +5 -0
- package/highlevel/utils/walk-page-blocks.js +5 -0
- package/methods.cjs +6 -0
- package/methods.js +6 -0
- package/network/mtproto-session.cjs +9 -2
- package/network/mtproto-session.d.cts +3 -1
- package/network/mtproto-session.d.ts +3 -1
- package/network/mtproto-session.js +9 -2
- package/network/network-manager.cjs +1 -1
- package/network/network-manager.js +1 -1
- package/network/session-connection.cjs +12 -6
- package/network/session-connection.js +12 -6
- package/network/session-connection.test.d.cts +1 -0
- package/network/session-connection.test.d.ts +1 -0
- package/package.json +3 -3
- package/tl/api-schema.json +1 -1
- package/tl/binary/reader.cjs +136 -93
- package/tl/binary/reader.js +136 -93
- package/tl/binary/writer.cjs +318 -207
- package/tl/binary/writer.js +318 -207
- package/tl/compat/reader.cjs +82 -0
- package/tl/compat/reader.js +82 -0
- package/tl/index.d.cts +377 -718
- package/tl/index.d.ts +377 -718
- package/tl/inner-tl.cjs +23 -7
- package/tl/inner-tl.js +23 -7
- package/tl/rpc-error.test.d.cts +1 -0
- package/tl/rpc-error.test.d.ts +1 -0
- package/utils/binary/compat.cjs +175 -29
- package/utils/binary/compat.js +175 -29
- package/utils/links/bots.cjs +9 -4
- package/utils/links/bots.js +9 -4
|
@@ -17,9 +17,17 @@ class EphemeralCallbackQuery {
|
|
|
17
17
|
get user() {
|
|
18
18
|
return new User$2(this._peers.user(this.raw.userId));
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Chat where the originating ephemeral message was sent.
|
|
22
|
+
*
|
|
23
|
+
* `null` if not available (see {@link chatInstance})
|
|
24
|
+
*/
|
|
21
25
|
get chat() {
|
|
22
|
-
return parsePeer(this.raw.peer, this._peers);
|
|
26
|
+
return this.raw.peer ? parsePeer(this.raw.peer, this._peers) : null;
|
|
27
|
+
}
|
|
28
|
+
/** Identifier uniquely corresponding to the chat the message was sent to, if any */
|
|
29
|
+
get chatInstance() {
|
|
30
|
+
return this.raw.chatInstance ?? null;
|
|
23
31
|
}
|
|
24
32
|
/** Identifier of the ephemeral message containing the button which was clicked */
|
|
25
33
|
get messageId() {
|
|
@@ -102,10 +102,28 @@ class UserTypingUpdate {
|
|
|
102
102
|
return "interaction";
|
|
103
103
|
case "sendMessageEmojiInteractionSeen":
|
|
104
104
|
return "interaction_seen";
|
|
105
|
+
case "sendMessageStopDraftAction":
|
|
106
|
+
return "stop_draft";
|
|
105
107
|
default:
|
|
106
108
|
utils.assertNever(this.raw.action);
|
|
107
109
|
}
|
|
108
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* ID of the draft this update is related to, if any
|
|
113
|
+
* (i.e. the status is `typing` for a draft action, or `stop_draft`)
|
|
114
|
+
*/
|
|
115
|
+
get draftId() {
|
|
116
|
+
const action = this.raw.action;
|
|
117
|
+
return "randomId" in action ? action.randomId : null;
|
|
118
|
+
}
|
|
119
|
+
/** Whether the ongoing draft streaming may be stopped by the user */
|
|
120
|
+
get canStopDraft() {
|
|
121
|
+
return "canStop" in this.raw.action ? this.raw.action.canStop : false;
|
|
122
|
+
}
|
|
123
|
+
/** Whether the draft should be kept once the user stops the streaming */
|
|
124
|
+
get keepDraftOnStop() {
|
|
125
|
+
return "keepOnStop" in this.raw.action ? this.raw.action.keepOnStop : false;
|
|
126
|
+
}
|
|
109
127
|
}
|
|
110
128
|
const UserTypingUpdate$1 = /* @__PURE__ */ inspectable.makeInspectable(UserTypingUpdate);
|
|
111
129
|
exports.UserTypingUpdate = UserTypingUpdate$1;
|
|
@@ -30,4 +30,13 @@ export declare class UserTypingUpdate {
|
|
|
30
30
|
* Current typing status
|
|
31
31
|
*/
|
|
32
32
|
get status(): TypingStatus;
|
|
33
|
+
/**
|
|
34
|
+
* ID of the draft this update is related to, if any
|
|
35
|
+
* (i.e. the status is `typing` for a draft action, or `stop_draft`)
|
|
36
|
+
*/
|
|
37
|
+
get draftId(): tl.Long | null;
|
|
38
|
+
/** Whether the ongoing draft streaming may be stopped by the user */
|
|
39
|
+
get canStopDraft(): boolean;
|
|
40
|
+
/** Whether the draft should be kept once the user stops the streaming */
|
|
41
|
+
get keepDraftOnStop(): boolean;
|
|
33
42
|
}
|
|
@@ -30,4 +30,13 @@ export declare class UserTypingUpdate {
|
|
|
30
30
|
* Current typing status
|
|
31
31
|
*/
|
|
32
32
|
get status(): TypingStatus;
|
|
33
|
+
/**
|
|
34
|
+
* ID of the draft this update is related to, if any
|
|
35
|
+
* (i.e. the status is `typing` for a draft action, or `stop_draft`)
|
|
36
|
+
*/
|
|
37
|
+
get draftId(): tl.Long | null;
|
|
38
|
+
/** Whether the ongoing draft streaming may be stopped by the user */
|
|
39
|
+
get canStopDraft(): boolean;
|
|
40
|
+
/** Whether the draft should be kept once the user stops the streaming */
|
|
41
|
+
get keepDraftOnStop(): boolean;
|
|
33
42
|
}
|
|
@@ -95,10 +95,28 @@ class UserTypingUpdate {
|
|
|
95
95
|
return "interaction";
|
|
96
96
|
case "sendMessageEmojiInteractionSeen":
|
|
97
97
|
return "interaction_seen";
|
|
98
|
+
case "sendMessageStopDraftAction":
|
|
99
|
+
return "stop_draft";
|
|
98
100
|
default:
|
|
99
101
|
assertNever(this.raw.action);
|
|
100
102
|
}
|
|
101
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* ID of the draft this update is related to, if any
|
|
106
|
+
* (i.e. the status is `typing` for a draft action, or `stop_draft`)
|
|
107
|
+
*/
|
|
108
|
+
get draftId() {
|
|
109
|
+
const action = this.raw.action;
|
|
110
|
+
return "randomId" in action ? action.randomId : null;
|
|
111
|
+
}
|
|
112
|
+
/** Whether the ongoing draft streaming may be stopped by the user */
|
|
113
|
+
get canStopDraft() {
|
|
114
|
+
return "canStop" in this.raw.action ? this.raw.action.canStop : false;
|
|
115
|
+
}
|
|
116
|
+
/** Whether the draft should be kept once the user stops the streaming */
|
|
117
|
+
get keepDraftOnStop() {
|
|
118
|
+
return "keepOnStop" in this.raw.action ? this.raw.action.keepOnStop : false;
|
|
119
|
+
}
|
|
102
120
|
}
|
|
103
121
|
const UserTypingUpdate$1 = /* @__PURE__ */ makeInspectable(UserTypingUpdate);
|
|
104
122
|
export {
|
|
@@ -480,6 +480,24 @@ class UpdatesManager {
|
|
|
480
480
|
index.set(bare, cached);
|
|
481
481
|
return true;
|
|
482
482
|
}
|
|
483
|
+
async function fetchEntitiesPeers(entities) {
|
|
484
|
+
if (!entities) return true;
|
|
485
|
+
for (const ent of entities) {
|
|
486
|
+
if (ent._ === "messageEntityMentionName" && !await fetchPeer(ent.userId)) {
|
|
487
|
+
return false;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
return true;
|
|
491
|
+
}
|
|
492
|
+
async function fetchRichMessagePeers(richMessage) {
|
|
493
|
+
if (!richMessage) return true;
|
|
494
|
+
const richMessagePeers = /* @__PURE__ */ new Set();
|
|
495
|
+
collectRichMessagePeerIds(richMessage, richMessagePeers);
|
|
496
|
+
for (const peer of richMessagePeers) {
|
|
497
|
+
if (!await fetchPeer(peer)) return false;
|
|
498
|
+
}
|
|
499
|
+
return true;
|
|
500
|
+
}
|
|
483
501
|
switch (upd._) {
|
|
484
502
|
case "updateNewMessage":
|
|
485
503
|
case "updateNewChannelMessage":
|
|
@@ -503,20 +521,8 @@ class UpdatesManager {
|
|
|
503
521
|
}
|
|
504
522
|
if (!await fetchPeer(msg.viaBotId)) return missing;
|
|
505
523
|
if (!await fetchPeer(msg.guestchatViaFrom)) return missing;
|
|
506
|
-
if (msg.entities)
|
|
507
|
-
|
|
508
|
-
if (ent._ === "messageEntityMentionName") {
|
|
509
|
-
if (!await fetchPeer(ent.userId)) return missing;
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
if (msg.richMessage) {
|
|
514
|
-
const richMessagePeers = /* @__PURE__ */ new Set();
|
|
515
|
-
collectRichMessagePeerIds(msg.richMessage, richMessagePeers);
|
|
516
|
-
for (const peer of richMessagePeers) {
|
|
517
|
-
if (!await fetchPeer(peer)) return missing;
|
|
518
|
-
}
|
|
519
|
-
}
|
|
524
|
+
if (!await fetchEntitiesPeers(msg.entities)) return missing;
|
|
525
|
+
if (!await fetchRichMessagePeers(msg.richMessage)) return missing;
|
|
520
526
|
if (msg.media) {
|
|
521
527
|
switch (msg.media._) {
|
|
522
528
|
case "messageMediaContact":
|
|
@@ -554,6 +560,22 @@ class UpdatesManager {
|
|
|
554
560
|
if (!await fetchPeer(msg.action.fromId)) return missing;
|
|
555
561
|
if (!await fetchPeer(msg.action.toId)) return missing;
|
|
556
562
|
break;
|
|
563
|
+
case "messageActionChatJoinedViaCommunity":
|
|
564
|
+
if (!await fetchPeer(peerUtils.toggleChannelIdMark(msg.action.communityId), true)) {
|
|
565
|
+
return missing;
|
|
566
|
+
}
|
|
567
|
+
break;
|
|
568
|
+
case "messageActionChangeCommunity":
|
|
569
|
+
if (msg.action.communityId !== void 0 && !await fetchPeer(peerUtils.toggleChannelIdMark(msg.action.communityId), true)) {
|
|
570
|
+
return missing;
|
|
571
|
+
}
|
|
572
|
+
break;
|
|
573
|
+
case "messageActionGiftPremium":
|
|
574
|
+
case "messageActionGiftCode":
|
|
575
|
+
case "messageActionStarGift":
|
|
576
|
+
case "messageActionStarGiftUnique":
|
|
577
|
+
if (!await fetchEntitiesPeers(msg.action.message?.entities)) return missing;
|
|
578
|
+
break;
|
|
557
579
|
}
|
|
558
580
|
}
|
|
559
581
|
break;
|
|
@@ -564,6 +586,8 @@ class UpdatesManager {
|
|
|
564
586
|
if (!await fetchPeer(msg.peerId, true)) return missing;
|
|
565
587
|
if (!await fetchPeer(msg.fromId)) return missing;
|
|
566
588
|
if (!await fetchPeer(msg.receiverId)) return missing;
|
|
589
|
+
if (!await fetchEntitiesPeers(msg.entities)) return missing;
|
|
590
|
+
if (!await fetchRichMessagePeers(msg.richMessage)) return missing;
|
|
567
591
|
break;
|
|
568
592
|
}
|
|
569
593
|
case "updateEphemeralBotCallbackQuery":
|
|
@@ -571,20 +595,8 @@ class UpdatesManager {
|
|
|
571
595
|
if (!await fetchPeer(upd.userId)) return missing;
|
|
572
596
|
break;
|
|
573
597
|
case "updateDraftMessage":
|
|
574
|
-
if ("entities" in upd.draft && upd.draft.entities)
|
|
575
|
-
|
|
576
|
-
if (ent._ === "messageEntityMentionName") {
|
|
577
|
-
if (!await fetchPeer(ent.userId)) return missing;
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
if ("richMessage" in upd.draft && upd.draft.richMessage) {
|
|
582
|
-
const richMessagePeers = /* @__PURE__ */ new Set();
|
|
583
|
-
collectRichMessagePeerIds(upd.draft.richMessage, richMessagePeers);
|
|
584
|
-
for (const peer of richMessagePeers) {
|
|
585
|
-
if (!await fetchPeer(peer)) return missing;
|
|
586
|
-
}
|
|
587
|
-
}
|
|
598
|
+
if ("entities" in upd.draft && !await fetchEntitiesPeers(upd.draft.entities)) return missing;
|
|
599
|
+
if ("richMessage" in upd.draft && !await fetchRichMessagePeers(upd.draft.richMessage)) return missing;
|
|
588
600
|
}
|
|
589
601
|
return missing;
|
|
590
602
|
}
|
|
@@ -473,6 +473,24 @@ class UpdatesManager {
|
|
|
473
473
|
index.set(bare, cached);
|
|
474
474
|
return true;
|
|
475
475
|
}
|
|
476
|
+
async function fetchEntitiesPeers(entities) {
|
|
477
|
+
if (!entities) return true;
|
|
478
|
+
for (const ent of entities) {
|
|
479
|
+
if (ent._ === "messageEntityMentionName" && !await fetchPeer(ent.userId)) {
|
|
480
|
+
return false;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
return true;
|
|
484
|
+
}
|
|
485
|
+
async function fetchRichMessagePeers(richMessage) {
|
|
486
|
+
if (!richMessage) return true;
|
|
487
|
+
const richMessagePeers = /* @__PURE__ */ new Set();
|
|
488
|
+
collectRichMessagePeerIds(richMessage, richMessagePeers);
|
|
489
|
+
for (const peer of richMessagePeers) {
|
|
490
|
+
if (!await fetchPeer(peer)) return false;
|
|
491
|
+
}
|
|
492
|
+
return true;
|
|
493
|
+
}
|
|
476
494
|
switch (upd._) {
|
|
477
495
|
case "updateNewMessage":
|
|
478
496
|
case "updateNewChannelMessage":
|
|
@@ -496,20 +514,8 @@ class UpdatesManager {
|
|
|
496
514
|
}
|
|
497
515
|
if (!await fetchPeer(msg.viaBotId)) return missing;
|
|
498
516
|
if (!await fetchPeer(msg.guestchatViaFrom)) return missing;
|
|
499
|
-
if (msg.entities)
|
|
500
|
-
|
|
501
|
-
if (ent._ === "messageEntityMentionName") {
|
|
502
|
-
if (!await fetchPeer(ent.userId)) return missing;
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
if (msg.richMessage) {
|
|
507
|
-
const richMessagePeers = /* @__PURE__ */ new Set();
|
|
508
|
-
collectRichMessagePeerIds(msg.richMessage, richMessagePeers);
|
|
509
|
-
for (const peer of richMessagePeers) {
|
|
510
|
-
if (!await fetchPeer(peer)) return missing;
|
|
511
|
-
}
|
|
512
|
-
}
|
|
517
|
+
if (!await fetchEntitiesPeers(msg.entities)) return missing;
|
|
518
|
+
if (!await fetchRichMessagePeers(msg.richMessage)) return missing;
|
|
513
519
|
if (msg.media) {
|
|
514
520
|
switch (msg.media._) {
|
|
515
521
|
case "messageMediaContact":
|
|
@@ -547,6 +553,22 @@ class UpdatesManager {
|
|
|
547
553
|
if (!await fetchPeer(msg.action.fromId)) return missing;
|
|
548
554
|
if (!await fetchPeer(msg.action.toId)) return missing;
|
|
549
555
|
break;
|
|
556
|
+
case "messageActionChatJoinedViaCommunity":
|
|
557
|
+
if (!await fetchPeer(toggleChannelIdMark(msg.action.communityId), true)) {
|
|
558
|
+
return missing;
|
|
559
|
+
}
|
|
560
|
+
break;
|
|
561
|
+
case "messageActionChangeCommunity":
|
|
562
|
+
if (msg.action.communityId !== void 0 && !await fetchPeer(toggleChannelIdMark(msg.action.communityId), true)) {
|
|
563
|
+
return missing;
|
|
564
|
+
}
|
|
565
|
+
break;
|
|
566
|
+
case "messageActionGiftPremium":
|
|
567
|
+
case "messageActionGiftCode":
|
|
568
|
+
case "messageActionStarGift":
|
|
569
|
+
case "messageActionStarGiftUnique":
|
|
570
|
+
if (!await fetchEntitiesPeers(msg.action.message?.entities)) return missing;
|
|
571
|
+
break;
|
|
550
572
|
}
|
|
551
573
|
}
|
|
552
574
|
break;
|
|
@@ -557,6 +579,8 @@ class UpdatesManager {
|
|
|
557
579
|
if (!await fetchPeer(msg.peerId, true)) return missing;
|
|
558
580
|
if (!await fetchPeer(msg.fromId)) return missing;
|
|
559
581
|
if (!await fetchPeer(msg.receiverId)) return missing;
|
|
582
|
+
if (!await fetchEntitiesPeers(msg.entities)) return missing;
|
|
583
|
+
if (!await fetchRichMessagePeers(msg.richMessage)) return missing;
|
|
560
584
|
break;
|
|
561
585
|
}
|
|
562
586
|
case "updateEphemeralBotCallbackQuery":
|
|
@@ -564,20 +588,8 @@ class UpdatesManager {
|
|
|
564
588
|
if (!await fetchPeer(upd.userId)) return missing;
|
|
565
589
|
break;
|
|
566
590
|
case "updateDraftMessage":
|
|
567
|
-
if ("entities" in upd.draft && upd.draft.entities)
|
|
568
|
-
|
|
569
|
-
if (ent._ === "messageEntityMentionName") {
|
|
570
|
-
if (!await fetchPeer(ent.userId)) return missing;
|
|
571
|
-
}
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
if ("richMessage" in upd.draft && upd.draft.richMessage) {
|
|
575
|
-
const richMessagePeers = /* @__PURE__ */ new Set();
|
|
576
|
-
collectRichMessagePeerIds(upd.draft.richMessage, richMessagePeers);
|
|
577
|
-
for (const peer of richMessagePeers) {
|
|
578
|
-
if (!await fetchPeer(peer)) return missing;
|
|
579
|
-
}
|
|
580
|
-
}
|
|
591
|
+
if ("entities" in upd.draft && !await fetchEntitiesPeers(upd.draft.entities)) return missing;
|
|
592
|
+
if ("richMessage" in upd.draft && !await fetchRichMessagePeers(upd.draft.richMessage)) return missing;
|
|
581
593
|
}
|
|
582
594
|
return missing;
|
|
583
595
|
}
|
|
@@ -39,6 +39,7 @@ function walkRichText(text, visitor) {
|
|
|
39
39
|
case "textBankCard":
|
|
40
40
|
case "textDate":
|
|
41
41
|
case "textMentionName":
|
|
42
|
+
case "textButton":
|
|
42
43
|
walkRichText(text.text, visitor);
|
|
43
44
|
break;
|
|
44
45
|
case "textConcat":
|
|
@@ -125,6 +126,7 @@ function walkPageBlock(block, visitor) {
|
|
|
125
126
|
case "pageBlockAudio":
|
|
126
127
|
case "pageBlockMap":
|
|
127
128
|
case "inputPageBlockMap":
|
|
129
|
+
case "pageBlockDocument":
|
|
128
130
|
walkPageCaption(block.caption, visitor);
|
|
129
131
|
break;
|
|
130
132
|
case "pageBlockCover":
|
|
@@ -141,6 +143,9 @@ function walkPageBlock(block, visitor) {
|
|
|
141
143
|
break;
|
|
142
144
|
case "pageBlockChannel":
|
|
143
145
|
break;
|
|
146
|
+
case "pageBlockButtonRow":
|
|
147
|
+
for (const button of block.buttons) walkRichText(button.text, visitor);
|
|
148
|
+
break;
|
|
144
149
|
case "pageBlockTable":
|
|
145
150
|
walkRichText(block.title, visitor);
|
|
146
151
|
for (const row of block.rows) {
|
|
@@ -32,6 +32,7 @@ function walkRichText(text, visitor) {
|
|
|
32
32
|
case "textBankCard":
|
|
33
33
|
case "textDate":
|
|
34
34
|
case "textMentionName":
|
|
35
|
+
case "textButton":
|
|
35
36
|
walkRichText(text.text, visitor);
|
|
36
37
|
break;
|
|
37
38
|
case "textConcat":
|
|
@@ -118,6 +119,7 @@ function walkPageBlock(block, visitor) {
|
|
|
118
119
|
case "pageBlockAudio":
|
|
119
120
|
case "pageBlockMap":
|
|
120
121
|
case "inputPageBlockMap":
|
|
122
|
+
case "pageBlockDocument":
|
|
121
123
|
walkPageCaption(block.caption, visitor);
|
|
122
124
|
break;
|
|
123
125
|
case "pageBlockCover":
|
|
@@ -134,6 +136,9 @@ function walkPageBlock(block, visitor) {
|
|
|
134
136
|
break;
|
|
135
137
|
case "pageBlockChannel":
|
|
136
138
|
break;
|
|
139
|
+
case "pageBlockButtonRow":
|
|
140
|
+
for (const button of block.buttons) walkRichText(button.text, visitor);
|
|
141
|
+
break;
|
|
137
142
|
case "pageBlockTable":
|
|
138
143
|
walkRichText(block.title, visitor);
|
|
139
144
|
for (const row of block.rows) {
|
package/methods.cjs
CHANGED
|
@@ -112,9 +112,12 @@ const getPeerDialogs = require("./highlevel/methods/dialogs/get-peer-dialogs.cjs
|
|
|
112
112
|
const iterDialogs = require("./highlevel/methods/dialogs/iter-dialogs.cjs");
|
|
113
113
|
const joinChatlist = require("./highlevel/methods/dialogs/join-chatlist.cjs");
|
|
114
114
|
const setFoldersOrder = require("./highlevel/methods/dialogs/set-folders-order.cjs");
|
|
115
|
+
const deleteAllWelcomeMessages = require("./highlevel/methods/ephemeral/delete-all-welcome-messages.cjs");
|
|
115
116
|
const deleteEphemeralMessage = require("./highlevel/methods/ephemeral/delete-ephemeral-message.cjs");
|
|
117
|
+
const deleteWelcomeMessage = require("./highlevel/methods/ephemeral/delete-welcome-message.cjs");
|
|
116
118
|
const editEphemeralMessage = require("./highlevel/methods/ephemeral/edit-ephemeral-message.cjs");
|
|
117
119
|
const getEphemeralCallbackAnswer = require("./highlevel/methods/ephemeral/get-ephemeral-callback-answer.cjs");
|
|
120
|
+
const getWelcomeMessages = require("./highlevel/methods/ephemeral/get-welcome-messages.cjs");
|
|
118
121
|
const sendEphemeralMessage = require("./highlevel/methods/ephemeral/send-ephemeral-message.cjs");
|
|
119
122
|
const downloadBuffer = require("./highlevel/methods/files/download-buffer.cjs");
|
|
120
123
|
const downloadChunk = require("./highlevel/methods/files/download-chunk.cjs");
|
|
@@ -415,9 +418,12 @@ exports.getPeerDialogs = getPeerDialogs.getPeerDialogs;
|
|
|
415
418
|
exports.iterDialogs = iterDialogs.iterDialogs;
|
|
416
419
|
exports.joinChatlist = joinChatlist.joinChatlist;
|
|
417
420
|
exports.setFoldersOrder = setFoldersOrder.setFoldersOrder;
|
|
421
|
+
exports.deleteAllWelcomeMessages = deleteAllWelcomeMessages.deleteAllWelcomeMessages;
|
|
418
422
|
exports.deleteEphemeralMessage = deleteEphemeralMessage.deleteEphemeralMessage;
|
|
423
|
+
exports.deleteWelcomeMessage = deleteWelcomeMessage.deleteWelcomeMessage;
|
|
419
424
|
exports.editEphemeralMessage = editEphemeralMessage.editEphemeralMessage;
|
|
420
425
|
exports.getEphemeralCallbackAnswer = getEphemeralCallbackAnswer.getEphemeralCallbackAnswer;
|
|
426
|
+
exports.getWelcomeMessages = getWelcomeMessages.getWelcomeMessages;
|
|
421
427
|
exports.sendEphemeralMessage = sendEphemeralMessage.sendEphemeralMessage;
|
|
422
428
|
exports.downloadAsBuffer = downloadBuffer.downloadAsBuffer;
|
|
423
429
|
exports.downloadChunk = downloadChunk.downloadChunk;
|
package/methods.js
CHANGED
|
@@ -105,9 +105,12 @@ import { getPeerDialogs } from "./highlevel/methods/dialogs/get-peer-dialogs.js"
|
|
|
105
105
|
import { iterDialogs } from "./highlevel/methods/dialogs/iter-dialogs.js";
|
|
106
106
|
import { joinChatlist } from "./highlevel/methods/dialogs/join-chatlist.js";
|
|
107
107
|
import { setFoldersOrder } from "./highlevel/methods/dialogs/set-folders-order.js";
|
|
108
|
+
import { deleteAllWelcomeMessages } from "./highlevel/methods/ephemeral/delete-all-welcome-messages.js";
|
|
108
109
|
import { deleteEphemeralMessage } from "./highlevel/methods/ephemeral/delete-ephemeral-message.js";
|
|
110
|
+
import { deleteWelcomeMessage } from "./highlevel/methods/ephemeral/delete-welcome-message.js";
|
|
109
111
|
import { editEphemeralMessage } from "./highlevel/methods/ephemeral/edit-ephemeral-message.js";
|
|
110
112
|
import { getEphemeralCallbackAnswer } from "./highlevel/methods/ephemeral/get-ephemeral-callback-answer.js";
|
|
113
|
+
import { getWelcomeMessages } from "./highlevel/methods/ephemeral/get-welcome-messages.js";
|
|
111
114
|
import { sendEphemeralMessage } from "./highlevel/methods/ephemeral/send-ephemeral-message.js";
|
|
112
115
|
import { downloadAsBuffer } from "./highlevel/methods/files/download-buffer.js";
|
|
113
116
|
import { downloadChunk } from "./highlevel/methods/files/download-chunk.js";
|
|
@@ -340,6 +343,7 @@ export {
|
|
|
340
343
|
createStickerSet,
|
|
341
344
|
createStreamingDraft,
|
|
342
345
|
createSupergroup,
|
|
346
|
+
deleteAllWelcomeMessages,
|
|
343
347
|
deleteBusinessChatLink,
|
|
344
348
|
deleteChannel,
|
|
345
349
|
deleteChatPhoto,
|
|
@@ -357,6 +361,7 @@ export {
|
|
|
357
361
|
deleteStickerFromSet,
|
|
358
362
|
deleteStories,
|
|
359
363
|
deleteUserHistory,
|
|
364
|
+
deleteWelcomeMessage,
|
|
360
365
|
downloadAsBuffer,
|
|
361
366
|
downloadAsIterable,
|
|
362
367
|
downloadAsStream,
|
|
@@ -466,6 +471,7 @@ export {
|
|
|
466
471
|
getUser,
|
|
467
472
|
getUsers,
|
|
468
473
|
getWebPagePreview,
|
|
474
|
+
getWelcomeMessages,
|
|
469
475
|
hideAllCommunityLinkRequests,
|
|
470
476
|
hideAllJoinRequests,
|
|
471
477
|
hideCommunityLinkRequest,
|
|
@@ -201,13 +201,20 @@ class MtprotoSession {
|
|
|
201
201
|
else writer.object(content);
|
|
202
202
|
return messageId;
|
|
203
203
|
}
|
|
204
|
-
resetLastPing(withTime = false) {
|
|
204
|
+
resetLastPing(withTime = false, keepPending = false) {
|
|
205
205
|
if (withTime) this.lastPingTime = 0;
|
|
206
|
-
if (!this.lastPingMsgId.isZero()) {
|
|
206
|
+
if (!keepPending && !this.lastPingMsgId.isZero()) {
|
|
207
207
|
this.pendingMessages.delete(this.lastPingMsgId);
|
|
208
208
|
}
|
|
209
209
|
this.lastPingMsgId = Long.ZERO;
|
|
210
210
|
}
|
|
211
|
+
forgetPendingPings() {
|
|
212
|
+
for (const [msgId, info] of this.pendingMessages) {
|
|
213
|
+
if (info._ === "ping") this.pendingMessages.delete(msgId);
|
|
214
|
+
}
|
|
215
|
+
this.lastPingTime = 0;
|
|
216
|
+
this.lastPingMsgId = Long.ZERO;
|
|
217
|
+
}
|
|
211
218
|
addToChain(chainId, msgId) {
|
|
212
219
|
const prevMsgId = this.chains.get(chainId);
|
|
213
220
|
this.chains.set(chainId, msgId);
|
|
@@ -43,6 +43,7 @@ export type PendingMessage = {
|
|
|
43
43
|
} | {
|
|
44
44
|
_: 'ping';
|
|
45
45
|
pingId: Long;
|
|
46
|
+
sentAt: number;
|
|
46
47
|
containerId: Long;
|
|
47
48
|
} | {
|
|
48
49
|
_: 'destroy_session';
|
|
@@ -120,7 +121,8 @@ export declare class MtprotoSession {
|
|
|
120
121
|
/** Decrypt a single MTProto message using session's keys */
|
|
121
122
|
decryptMessage(data: Uint8Array, callback: Parameters<AuthKey['decryptMessage']>[2]): void;
|
|
122
123
|
writeMessage(writer: TlBinaryWriter, content: tl.TlObject | mtp.TlObject | Uint8Array, isContentRelated?: boolean): Long;
|
|
123
|
-
resetLastPing(withTime?: boolean): void;
|
|
124
|
+
resetLastPing(withTime?: boolean, keepPending?: boolean): void;
|
|
125
|
+
forgetPendingPings(): void;
|
|
124
126
|
addToChain(chainId: string | number, msgId: Long): Long | undefined;
|
|
125
127
|
removeFromChain(chainId: string | number, msgId: Long): void;
|
|
126
128
|
getPendingChainedFails(chainId: string | number): SortedArray<PendingRpc>;
|
|
@@ -43,6 +43,7 @@ export type PendingMessage = {
|
|
|
43
43
|
} | {
|
|
44
44
|
_: 'ping';
|
|
45
45
|
pingId: Long;
|
|
46
|
+
sentAt: number;
|
|
46
47
|
containerId: Long;
|
|
47
48
|
} | {
|
|
48
49
|
_: 'destroy_session';
|
|
@@ -120,7 +121,8 @@ export declare class MtprotoSession {
|
|
|
120
121
|
/** Decrypt a single MTProto message using session's keys */
|
|
121
122
|
decryptMessage(data: Uint8Array, callback: Parameters<AuthKey['decryptMessage']>[2]): void;
|
|
122
123
|
writeMessage(writer: TlBinaryWriter, content: tl.TlObject | mtp.TlObject | Uint8Array, isContentRelated?: boolean): Long;
|
|
123
|
-
resetLastPing(withTime?: boolean): void;
|
|
124
|
+
resetLastPing(withTime?: boolean, keepPending?: boolean): void;
|
|
125
|
+
forgetPendingPings(): void;
|
|
124
126
|
addToChain(chainId: string | number, msgId: Long): Long | undefined;
|
|
125
127
|
removeFromChain(chainId: string | number, msgId: Long): void;
|
|
126
128
|
getPendingChainedFails(chainId: string | number): SortedArray<PendingRpc>;
|
|
@@ -194,13 +194,20 @@ class MtprotoSession {
|
|
|
194
194
|
else writer.object(content);
|
|
195
195
|
return messageId;
|
|
196
196
|
}
|
|
197
|
-
resetLastPing(withTime = false) {
|
|
197
|
+
resetLastPing(withTime = false, keepPending = false) {
|
|
198
198
|
if (withTime) this.lastPingTime = 0;
|
|
199
|
-
if (!this.lastPingMsgId.isZero()) {
|
|
199
|
+
if (!keepPending && !this.lastPingMsgId.isZero()) {
|
|
200
200
|
this.pendingMessages.delete(this.lastPingMsgId);
|
|
201
201
|
}
|
|
202
202
|
this.lastPingMsgId = Long.ZERO;
|
|
203
203
|
}
|
|
204
|
+
forgetPendingPings() {
|
|
205
|
+
for (const [msgId, info] of this.pendingMessages) {
|
|
206
|
+
if (info._ === "ping") this.pendingMessages.delete(msgId);
|
|
207
|
+
}
|
|
208
|
+
this.lastPingTime = 0;
|
|
209
|
+
this.lastPingMsgId = Long.ZERO;
|
|
210
|
+
}
|
|
204
211
|
addToChain(chainId, msgId) {
|
|
205
212
|
const prevMsgId = this.chains.get(chainId);
|
|
206
213
|
this.chains.set(chainId, msgId);
|
|
@@ -123,7 +123,7 @@ class SessionConnection extends persistentConnection.PersistentConnection {
|
|
|
123
123
|
this._session.initConnectionCalled = false;
|
|
124
124
|
this._flushTimer.reset();
|
|
125
125
|
this._salts.isFetching = false;
|
|
126
|
-
this._session.
|
|
126
|
+
this._session.forgetPendingPings();
|
|
127
127
|
for (const timeout of this._session.pendingGetStateTimeouts.values()) {
|
|
128
128
|
utils.timers.clearTimeout(timeout);
|
|
129
129
|
}
|
|
@@ -738,7 +738,9 @@ class SessionConnection extends persistentConnection.PersistentConnection {
|
|
|
738
738
|
break;
|
|
739
739
|
case "ping":
|
|
740
740
|
this.log.debug("ping (msg_id = %l) failed because of %s", msgId, reason);
|
|
741
|
-
this._session.
|
|
741
|
+
if (this._session.lastPingMsgId.eq(msgId)) {
|
|
742
|
+
this._session.resetLastPing(true);
|
|
743
|
+
}
|
|
742
744
|
break;
|
|
743
745
|
case "rpc": {
|
|
744
746
|
const rpc = msgInfo.rpc;
|
|
@@ -811,14 +813,17 @@ class SessionConnection extends persistentConnection.PersistentConnection {
|
|
|
811
813
|
if (info.pingId.neq(pingId)) {
|
|
812
814
|
this.log.warn("received pong to %l, but expected ping_id = %l (got %l)", msgId, info.pingId, pingId);
|
|
813
815
|
}
|
|
814
|
-
|
|
816
|
+
this._session.pendingMessages.delete(msgId);
|
|
817
|
+
const rtt = performance.now() - info.sentAt;
|
|
815
818
|
this._session.lastPingRtt = rtt;
|
|
816
819
|
if (info.containerId.neq(msgId)) {
|
|
817
820
|
this._onMessageAcked(info.containerId);
|
|
818
821
|
}
|
|
819
822
|
this.log.debug("received pong: msg_id %l, ping_id %l, rtt = %dms", msgId, pingId, rtt);
|
|
820
|
-
this._session.
|
|
821
|
-
|
|
823
|
+
if (this._session.lastPingMsgId.eq(msgId)) {
|
|
824
|
+
this._session.resetLastPing();
|
|
825
|
+
this._flushTimer.emitBefore(this._session.lastPingTime + this._pingMustDelay());
|
|
826
|
+
}
|
|
822
827
|
}
|
|
823
828
|
_onBadServerSalt(msg) {
|
|
824
829
|
this._salts.currentSalt = msg.newServerSalt;
|
|
@@ -1211,7 +1216,7 @@ class SessionConnection extends persistentConnection.PersistentConnection {
|
|
|
1211
1216
|
const active = this._online && this._isActive();
|
|
1212
1217
|
if (active && !this._active) {
|
|
1213
1218
|
this._session.lastActivityTime = now;
|
|
1214
|
-
this._session.resetLastPing(true);
|
|
1219
|
+
this._session.resetLastPing(true, true);
|
|
1215
1220
|
}
|
|
1216
1221
|
this._active = active;
|
|
1217
1222
|
if (this._checkTimeouts(now)) return;
|
|
@@ -1393,6 +1398,7 @@ class SessionConnection extends persistentConnection.PersistentConnection {
|
|
|
1393
1398
|
const pingPending = {
|
|
1394
1399
|
_: "ping",
|
|
1395
1400
|
pingId,
|
|
1401
|
+
sentAt: now,
|
|
1396
1402
|
containerId: pingMsgId
|
|
1397
1403
|
};
|
|
1398
1404
|
this._session.pendingMessages.set(pingMsgId, pingPending);
|
|
@@ -116,7 +116,7 @@ class SessionConnection extends PersistentConnection {
|
|
|
116
116
|
this._session.initConnectionCalled = false;
|
|
117
117
|
this._flushTimer.reset();
|
|
118
118
|
this._salts.isFetching = false;
|
|
119
|
-
this._session.
|
|
119
|
+
this._session.forgetPendingPings();
|
|
120
120
|
for (const timeout of this._session.pendingGetStateTimeouts.values()) {
|
|
121
121
|
timers.clearTimeout(timeout);
|
|
122
122
|
}
|
|
@@ -731,7 +731,9 @@ class SessionConnection extends PersistentConnection {
|
|
|
731
731
|
break;
|
|
732
732
|
case "ping":
|
|
733
733
|
this.log.debug("ping (msg_id = %l) failed because of %s", msgId, reason);
|
|
734
|
-
this._session.
|
|
734
|
+
if (this._session.lastPingMsgId.eq(msgId)) {
|
|
735
|
+
this._session.resetLastPing(true);
|
|
736
|
+
}
|
|
735
737
|
break;
|
|
736
738
|
case "rpc": {
|
|
737
739
|
const rpc = msgInfo.rpc;
|
|
@@ -804,14 +806,17 @@ class SessionConnection extends PersistentConnection {
|
|
|
804
806
|
if (info.pingId.neq(pingId)) {
|
|
805
807
|
this.log.warn("received pong to %l, but expected ping_id = %l (got %l)", msgId, info.pingId, pingId);
|
|
806
808
|
}
|
|
807
|
-
|
|
809
|
+
this._session.pendingMessages.delete(msgId);
|
|
810
|
+
const rtt = performance.now() - info.sentAt;
|
|
808
811
|
this._session.lastPingRtt = rtt;
|
|
809
812
|
if (info.containerId.neq(msgId)) {
|
|
810
813
|
this._onMessageAcked(info.containerId);
|
|
811
814
|
}
|
|
812
815
|
this.log.debug("received pong: msg_id %l, ping_id %l, rtt = %dms", msgId, pingId, rtt);
|
|
813
|
-
this._session.
|
|
814
|
-
|
|
816
|
+
if (this._session.lastPingMsgId.eq(msgId)) {
|
|
817
|
+
this._session.resetLastPing();
|
|
818
|
+
this._flushTimer.emitBefore(this._session.lastPingTime + this._pingMustDelay());
|
|
819
|
+
}
|
|
815
820
|
}
|
|
816
821
|
_onBadServerSalt(msg) {
|
|
817
822
|
this._salts.currentSalt = msg.newServerSalt;
|
|
@@ -1204,7 +1209,7 @@ class SessionConnection extends PersistentConnection {
|
|
|
1204
1209
|
const active = this._online && this._isActive();
|
|
1205
1210
|
if (active && !this._active) {
|
|
1206
1211
|
this._session.lastActivityTime = now;
|
|
1207
|
-
this._session.resetLastPing(true);
|
|
1212
|
+
this._session.resetLastPing(true, true);
|
|
1208
1213
|
}
|
|
1209
1214
|
this._active = active;
|
|
1210
1215
|
if (this._checkTimeouts(now)) return;
|
|
@@ -1386,6 +1391,7 @@ class SessionConnection extends PersistentConnection {
|
|
|
1386
1391
|
const pingPending = {
|
|
1387
1392
|
_: "ping",
|
|
1388
1393
|
pingId,
|
|
1394
|
+
sentAt: now,
|
|
1389
1395
|
containerId: pingMsgId
|
|
1390
1396
|
};
|
|
1391
1397
|
this._session.pendingMessages.set(pingMsgId, pingPending);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|