@mtcute/core 0.29.4 → 0.29.6
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 +4 -0
- package/client.js +4 -0
- package/highlevel/base.cjs +0 -1
- package/highlevel/base.js +0 -1
- package/highlevel/client.d.cts +30 -0
- package/highlevel/client.d.ts +30 -0
- package/highlevel/methods/chats/get-creator-after-leave.cjs +4 -14
- package/highlevel/methods/chats/get-creator-after-leave.js +5 -15
- package/highlevel/methods/files/normalize-input-media.cjs +37 -15
- package/highlevel/methods/files/normalize-input-media.js +37 -15
- package/highlevel/methods/messages/close-poll.cjs +2 -1
- package/highlevel/methods/messages/close-poll.js +2 -1
- package/highlevel/methods/messages/create-streaming-draft.cjs +57 -0
- package/highlevel/methods/messages/create-streaming-draft.d.cts +36 -0
- package/highlevel/methods/messages/create-streaming-draft.d.ts +36 -0
- package/highlevel/methods/messages/create-streaming-draft.js +52 -0
- package/highlevel/methods/messages/send-common.cjs +2 -1
- package/highlevel/methods/messages/send-common.d.cts +4 -0
- package/highlevel/methods/messages/send-common.d.ts +4 -0
- package/highlevel/methods/messages/send-common.js +2 -1
- package/highlevel/methods/messages/send-media.cjs +1 -1
- package/highlevel/methods/messages/send-media.d.cts +3 -0
- package/highlevel/methods/messages/send-media.d.ts +3 -0
- package/highlevel/methods/messages/send-media.js +1 -1
- package/highlevel/methods/messages/send-text.cjs +1 -1
- package/highlevel/methods/messages/send-text.d.cts +3 -0
- package/highlevel/methods/messages/send-text.d.ts +3 -0
- package/highlevel/methods/messages/send-text.js +1 -1
- package/highlevel/methods/messages/send-vote.cjs +3 -1
- package/highlevel/methods/messages/send-vote.js +4 -2
- package/highlevel/methods.d.cts +2 -0
- package/highlevel/methods.d.ts +2 -0
- package/highlevel/storage/service/peers.cjs +1 -0
- package/highlevel/storage/service/peers.js +1 -0
- package/highlevel/types/media/input-media/types.d.cts +23 -12
- package/highlevel/types/media/input-media/types.d.ts +23 -12
- package/highlevel/types/media/photo.cjs +8 -0
- package/highlevel/types/media/photo.d.cts +2 -0
- package/highlevel/types/media/photo.d.ts +2 -0
- package/highlevel/types/media/photo.js +8 -0
- package/highlevel/types/media/poll.cjs +48 -5
- package/highlevel/types/media/poll.d.cts +21 -3
- package/highlevel/types/media/poll.d.ts +21 -3
- package/highlevel/types/media/poll.js +48 -5
- package/highlevel/types/messages/dialog.cjs +4 -0
- package/highlevel/types/messages/dialog.d.cts +2 -0
- package/highlevel/types/messages/dialog.d.ts +2 -0
- package/highlevel/types/messages/dialog.js +4 -0
- package/highlevel/types/messages/message-action.cjs +18 -0
- package/highlevel/types/messages/message-action.d.cts +19 -1
- package/highlevel/types/messages/message-action.d.ts +19 -1
- package/highlevel/types/messages/message-action.js +18 -0
- package/highlevel/types/messages/message-media.cjs +6 -1
- package/highlevel/types/messages/message-media.js +6 -1
- package/highlevel/types/messages/replied-message.cjs +4 -0
- package/highlevel/types/messages/replied-message.d.cts +2 -0
- package/highlevel/types/messages/replied-message.d.ts +2 -0
- package/highlevel/types/messages/replied-message.js +4 -0
- package/highlevel/types/messages/search-filters.cjs +2 -1
- package/highlevel/types/messages/search-filters.d.cts +4 -0
- package/highlevel/types/messages/search-filters.d.ts +4 -0
- package/highlevel/types/messages/search-filters.js +2 -1
- package/highlevel/types/peers/forum-topic.cjs +4 -0
- package/highlevel/types/peers/forum-topic.d.cts +2 -0
- package/highlevel/types/peers/forum-topic.d.ts +2 -0
- package/highlevel/types/peers/forum-topic.js +4 -0
- package/highlevel/types/peers/full-user.cjs +8 -0
- package/highlevel/types/peers/full-user.d.cts +4 -0
- package/highlevel/types/peers/full-user.d.ts +4 -0
- package/highlevel/types/peers/full-user.js +8 -0
- package/highlevel/types/peers/user.cjs +4 -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 +4 -0
- package/highlevel/types/updates/poll-update.cjs +8 -2
- package/highlevel/types/updates/poll-update.js +8 -2
- package/highlevel/updates/manager.cjs +7 -0
- package/highlevel/updates/manager.js +7 -0
- package/highlevel/worker/worker.cjs +6 -1
- package/highlevel/worker/worker.d.cts +2 -1
- package/highlevel/worker/worker.d.ts +2 -1
- package/highlevel/worker/worker.js +6 -1
- package/methods.cjs +2 -0
- package/methods.js +2 -0
- package/network/middlewares/flood-waiter.cjs +2 -1
- package/network/middlewares/flood-waiter.js +2 -1
- package/network/network-manager.cjs +1 -1
- package/network/network-manager.js +1 -1
- package/package.json +1 -1
- package/tl/api-schema.json +1 -1
- package/tl/binary/reader.cjs +86 -39
- package/tl/binary/reader.js +86 -39
- package/tl/binary/writer.cjs +308 -32
- package/tl/binary/writer.js +308 -32
- package/tl/compat/reader.cjs +34 -0
- package/tl/compat/reader.js +34 -0
- package/tl/index.d.cts +295 -25
- package/tl/index.d.ts +295 -25
- package/tl/inner-tl.cjs +16 -8
- package/tl/inner-tl.js +16 -8
- package/utils/binary/compat.cjs +41 -0
- package/utils/binary/compat.js +41 -0
|
@@ -29,6 +29,7 @@ class UpdatesManager {
|
|
|
29
29
|
throw new errors.MtArgumentError("Updates must be enabled to use updates manager");
|
|
30
30
|
}
|
|
31
31
|
this._onKeepAlive = this._onKeepAlive.bind(this);
|
|
32
|
+
this.handleUpdate = this.handleUpdate.bind(this);
|
|
32
33
|
this.postponedTimer.onTimeout(() => {
|
|
33
34
|
this.hasTimedoutPostponed = true;
|
|
34
35
|
this.updatesLoopCv.notify();
|
|
@@ -140,6 +141,7 @@ class UpdatesManager {
|
|
|
140
141
|
await this._fetchUpdatesState();
|
|
141
142
|
}
|
|
142
143
|
this.updatesLoopActive = true;
|
|
144
|
+
this.client.onServerUpdate.add(this.handleUpdate);
|
|
143
145
|
utils.timers.clearInterval(this.keepAliveInterval);
|
|
144
146
|
this.keepAliveInterval = utils.timers.setInterval(this._onKeepAlive, KEEP_ALIVE_INTERVAL);
|
|
145
147
|
this._loop().catch((err) => this.client.onError.emit(utils.unknownToError(err)));
|
|
@@ -161,12 +163,16 @@ class UpdatesManager {
|
|
|
161
163
|
}
|
|
162
164
|
this.channelDiffTimeouts.clear();
|
|
163
165
|
this.updatesLoopActive = false;
|
|
166
|
+
this.client.onServerUpdate.remove(this.handleUpdate);
|
|
164
167
|
this.pendingUpdateContainers.clear();
|
|
165
168
|
this.pendingUnorderedUpdates.clear();
|
|
166
169
|
this.pendingPtsUpdates.clear();
|
|
167
170
|
this.pendingQtsUpdates.clear();
|
|
168
171
|
this.pendingPtsUpdatesPostponed.clear();
|
|
169
172
|
this.pendingQtsUpdatesPostponed.clear();
|
|
173
|
+
this.noDispatchMsg.clear();
|
|
174
|
+
this.noDispatchPts.clear();
|
|
175
|
+
this.noDispatchQts.clear();
|
|
170
176
|
this.postponedTimer.reset();
|
|
171
177
|
this.updatesLoopCv.notify();
|
|
172
178
|
}
|
|
@@ -188,6 +194,7 @@ class UpdatesManager {
|
|
|
188
194
|
this.handleUpdate(UPDATES_TOO_LONG);
|
|
189
195
|
}
|
|
190
196
|
handleClientUpdate(update, noDispatch = true) {
|
|
197
|
+
if (!this.updatesLoopActive) return;
|
|
191
198
|
if (noDispatch && this.noDispatchEnabled) {
|
|
192
199
|
this._addToNoDispatchIndex(update);
|
|
193
200
|
}
|
|
@@ -22,6 +22,7 @@ class UpdatesManager {
|
|
|
22
22
|
throw new MtArgumentError("Updates must be enabled to use updates manager");
|
|
23
23
|
}
|
|
24
24
|
this._onKeepAlive = this._onKeepAlive.bind(this);
|
|
25
|
+
this.handleUpdate = this.handleUpdate.bind(this);
|
|
25
26
|
this.postponedTimer.onTimeout(() => {
|
|
26
27
|
this.hasTimedoutPostponed = true;
|
|
27
28
|
this.updatesLoopCv.notify();
|
|
@@ -133,6 +134,7 @@ class UpdatesManager {
|
|
|
133
134
|
await this._fetchUpdatesState();
|
|
134
135
|
}
|
|
135
136
|
this.updatesLoopActive = true;
|
|
137
|
+
this.client.onServerUpdate.add(this.handleUpdate);
|
|
136
138
|
timers.clearInterval(this.keepAliveInterval);
|
|
137
139
|
this.keepAliveInterval = timers.setInterval(this._onKeepAlive, KEEP_ALIVE_INTERVAL);
|
|
138
140
|
this._loop().catch((err) => this.client.onError.emit(unknownToError(err)));
|
|
@@ -154,12 +156,16 @@ class UpdatesManager {
|
|
|
154
156
|
}
|
|
155
157
|
this.channelDiffTimeouts.clear();
|
|
156
158
|
this.updatesLoopActive = false;
|
|
159
|
+
this.client.onServerUpdate.remove(this.handleUpdate);
|
|
157
160
|
this.pendingUpdateContainers.clear();
|
|
158
161
|
this.pendingUnorderedUpdates.clear();
|
|
159
162
|
this.pendingPtsUpdates.clear();
|
|
160
163
|
this.pendingQtsUpdates.clear();
|
|
161
164
|
this.pendingPtsUpdatesPostponed.clear();
|
|
162
165
|
this.pendingQtsUpdatesPostponed.clear();
|
|
166
|
+
this.noDispatchMsg.clear();
|
|
167
|
+
this.noDispatchPts.clear();
|
|
168
|
+
this.noDispatchQts.clear();
|
|
163
169
|
this.postponedTimer.reset();
|
|
164
170
|
this.updatesLoopCv.notify();
|
|
165
171
|
}
|
|
@@ -181,6 +187,7 @@ class UpdatesManager {
|
|
|
181
187
|
this.handleUpdate(UPDATES_TOO_LONG);
|
|
182
188
|
}
|
|
183
189
|
handleClientUpdate(update, noDispatch = true) {
|
|
190
|
+
if (!this.updatesLoopActive) return;
|
|
184
191
|
if (noDispatch && this.noDispatchEnabled) {
|
|
185
192
|
this._addToNoDispatchIndex(update);
|
|
186
193
|
}
|
|
@@ -185,7 +185,12 @@ class TelegramWorker {
|
|
|
185
185
|
}
|
|
186
186
|
if (!wasActive && !hadLastSeen && !pending) return;
|
|
187
187
|
if (this.activeConnections.size !== 0) return;
|
|
188
|
-
|
|
188
|
+
let onLastDisconnected = this.params.onLastDisconnected ?? "nothing";
|
|
189
|
+
if (typeof onLastDisconnected === "function") {
|
|
190
|
+
onLastDisconnected = onLastDisconnected();
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
switch (onLastDisconnected) {
|
|
189
194
|
case "nothing":
|
|
190
195
|
return;
|
|
191
196
|
case "disconnect":
|
|
@@ -10,10 +10,11 @@ export interface TelegramWorkerOptions<T extends WorkerCustomMethods> {
|
|
|
10
10
|
* - `destroy`: destroy the client, terminating the worker
|
|
11
11
|
* - `disconnect`: disconnect the client, but keep the worker running until `forceDestroy` is called
|
|
12
12
|
* - `nothing`: do nothing, lifecycle is managed manually
|
|
13
|
+
* - function: call this function when the last connection is closed, then execute the action returned by the function
|
|
13
14
|
*
|
|
14
15
|
* @default 'nothing'
|
|
15
16
|
*/
|
|
16
|
-
onLastDisconnected?: 'destroy' | 'disconnect' | 'nothing';
|
|
17
|
+
onLastDisconnected?: 'destroy' | 'disconnect' | 'nothing' | (() => 'destroy' | 'disconnect' | 'nothing');
|
|
17
18
|
/** additional custom methods to expose */
|
|
18
19
|
customMethods?: T;
|
|
19
20
|
}
|
|
@@ -10,10 +10,11 @@ export interface TelegramWorkerOptions<T extends WorkerCustomMethods> {
|
|
|
10
10
|
* - `destroy`: destroy the client, terminating the worker
|
|
11
11
|
* - `disconnect`: disconnect the client, but keep the worker running until `forceDestroy` is called
|
|
12
12
|
* - `nothing`: do nothing, lifecycle is managed manually
|
|
13
|
+
* - function: call this function when the last connection is closed, then execute the action returned by the function
|
|
13
14
|
*
|
|
14
15
|
* @default 'nothing'
|
|
15
16
|
*/
|
|
16
|
-
onLastDisconnected?: 'destroy' | 'disconnect' | 'nothing';
|
|
17
|
+
onLastDisconnected?: 'destroy' | 'disconnect' | 'nothing' | (() => 'destroy' | 'disconnect' | 'nothing');
|
|
17
18
|
/** additional custom methods to expose */
|
|
18
19
|
customMethods?: T;
|
|
19
20
|
}
|
|
@@ -178,7 +178,12 @@ class TelegramWorker {
|
|
|
178
178
|
}
|
|
179
179
|
if (!wasActive && !hadLastSeen && !pending) return;
|
|
180
180
|
if (this.activeConnections.size !== 0) return;
|
|
181
|
-
|
|
181
|
+
let onLastDisconnected = this.params.onLastDisconnected ?? "nothing";
|
|
182
|
+
if (typeof onLastDisconnected === "function") {
|
|
183
|
+
onLastDisconnected = onLastDisconnected();
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
switch (onLastDisconnected) {
|
|
182
187
|
case "nothing":
|
|
183
188
|
return;
|
|
184
189
|
case "disconnect":
|
package/methods.cjs
CHANGED
|
@@ -156,6 +156,7 @@ const iterInviteLinks = require("./highlevel/methods/invite-links/iter-invite-li
|
|
|
156
156
|
const revokeInviteLink = require("./highlevel/methods/invite-links/revoke-invite-link.cjs");
|
|
157
157
|
const appendTodoList = require("./highlevel/methods/messages/append-todo-list.cjs");
|
|
158
158
|
const closePoll = require("./highlevel/methods/messages/close-poll.cjs");
|
|
159
|
+
const createStreamingDraft = require("./highlevel/methods/messages/create-streaming-draft.cjs");
|
|
159
160
|
const deleteMessages = require("./highlevel/methods/messages/delete-messages.cjs");
|
|
160
161
|
const deleteScheduledMessages = require("./highlevel/methods/messages/delete-scheduled-messages.cjs");
|
|
161
162
|
const editInlineMessage = require("./highlevel/methods/messages/edit-inline-message.cjs");
|
|
@@ -441,6 +442,7 @@ exports.iterInviteLinks = iterInviteLinks.iterInviteLinks;
|
|
|
441
442
|
exports.revokeInviteLink = revokeInviteLink.revokeInviteLink;
|
|
442
443
|
exports.appendTodoList = appendTodoList.appendTodoList;
|
|
443
444
|
exports.closePoll = closePoll.closePoll;
|
|
445
|
+
exports.createStreamingDraft = createStreamingDraft.createStreamingDraft;
|
|
444
446
|
exports.deleteMessages = deleteMessages.deleteMessages;
|
|
445
447
|
exports.deleteMessagesById = deleteMessages.deleteMessagesById;
|
|
446
448
|
exports.deleteScheduledMessages = deleteScheduledMessages.deleteScheduledMessages;
|
package/methods.js
CHANGED
|
@@ -149,6 +149,7 @@ import { iterInviteLinks } from "./highlevel/methods/invite-links/iter-invite-li
|
|
|
149
149
|
import { revokeInviteLink } from "./highlevel/methods/invite-links/revoke-invite-link.js";
|
|
150
150
|
import { appendTodoList } from "./highlevel/methods/messages/append-todo-list.js";
|
|
151
151
|
import { closePoll } from "./highlevel/methods/messages/close-poll.js";
|
|
152
|
+
import { createStreamingDraft } from "./highlevel/methods/messages/create-streaming-draft.js";
|
|
152
153
|
import { deleteMessages, deleteMessagesById } from "./highlevel/methods/messages/delete-messages.js";
|
|
153
154
|
import { deleteScheduledMessages } from "./highlevel/methods/messages/delete-scheduled-messages.js";
|
|
154
155
|
import { editInlineMessage } from "./highlevel/methods/messages/edit-inline-message.js";
|
|
@@ -318,6 +319,7 @@ export {
|
|
|
318
319
|
createGroup,
|
|
319
320
|
createInviteLink,
|
|
320
321
|
createStickerSet,
|
|
322
|
+
createStreamingDraft,
|
|
321
323
|
createSupergroup,
|
|
322
324
|
deleteBusinessChatLink,
|
|
323
325
|
deleteChannel,
|
|
@@ -29,6 +29,7 @@ function floodWaiter(options) {
|
|
|
29
29
|
const method = ctx.request._;
|
|
30
30
|
const storedWaitUntil = store ? storage.get(method) : void 0;
|
|
31
31
|
const floodSleepThreshold = ctx.params?.floodSleepThreshold ?? maxWait;
|
|
32
|
+
const numRetries = ctx.params?.maxRetryCount ?? maxRetries;
|
|
32
33
|
if (storedWaitUntil !== void 0) {
|
|
33
34
|
const delta = storedWaitUntil - performance.now();
|
|
34
35
|
if (delta <= minStoredWait) {
|
|
@@ -45,7 +46,7 @@ function floodWaiter(options) {
|
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
let lastError;
|
|
48
|
-
for (let i = 0; i <=
|
|
49
|
+
for (let i = 0; i <= numRetries; i++) {
|
|
49
50
|
const res = await next(ctx);
|
|
50
51
|
if (!typeAssertions.isTlRpcError(res)) {
|
|
51
52
|
return res;
|
|
@@ -22,6 +22,7 @@ function floodWaiter(options) {
|
|
|
22
22
|
const method = ctx.request._;
|
|
23
23
|
const storedWaitUntil = store ? storage.get(method) : void 0;
|
|
24
24
|
const floodSleepThreshold = ctx.params?.floodSleepThreshold ?? maxWait;
|
|
25
|
+
const numRetries = ctx.params?.maxRetryCount ?? maxRetries;
|
|
25
26
|
if (storedWaitUntil !== void 0) {
|
|
26
27
|
const delta = storedWaitUntil - performance.now();
|
|
27
28
|
if (delta <= minStoredWait) {
|
|
@@ -38,7 +39,7 @@ function floodWaiter(options) {
|
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
41
|
let lastError;
|
|
41
|
-
for (let i = 0; i <=
|
|
42
|
+
for (let i = 0; i <= numRetries; i++) {
|
|
42
43
|
const res = await next(ctx);
|
|
43
44
|
if (!isTlRpcError(res)) {
|
|
44
45
|
return res;
|