@mtcute/core 0.30.0 → 0.30.2
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 +8 -0
- package/client.js +8 -0
- package/highlevel/client.d.cts +63 -1
- package/highlevel/client.d.ts +63 -1
- package/highlevel/methods/files/download-iterable.cjs +80 -45
- package/highlevel/methods/files/download-iterable.js +80 -45
- package/highlevel/methods/files/normalize-input-media.cjs +9 -1
- package/highlevel/methods/files/normalize-input-media.js +10 -2
- package/highlevel/methods/files/upload-file.cjs +6 -1
- package/highlevel/methods/files/upload-file.js +6 -1
- package/highlevel/methods/messages/create-rich-streaming-draft.cjs +39 -0
- package/highlevel/methods/messages/create-rich-streaming-draft.d.cts +42 -0
- package/highlevel/methods/messages/create-rich-streaming-draft.d.ts +42 -0
- package/highlevel/methods/messages/create-rich-streaming-draft.js +34 -0
- package/highlevel/methods/messages/normalize-rich-message.cjs +168 -0
- package/highlevel/methods/messages/normalize-rich-message.d.cts +10 -0
- package/highlevel/methods/messages/normalize-rich-message.d.ts +10 -0
- package/highlevel/methods/messages/normalize-rich-message.js +163 -0
- package/highlevel/methods/messages/send-common.cjs +3 -2
- package/highlevel/methods/messages/send-common.d.cts +4 -1
- package/highlevel/methods/messages/send-common.d.ts +4 -1
- package/highlevel/methods/messages/send-common.js +3 -2
- package/highlevel/methods/messages/send-rich-message.cjs +49 -0
- package/highlevel/methods/messages/send-rich-message.d.cts +38 -0
- package/highlevel/methods/messages/send-rich-message.d.ts +38 -0
- package/highlevel/methods/messages/send-rich-message.js +44 -0
- package/highlevel/methods.d.cts +3 -0
- package/highlevel/methods.d.ts +3 -0
- package/highlevel/types/bots/inline-message/factories.cjs +14 -0
- package/highlevel/types/bots/inline-message/factories.d.cts +9 -1
- package/highlevel/types/bots/inline-message/factories.d.ts +9 -1
- package/highlevel/types/bots/inline-message/factories.js +14 -0
- package/highlevel/types/bots/inline-message/types.d.cts +17 -1
- package/highlevel/types/bots/inline-message/types.d.ts +17 -1
- package/highlevel/types/files/utils.d.cts +9 -0
- package/highlevel/types/files/utils.d.ts +9 -0
- package/highlevel/types/media/input-media/types.d.cts +1 -1
- package/highlevel/types/media/input-media/types.d.ts +1 -1
- package/highlevel/types/messages/index.d.cts +1 -1
- package/highlevel/types/messages/index.d.ts +1 -1
- package/highlevel/types/messages/message.cjs +1 -1
- package/highlevel/types/messages/message.d.cts +1 -1
- package/highlevel/types/messages/message.d.ts +1 -1
- package/highlevel/types/messages/message.js +1 -1
- package/highlevel/types/messages/rich/index.d.cts +4 -0
- package/highlevel/types/messages/rich/index.d.ts +4 -0
- package/highlevel/types/messages/rich/inner.cjs +219 -0
- package/highlevel/types/messages/rich/inner.d.cts +127 -0
- package/highlevel/types/messages/rich/inner.d.ts +127 -0
- package/highlevel/types/messages/rich/inner.js +214 -0
- package/highlevel/types/messages/{rich-message.cjs → rich/rich-message.cjs} +6 -6
- package/highlevel/types/messages/{rich-message.d.cts → rich/rich-message.d.cts} +5 -5
- package/highlevel/types/messages/{rich-message.d.ts → rich/rich-message.d.ts} +5 -5
- package/highlevel/types/messages/{rich-message.js → rich/rich-message.js} +6 -6
- package/highlevel/types/messages/rich/types.d.cts +76 -0
- package/highlevel/types/messages/rich/types.d.ts +76 -0
- package/highlevel/updates/manager.cjs +10 -169
- package/highlevel/updates/manager.js +10 -169
- package/highlevel/utils/entities.cjs +176 -0
- package/highlevel/utils/entities.d.cts +18 -0
- package/highlevel/utils/entities.d.ts +18 -0
- package/highlevel/utils/entities.js +177 -1
- package/highlevel/utils/index.d.cts +1 -0
- package/highlevel/utils/index.d.ts +1 -0
- package/highlevel/utils/walk-page-blocks.cjs +164 -0
- package/highlevel/utils/walk-page-blocks.d.cts +9 -0
- package/highlevel/utils/walk-page-blocks.d.ts +9 -0
- package/highlevel/utils/walk-page-blocks.js +159 -0
- package/index.cjs +3 -1
- package/index.js +3 -1
- package/methods.cjs +4 -0
- package/methods.js +4 -0
- package/network/authorization.cjs +1 -1
- package/network/authorization.js +1 -1
- package/network/delay-gate.cjs +29 -0
- package/network/delay-gate.d.cts +5 -0
- package/network/delay-gate.d.ts +5 -0
- package/network/delay-gate.js +24 -0
- package/network/delay-gate.test.d.cts +1 -0
- package/network/delay-gate.test.d.ts +1 -0
- package/network/message-id-store.cjs +30 -0
- package/network/message-id-store.d.cts +7 -0
- package/network/message-id-store.d.ts +7 -0
- package/network/message-id-store.js +25 -0
- package/network/message-id-store.test.d.cts +1 -0
- package/network/message-id-store.test.d.ts +1 -0
- package/network/middlewares/bundle.cjs +2 -0
- package/network/middlewares/bundle.d.cts +1 -0
- package/network/middlewares/bundle.d.ts +1 -0
- package/network/middlewares/bundle.js +2 -0
- package/network/middlewares/default.cjs +6 -1
- package/network/middlewares/default.js +6 -1
- package/network/middlewares/flood-waiter.test.d.cts +1 -0
- package/network/middlewares/flood-waiter.test.d.ts +1 -0
- package/network/middlewares/internal-errors.test.d.cts +1 -0
- package/network/middlewares/internal-errors.test.d.ts +1 -0
- package/network/middlewares/media-throttle.cjs +65 -0
- package/network/middlewares/media-throttle.d.cts +5 -0
- package/network/middlewares/media-throttle.d.ts +5 -0
- package/network/middlewares/media-throttle.js +60 -0
- package/network/middlewares/media-throttle.test.d.cts +1 -0
- package/network/middlewares/media-throttle.test.d.ts +1 -0
- package/network/middlewares/on-error.test.d.cts +1 -0
- package/network/middlewares/on-error.test.d.ts +1 -0
- package/network/middlewares/on-method.test.d.cts +1 -0
- package/network/middlewares/on-method.test.d.ts +1 -0
- package/network/mtproto-session.cjs +9 -2
- package/network/mtproto-session.d.cts +5 -2
- package/network/mtproto-session.d.ts +5 -2
- package/network/mtproto-session.js +9 -2
- package/network/mtproxy/_fake-tls.cjs +169 -107
- package/network/mtproxy/_fake-tls.js +169 -107
- package/network/mtproxy/_fake-tls.test.d.cts +1 -0
- package/network/mtproxy/_fake-tls.test.d.ts +1 -0
- package/network/multi-session-connection.cjs +7 -0
- package/network/multi-session-connection.d.cts +2 -0
- package/network/multi-session-connection.d.ts +2 -0
- package/network/multi-session-connection.js +7 -0
- package/network/network-manager.cjs +7 -1
- package/network/network-manager.js +7 -1
- package/network/resource-limiter.cjs +60 -0
- package/network/resource-limiter.d.cts +11 -0
- package/network/resource-limiter.d.ts +11 -0
- package/network/resource-limiter.js +55 -0
- package/network/resource-limiter.test.d.cts +1 -0
- package/network/resource-limiter.test.d.ts +1 -0
- package/network/server-salt.cjs +7 -3
- package/network/server-salt.d.cts +2 -0
- package/network/server-salt.d.ts +2 -0
- package/network/server-salt.js +7 -3
- package/network/session-connection.cjs +106 -20
- package/network/session-connection.d.cts +11 -0
- package/network/session-connection.d.ts +11 -0
- package/network/session-connection.js +106 -20
- package/package.json +1 -1
- package/tl/api-schema.json +1 -1
- package/tl/binary/reader.cjs +115 -109
- package/tl/binary/reader.js +115 -109
- package/tl/binary/writer.cjs +243 -245
- package/tl/binary/writer.js +243 -245
- package/tl/index.d.cts +227 -216
- package/tl/index.d.ts +227 -216
- package/tl/inner-tl.cjs +3 -1
- package/tl/inner-tl.js +3 -1
- package/types/utils.d.cts +4 -0
- package/types/utils.d.ts +4 -0
- package/utils.cjs +4 -0
- package/utils.js +5 -1
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { assertNever } from "../../types/utils.js";
|
|
2
|
+
function walkRichText(text, visitor) {
|
|
3
|
+
if (!text) return;
|
|
4
|
+
visitor.richText?.(text);
|
|
5
|
+
switch (text._) {
|
|
6
|
+
case "textEmpty":
|
|
7
|
+
case "textPlain":
|
|
8
|
+
case "textEmail":
|
|
9
|
+
case "textPhone":
|
|
10
|
+
case "textImage":
|
|
11
|
+
case "textMath":
|
|
12
|
+
case "textCustomEmoji":
|
|
13
|
+
break;
|
|
14
|
+
case "textBold":
|
|
15
|
+
case "textItalic":
|
|
16
|
+
case "textUnderline":
|
|
17
|
+
case "textStrike":
|
|
18
|
+
case "textFixed":
|
|
19
|
+
case "textUrl":
|
|
20
|
+
case "textSubscript":
|
|
21
|
+
case "textSuperscript":
|
|
22
|
+
case "textMarked":
|
|
23
|
+
case "textAnchor":
|
|
24
|
+
case "textSpoiler":
|
|
25
|
+
case "textMention":
|
|
26
|
+
case "textHashtag":
|
|
27
|
+
case "textBotCommand":
|
|
28
|
+
case "textCashtag":
|
|
29
|
+
case "textAutoUrl":
|
|
30
|
+
case "textAutoEmail":
|
|
31
|
+
case "textAutoPhone":
|
|
32
|
+
case "textBankCard":
|
|
33
|
+
case "textDate":
|
|
34
|
+
case "textMentionName":
|
|
35
|
+
walkRichText(text.text, visitor);
|
|
36
|
+
break;
|
|
37
|
+
case "textConcat":
|
|
38
|
+
for (const child of text.texts) walkRichText(child, visitor);
|
|
39
|
+
break;
|
|
40
|
+
default:
|
|
41
|
+
assertNever();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function walkPageCaption(caption, visitor) {
|
|
45
|
+
if (!caption) return;
|
|
46
|
+
walkRichText(caption.text, visitor);
|
|
47
|
+
walkRichText(caption.credit, visitor);
|
|
48
|
+
}
|
|
49
|
+
function walkPageBlock(block, visitor) {
|
|
50
|
+
if (!block) return;
|
|
51
|
+
visitor.pageBlock?.(block);
|
|
52
|
+
switch (block._) {
|
|
53
|
+
case "pageBlockUnsupported":
|
|
54
|
+
case "pageBlockDivider":
|
|
55
|
+
case "pageBlockAnchor":
|
|
56
|
+
case "pageBlockMath":
|
|
57
|
+
break;
|
|
58
|
+
case "pageBlockTitle":
|
|
59
|
+
case "pageBlockSubtitle":
|
|
60
|
+
case "pageBlockHeader":
|
|
61
|
+
case "pageBlockSubheader":
|
|
62
|
+
case "pageBlockParagraph":
|
|
63
|
+
case "pageBlockPreformatted":
|
|
64
|
+
case "pageBlockFooter":
|
|
65
|
+
case "pageBlockKicker":
|
|
66
|
+
case "pageBlockThinking":
|
|
67
|
+
case "pageBlockHeading1":
|
|
68
|
+
case "pageBlockHeading2":
|
|
69
|
+
case "pageBlockHeading3":
|
|
70
|
+
case "pageBlockHeading4":
|
|
71
|
+
case "pageBlockHeading5":
|
|
72
|
+
case "pageBlockHeading6":
|
|
73
|
+
walkRichText(block.text, visitor);
|
|
74
|
+
break;
|
|
75
|
+
case "pageBlockAuthorDate":
|
|
76
|
+
walkRichText(block.author, visitor);
|
|
77
|
+
break;
|
|
78
|
+
case "pageBlockList":
|
|
79
|
+
for (const item of block.items) {
|
|
80
|
+
switch (item._) {
|
|
81
|
+
case "pageListItemText":
|
|
82
|
+
walkRichText(item.text, visitor);
|
|
83
|
+
break;
|
|
84
|
+
case "pageListItemBlocks":
|
|
85
|
+
for (const block2 of item.blocks) walkPageBlock(block2, visitor);
|
|
86
|
+
break;
|
|
87
|
+
default:
|
|
88
|
+
assertNever();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
break;
|
|
92
|
+
case "pageBlockOrderedList":
|
|
93
|
+
for (const item of block.items) {
|
|
94
|
+
switch (item._) {
|
|
95
|
+
case "pageListOrderedItemText":
|
|
96
|
+
walkRichText(item.text, visitor);
|
|
97
|
+
break;
|
|
98
|
+
case "pageListOrderedItemBlocks":
|
|
99
|
+
for (const block2 of item.blocks) walkPageBlock(block2, visitor);
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
assertNever();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
case "pageBlockBlockquote":
|
|
107
|
+
case "pageBlockPullquote":
|
|
108
|
+
walkRichText(block.text, visitor);
|
|
109
|
+
walkRichText(block.caption, visitor);
|
|
110
|
+
break;
|
|
111
|
+
case "pageBlockPhoto":
|
|
112
|
+
case "pageBlockVideo":
|
|
113
|
+
case "pageBlockEmbed":
|
|
114
|
+
case "pageBlockAudio":
|
|
115
|
+
case "pageBlockMap":
|
|
116
|
+
case "inputPageBlockMap":
|
|
117
|
+
walkPageCaption(block.caption, visitor);
|
|
118
|
+
break;
|
|
119
|
+
case "pageBlockCover":
|
|
120
|
+
walkPageBlock(block.cover, visitor);
|
|
121
|
+
break;
|
|
122
|
+
case "pageBlockEmbedPost":
|
|
123
|
+
for (const child of block.blocks) walkPageBlock(child, visitor);
|
|
124
|
+
walkPageCaption(block.caption, visitor);
|
|
125
|
+
break;
|
|
126
|
+
case "pageBlockCollage":
|
|
127
|
+
case "pageBlockSlideshow":
|
|
128
|
+
for (const child of block.items) walkPageBlock(child, visitor);
|
|
129
|
+
walkPageCaption(block.caption, visitor);
|
|
130
|
+
break;
|
|
131
|
+
case "pageBlockChannel":
|
|
132
|
+
break;
|
|
133
|
+
case "pageBlockTable":
|
|
134
|
+
walkRichText(block.title, visitor);
|
|
135
|
+
for (const row of block.rows) {
|
|
136
|
+
for (const cell of row.cells) walkRichText(cell.text, visitor);
|
|
137
|
+
}
|
|
138
|
+
break;
|
|
139
|
+
case "pageBlockDetails":
|
|
140
|
+
for (const child of block.blocks) walkPageBlock(child, visitor);
|
|
141
|
+
walkRichText(block.title, visitor);
|
|
142
|
+
break;
|
|
143
|
+
case "pageBlockRelatedArticles":
|
|
144
|
+
walkRichText(block.title, visitor);
|
|
145
|
+
break;
|
|
146
|
+
case "pageBlockBlockquoteBlocks":
|
|
147
|
+
for (const child of block.blocks) walkPageBlock(child, visitor);
|
|
148
|
+
walkRichText(block.caption, visitor);
|
|
149
|
+
break;
|
|
150
|
+
default:
|
|
151
|
+
assertNever();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function walkPageBlocks(blocks, visitor) {
|
|
155
|
+
for (const block of blocks) walkPageBlock(block, visitor);
|
|
156
|
+
}
|
|
157
|
+
export {
|
|
158
|
+
walkPageBlocks
|
|
159
|
+
};
|
package/index.cjs
CHANGED
|
@@ -56,7 +56,8 @@ const messageReactions = require("./highlevel/types/messages/message-reactions.c
|
|
|
56
56
|
const messageReplies = require("./highlevel/types/messages/message-replies.cjs");
|
|
57
57
|
const message = require("./highlevel/types/messages/message.cjs");
|
|
58
58
|
const repliedMessage = require("./highlevel/types/messages/replied-message.cjs");
|
|
59
|
-
const richMessage = require("./highlevel/types/messages/rich-message.cjs");
|
|
59
|
+
const richMessage = require("./highlevel/types/messages/rich/rich-message.cjs");
|
|
60
|
+
const inner$1 = require("./highlevel/types/messages/rich/inner.cjs");
|
|
60
61
|
const searchFilters = require("./highlevel/types/messages/search-filters.cjs");
|
|
61
62
|
const suggestedPost = require("./highlevel/types/messages/suggested-post.cjs");
|
|
62
63
|
const collectibleInfo = require("./highlevel/types/misc/collectible-info.cjs");
|
|
@@ -227,6 +228,7 @@ exports.MessageRepliesInfo = messageReplies.MessageRepliesInfo;
|
|
|
227
228
|
exports.Message = message.Message;
|
|
228
229
|
exports.RepliedMessageInfo = repliedMessage.RepliedMessageInfo;
|
|
229
230
|
exports.RichMessage = richMessage.RichMessage;
|
|
231
|
+
exports.Rich = inner$1;
|
|
230
232
|
exports.SearchFilters = searchFilters.SearchFilters;
|
|
231
233
|
exports.SuggestedPostInfo = suggestedPost.SuggestedPostInfo;
|
|
232
234
|
exports.CollectibleInfo = collectibleInfo.CollectibleInfo;
|
package/index.js
CHANGED
|
@@ -49,7 +49,8 @@ import { MessageReactions } from "./highlevel/types/messages/message-reactions.j
|
|
|
49
49
|
import { MessageRepliesInfo } from "./highlevel/types/messages/message-replies.js";
|
|
50
50
|
import { Message } from "./highlevel/types/messages/message.js";
|
|
51
51
|
import { RepliedMessageInfo } from "./highlevel/types/messages/replied-message.js";
|
|
52
|
-
import { RichMessage } from "./highlevel/types/messages/rich-message.js";
|
|
52
|
+
import { RichMessage } from "./highlevel/types/messages/rich/rich-message.js";
|
|
53
|
+
import * as inner$1 from "./highlevel/types/messages/rich/inner.js";
|
|
53
54
|
import { SearchFilters } from "./highlevel/types/messages/search-filters.js";
|
|
54
55
|
import { SuggestedPostInfo } from "./highlevel/types/messages/suggested-post.js";
|
|
55
56
|
import { CollectibleInfo } from "./highlevel/types/misc/collectible-info.js";
|
|
@@ -272,6 +273,7 @@ export {
|
|
|
272
273
|
RawUpdateInfo,
|
|
273
274
|
ReactionCount,
|
|
274
275
|
RepliedMessageInfo,
|
|
276
|
+
inner$1 as Rich,
|
|
275
277
|
RichMessage,
|
|
276
278
|
SavedStarGift,
|
|
277
279
|
SearchFilters,
|
package/methods.cjs
CHANGED
|
@@ -157,6 +157,7 @@ const iterInviteLinks = require("./highlevel/methods/invite-links/iter-invite-li
|
|
|
157
157
|
const revokeInviteLink = require("./highlevel/methods/invite-links/revoke-invite-link.cjs");
|
|
158
158
|
const appendTodoList = require("./highlevel/methods/messages/append-todo-list.cjs");
|
|
159
159
|
const closePoll = require("./highlevel/methods/messages/close-poll.cjs");
|
|
160
|
+
const createRichStreamingDraft = require("./highlevel/methods/messages/create-rich-streaming-draft.cjs");
|
|
160
161
|
const createStreamingDraft = require("./highlevel/methods/messages/create-streaming-draft.cjs");
|
|
161
162
|
const deleteMessages = require("./highlevel/methods/messages/delete-messages.cjs");
|
|
162
163
|
const deleteScheduledMessages = require("./highlevel/methods/messages/delete-scheduled-messages.cjs");
|
|
@@ -199,6 +200,7 @@ const sendPaidReaction = require("./highlevel/methods/messages/send-paid-reactio
|
|
|
199
200
|
const sendQuote = require("./highlevel/methods/messages/send-quote.cjs");
|
|
200
201
|
const sendReaction = require("./highlevel/methods/messages/send-reaction.cjs");
|
|
201
202
|
const sendReply = require("./highlevel/methods/messages/send-reply.cjs");
|
|
203
|
+
const sendRichMessage = require("./highlevel/methods/messages/send-rich-message.cjs");
|
|
202
204
|
const sendScheduled = require("./highlevel/methods/messages/send-scheduled.cjs");
|
|
203
205
|
const sendText = require("./highlevel/methods/messages/send-text.cjs");
|
|
204
206
|
const sendTyping = require("./highlevel/methods/messages/send-typing.cjs");
|
|
@@ -444,6 +446,7 @@ exports.iterInviteLinks = iterInviteLinks.iterInviteLinks;
|
|
|
444
446
|
exports.revokeInviteLink = revokeInviteLink.revokeInviteLink;
|
|
445
447
|
exports.appendTodoList = appendTodoList.appendTodoList;
|
|
446
448
|
exports.closePoll = closePoll.closePoll;
|
|
449
|
+
exports.createRichStreamingDraft = createRichStreamingDraft.createRichStreamingDraft;
|
|
447
450
|
exports.createStreamingDraft = createStreamingDraft.createStreamingDraft;
|
|
448
451
|
exports.deleteMessages = deleteMessages.deleteMessages;
|
|
449
452
|
exports.deleteMessagesById = deleteMessages.deleteMessagesById;
|
|
@@ -498,6 +501,7 @@ exports.sendReaction = sendReaction.sendReaction;
|
|
|
498
501
|
exports.replyMedia = sendReply.replyMedia;
|
|
499
502
|
exports.replyMediaGroup = sendReply.replyMediaGroup;
|
|
500
503
|
exports.replyText = sendReply.replyText;
|
|
504
|
+
exports.sendRichMessage = sendRichMessage.sendRichMessage;
|
|
501
505
|
exports.sendScheduled = sendScheduled.sendScheduled;
|
|
502
506
|
exports.sendText = sendText.sendText;
|
|
503
507
|
exports.sendTyping = sendTyping.sendTyping;
|
package/methods.js
CHANGED
|
@@ -150,6 +150,7 @@ import { iterInviteLinks } from "./highlevel/methods/invite-links/iter-invite-li
|
|
|
150
150
|
import { revokeInviteLink } from "./highlevel/methods/invite-links/revoke-invite-link.js";
|
|
151
151
|
import { appendTodoList } from "./highlevel/methods/messages/append-todo-list.js";
|
|
152
152
|
import { closePoll } from "./highlevel/methods/messages/close-poll.js";
|
|
153
|
+
import { createRichStreamingDraft } from "./highlevel/methods/messages/create-rich-streaming-draft.js";
|
|
153
154
|
import { createStreamingDraft } from "./highlevel/methods/messages/create-streaming-draft.js";
|
|
154
155
|
import { deleteMessages, deleteMessagesById } from "./highlevel/methods/messages/delete-messages.js";
|
|
155
156
|
import { deleteScheduledMessages } from "./highlevel/methods/messages/delete-scheduled-messages.js";
|
|
@@ -192,6 +193,7 @@ import { sendPaidReaction } from "./highlevel/methods/messages/send-paid-reactio
|
|
|
192
193
|
import { quoteWithMedia, quoteWithMediaGroup, quoteWithText } from "./highlevel/methods/messages/send-quote.js";
|
|
193
194
|
import { sendReaction } from "./highlevel/methods/messages/send-reaction.js";
|
|
194
195
|
import { replyMedia, replyMediaGroup, replyText } from "./highlevel/methods/messages/send-reply.js";
|
|
196
|
+
import { sendRichMessage } from "./highlevel/methods/messages/send-rich-message.js";
|
|
195
197
|
import { sendScheduled } from "./highlevel/methods/messages/send-scheduled.js";
|
|
196
198
|
import { sendText } from "./highlevel/methods/messages/send-text.js";
|
|
197
199
|
import { sendTyping } from "./highlevel/methods/messages/send-typing.js";
|
|
@@ -320,6 +322,7 @@ export {
|
|
|
320
322
|
createForumTopic,
|
|
321
323
|
createGroup,
|
|
322
324
|
createInviteLink,
|
|
325
|
+
createRichStreamingDraft,
|
|
323
326
|
createStickerSet,
|
|
324
327
|
createStreamingDraft,
|
|
325
328
|
createSupergroup,
|
|
@@ -520,6 +523,7 @@ export {
|
|
|
520
523
|
sendPaidReaction,
|
|
521
524
|
sendReaction,
|
|
522
525
|
sendRecoveryCode,
|
|
526
|
+
sendRichMessage,
|
|
523
527
|
sendScheduled,
|
|
524
528
|
sendStarGift,
|
|
525
529
|
sendStarGiftOffer,
|
|
@@ -240,7 +240,7 @@ async function doAuthorization(connection, crypto, expiresIn) {
|
|
|
240
240
|
}
|
|
241
241
|
const dhPrime = utils.bigint.fromBytes(serverDhInner.dhPrime);
|
|
242
242
|
const timeOffset = serverDhInner.serverTime - Math.floor(performance.now() / 1e3);
|
|
243
|
-
session.updateTimeOffset(timeOffset);
|
|
243
|
+
session.updateTimeOffset(timeOffset, true);
|
|
244
244
|
const g = BigInt(serverDhInner.g);
|
|
245
245
|
const gA = utils.bigint.fromBytes(serverDhInner.gA);
|
|
246
246
|
checkDhPrime(crypto, log, dhPrime, serverDhInner.g);
|
package/network/authorization.js
CHANGED
|
@@ -233,7 +233,7 @@ async function doAuthorization(connection, crypto, expiresIn) {
|
|
|
233
233
|
}
|
|
234
234
|
const dhPrime = bigint.fromBytes(serverDhInner.dhPrime);
|
|
235
235
|
const timeOffset = serverDhInner.serverTime - Math.floor(performance.now() / 1e3);
|
|
236
|
-
session.updateTimeOffset(timeOffset);
|
|
236
|
+
session.updateTimeOffset(timeOffset, true);
|
|
237
237
|
const g = BigInt(serverDhInner.g);
|
|
238
238
|
const gA = bigint.fromBytes(serverDhInner.gA);
|
|
239
239
|
checkDhPrime(crypto, log, dhPrime, serverDhInner.g);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
|
|
2
|
+
globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
|
|
3
|
+
console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
|
|
4
|
+
console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
|
|
5
|
+
}
|
|
6
|
+
"use strict";
|
|
7
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
8
|
+
const utils = require("@fuman/utils");
|
|
9
|
+
const miscUtils = require("../utils/misc-utils.cjs");
|
|
10
|
+
const INITIAL_DELAY_MS = 50;
|
|
11
|
+
const MIN_DELAY_MS = 3;
|
|
12
|
+
const DELAY_DECAY = 0.8;
|
|
13
|
+
class DownloadDelayGate {
|
|
14
|
+
_nextAt = 0;
|
|
15
|
+
_delay = INITIAL_DELAY_MS;
|
|
16
|
+
wait(signal) {
|
|
17
|
+
const now = performance.now();
|
|
18
|
+
const at = Math.max(now, this._nextAt);
|
|
19
|
+
this._nextAt = at + this._delay;
|
|
20
|
+
this._delay = Math.max(this._delay * DELAY_DECAY, MIN_DELAY_MS);
|
|
21
|
+
const ms = at - now;
|
|
22
|
+
if (ms <= 0) return Promise.resolve();
|
|
23
|
+
if (signal) return miscUtils.sleepWithAbort(ms, signal);
|
|
24
|
+
return new Promise((resolve) => {
|
|
25
|
+
utils.timers.setTimeout(resolve, ms);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.DownloadDelayGate = DownloadDelayGate;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { timers } from "@fuman/utils";
|
|
2
|
+
import { sleepWithAbort } from "../utils/misc-utils.js";
|
|
3
|
+
const INITIAL_DELAY_MS = 50;
|
|
4
|
+
const MIN_DELAY_MS = 3;
|
|
5
|
+
const DELAY_DECAY = 0.8;
|
|
6
|
+
class DownloadDelayGate {
|
|
7
|
+
_nextAt = 0;
|
|
8
|
+
_delay = INITIAL_DELAY_MS;
|
|
9
|
+
wait(signal) {
|
|
10
|
+
const now = performance.now();
|
|
11
|
+
const at = Math.max(now, this._nextAt);
|
|
12
|
+
this._nextAt = at + this._delay;
|
|
13
|
+
this._delay = Math.max(this._delay * DELAY_DECAY, MIN_DELAY_MS);
|
|
14
|
+
const ms = at - now;
|
|
15
|
+
if (ms <= 0) return Promise.resolve();
|
|
16
|
+
if (signal) return sleepWithAbort(ms, signal);
|
|
17
|
+
return new Promise((resolve) => {
|
|
18
|
+
timers.setTimeout(resolve, ms);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
DownloadDelayGate
|
|
24
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
|
|
2
|
+
globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
|
|
3
|
+
console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
|
|
4
|
+
console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
|
|
5
|
+
}
|
|
6
|
+
"use strict";
|
|
7
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
8
|
+
const longUtils = require("../utils/long-utils.cjs");
|
|
9
|
+
const sortedArray = require("../utils/sorted-array.cjs");
|
|
10
|
+
const MAX_SAVED_MESSAGE_IDS = 1e3;
|
|
11
|
+
class MessageIdStore {
|
|
12
|
+
_ids = new sortedArray.SortedArray([], longUtils.compareLongs);
|
|
13
|
+
add(msgId) {
|
|
14
|
+
const ids = this._ids;
|
|
15
|
+
if (ids.index(msgId) !== -1) return false;
|
|
16
|
+
if (ids.length >= MAX_SAVED_MESSAGE_IDS && longUtils.compareLongs(ids.raw[0], msgId) > 0) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
ids.insert(msgId);
|
|
20
|
+
if (ids.length > MAX_SAVED_MESSAGE_IDS) ids.raw.shift();
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
has(msgId) {
|
|
24
|
+
return this._ids.index(msgId) !== -1;
|
|
25
|
+
}
|
|
26
|
+
clear() {
|
|
27
|
+
this._ids.clear();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.MessageIdStore = MessageIdStore;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { compareLongs } from "../utils/long-utils.js";
|
|
2
|
+
import { SortedArray } from "../utils/sorted-array.js";
|
|
3
|
+
const MAX_SAVED_MESSAGE_IDS = 1e3;
|
|
4
|
+
class MessageIdStore {
|
|
5
|
+
_ids = new SortedArray([], compareLongs);
|
|
6
|
+
add(msgId) {
|
|
7
|
+
const ids = this._ids;
|
|
8
|
+
if (ids.index(msgId) !== -1) return false;
|
|
9
|
+
if (ids.length >= MAX_SAVED_MESSAGE_IDS && compareLongs(ids.raw[0], msgId) > 0) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
ids.insert(msgId);
|
|
13
|
+
if (ids.length > MAX_SAVED_MESSAGE_IDS) ids.raw.shift();
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
has(msgId) {
|
|
17
|
+
return this._ids.index(msgId) !== -1;
|
|
18
|
+
}
|
|
19
|
+
clear() {
|
|
20
|
+
this._ids.clear();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
MessageIdStore
|
|
25
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -8,10 +8,12 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
8
8
|
const _default = require("./default.cjs");
|
|
9
9
|
const floodWaiter = require("./flood-waiter.cjs");
|
|
10
10
|
const internalErrors = require("./internal-errors.cjs");
|
|
11
|
+
const mediaThrottle = require("./media-throttle.cjs");
|
|
11
12
|
const onError = require("./on-error.cjs");
|
|
12
13
|
const onMethod = require("./on-method.cjs");
|
|
13
14
|
exports.basic = _default.basic;
|
|
14
15
|
exports.floodWaiter = floodWaiter.floodWaiter;
|
|
15
16
|
exports.internalErrorsHandler = internalErrors.internalErrorsHandler;
|
|
17
|
+
exports.mediaThrottle = mediaThrottle.mediaThrottle;
|
|
16
18
|
exports.onRpcError = onError.onRpcError;
|
|
17
19
|
exports.onMethod = onMethod.onMethod;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { basic } from "./default.js";
|
|
2
2
|
import { floodWaiter } from "./flood-waiter.js";
|
|
3
3
|
import { internalErrorsHandler } from "./internal-errors.js";
|
|
4
|
+
import { mediaThrottle } from "./media-throttle.js";
|
|
4
5
|
import { onRpcError } from "./on-error.js";
|
|
5
6
|
import { onMethod } from "./on-method.js";
|
|
6
7
|
export {
|
|
7
8
|
basic,
|
|
8
9
|
floodWaiter,
|
|
9
10
|
internalErrorsHandler,
|
|
11
|
+
mediaThrottle,
|
|
10
12
|
onMethod,
|
|
11
13
|
onRpcError
|
|
12
14
|
};
|
|
@@ -7,7 +7,12 @@ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WAR
|
|
|
7
7
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
8
8
|
const floodWaiter = require("./flood-waiter.cjs");
|
|
9
9
|
const internalErrors = require("./internal-errors.cjs");
|
|
10
|
+
const mediaThrottle = require("./media-throttle.cjs");
|
|
10
11
|
function basic(options) {
|
|
11
|
-
return [
|
|
12
|
+
return [
|
|
13
|
+
mediaThrottle.mediaThrottle(),
|
|
14
|
+
floodWaiter.floodWaiter(options?.floodWaiter ?? {}),
|
|
15
|
+
internalErrors.internalErrorsHandler(options?.internalErrors ?? {})
|
|
16
|
+
];
|
|
12
17
|
}
|
|
13
18
|
exports.basic = basic;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { floodWaiter } from "./flood-waiter.js";
|
|
2
2
|
import { internalErrorsHandler } from "./internal-errors.js";
|
|
3
|
+
import { mediaThrottle } from "./media-throttle.js";
|
|
3
4
|
function basic(options) {
|
|
4
|
-
return [
|
|
5
|
+
return [
|
|
6
|
+
mediaThrottle(),
|
|
7
|
+
floodWaiter(options?.floodWaiter ?? {}),
|
|
8
|
+
internalErrorsHandler(options?.internalErrors ?? {})
|
|
9
|
+
];
|
|
5
10
|
}
|
|
6
11
|
export {
|
|
7
12
|
basic
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
|
|
2
|
+
globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
|
|
3
|
+
console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
|
|
4
|
+
console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
|
|
5
|
+
}
|
|
6
|
+
"use strict";
|
|
7
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
8
|
+
const abortSignal = require("../../utils/abort-signal.cjs");
|
|
9
|
+
const resourceLimiter = require("../resource-limiter.cjs");
|
|
10
|
+
const DOWNLOAD_RESOURCE_LIMIT = 2 * 1024 * 1024;
|
|
11
|
+
const DOWNLOAD_RESOURCE_LIMIT_PREMIUM = 16 * 1024 * 1024;
|
|
12
|
+
const UPLOAD_RESOURCE_LIMIT = 4 * 1024 * 1024;
|
|
13
|
+
function defaultResourceLimit(kind, isPremium) {
|
|
14
|
+
if (kind === "upload") return UPLOAD_RESOURCE_LIMIT;
|
|
15
|
+
return isPremium ? DOWNLOAD_RESOURCE_LIMIT_PREMIUM : DOWNLOAD_RESOURCE_LIMIT;
|
|
16
|
+
}
|
|
17
|
+
function mediaThrottle(params) {
|
|
18
|
+
const { getResourceLimit = defaultResourceLimit } = params ?? {};
|
|
19
|
+
const limiters = /* @__PURE__ */ new Map();
|
|
20
|
+
const getLimiter = (kind, dcId, isPremium) => {
|
|
21
|
+
let byDc = limiters.get(kind);
|
|
22
|
+
if (!byDc) {
|
|
23
|
+
byDc = /* @__PURE__ */ new Map();
|
|
24
|
+
limiters.set(kind, byDc);
|
|
25
|
+
}
|
|
26
|
+
const max = getResourceLimit(kind, isPremium);
|
|
27
|
+
let limiter = byDc.get(dcId);
|
|
28
|
+
if (!limiter) {
|
|
29
|
+
limiter = new resourceLimiter.ResourceLimiter(max);
|
|
30
|
+
byDc.set(dcId, limiter);
|
|
31
|
+
} else if (limiter.max !== max) {
|
|
32
|
+
limiter.setMax(max);
|
|
33
|
+
}
|
|
34
|
+
return limiter;
|
|
35
|
+
};
|
|
36
|
+
return async (ctx, next) => {
|
|
37
|
+
let kind;
|
|
38
|
+
let bytes = 0;
|
|
39
|
+
switch (ctx.request._) {
|
|
40
|
+
case "upload.getFile":
|
|
41
|
+
case "upload.getWebFile":
|
|
42
|
+
kind = ctx.params?.kind ?? "download";
|
|
43
|
+
bytes = ctx.request.limit;
|
|
44
|
+
break;
|
|
45
|
+
case "upload.saveFilePart":
|
|
46
|
+
case "upload.saveBigFilePart":
|
|
47
|
+
kind = "upload";
|
|
48
|
+
bytes = ctx.request.bytes.length;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
if (kind === void 0) return next(ctx);
|
|
52
|
+
const dcId = ctx.params?.dcId ?? ctx.manager.getPrimaryDcId();
|
|
53
|
+
const limiter = getLimiter(kind, dcId, ctx.manager.params.isPremium);
|
|
54
|
+
if (!limiter.tryAcquire(bytes)) {
|
|
55
|
+
const abortSignal$1 = abortSignal.combineAbortSignals(ctx.manager.params.stopSignal, ctx.params?.abortSignal);
|
|
56
|
+
await limiter.acquire(bytes, abortSignal$1);
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
return await next(ctx);
|
|
60
|
+
} finally {
|
|
61
|
+
limiter.release(bytes);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
exports.mediaThrottle = mediaThrottle;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ConnectionKind, RpcCallMiddleware } from '../network-manager.js';
|
|
2
|
+
export interface MediaThrottleOptions {
|
|
3
|
+
getResourceLimit?: (kind: ConnectionKind, isPremium: boolean) => number;
|
|
4
|
+
}
|
|
5
|
+
export declare function mediaThrottle(params?: MediaThrottleOptions): RpcCallMiddleware;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ConnectionKind, RpcCallMiddleware } from '../network-manager.js';
|
|
2
|
+
export interface MediaThrottleOptions {
|
|
3
|
+
getResourceLimit?: (kind: ConnectionKind, isPremium: boolean) => number;
|
|
4
|
+
}
|
|
5
|
+
export declare function mediaThrottle(params?: MediaThrottleOptions): RpcCallMiddleware;
|