@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.
Files changed (153) hide show
  1. package/client.cjs +13 -8
  2. package/client.js +13 -8
  3. package/highlevel/base.cjs +3 -3
  4. package/highlevel/base.js +3 -3
  5. package/highlevel/client.d.cts +27 -49
  6. package/highlevel/client.d.ts +27 -49
  7. package/highlevel/methods/auth/sign-in-qr.cjs +4 -4
  8. package/highlevel/methods/files/download-iterable.cjs +25 -0
  9. package/highlevel/methods/files/download-iterable.js +25 -0
  10. package/highlevel/methods/files/upload-file.js +1 -1
  11. package/highlevel/methods/messages/forward-messages.cjs +2 -1
  12. package/highlevel/methods/messages/forward-messages.d.cts +6 -0
  13. package/highlevel/methods/messages/forward-messages.d.ts +6 -0
  14. package/highlevel/methods/messages/forward-messages.js +2 -1
  15. package/highlevel/methods/messages/get-web-page-preview.cjs +22 -0
  16. package/highlevel/methods/messages/get-web-page-preview.d.cts +9 -0
  17. package/highlevel/methods/messages/get-web-page-preview.d.ts +9 -0
  18. package/highlevel/methods/messages/get-web-page-preview.js +17 -0
  19. package/highlevel/methods/messages/send-common.d.cts +5 -0
  20. package/highlevel/methods/messages/send-common.d.ts +5 -0
  21. package/highlevel/methods/messages/send-media-group.cjs +2 -1
  22. package/highlevel/methods/messages/send-media-group.js +2 -1
  23. package/highlevel/methods/messages/send-media.cjs +2 -1
  24. package/highlevel/methods/messages/send-media.js +2 -1
  25. package/highlevel/methods/messages/send-paid-reaction.cjs +8 -2
  26. package/highlevel/methods/messages/send-paid-reaction.d.cts +8 -2
  27. package/highlevel/methods/messages/send-paid-reaction.d.ts +8 -2
  28. package/highlevel/methods/messages/send-paid-reaction.js +8 -2
  29. package/highlevel/methods/messages/send-text.cjs +2 -1
  30. package/highlevel/methods/messages/send-text.js +2 -1
  31. package/highlevel/methods/premium/pin-star-gift.cjs +24 -0
  32. package/highlevel/methods/premium/pin-star-gift.d.cts +13 -0
  33. package/highlevel/methods/premium/pin-star-gift.d.ts +13 -0
  34. package/highlevel/methods/premium/pin-star-gift.js +19 -0
  35. package/highlevel/methods/{premium/get-star-gifts.cjs → users/get-peer-settings.cjs} +10 -6
  36. package/highlevel/methods/users/get-peer-settings.d.cts +4 -0
  37. package/highlevel/methods/users/get-peer-settings.d.ts +4 -0
  38. package/highlevel/methods/users/get-peer-settings.js +14 -0
  39. package/highlevel/methods/users/resolve-peer.cjs +16 -31
  40. package/highlevel/methods/users/resolve-peer.js +7 -22
  41. package/highlevel/methods.d.cts +3 -2
  42. package/highlevel/methods.d.ts +3 -2
  43. package/highlevel/storage/repository/peers.d.cts +2 -3
  44. package/highlevel/storage/repository/peers.d.ts +2 -3
  45. package/highlevel/storage/service/peers.cjs +10 -4
  46. package/highlevel/storage/service/peers.d.cts +1 -0
  47. package/highlevel/storage/service/peers.d.ts +1 -0
  48. package/highlevel/storage/service/peers.js +10 -4
  49. package/highlevel/types/bots/keyboards/factories.cjs +4 -4
  50. package/highlevel/types/media/document.cjs +1 -1
  51. package/highlevel/types/media/document.js +1 -1
  52. package/highlevel/types/media/web-page.cjs +40 -3
  53. package/highlevel/types/media/web-page.d.cts +23 -1
  54. package/highlevel/types/media/web-page.d.ts +23 -1
  55. package/highlevel/types/media/web-page.js +41 -4
  56. package/highlevel/types/messages/message-media.cjs +1 -1
  57. package/highlevel/types/messages/message-media.d.cts +2 -2
  58. package/highlevel/types/messages/message-media.d.ts +2 -2
  59. package/highlevel/types/messages/message-media.js +2 -2
  60. package/highlevel/types/messages/message.cjs +4 -0
  61. package/highlevel/types/messages/message.d.cts +2 -0
  62. package/highlevel/types/messages/message.d.ts +2 -0
  63. package/highlevel/types/messages/message.js +4 -0
  64. package/highlevel/types/peers/chat-event/actions.cjs +5 -0
  65. package/highlevel/types/peers/chat-event/actions.js +5 -0
  66. package/highlevel/types/peers/chat.cjs +4 -0
  67. package/highlevel/types/peers/chat.d.cts +2 -0
  68. package/highlevel/types/peers/chat.d.ts +2 -0
  69. package/highlevel/types/peers/chat.js +4 -0
  70. package/highlevel/types/peers/full-chat.cjs +4 -0
  71. package/highlevel/types/peers/full-chat.d.cts +2 -0
  72. package/highlevel/types/peers/full-chat.d.ts +2 -0
  73. package/highlevel/types/peers/full-chat.js +4 -0
  74. package/highlevel/types/peers/index.d.cts +1 -0
  75. package/highlevel/types/peers/index.d.ts +1 -0
  76. package/highlevel/types/peers/peer-settings.cjs +101 -0
  77. package/highlevel/types/peers/peer-settings.d.cts +84 -0
  78. package/highlevel/types/peers/peer-settings.d.ts +84 -0
  79. package/highlevel/types/peers/peer-settings.js +96 -0
  80. package/highlevel/types/peers/user.cjs +4 -0
  81. package/highlevel/types/peers/user.d.cts +2 -0
  82. package/highlevel/types/peers/user.d.ts +2 -0
  83. package/highlevel/types/peers/user.js +4 -0
  84. package/highlevel/types/premium/saved-star-gift.cjs +4 -1
  85. package/highlevel/types/premium/saved-star-gift.d.cts +2 -3
  86. package/highlevel/types/premium/saved-star-gift.d.ts +2 -3
  87. package/highlevel/types/premium/saved-star-gift.js +5 -2
  88. package/highlevel/types/premium/stars-gift-unique.cjs +4 -0
  89. package/highlevel/types/premium/stars-gift-unique.d.cts +2 -0
  90. package/highlevel/types/premium/stars-gift-unique.d.ts +2 -0
  91. package/highlevel/types/premium/stars-gift-unique.js +4 -0
  92. package/highlevel/types/premium/stars-transaction.cjs +14 -0
  93. package/highlevel/types/premium/stars-transaction.d.cts +14 -0
  94. package/highlevel/types/premium/stars-transaction.d.ts +14 -0
  95. package/highlevel/types/premium/stars-transaction.js +14 -0
  96. package/highlevel/types/stories/story-viewer.cjs +1 -1
  97. package/highlevel/types/stories/story-viewer.js +1 -1
  98. package/highlevel/types/updates/history-read-update.cjs +1 -0
  99. package/highlevel/types/updates/history-read-update.js +1 -0
  100. package/highlevel/updates/manager.js +2 -2
  101. package/highlevel/utils/file-utils.js +1 -1
  102. package/highlevel/utils/inline-utils.cjs +5 -5
  103. package/highlevel/utils/inline-utils.js +1 -1
  104. package/highlevel/worker/storage.cjs +2 -0
  105. package/highlevel/worker/storage.d.cts +1 -0
  106. package/highlevel/worker/storage.d.ts +1 -0
  107. package/highlevel/worker/storage.js +2 -0
  108. package/index.cjs +3 -1
  109. package/index.js +5 -3
  110. package/methods.cjs +6 -4
  111. package/methods.js +6 -4
  112. package/network/authorization.js +2 -2
  113. package/network/network-manager.cjs +1 -1
  114. package/network/network-manager.js +1 -1
  115. package/network/persistent-connection.cjs +6 -4
  116. package/network/persistent-connection.js +6 -4
  117. package/network/session-connection.cjs +14 -7
  118. package/network/session-connection.d.cts +1 -1
  119. package/network/session-connection.d.ts +1 -1
  120. package/network/session-connection.js +15 -8
  121. package/package.json +4 -4
  122. package/storage/memory/repository/peers.cjs +2 -2
  123. package/storage/memory/repository/peers.d.cts +1 -1
  124. package/storage/memory/repository/peers.d.ts +1 -1
  125. package/storage/memory/repository/peers.js +2 -2
  126. package/storage/sqlite/repository/peers.cjs +3 -5
  127. package/storage/sqlite/repository/peers.d.cts +1 -2
  128. package/storage/sqlite/repository/peers.d.ts +1 -2
  129. package/storage/sqlite/repository/peers.js +3 -5
  130. package/utils/binary/asn1-parser.js +1 -1
  131. package/utils/binary/compat.cjs +150 -0
  132. package/utils/binary/compat.d.cts +13 -0
  133. package/utils/binary/compat.d.ts +13 -0
  134. package/utils/binary/compat.js +145 -0
  135. package/utils/binary/compat.test.d.cts +1 -0
  136. package/utils/binary/compat.test.d.ts +1 -0
  137. package/utils/binary/serialization.cjs +59 -0
  138. package/utils/binary/serialization.d.cts +10 -0
  139. package/utils/binary/serialization.d.ts +10 -0
  140. package/utils/binary/serialization.js +54 -0
  141. package/utils/index.d.cts +2 -0
  142. package/utils/index.d.ts +2 -0
  143. package/utils/long-utils.js +1 -1
  144. package/utils/peer-utils.js +1 -1
  145. package/utils.cjs +8 -0
  146. package/utils.js +8 -0
  147. package/highlevel/methods/premium/get-star-gifts.d.cts +0 -23
  148. package/highlevel/methods/premium/get-star-gifts.d.ts +0 -23
  149. package/highlevel/methods/premium/get-star-gifts.js +0 -10
  150. package/highlevel/methods/premium/iter-star-gifts.cjs +0 -29
  151. package/highlevel/methods/premium/iter-star-gifts.d.cts +0 -26
  152. package/highlevel/methods/premium/iter-star-gifts.d.ts +0 -26
  153. 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, allowMin) {
29
+ getById(id) {
30
30
  const ent = this.state.entities.get(id);
31
- if (!ent || ent.isMin && !allowMin) return null;
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 = ? and isMin = false");
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
- _getByIdAllowMin;
77
- getById(id, allowMin) {
75
+ getById(id) {
78
76
  this._ensureLoaded();
79
- const row = (allowMin ? this._getByIdAllowMin : this._getById).get(id);
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
- private _getByIdAllowMin;
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
- private _getByIdAllowMin;
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 = ? and isMin = false");
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
- _getByIdAllowMin;
70
- getById(id, allowMin) {
68
+ getById(id) {
71
69
  this._ensureLoaded();
72
- const row = (allowMin ? this._getByIdAllowMin : this._getById).get(id);
70
+ const row = this._getById.get(id);
73
71
  if (!row) return null;
74
72
  return mapPeerDto(row);
75
73
  }
@@ -1,4 +1,4 @@
1
- import { hex, base64 } from "@fuman/utils";
1
+ import { base64, hex } from "@fuman/utils";
2
2
  function parsePemContents(pem) {
3
3
  return base64.decode(pem.replace(/^-----(?:BEGIN|END)(?: RSA)? PUBLIC KEY-----$|\n/gm, ""));
4
4
  }
@@ -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';
@@ -1,4 +1,4 @@
1
- import { CustomMap, CustomSet, typed } from "@fuman/utils";
1
+ import { typed, CustomMap, CustomSet } from "@fuman/utils";
2
2
  import Long from "long";
3
3
  import { getRandomInt } from "./misc-utils.js";
4
4
  function randomLong(unsigned = false) {
@@ -1,4 +1,4 @@
1
- import { MtUnsupportedError, MtArgumentError } from "../types/errors.js";
1
+ import { MtArgumentError, MtUnsupportedError } from "../types/errors.js";
2
2
  import { assertNever } from "../types/utils.js";
3
3
  const ZERO_CHANNEL_ID = -1e12;
4
4
  const ZERO_SECRET_CHAT_ID = -2e12;
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>>;