@mtcute/core 0.21.0 → 0.22.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 +13 -8
- package/client.js +13 -8
- package/highlevel/base.cjs +3 -3
- package/highlevel/base.js +3 -3
- package/highlevel/client.d.cts +27 -49
- package/highlevel/client.d.ts +27 -49
- package/highlevel/methods/auth/sign-in-qr.cjs +4 -4
- package/highlevel/methods/files/download-iterable.cjs +25 -0
- package/highlevel/methods/files/download-iterable.js +25 -0
- package/highlevel/methods/files/upload-file.js +1 -1
- package/highlevel/methods/messages/forward-messages.cjs +2 -1
- package/highlevel/methods/messages/forward-messages.d.cts +6 -0
- package/highlevel/methods/messages/forward-messages.d.ts +6 -0
- package/highlevel/methods/messages/forward-messages.js +2 -1
- package/highlevel/methods/messages/get-web-page-preview.cjs +22 -0
- package/highlevel/methods/messages/get-web-page-preview.d.cts +9 -0
- package/highlevel/methods/messages/get-web-page-preview.d.ts +9 -0
- package/highlevel/methods/messages/get-web-page-preview.js +17 -0
- package/highlevel/methods/messages/send-common.d.cts +5 -0
- package/highlevel/methods/messages/send-common.d.ts +5 -0
- package/highlevel/methods/messages/send-media-group.cjs +2 -1
- package/highlevel/methods/messages/send-media-group.js +2 -1
- package/highlevel/methods/messages/send-media.cjs +2 -1
- package/highlevel/methods/messages/send-media.js +2 -1
- package/highlevel/methods/messages/send-paid-reaction.cjs +8 -2
- package/highlevel/methods/messages/send-paid-reaction.d.cts +8 -2
- package/highlevel/methods/messages/send-paid-reaction.d.ts +8 -2
- package/highlevel/methods/messages/send-paid-reaction.js +8 -2
- package/highlevel/methods/messages/send-text.cjs +2 -1
- package/highlevel/methods/messages/send-text.js +2 -1
- package/highlevel/methods/premium/pin-star-gift.cjs +24 -0
- package/highlevel/methods/premium/pin-star-gift.d.cts +13 -0
- package/highlevel/methods/premium/pin-star-gift.d.ts +13 -0
- package/highlevel/methods/premium/pin-star-gift.js +19 -0
- package/highlevel/methods/{premium/get-star-gifts.cjs → users/get-peer-settings.cjs} +10 -6
- package/highlevel/methods/users/get-peer-settings.d.cts +4 -0
- package/highlevel/methods/users/get-peer-settings.d.ts +4 -0
- package/highlevel/methods/users/get-peer-settings.js +14 -0
- package/highlevel/methods/users/resolve-peer.cjs +16 -31
- package/highlevel/methods/users/resolve-peer.js +7 -22
- package/highlevel/methods.d.cts +3 -2
- package/highlevel/methods.d.ts +3 -2
- package/highlevel/storage/repository/peers.d.cts +2 -3
- package/highlevel/storage/repository/peers.d.ts +2 -3
- package/highlevel/storage/service/peers.cjs +10 -4
- package/highlevel/storage/service/peers.d.cts +1 -0
- package/highlevel/storage/service/peers.d.ts +1 -0
- package/highlevel/storage/service/peers.js +10 -4
- package/highlevel/types/bots/keyboards/factories.cjs +4 -4
- package/highlevel/types/media/document.cjs +1 -1
- package/highlevel/types/media/document.js +1 -1
- package/highlevel/types/media/web-page.cjs +40 -3
- package/highlevel/types/media/web-page.d.cts +23 -1
- package/highlevel/types/media/web-page.d.ts +23 -1
- package/highlevel/types/media/web-page.js +41 -4
- package/highlevel/types/messages/message-media.cjs +1 -1
- package/highlevel/types/messages/message-media.d.cts +2 -2
- package/highlevel/types/messages/message-media.d.ts +2 -2
- package/highlevel/types/messages/message-media.js +2 -2
- package/highlevel/types/messages/message.cjs +4 -0
- package/highlevel/types/messages/message.d.cts +2 -0
- package/highlevel/types/messages/message.d.ts +2 -0
- package/highlevel/types/messages/message.js +4 -0
- package/highlevel/types/peers/chat-event/actions.cjs +5 -0
- package/highlevel/types/peers/chat-event/actions.js +5 -0
- package/highlevel/types/peers/chat.cjs +4 -0
- package/highlevel/types/peers/chat.d.cts +2 -0
- package/highlevel/types/peers/chat.d.ts +2 -0
- package/highlevel/types/peers/chat.js +4 -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/index.d.cts +1 -0
- package/highlevel/types/peers/index.d.ts +1 -0
- package/highlevel/types/peers/peer-settings.cjs +101 -0
- package/highlevel/types/peers/peer-settings.d.cts +84 -0
- package/highlevel/types/peers/peer-settings.d.ts +84 -0
- package/highlevel/types/peers/peer-settings.js +96 -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/premium/saved-star-gift.cjs +4 -1
- package/highlevel/types/premium/saved-star-gift.d.cts +2 -3
- package/highlevel/types/premium/saved-star-gift.d.ts +2 -3
- package/highlevel/types/premium/saved-star-gift.js +5 -2
- package/highlevel/types/premium/stars-gift-unique.cjs +4 -0
- package/highlevel/types/premium/stars-gift-unique.d.cts +2 -0
- package/highlevel/types/premium/stars-gift-unique.d.ts +2 -0
- package/highlevel/types/premium/stars-gift-unique.js +4 -0
- package/highlevel/types/premium/stars-transaction.cjs +14 -0
- package/highlevel/types/premium/stars-transaction.d.cts +14 -0
- package/highlevel/types/premium/stars-transaction.d.ts +14 -0
- package/highlevel/types/premium/stars-transaction.js +14 -0
- package/highlevel/types/stories/story-viewer.cjs +1 -1
- package/highlevel/types/stories/story-viewer.js +1 -1
- package/highlevel/types/updates/history-read-update.cjs +1 -0
- package/highlevel/types/updates/history-read-update.js +1 -0
- package/highlevel/updates/manager.js +2 -2
- package/highlevel/utils/file-utils.js +1 -1
- package/highlevel/utils/inline-utils.cjs +5 -5
- package/highlevel/utils/inline-utils.js +1 -1
- package/highlevel/worker/storage.cjs +2 -0
- package/highlevel/worker/storage.d.cts +1 -0
- package/highlevel/worker/storage.d.ts +1 -0
- package/highlevel/worker/storage.js +2 -0
- package/index.cjs +3 -1
- package/index.js +5 -3
- package/methods.cjs +6 -4
- package/methods.js +6 -4
- package/network/authorization.js +2 -2
- package/network/network-manager.cjs +1 -1
- package/network/network-manager.js +1 -1
- package/network/persistent-connection.cjs +6 -4
- package/network/persistent-connection.js +6 -4
- package/network/session-connection.cjs +14 -7
- package/network/session-connection.d.cts +1 -1
- package/network/session-connection.d.ts +1 -1
- package/network/session-connection.js +15 -8
- package/package.json +4 -4
- package/storage/memory/repository/peers.cjs +2 -2
- package/storage/memory/repository/peers.d.cts +1 -1
- package/storage/memory/repository/peers.d.ts +1 -1
- package/storage/memory/repository/peers.js +2 -2
- package/storage/sqlite/repository/peers.cjs +3 -5
- package/storage/sqlite/repository/peers.d.cts +1 -2
- package/storage/sqlite/repository/peers.d.ts +1 -2
- package/storage/sqlite/repository/peers.js +3 -5
- package/utils/binary/asn1-parser.js +1 -1
- package/utils/binary/compat.cjs +150 -0
- package/utils/binary/compat.d.cts +13 -0
- package/utils/binary/compat.d.ts +13 -0
- package/utils/binary/compat.js +145 -0
- package/utils/binary/compat.test.d.cts +1 -0
- package/utils/binary/compat.test.d.ts +1 -0
- package/utils/binary/serialization.cjs +59 -0
- package/utils/binary/serialization.d.cts +10 -0
- package/utils/binary/serialization.d.ts +10 -0
- package/utils/binary/serialization.js +54 -0
- package/utils/index.d.cts +2 -0
- package/utils/index.d.ts +2 -0
- package/utils/long-utils.js +1 -1
- package/utils/peer-utils.js +1 -1
- package/utils.cjs +8 -0
- package/utils.js +8 -0
- package/highlevel/methods/premium/get-star-gifts.d.cts +0 -23
- package/highlevel/methods/premium/get-star-gifts.d.ts +0 -23
- package/highlevel/methods/premium/get-star-gifts.js +0 -10
- package/highlevel/methods/premium/iter-star-gifts.cjs +0 -29
- package/highlevel/methods/premium/iter-star-gifts.d.cts +0 -26
- package/highlevel/methods/premium/iter-star-gifts.d.ts +0 -26
- package/highlevel/methods/premium/iter-star-gifts.js +0 -24
|
@@ -26,9 +26,9 @@ class MemoryPeersRepository {
|
|
|
26
26
|
if (peer.phone) this.state.phoneIndex.set(peer.phone, peer.id);
|
|
27
27
|
this.state.entities.set(peer.id, peer);
|
|
28
28
|
}
|
|
29
|
-
getById(id
|
|
29
|
+
getById(id) {
|
|
30
30
|
const ent = this.state.entities.get(id);
|
|
31
|
-
if (!ent
|
|
31
|
+
if (!ent) return null;
|
|
32
32
|
return ent;
|
|
33
33
|
}
|
|
34
34
|
getByUsername(username) {
|
|
@@ -42,8 +42,7 @@ class SqlitePeersRepository {
|
|
|
42
42
|
this._store = db.prepare(
|
|
43
43
|
"insert or replace into peers (id, hash, isMin, usernames, updated, phone, complete) values (?, ?, ?, ?, ?, ?, ?)"
|
|
44
44
|
);
|
|
45
|
-
this._getById = db.prepare("select * from peers where id = ?
|
|
46
|
-
this._getByIdAllowMin = db.prepare("select * from peers where id = ?");
|
|
45
|
+
this._getById = db.prepare("select * from peers where id = ?");
|
|
47
46
|
this._getByUsername = db.prepare(
|
|
48
47
|
"select * from peers where exists (select 1 from json_each(usernames) where value = ?) and isMin = false"
|
|
49
48
|
);
|
|
@@ -73,10 +72,9 @@ class SqlitePeersRepository {
|
|
|
73
72
|
]);
|
|
74
73
|
}
|
|
75
74
|
_getById;
|
|
76
|
-
|
|
77
|
-
getById(id, allowMin) {
|
|
75
|
+
getById(id) {
|
|
78
76
|
this._ensureLoaded();
|
|
79
|
-
const row =
|
|
77
|
+
const row = this._getById.get(id);
|
|
80
78
|
if (!row) return null;
|
|
81
79
|
return mapPeerDto(row);
|
|
82
80
|
}
|
|
@@ -8,8 +8,7 @@ export declare class SqlitePeersRepository implements IPeersRepository {
|
|
|
8
8
|
private _store;
|
|
9
9
|
store(peer: IPeersRepository.PeerInfo): void;
|
|
10
10
|
private _getById;
|
|
11
|
-
|
|
12
|
-
getById(id: number, allowMin: boolean): IPeersRepository.PeerInfo | null;
|
|
11
|
+
getById(id: number): IPeersRepository.PeerInfo | null;
|
|
13
12
|
private _getByUsername;
|
|
14
13
|
getByUsername(username: string): IPeersRepository.PeerInfo | null;
|
|
15
14
|
private _getByPhone;
|
|
@@ -8,8 +8,7 @@ export declare class SqlitePeersRepository implements IPeersRepository {
|
|
|
8
8
|
private _store;
|
|
9
9
|
store(peer: IPeersRepository.PeerInfo): void;
|
|
10
10
|
private _getById;
|
|
11
|
-
|
|
12
|
-
getById(id: number, allowMin: boolean): IPeersRepository.PeerInfo | null;
|
|
11
|
+
getById(id: number): IPeersRepository.PeerInfo | null;
|
|
13
12
|
private _getByUsername;
|
|
14
13
|
getByUsername(username: string): IPeersRepository.PeerInfo | null;
|
|
15
14
|
private _getByPhone;
|
|
@@ -35,8 +35,7 @@ class SqlitePeersRepository {
|
|
|
35
35
|
this._store = db.prepare(
|
|
36
36
|
"insert or replace into peers (id, hash, isMin, usernames, updated, phone, complete) values (?, ?, ?, ?, ?, ?, ?)"
|
|
37
37
|
);
|
|
38
|
-
this._getById = db.prepare("select * from peers where id = ?
|
|
39
|
-
this._getByIdAllowMin = db.prepare("select * from peers where id = ?");
|
|
38
|
+
this._getById = db.prepare("select * from peers where id = ?");
|
|
40
39
|
this._getByUsername = db.prepare(
|
|
41
40
|
"select * from peers where exists (select 1 from json_each(usernames) where value = ?) and isMin = false"
|
|
42
41
|
);
|
|
@@ -66,10 +65,9 @@ class SqlitePeersRepository {
|
|
|
66
65
|
]);
|
|
67
66
|
}
|
|
68
67
|
_getById;
|
|
69
|
-
|
|
70
|
-
getById(id, allowMin) {
|
|
68
|
+
getById(id) {
|
|
71
69
|
this._ensureLoaded();
|
|
72
|
-
const row =
|
|
70
|
+
const row = this._getById.get(id);
|
|
73
71
|
if (!row) return null;
|
|
74
72
|
return mapPeerDto(row);
|
|
75
73
|
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
|
|
2
|
+
globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
|
|
3
|
+
console.warn("[@mtcute/core] CommonJS support is deprecated and will be removed in 0.25.0. 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 io = require("@fuman/io");
|
|
9
|
+
const utils = require("@fuman/utils");
|
|
10
|
+
const tl = require("@mtcute/tl");
|
|
11
|
+
const tlRuntime = require("@mtcute/tl-runtime");
|
|
12
|
+
const reader_js = require("@mtcute/tl/binary/reader.js");
|
|
13
|
+
const reader_js$1 = require("@mtcute/tl/compat/reader.js");
|
|
14
|
+
const peersIndex = require("../../highlevel/types/peers/peers-index.cjs");
|
|
15
|
+
function replaceType(obj, type) {
|
|
16
|
+
return Object.assign(obj, { _: type });
|
|
17
|
+
}
|
|
18
|
+
function dropFields(obj, fields) {
|
|
19
|
+
for (let i = 0; i < fields.length; i++) {
|
|
20
|
+
delete obj[fields[i]];
|
|
21
|
+
}
|
|
22
|
+
return obj;
|
|
23
|
+
}
|
|
24
|
+
function mapCompatStarGift(obj) {
|
|
25
|
+
switch (obj._) {
|
|
26
|
+
case "starGiftUnique_layer197":
|
|
27
|
+
return {
|
|
28
|
+
...obj,
|
|
29
|
+
_: "starGiftUnique",
|
|
30
|
+
ownerId: obj.ownerId ? { _: "peerUser", userId: obj.ownerId } : void 0
|
|
31
|
+
};
|
|
32
|
+
case "starGiftUnique_layer198":
|
|
33
|
+
return replaceType(obj, "starGiftUnique");
|
|
34
|
+
default:
|
|
35
|
+
return obj;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function mapCompatEmojiStatus(obj) {
|
|
39
|
+
switch (obj._) {
|
|
40
|
+
case "emojiStatus_layer197":
|
|
41
|
+
return {
|
|
42
|
+
...obj,
|
|
43
|
+
_: "emojiStatus",
|
|
44
|
+
documentId: obj.documentId
|
|
45
|
+
};
|
|
46
|
+
default:
|
|
47
|
+
return obj;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function mapCompatMessageMedia(obj) {
|
|
51
|
+
switch (obj._) {
|
|
52
|
+
case "messageMediaDocument_layer197":
|
|
53
|
+
return replaceType(obj, "messageMediaDocument");
|
|
54
|
+
default:
|
|
55
|
+
return obj;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function mapCompatMessageAction(obj) {
|
|
59
|
+
switch (obj._) {
|
|
60
|
+
case "messageActionStarGiftUnique_layer197":
|
|
61
|
+
return {
|
|
62
|
+
...obj,
|
|
63
|
+
_: "messageActionStarGiftUnique",
|
|
64
|
+
gift: mapCompatStarGift(obj.gift)
|
|
65
|
+
};
|
|
66
|
+
case "messageActionStarGift_layer197":
|
|
67
|
+
return {
|
|
68
|
+
...obj,
|
|
69
|
+
_: "messageActionStarGift",
|
|
70
|
+
gift: mapCompatStarGift(obj.gift)
|
|
71
|
+
};
|
|
72
|
+
default:
|
|
73
|
+
return obj;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function mapCompatObject(obj) {
|
|
77
|
+
switch (obj._) {
|
|
78
|
+
case "starGiftUnique_layer197":
|
|
79
|
+
case "starGiftUnique_layer198":
|
|
80
|
+
return mapCompatStarGift(obj);
|
|
81
|
+
case "emojiStatus_layer197":
|
|
82
|
+
return mapCompatEmojiStatus(obj);
|
|
83
|
+
case "messageMediaDocument_layer197":
|
|
84
|
+
return mapCompatMessageMedia(obj);
|
|
85
|
+
case "channelFull_layer197":
|
|
86
|
+
return replaceType(obj, "channelFull");
|
|
87
|
+
case "messageActionStarGiftUnique_layer197":
|
|
88
|
+
case "messageActionStarGift_layer197":
|
|
89
|
+
return mapCompatMessageAction(obj);
|
|
90
|
+
case "userFull_layer199":
|
|
91
|
+
return replaceType(dropFields(obj, ["premiumGifts"]), "userFull");
|
|
92
|
+
case "user_layer199":
|
|
93
|
+
return {
|
|
94
|
+
...obj,
|
|
95
|
+
_: "user",
|
|
96
|
+
emojiStatus: obj.emojiStatus ? mapCompatEmojiStatus(obj.emojiStatus) : void 0
|
|
97
|
+
};
|
|
98
|
+
case "channel_layer199":
|
|
99
|
+
return {
|
|
100
|
+
...obj,
|
|
101
|
+
_: "channel",
|
|
102
|
+
emojiStatus: obj.emojiStatus ? mapCompatEmojiStatus(obj.emojiStatus) : void 0
|
|
103
|
+
};
|
|
104
|
+
case "message_layer199":
|
|
105
|
+
return {
|
|
106
|
+
...obj,
|
|
107
|
+
_: "message",
|
|
108
|
+
media: obj.media ? mapCompatMessageMedia(obj.media) : void 0
|
|
109
|
+
};
|
|
110
|
+
default:
|
|
111
|
+
return obj;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function wrapReader(reader) {
|
|
115
|
+
return (r) => mapCompatObject(reader(r));
|
|
116
|
+
}
|
|
117
|
+
function getCombinedReaderMap() {
|
|
118
|
+
const ret = {
|
|
119
|
+
...reader_js.__tlReaderMap
|
|
120
|
+
};
|
|
121
|
+
for (const [id, reader] of utils.objectEntries(reader_js$1.__tlReaderMapCompat)) {
|
|
122
|
+
ret[id] = wrapReader(reader);
|
|
123
|
+
}
|
|
124
|
+
return ret;
|
|
125
|
+
}
|
|
126
|
+
const _combinedReaderMap = /* @__PURE__ */ getCombinedReaderMap();
|
|
127
|
+
function deserializeObjectWithCompat(data) {
|
|
128
|
+
return tlRuntime.TlBinaryReader.deserializeObject(_combinedReaderMap, data);
|
|
129
|
+
}
|
|
130
|
+
function deserializePeersIndexWithCompat(data) {
|
|
131
|
+
const res = new peersIndex.PeersIndex();
|
|
132
|
+
const bytes = io.Bytes.from(data);
|
|
133
|
+
const userCount = io.read.int32le(bytes);
|
|
134
|
+
for (let i = 0; i < userCount; i++) {
|
|
135
|
+
const len = io.read.int32le(bytes);
|
|
136
|
+
const obj = deserializeObjectWithCompat(io.read.exactly(bytes, len));
|
|
137
|
+
utils.assert(tl.tl.isAnyUser(obj));
|
|
138
|
+
res.users.set(obj.id, obj);
|
|
139
|
+
}
|
|
140
|
+
const chatCount = io.read.int32le(bytes);
|
|
141
|
+
for (let i = 0; i < chatCount; i++) {
|
|
142
|
+
const len = io.read.int32le(bytes);
|
|
143
|
+
const obj = deserializeObjectWithCompat(io.read.exactly(bytes, len));
|
|
144
|
+
utils.assert(tl.tl.isAnyChat(obj));
|
|
145
|
+
res.chats.set(obj.id, obj);
|
|
146
|
+
}
|
|
147
|
+
return res;
|
|
148
|
+
}
|
|
149
|
+
exports.deserializeObjectWithCompat = deserializeObjectWithCompat;
|
|
150
|
+
exports.deserializePeersIndexWithCompat = deserializePeersIndexWithCompat;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { tl } from '@mtcute/tl';
|
|
2
|
+
import { PeersIndex } from '../../highlevel/types/peers/peers-index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Deserialize a TL object previously serialized with {@link serializeObject},
|
|
5
|
+
* with backwards compatibility for older versions of the schema.
|
|
6
|
+
*
|
|
7
|
+
* > **Note**: only some types from some layers are supported for backward compatibility,
|
|
8
|
+
* > for the complete list please see [TYPES_FOR_COMPAT](https://github.com/mtcute/mtcute/blob/master/packages/tl/scripts/constants.ts)
|
|
9
|
+
* > or [compat.tl](https://github.com/mtcute/mtcute/blob/master/packages/tl/data/compat.tl)
|
|
10
|
+
*/
|
|
11
|
+
export declare function deserializeObjectWithCompat(data: Uint8Array): tl.TlObject;
|
|
12
|
+
/** Helper function to deserialize a {@link PeersIndex} with backwards compatibility */
|
|
13
|
+
export declare function deserializePeersIndexWithCompat(data: Uint8Array): PeersIndex;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { tl } from '@mtcute/tl';
|
|
2
|
+
import { PeersIndex } from '../../highlevel/types/peers/peers-index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Deserialize a TL object previously serialized with {@link serializeObject},
|
|
5
|
+
* with backwards compatibility for older versions of the schema.
|
|
6
|
+
*
|
|
7
|
+
* > **Note**: only some types from some layers are supported for backward compatibility,
|
|
8
|
+
* > for the complete list please see [TYPES_FOR_COMPAT](https://github.com/mtcute/mtcute/blob/master/packages/tl/scripts/constants.ts)
|
|
9
|
+
* > or [compat.tl](https://github.com/mtcute/mtcute/blob/master/packages/tl/data/compat.tl)
|
|
10
|
+
*/
|
|
11
|
+
export declare function deserializeObjectWithCompat(data: Uint8Array): tl.TlObject;
|
|
12
|
+
/** Helper function to deserialize a {@link PeersIndex} with backwards compatibility */
|
|
13
|
+
export declare function deserializePeersIndexWithCompat(data: Uint8Array): PeersIndex;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { Bytes, read } from "@fuman/io";
|
|
2
|
+
import { assert, objectEntries } from "@fuman/utils";
|
|
3
|
+
import { tl } from "@mtcute/tl";
|
|
4
|
+
import { TlBinaryReader } from "@mtcute/tl-runtime";
|
|
5
|
+
import { __tlReaderMap } from "@mtcute/tl/binary/reader.js";
|
|
6
|
+
import { __tlReaderMapCompat } from "@mtcute/tl/compat/reader.js";
|
|
7
|
+
import { PeersIndex } from "../../highlevel/types/peers/peers-index.js";
|
|
8
|
+
function replaceType(obj, type) {
|
|
9
|
+
return Object.assign(obj, { _: type });
|
|
10
|
+
}
|
|
11
|
+
function dropFields(obj, fields) {
|
|
12
|
+
for (let i = 0; i < fields.length; i++) {
|
|
13
|
+
delete obj[fields[i]];
|
|
14
|
+
}
|
|
15
|
+
return obj;
|
|
16
|
+
}
|
|
17
|
+
function mapCompatStarGift(obj) {
|
|
18
|
+
switch (obj._) {
|
|
19
|
+
case "starGiftUnique_layer197":
|
|
20
|
+
return {
|
|
21
|
+
...obj,
|
|
22
|
+
_: "starGiftUnique",
|
|
23
|
+
ownerId: obj.ownerId ? { _: "peerUser", userId: obj.ownerId } : void 0
|
|
24
|
+
};
|
|
25
|
+
case "starGiftUnique_layer198":
|
|
26
|
+
return replaceType(obj, "starGiftUnique");
|
|
27
|
+
default:
|
|
28
|
+
return obj;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function mapCompatEmojiStatus(obj) {
|
|
32
|
+
switch (obj._) {
|
|
33
|
+
case "emojiStatus_layer197":
|
|
34
|
+
return {
|
|
35
|
+
...obj,
|
|
36
|
+
_: "emojiStatus",
|
|
37
|
+
documentId: obj.documentId
|
|
38
|
+
};
|
|
39
|
+
default:
|
|
40
|
+
return obj;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function mapCompatMessageMedia(obj) {
|
|
44
|
+
switch (obj._) {
|
|
45
|
+
case "messageMediaDocument_layer197":
|
|
46
|
+
return replaceType(obj, "messageMediaDocument");
|
|
47
|
+
default:
|
|
48
|
+
return obj;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function mapCompatMessageAction(obj) {
|
|
52
|
+
switch (obj._) {
|
|
53
|
+
case "messageActionStarGiftUnique_layer197":
|
|
54
|
+
return {
|
|
55
|
+
...obj,
|
|
56
|
+
_: "messageActionStarGiftUnique",
|
|
57
|
+
gift: mapCompatStarGift(obj.gift)
|
|
58
|
+
};
|
|
59
|
+
case "messageActionStarGift_layer197":
|
|
60
|
+
return {
|
|
61
|
+
...obj,
|
|
62
|
+
_: "messageActionStarGift",
|
|
63
|
+
gift: mapCompatStarGift(obj.gift)
|
|
64
|
+
};
|
|
65
|
+
default:
|
|
66
|
+
return obj;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function mapCompatObject(obj) {
|
|
70
|
+
switch (obj._) {
|
|
71
|
+
case "starGiftUnique_layer197":
|
|
72
|
+
case "starGiftUnique_layer198":
|
|
73
|
+
return mapCompatStarGift(obj);
|
|
74
|
+
case "emojiStatus_layer197":
|
|
75
|
+
return mapCompatEmojiStatus(obj);
|
|
76
|
+
case "messageMediaDocument_layer197":
|
|
77
|
+
return mapCompatMessageMedia(obj);
|
|
78
|
+
case "channelFull_layer197":
|
|
79
|
+
return replaceType(obj, "channelFull");
|
|
80
|
+
case "messageActionStarGiftUnique_layer197":
|
|
81
|
+
case "messageActionStarGift_layer197":
|
|
82
|
+
return mapCompatMessageAction(obj);
|
|
83
|
+
case "userFull_layer199":
|
|
84
|
+
return replaceType(dropFields(obj, ["premiumGifts"]), "userFull");
|
|
85
|
+
case "user_layer199":
|
|
86
|
+
return {
|
|
87
|
+
...obj,
|
|
88
|
+
_: "user",
|
|
89
|
+
emojiStatus: obj.emojiStatus ? mapCompatEmojiStatus(obj.emojiStatus) : void 0
|
|
90
|
+
};
|
|
91
|
+
case "channel_layer199":
|
|
92
|
+
return {
|
|
93
|
+
...obj,
|
|
94
|
+
_: "channel",
|
|
95
|
+
emojiStatus: obj.emojiStatus ? mapCompatEmojiStatus(obj.emojiStatus) : void 0
|
|
96
|
+
};
|
|
97
|
+
case "message_layer199":
|
|
98
|
+
return {
|
|
99
|
+
...obj,
|
|
100
|
+
_: "message",
|
|
101
|
+
media: obj.media ? mapCompatMessageMedia(obj.media) : void 0
|
|
102
|
+
};
|
|
103
|
+
default:
|
|
104
|
+
return obj;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function wrapReader(reader) {
|
|
108
|
+
return (r) => mapCompatObject(reader(r));
|
|
109
|
+
}
|
|
110
|
+
function getCombinedReaderMap() {
|
|
111
|
+
const ret = {
|
|
112
|
+
...__tlReaderMap
|
|
113
|
+
};
|
|
114
|
+
for (const [id, reader] of objectEntries(__tlReaderMapCompat)) {
|
|
115
|
+
ret[id] = wrapReader(reader);
|
|
116
|
+
}
|
|
117
|
+
return ret;
|
|
118
|
+
}
|
|
119
|
+
const _combinedReaderMap = /* @__PURE__ */ getCombinedReaderMap();
|
|
120
|
+
function deserializeObjectWithCompat(data) {
|
|
121
|
+
return TlBinaryReader.deserializeObject(_combinedReaderMap, data);
|
|
122
|
+
}
|
|
123
|
+
function deserializePeersIndexWithCompat(data) {
|
|
124
|
+
const res = new PeersIndex();
|
|
125
|
+
const bytes = Bytes.from(data);
|
|
126
|
+
const userCount = read.int32le(bytes);
|
|
127
|
+
for (let i = 0; i < userCount; i++) {
|
|
128
|
+
const len = read.int32le(bytes);
|
|
129
|
+
const obj = deserializeObjectWithCompat(read.exactly(bytes, len));
|
|
130
|
+
assert(tl.isAnyUser(obj));
|
|
131
|
+
res.users.set(obj.id, obj);
|
|
132
|
+
}
|
|
133
|
+
const chatCount = read.int32le(bytes);
|
|
134
|
+
for (let i = 0; i < chatCount; i++) {
|
|
135
|
+
const len = read.int32le(bytes);
|
|
136
|
+
const obj = deserializeObjectWithCompat(read.exactly(bytes, len));
|
|
137
|
+
assert(tl.isAnyChat(obj));
|
|
138
|
+
res.chats.set(obj.id, obj);
|
|
139
|
+
}
|
|
140
|
+
return res;
|
|
141
|
+
}
|
|
142
|
+
export {
|
|
143
|
+
deserializeObjectWithCompat,
|
|
144
|
+
deserializePeersIndexWithCompat
|
|
145
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
|
|
2
|
+
globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
|
|
3
|
+
console.warn("[@mtcute/core] CommonJS support is deprecated and will be removed in 0.25.0. 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 io = require("@fuman/io");
|
|
9
|
+
const utils = require("@fuman/utils");
|
|
10
|
+
const tl = require("@mtcute/tl");
|
|
11
|
+
const tlRuntime = require("@mtcute/tl-runtime");
|
|
12
|
+
const reader_js = require("@mtcute/tl/binary/reader.js");
|
|
13
|
+
const writer_js = require("@mtcute/tl/binary/writer.js");
|
|
14
|
+
const peersIndex = require("../../highlevel/types/peers/peers-index.cjs");
|
|
15
|
+
function serializeObject(obj) {
|
|
16
|
+
return tlRuntime.TlBinaryWriter.serializeObject(writer_js.__tlWriterMap, obj);
|
|
17
|
+
}
|
|
18
|
+
function deserializeObject(data) {
|
|
19
|
+
return tlRuntime.TlBinaryReader.deserializeObject(reader_js.__tlReaderMap, data);
|
|
20
|
+
}
|
|
21
|
+
function serializePeersIndex({ users, chats }) {
|
|
22
|
+
const bytes = io.Bytes.alloc();
|
|
23
|
+
io.write.int32le(bytes, users.size);
|
|
24
|
+
for (const user of users.values()) {
|
|
25
|
+
const data = serializeObject(user);
|
|
26
|
+
io.write.int32le(bytes, data.length);
|
|
27
|
+
io.write.bytes(bytes, data);
|
|
28
|
+
}
|
|
29
|
+
io.write.int32le(bytes, chats.size);
|
|
30
|
+
for (const chat of chats.values()) {
|
|
31
|
+
const data = serializeObject(chat);
|
|
32
|
+
io.write.int32le(bytes, data.length);
|
|
33
|
+
io.write.bytes(bytes, data);
|
|
34
|
+
}
|
|
35
|
+
return bytes.result();
|
|
36
|
+
}
|
|
37
|
+
function deserializePeersIndex(data) {
|
|
38
|
+
const res = new peersIndex.PeersIndex();
|
|
39
|
+
const bytes = io.Bytes.from(data);
|
|
40
|
+
const userCount = io.read.int32le(bytes);
|
|
41
|
+
for (let i = 0; i < userCount; i++) {
|
|
42
|
+
const len = io.read.int32le(bytes);
|
|
43
|
+
const obj = deserializeObject(io.read.exactly(bytes, len));
|
|
44
|
+
utils.assert(tl.tl.isAnyUser(obj));
|
|
45
|
+
res.users.set(obj.id, obj);
|
|
46
|
+
}
|
|
47
|
+
const chatCount = io.read.int32le(bytes);
|
|
48
|
+
for (let i = 0; i < chatCount; i++) {
|
|
49
|
+
const len = io.read.int32le(bytes);
|
|
50
|
+
const obj = deserializeObject(io.read.exactly(bytes, len));
|
|
51
|
+
utils.assert(tl.tl.isAnyChat(obj));
|
|
52
|
+
res.chats.set(obj.id, obj);
|
|
53
|
+
}
|
|
54
|
+
return res;
|
|
55
|
+
}
|
|
56
|
+
exports.deserializeObject = deserializeObject;
|
|
57
|
+
exports.deserializePeersIndex = deserializePeersIndex;
|
|
58
|
+
exports.serializeObject = serializeObject;
|
|
59
|
+
exports.serializePeersIndex = serializePeersIndex;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { tl } from '@mtcute/tl';
|
|
2
|
+
import { PeersIndex } from '../../highlevel/index.js';
|
|
3
|
+
/** Serialize a raw TL object to binary */
|
|
4
|
+
export declare function serializeObject(obj: tl.TlObject): Uint8Array;
|
|
5
|
+
/** Deserialize a binary TL object */
|
|
6
|
+
export declare function deserializeObject(data: Uint8Array): tl.TlObject;
|
|
7
|
+
/** Helper function to serialize a {@link PeersIndex} */
|
|
8
|
+
export declare function serializePeersIndex({ users, chats }: PeersIndex): Uint8Array;
|
|
9
|
+
/** Helper function to deserialize a {@link PeersIndex} */
|
|
10
|
+
export declare function deserializePeersIndex(data: Uint8Array): PeersIndex;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { tl } from '@mtcute/tl';
|
|
2
|
+
import { PeersIndex } from '../../highlevel/index.js';
|
|
3
|
+
/** Serialize a raw TL object to binary */
|
|
4
|
+
export declare function serializeObject(obj: tl.TlObject): Uint8Array;
|
|
5
|
+
/** Deserialize a binary TL object */
|
|
6
|
+
export declare function deserializeObject(data: Uint8Array): tl.TlObject;
|
|
7
|
+
/** Helper function to serialize a {@link PeersIndex} */
|
|
8
|
+
export declare function serializePeersIndex({ users, chats }: PeersIndex): Uint8Array;
|
|
9
|
+
/** Helper function to deserialize a {@link PeersIndex} */
|
|
10
|
+
export declare function deserializePeersIndex(data: Uint8Array): PeersIndex;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Bytes, write, read } from "@fuman/io";
|
|
2
|
+
import { assert } from "@fuman/utils";
|
|
3
|
+
import { tl } from "@mtcute/tl";
|
|
4
|
+
import { TlBinaryWriter, TlBinaryReader } from "@mtcute/tl-runtime";
|
|
5
|
+
import { __tlReaderMap } from "@mtcute/tl/binary/reader.js";
|
|
6
|
+
import { __tlWriterMap } from "@mtcute/tl/binary/writer.js";
|
|
7
|
+
import { PeersIndex } from "../../highlevel/types/peers/peers-index.js";
|
|
8
|
+
function serializeObject(obj) {
|
|
9
|
+
return TlBinaryWriter.serializeObject(__tlWriterMap, obj);
|
|
10
|
+
}
|
|
11
|
+
function deserializeObject(data) {
|
|
12
|
+
return TlBinaryReader.deserializeObject(__tlReaderMap, data);
|
|
13
|
+
}
|
|
14
|
+
function serializePeersIndex({ users, chats }) {
|
|
15
|
+
const bytes = Bytes.alloc();
|
|
16
|
+
write.int32le(bytes, users.size);
|
|
17
|
+
for (const user of users.values()) {
|
|
18
|
+
const data = serializeObject(user);
|
|
19
|
+
write.int32le(bytes, data.length);
|
|
20
|
+
write.bytes(bytes, data);
|
|
21
|
+
}
|
|
22
|
+
write.int32le(bytes, chats.size);
|
|
23
|
+
for (const chat of chats.values()) {
|
|
24
|
+
const data = serializeObject(chat);
|
|
25
|
+
write.int32le(bytes, data.length);
|
|
26
|
+
write.bytes(bytes, data);
|
|
27
|
+
}
|
|
28
|
+
return bytes.result();
|
|
29
|
+
}
|
|
30
|
+
function deserializePeersIndex(data) {
|
|
31
|
+
const res = new PeersIndex();
|
|
32
|
+
const bytes = Bytes.from(data);
|
|
33
|
+
const userCount = read.int32le(bytes);
|
|
34
|
+
for (let i = 0; i < userCount; i++) {
|
|
35
|
+
const len = read.int32le(bytes);
|
|
36
|
+
const obj = deserializeObject(read.exactly(bytes, len));
|
|
37
|
+
assert(tl.isAnyUser(obj));
|
|
38
|
+
res.users.set(obj.id, obj);
|
|
39
|
+
}
|
|
40
|
+
const chatCount = read.int32le(bytes);
|
|
41
|
+
for (let i = 0; i < chatCount; i++) {
|
|
42
|
+
const len = read.int32le(bytes);
|
|
43
|
+
const obj = deserializeObject(read.exactly(bytes, len));
|
|
44
|
+
assert(tl.isAnyChat(obj));
|
|
45
|
+
res.chats.set(obj.id, obj);
|
|
46
|
+
}
|
|
47
|
+
return res;
|
|
48
|
+
}
|
|
49
|
+
export {
|
|
50
|
+
deserializeObject,
|
|
51
|
+
deserializePeersIndex,
|
|
52
|
+
serializeObject,
|
|
53
|
+
serializePeersIndex
|
|
54
|
+
};
|
package/utils/index.d.cts
CHANGED
|
@@ -4,6 +4,8 @@ export * from '../highlevel/utils/index.js';
|
|
|
4
4
|
export * from '../storage/service/base.js';
|
|
5
5
|
export * from '../storage/service/default-dcs.js';
|
|
6
6
|
export * from './bigint-utils.js';
|
|
7
|
+
export * from './binary/compat.js';
|
|
8
|
+
export * from './binary/serialization.js';
|
|
7
9
|
export * from './crypto/index.js';
|
|
8
10
|
export * from './dcs.js';
|
|
9
11
|
export * from './early-timer.js';
|
package/utils/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export * from '../highlevel/utils/index.js';
|
|
|
4
4
|
export * from '../storage/service/base.js';
|
|
5
5
|
export * from '../storage/service/default-dcs.js';
|
|
6
6
|
export * from './bigint-utils.js';
|
|
7
|
+
export * from './binary/compat.js';
|
|
8
|
+
export * from './binary/serialization.js';
|
|
7
9
|
export * from './crypto/index.js';
|
|
8
10
|
export * from './dcs.js';
|
|
9
11
|
export * from './early-timer.js';
|
package/utils/long-utils.js
CHANGED
package/utils/peer-utils.js
CHANGED
package/utils.cjs
CHANGED
|
@@ -10,6 +10,8 @@ const updates = require("./highlevel/storage/service/updates.cjs");
|
|
|
10
10
|
const base = require("./storage/service/base.cjs");
|
|
11
11
|
const defaultDcs = require("./storage/service/default-dcs.cjs");
|
|
12
12
|
const bigintUtils = require("./utils/bigint-utils.cjs");
|
|
13
|
+
const compat = require("./utils/binary/compat.cjs");
|
|
14
|
+
const serialization = require("./utils/binary/serialization.cjs");
|
|
13
15
|
const dcs = require("./utils/dcs.cjs");
|
|
14
16
|
const earlyTimer = require("./utils/early-timer.cjs");
|
|
15
17
|
const functionUtils = require("./utils/function-utils.cjs");
|
|
@@ -47,6 +49,12 @@ exports.DefaultDcsService = defaultDcs.DefaultDcsService;
|
|
|
47
49
|
exports.randomBigInt = bigintUtils.randomBigInt;
|
|
48
50
|
exports.randomBigIntBits = bigintUtils.randomBigIntBits;
|
|
49
51
|
exports.randomBigIntInRange = bigintUtils.randomBigIntInRange;
|
|
52
|
+
exports.deserializeObjectWithCompat = compat.deserializeObjectWithCompat;
|
|
53
|
+
exports.deserializePeersIndexWithCompat = compat.deserializePeersIndexWithCompat;
|
|
54
|
+
exports.deserializeObject = serialization.deserializeObject;
|
|
55
|
+
exports.deserializePeersIndex = serialization.deserializePeersIndex;
|
|
56
|
+
exports.serializeObject = serialization.serializeObject;
|
|
57
|
+
exports.serializePeersIndex = serialization.serializePeersIndex;
|
|
50
58
|
exports.defaultProductionDc = dcs.defaultProductionDc;
|
|
51
59
|
exports.defaultProductionIpv6Dc = dcs.defaultProductionIpv6Dc;
|
|
52
60
|
exports.defaultTestDc = dcs.defaultTestDc;
|
package/utils.js
CHANGED
|
@@ -3,6 +3,8 @@ import { UpdatesStateService } from "./highlevel/storage/service/updates.js";
|
|
|
3
3
|
import { BaseService } from "./storage/service/base.js";
|
|
4
4
|
import { DefaultDcsService } from "./storage/service/default-dcs.js";
|
|
5
5
|
import { randomBigInt, randomBigIntBits, randomBigIntInRange } from "./utils/bigint-utils.js";
|
|
6
|
+
import { deserializeObjectWithCompat, deserializePeersIndexWithCompat } from "./utils/binary/compat.js";
|
|
7
|
+
import { deserializeObject, deserializePeersIndex, serializeObject, serializePeersIndex } from "./utils/binary/serialization.js";
|
|
6
8
|
import { defaultProductionDc, defaultProductionIpv6Dc, defaultTestDc, defaultTestIpv6Dc, parseBasicDcOption, serializeBasicDcOption } from "./utils/dcs.js";
|
|
7
9
|
import { EarlyTimer } from "./utils/early-timer.js";
|
|
8
10
|
import { asyncResettable, throttle } from "./utils/function-utils.js";
|
|
@@ -64,6 +66,10 @@ export {
|
|
|
64
66
|
defaultProductionIpv6Dc,
|
|
65
67
|
defaultTestDc,
|
|
66
68
|
defaultTestIpv6Dc,
|
|
69
|
+
deserializeObject,
|
|
70
|
+
deserializeObjectWithCompat,
|
|
71
|
+
deserializePeersIndex,
|
|
72
|
+
deserializePeersIndexWithCompat,
|
|
67
73
|
determinePartSize,
|
|
68
74
|
encodeInlineMessageId,
|
|
69
75
|
encodeWaveform,
|
|
@@ -119,6 +125,8 @@ export {
|
|
|
119
125
|
removeFromLongArray,
|
|
120
126
|
resolveMaybeDynamic,
|
|
121
127
|
serializeBasicDcOption,
|
|
128
|
+
serializeObject,
|
|
129
|
+
serializePeersIndex,
|
|
122
130
|
sleepWithAbort,
|
|
123
131
|
streamToBuffer,
|
|
124
132
|
strippedPhotoToJpg,
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ITelegramClient } from '../../client.types.js';
|
|
2
|
-
import { SavedStarGift } from '../../types/index.js';
|
|
3
|
-
import { InputPeerLike } from '../../types/peers/peer.js';
|
|
4
|
-
import { ArrayPaginated } from '../../types/utils.js';
|
|
5
|
-
/**
|
|
6
|
-
* Get a list of gifts sent to a user.
|
|
7
|
-
*
|
|
8
|
-
* @param userId User whose gifts to fetch
|
|
9
|
-
* @deprecated Use {@link getSavedStarGifts} instead
|
|
10
|
-
* @returns Gifts sent to the user
|
|
11
|
-
*/
|
|
12
|
-
export declare function getStarGifts(client: ITelegramClient, userId: InputPeerLike, params?: {
|
|
13
|
-
/**
|
|
14
|
-
* Offset for pagination.
|
|
15
|
-
*/
|
|
16
|
-
offset?: string;
|
|
17
|
-
/**
|
|
18
|
-
* Maximum number of gifts to fetch.
|
|
19
|
-
*
|
|
20
|
-
* @default 100
|
|
21
|
-
*/
|
|
22
|
-
limit?: number;
|
|
23
|
-
}): Promise<ArrayPaginated<SavedStarGift, string>>;
|