@mtcute/core 0.28.0 → 0.28.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.
Files changed (111) hide show
  1. package/client.cjs +16 -0
  2. package/client.js +16 -0
  3. package/highlevel/base.cjs +2 -0
  4. package/highlevel/base.js +2 -0
  5. package/highlevel/client.d.cts +74 -5
  6. package/highlevel/client.d.ts +74 -5
  7. package/highlevel/methods/chats/batched-queries.cjs +2 -4
  8. package/highlevel/methods/chats/batched-queries.d.cts +1 -1
  9. package/highlevel/methods/chats/batched-queries.d.ts +1 -1
  10. package/highlevel/methods/chats/batched-queries.js +2 -4
  11. package/highlevel/methods/chats/edit-chat-member-rank.cjs +19 -0
  12. package/highlevel/methods/chats/edit-chat-member-rank.d.cts +13 -0
  13. package/highlevel/methods/chats/edit-chat-member-rank.d.ts +13 -0
  14. package/highlevel/methods/chats/edit-chat-member-rank.js +14 -0
  15. package/highlevel/methods/chats/get-chats.cjs +27 -0
  16. package/highlevel/methods/chats/get-chats.d.cts +9 -0
  17. package/highlevel/methods/chats/get-chats.d.ts +9 -0
  18. package/highlevel/methods/chats/get-chats.js +22 -0
  19. package/highlevel/methods/chats/get-chats.test.d.cts +1 -0
  20. package/highlevel/methods/chats/get-chats.test.d.ts +1 -0
  21. package/highlevel/methods/chats/get-creator-after-leave.cjs +20 -4
  22. package/highlevel/methods/chats/get-creator-after-leave.d.cts +2 -2
  23. package/highlevel/methods/chats/get-creator-after-leave.d.ts +2 -2
  24. package/highlevel/methods/chats/get-creator-after-leave.js +21 -5
  25. package/highlevel/methods/chats/get-peers.cjs +16 -0
  26. package/highlevel/methods/chats/get-peers.d.cts +9 -0
  27. package/highlevel/methods/chats/get-peers.d.ts +9 -0
  28. package/highlevel/methods/chats/get-peers.js +11 -0
  29. package/highlevel/methods/chats/get-peers.test.d.cts +1 -0
  30. package/highlevel/methods/chats/get-peers.test.d.ts +1 -0
  31. package/highlevel/methods/chats/toggle-content-protection.cjs +3 -2
  32. package/highlevel/methods/chats/toggle-content-protection.d.cts +4 -1
  33. package/highlevel/methods/chats/toggle-content-protection.d.ts +4 -1
  34. package/highlevel/methods/chats/toggle-content-protection.js +3 -2
  35. package/highlevel/methods/chats/transfer-chat-ownership.cjs +36 -0
  36. package/highlevel/methods/chats/transfer-chat-ownership.d.cts +16 -0
  37. package/highlevel/methods/chats/transfer-chat-ownership.d.ts +16 -0
  38. package/highlevel/methods/chats/transfer-chat-ownership.js +31 -0
  39. package/highlevel/methods/contacts/set-contact-note.cjs +2 -0
  40. package/highlevel/methods/contacts/set-contact-note.js +2 -0
  41. package/highlevel/methods/files/upload-file.cjs +2 -2
  42. package/highlevel/methods/files/upload-file.js +2 -2
  43. package/highlevel/methods/users/get-users.d.cts +1 -2
  44. package/highlevel/methods/users/get-users.d.ts +1 -2
  45. package/highlevel/methods/users/resolve-peer.cjs +4 -4
  46. package/highlevel/methods/users/resolve-peer.js +4 -4
  47. package/highlevel/methods.d.cts +4 -0
  48. package/highlevel/methods.d.ts +4 -0
  49. package/highlevel/types/messages/message-action.cjs +13 -0
  50. package/highlevel/types/messages/message-action.d.cts +19 -1
  51. package/highlevel/types/messages/message-action.d.ts +19 -1
  52. package/highlevel/types/messages/message-action.js +13 -0
  53. package/highlevel/types/messages/message.cjs +4 -0
  54. package/highlevel/types/messages/message.d.cts +2 -0
  55. package/highlevel/types/messages/message.d.ts +2 -0
  56. package/highlevel/types/messages/message.js +4 -0
  57. package/highlevel/types/peers/chat-event/actions.cjs +7 -0
  58. package/highlevel/types/peers/chat-event/actions.d.cts +11 -1
  59. package/highlevel/types/peers/chat-event/actions.d.ts +11 -1
  60. package/highlevel/types/peers/chat-event/actions.js +7 -0
  61. package/highlevel/types/peers/chat-event/filters.cjs +1 -0
  62. package/highlevel/types/peers/chat-event/filters.js +1 -0
  63. package/highlevel/types/peers/chat-member.cjs +5 -8
  64. package/highlevel/types/peers/chat-member.d.cts +2 -2
  65. package/highlevel/types/peers/chat-member.d.ts +2 -2
  66. package/highlevel/types/peers/chat-member.js +5 -8
  67. package/highlevel/types/peers/full-user.cjs +14 -0
  68. package/highlevel/types/peers/full-user.d.cts +10 -0
  69. package/highlevel/types/peers/full-user.d.ts +10 -0
  70. package/highlevel/types/peers/full-user.js +14 -0
  71. package/highlevel/types/peers/peer.cjs +13 -3
  72. package/highlevel/types/peers/peer.d.cts +4 -0
  73. package/highlevel/types/peers/peer.d.ts +4 -0
  74. package/highlevel/types/peers/peer.js +13 -3
  75. package/highlevel/updates/manager.cjs +2 -0
  76. package/highlevel/updates/manager.js +2 -0
  77. package/highlevel/utils/file-utils.cjs +2 -2
  78. package/highlevel/utils/file-utils.d.cts +1 -1
  79. package/highlevel/utils/file-utils.d.ts +1 -1
  80. package/highlevel/utils/file-utils.js +2 -2
  81. package/methods.cjs +8 -0
  82. package/methods.js +8 -0
  83. package/network/mtproto-session.cjs +2 -0
  84. package/network/mtproto-session.js +2 -0
  85. package/network/network-manager.cjs +1 -1
  86. package/network/network-manager.js +1 -1
  87. package/network/server-salt.cjs +4 -8
  88. package/network/server-salt.js +4 -8
  89. package/network/session-connection.cjs +2 -0
  90. package/network/session-connection.js +2 -0
  91. package/network/transports/intermediate.cjs +2 -0
  92. package/network/transports/intermediate.js +2 -0
  93. package/package.json +3 -3
  94. package/storage/storage.cjs +2 -0
  95. package/storage/storage.js +2 -0
  96. package/utils/binary/compat.cjs +9 -0
  97. package/utils/binary/compat.d.cts +3 -0
  98. package/utils/binary/compat.d.ts +3 -0
  99. package/utils/binary/compat.js +10 -1
  100. package/utils/date-entity-format.cjs +48 -0
  101. package/utils/date-entity-format.d.cts +24 -0
  102. package/utils/date-entity-format.d.ts +24 -0
  103. package/utils/date-entity-format.js +43 -0
  104. package/utils/date-entity-format.test.d.cts +1 -0
  105. package/utils/date-entity-format.test.d.ts +1 -0
  106. package/utils/index.d.cts +3 -0
  107. package/utils/index.d.ts +3 -0
  108. package/utils/links/bots.cjs +3 -0
  109. package/utils/links/bots.js +3 -0
  110. package/utils.cjs +14 -0
  111. package/utils.js +9 -1
package/methods.js CHANGED
@@ -40,17 +40,20 @@ import { deleteGroup } from "./highlevel/methods/chats/delete-group.js";
40
40
  import { deleteHistory } from "./highlevel/methods/chats/delete-history.js";
41
41
  import { deleteUserHistory } from "./highlevel/methods/chats/delete-user-history.js";
42
42
  import { editAdminRights } from "./highlevel/methods/chats/edit-admin-rights.js";
43
+ import { editChatMemberRank } from "./highlevel/methods/chats/edit-chat-member-rank.js";
43
44
  import { getChatEventLog } from "./highlevel/methods/chats/get-chat-event-log.js";
44
45
  import { getChatMember } from "./highlevel/methods/chats/get-chat-member.js";
45
46
  import { getChatMembers } from "./highlevel/methods/chats/get-chat-members.js";
46
47
  import { getChatPreview } from "./highlevel/methods/chats/get-chat-preview.js";
47
48
  import { getChat } from "./highlevel/methods/chats/get-chat.js";
49
+ import { getChats } from "./highlevel/methods/chats/get-chats.js";
48
50
  import { getCreatorAfterLeave } from "./highlevel/methods/chats/get-creator-after-leave.js";
49
51
  import { getFullChat } from "./highlevel/methods/chats/get-full-chat.js";
50
52
  import { getFullUser } from "./highlevel/methods/chats/get-full-user.js";
51
53
  import { getMessageAuthor } from "./highlevel/methods/chats/get-message-author.js";
52
54
  import { getNearbyChats } from "./highlevel/methods/chats/get-nearby-chats.js";
53
55
  import { getPeer } from "./highlevel/methods/chats/get-peer.js";
56
+ import { getPeers } from "./highlevel/methods/chats/get-peers.js";
54
57
  import { getSimilarChannels } from "./highlevel/methods/chats/get-similar-channels.js";
55
58
  import { getUser } from "./highlevel/methods/chats/get-user.js";
56
59
  import { iterChatEventLog } from "./highlevel/methods/chats/iter-chat-event-log.js";
@@ -75,6 +78,7 @@ import { toggleContentProtection } from "./highlevel/methods/chats/toggle-conten
75
78
  import { toggleFragmentUsername } from "./highlevel/methods/chats/toggle-fragment-username.js";
76
79
  import { toggleJoinRequests } from "./highlevel/methods/chats/toggle-join-requests.js";
77
80
  import { toggleJoinToSend } from "./highlevel/methods/chats/toggle-join-to-send.js";
81
+ import { transferChatOwnership } from "./highlevel/methods/chats/transfer-chat-ownership.js";
78
82
  import { unarchiveChats } from "./highlevel/methods/chats/unarchive-chats.js";
79
83
  import { unbanChatMember } from "./highlevel/methods/chats/unban-chat-member.js";
80
84
  import { addContact } from "./highlevel/methods/contacts/add-contact.js";
@@ -338,6 +342,7 @@ export {
338
342
  downloadChunk,
339
343
  editAdminRights,
340
344
  editBusinessChatLink,
345
+ editChatMemberRank,
341
346
  editCloseFriends,
342
347
  editCloseFriendsRaw,
343
348
  editFolder,
@@ -369,6 +374,7 @@ export {
369
374
  getChatMembers,
370
375
  getChatPreview,
371
376
  getChatlistPreview,
377
+ getChats,
372
378
  getCollectibleInfo,
373
379
  getCommonChats,
374
380
  getContacts,
@@ -408,6 +414,7 @@ export {
408
414
  getPeerDialogs,
409
415
  getPeerSettings,
410
416
  getPeerStories,
417
+ getPeers,
411
418
  getPrimaryInviteLink,
412
419
  getProfilePhoto,
413
420
  getProfilePhotos,
@@ -564,6 +571,7 @@ export {
564
571
  togglePinnedStarGifts,
565
572
  toggleStoriesPinned,
566
573
  toggleTodoCompleted,
574
+ transferChatOwnership,
567
575
  transferStarGift,
568
576
  translateMessage,
569
577
  translateText,
@@ -11,6 +11,8 @@ const Long = require("long");
11
11
  const longUtils = require("../utils/long-utils.cjs");
12
12
  const miscUtils = require("../utils/misc-utils.cjs");
13
13
  const sortedArray = require("../utils/sorted-array.cjs");
14
+ require("@mtcute/tl/binary/reader.js");
15
+ require("@mtcute/tl/binary/writer.js");
14
16
  const authKey = require("./auth-key.cjs");
15
17
  const errors = require("../types/errors.cjs");
16
18
  class MtprotoSession {
@@ -4,6 +4,8 @@ import Long from "long";
4
4
  import { randomLong, LongSet, LongMap, compareLongs } from "../utils/long-utils.js";
5
5
  import { getRandomInt } from "../utils/misc-utils.js";
6
6
  import { SortedArray } from "../utils/sorted-array.js";
7
+ import "@mtcute/tl/binary/reader.js";
8
+ import "@mtcute/tl/binary/writer.js";
7
9
  import { AuthKey } from "./auth-key.js";
8
10
  import { MtcuteError } from "../types/errors.js";
9
11
  class MtprotoSession {
@@ -225,7 +225,7 @@ class NetworkManager {
225
225
  _: "initConnection",
226
226
  deviceModel,
227
227
  systemVersion: "1.0",
228
- appVersion: "0.28.0",
228
+ appVersion: "0.28.2",
229
229
  systemLangCode: "en",
230
230
  langPack: "",
231
231
  // "langPacks are for official apps only"
@@ -218,7 +218,7 @@ class NetworkManager {
218
218
  _: "initConnection",
219
219
  deviceModel,
220
220
  systemVersion: "1.0",
221
- appVersion: "0.28.0",
221
+ appVersion: "0.28.2",
222
222
  systemLangCode: "en",
223
223
  langPack: "",
224
224
  // "langPacks are for official apps only"
@@ -35,19 +35,15 @@ class ServerSaltManager {
35
35
  _replaceAndScheduleNext() {
36
36
  if (this._timer) utils.timers.clearTimeout(this._timer);
37
37
  const now = Date.now() / 1e3;
38
- let next;
39
38
  while (this._futureSalts.length !== 0) {
40
39
  const salt = this._futureSalts[0];
41
- if (salt.validSince <= now && now <= salt.validUntil) {
42
- next = salt;
43
- break;
44
- }
40
+ if (salt.validSince > now) break;
41
+ this.currentSalt = salt.salt;
45
42
  this._futureSalts.shift();
46
43
  }
47
- if (!next) {
48
- return;
44
+ if (this._futureSalts.length) {
45
+ this._scheduleReplace(this._futureSalts[0]);
49
46
  }
50
- this._scheduleReplace(next);
51
47
  }
52
48
  destroy() {
53
49
  utils.timers.clearTimeout(this._timer);
@@ -28,19 +28,15 @@ class ServerSaltManager {
28
28
  _replaceAndScheduleNext() {
29
29
  if (this._timer) timers.clearTimeout(this._timer);
30
30
  const now = Date.now() / 1e3;
31
- let next;
32
31
  while (this._futureSalts.length !== 0) {
33
32
  const salt = this._futureSalts[0];
34
- if (salt.validSince <= now && now <= salt.validUntil) {
35
- next = salt;
36
- break;
37
- }
33
+ if (salt.validSince > now) break;
34
+ this.currentSalt = salt.salt;
38
35
  this._futureSalts.shift();
39
36
  }
40
- if (!next) {
41
- return;
37
+ if (this._futureSalts.length) {
38
+ this._scheduleReplace(this._futureSalts[0]);
42
39
  }
43
- this._scheduleReplace(next);
44
40
  }
45
41
  destroy() {
46
42
  timers.clearTimeout(this._timer);
@@ -12,6 +12,8 @@ const Long = require("long");
12
12
  const mtproto = require("../utils/crypto/mtproto.cjs");
13
13
  const earlyTimer = require("../utils/early-timer.cjs");
14
14
  const longUtils = require("../utils/long-utils.cjs");
15
+ require("@mtcute/tl/binary/reader.js");
16
+ require("@mtcute/tl/binary/writer.js");
15
17
  const authorization = require("./authorization.cjs");
16
18
  const mtprotoSession = require("./mtproto-session.cjs");
17
19
  const persistentConnection = require("./persistent-connection.cjs");
@@ -5,6 +5,8 @@ import Long from "long";
5
5
  import { createAesIgeForMessageOld } from "../utils/crypto/mtproto.js";
6
6
  import { EarlyTimer } from "../utils/early-timer.js";
7
7
  import { longFromBuffer, randomLong, removeFromLongArray } from "../utils/long-utils.js";
8
+ import "@mtcute/tl/binary/reader.js";
9
+ import "@mtcute/tl/binary/writer.js";
8
10
  import { doAuthorization } from "./authorization.js";
9
11
  import { MtprotoSession } from "./mtproto-session.js";
10
12
  import { PersistentConnection } from "./persistent-connection.js";
@@ -9,6 +9,8 @@ const io = require("@fuman/io");
9
9
  const utils = require("@fuman/utils");
10
10
  const miscUtils = require("../../utils/misc-utils.cjs");
11
11
  require("@mtcute/tl-runtime");
12
+ require("@mtcute/tl/binary/reader.js");
13
+ require("@mtcute/tl/binary/writer.js");
12
14
  const abstract = require("./abstract.cjs");
13
15
  const TAG = new Uint8Array([238, 238, 238, 238]);
14
16
  const PADDED_TAG = new Uint8Array([221, 221, 221, 221]);
@@ -2,6 +2,8 @@ import { read, write } from "@fuman/io";
2
2
  import { typed } from "@fuman/utils";
3
3
  import { getRandomInt } from "../../utils/misc-utils.js";
4
4
  import "@mtcute/tl-runtime";
5
+ import "@mtcute/tl/binary/reader.js";
6
+ import "@mtcute/tl/binary/writer.js";
5
7
  import { TransportError } from "./abstract.js";
6
8
  const TAG = new Uint8Array([238, 238, 238, 238]);
7
9
  const PADDED_TAG = new Uint8Array([221, 221, 221, 221]);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mtcute/core",
3
3
  "type": "module",
4
- "version": "0.28.0",
4
+ "version": "0.28.2",
5
5
  "description": "Type-safe library for MTProto (Telegram API)",
6
6
  "license": "MIT",
7
7
  "scripts": {},
@@ -9,8 +9,8 @@
9
9
  "@fuman/io": "0.0.19",
10
10
  "@fuman/net": "0.0.19",
11
11
  "@fuman/utils": "0.0.19",
12
- "@mtcute/file-id": "^0.27.8",
13
- "@mtcute/tl": "^222.0.0",
12
+ "@mtcute/file-id": "^0.28.2",
13
+ "@mtcute/tl": "^223.0.0",
14
14
  "@mtcute/tl-runtime": "^0.24.3",
15
15
  "@types/events": "3.0.0",
16
16
  "long": "5.2.3"
@@ -8,6 +8,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
8
  const defaultDcs = require("./service/default-dcs.cjs");
9
9
  const functionUtils = require("../utils/function-utils.cjs");
10
10
  require("@mtcute/tl-runtime");
11
+ require("@mtcute/tl/binary/reader.js");
12
+ require("@mtcute/tl/binary/writer.js");
11
13
  const authKeys = require("./service/auth-keys.cjs");
12
14
  const futureSalts = require("./service/future-salts.cjs");
13
15
  class StorageManager {
@@ -1,6 +1,8 @@
1
1
  import { DefaultDcsService } from "./service/default-dcs.js";
2
2
  import { asyncResettable } from "../utils/function-utils.js";
3
3
  import "@mtcute/tl-runtime";
4
+ import "@mtcute/tl/binary/reader.js";
5
+ import "@mtcute/tl/binary/writer.js";
4
6
  import { AuthKeysService } from "./service/auth-keys.js";
5
7
  import { FutureSaltsService } from "./service/future-salts.js";
6
8
  class StorageManager {
@@ -206,6 +206,7 @@ function mapCompatMessage(obj) {
206
206
  case "message_layer204":
207
207
  case "message_layer216":
208
208
  case "message_layer220":
209
+ case "message_layer222":
209
210
  return {
210
211
  ...obj,
211
212
  _: "message",
@@ -339,6 +340,7 @@ function mapCompatObject(obj) {
339
340
  case "message_layer204":
340
341
  case "message_layer216":
341
342
  case "message_layer220":
343
+ case "message_layer222":
342
344
  case "messageService_layer204":
343
345
  return mapCompatMessage(obj);
344
346
  case "messageReplyHeader_layer206":
@@ -368,6 +370,12 @@ function mapCompatObject(obj) {
368
370
  case "starGiftAttributePattern_layer221":
369
371
  case "starGiftAttributeModel_layer221":
370
372
  return mapCompatStarGiftAttribute(obj);
373
+ case "chatParticipant_layer222":
374
+ return replaceType(obj, "chatParticipant");
375
+ case "chatParticipantCreator_layer222":
376
+ return replaceType(obj, "chatParticipantCreator");
377
+ case "chatParticipantAdmin_layer222":
378
+ return replaceType(obj, "chatParticipantAdmin");
371
379
  case "keyboardButton_layer221":
372
380
  case "keyboardButtonUrl_layer221":
373
381
  case "keyboardButtonCallback_layer221":
@@ -426,5 +434,6 @@ function deserializePeersIndexWithCompat(data) {
426
434
  }
427
435
  return res;
428
436
  }
437
+ exports.__tlReaderMapWithCompat = _combinedReaderMap;
429
438
  exports.deserializeObjectWithCompat = deserializeObjectWithCompat;
430
439
  exports.deserializePeersIndexWithCompat = deserializePeersIndexWithCompat;
@@ -1,5 +1,8 @@
1
+ import { TlReaderMap } from '@mtcute/tl-runtime';
1
2
  import { tl } from '@mtcute/tl';
2
3
  import { PeersIndex } from '../../highlevel/types/peers/peers-index.js';
4
+ declare const _combinedReaderMap: TlReaderMap;
5
+ export { _combinedReaderMap as __tlReaderMapWithCompat };
3
6
  /**
4
7
  * Deserialize a TL object previously serialized with {@link serializeObject},
5
8
  * with backwards compatibility for older versions of the schema.
@@ -1,5 +1,8 @@
1
+ import { TlReaderMap } from '@mtcute/tl-runtime';
1
2
  import { tl } from '@mtcute/tl';
2
3
  import { PeersIndex } from '../../highlevel/types/peers/peers-index.js';
4
+ declare const _combinedReaderMap: TlReaderMap;
5
+ export { _combinedReaderMap as __tlReaderMapWithCompat };
3
6
  /**
4
7
  * Deserialize a TL object previously serialized with {@link serializeObject},
5
8
  * with backwards compatibility for older versions of the schema.
@@ -1,5 +1,5 @@
1
1
  import { Bytes, read } from "@fuman/io";
2
- import { assert, objectEntries } from "@fuman/utils";
2
+ import { objectEntries, assert } from "@fuman/utils";
3
3
  import { tl } from "@mtcute/tl";
4
4
  import { TlBinaryReader } from "@mtcute/tl-runtime";
5
5
  import { __tlReaderMap } from "@mtcute/tl/binary/reader.js";
@@ -199,6 +199,7 @@ function mapCompatMessage(obj) {
199
199
  case "message_layer204":
200
200
  case "message_layer216":
201
201
  case "message_layer220":
202
+ case "message_layer222":
202
203
  return {
203
204
  ...obj,
204
205
  _: "message",
@@ -332,6 +333,7 @@ function mapCompatObject(obj) {
332
333
  case "message_layer204":
333
334
  case "message_layer216":
334
335
  case "message_layer220":
336
+ case "message_layer222":
335
337
  case "messageService_layer204":
336
338
  return mapCompatMessage(obj);
337
339
  case "messageReplyHeader_layer206":
@@ -361,6 +363,12 @@ function mapCompatObject(obj) {
361
363
  case "starGiftAttributePattern_layer221":
362
364
  case "starGiftAttributeModel_layer221":
363
365
  return mapCompatStarGiftAttribute(obj);
366
+ case "chatParticipant_layer222":
367
+ return replaceType(obj, "chatParticipant");
368
+ case "chatParticipantCreator_layer222":
369
+ return replaceType(obj, "chatParticipantCreator");
370
+ case "chatParticipantAdmin_layer222":
371
+ return replaceType(obj, "chatParticipantAdmin");
364
372
  case "keyboardButton_layer221":
365
373
  case "keyboardButtonUrl_layer221":
366
374
  case "keyboardButtonCallback_layer221":
@@ -420,6 +428,7 @@ function deserializePeersIndexWithCompat(data) {
420
428
  return res;
421
429
  }
422
430
  export {
431
+ _combinedReaderMap as __tlReaderMapWithCompat,
423
432
  deserializeObjectWithCompat,
424
433
  deserializePeersIndexWithCompat
425
434
  };
@@ -0,0 +1,48 @@
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
+ function parseDateEntityFormat(format) {
9
+ if (format === "r" || format === "R") {
10
+ return { relative: true };
11
+ }
12
+ const result = {};
13
+ for (const c of format) {
14
+ switch (c) {
15
+ case "t":
16
+ result.shortTime = true;
17
+ break;
18
+ case "T":
19
+ result.longTime = true;
20
+ break;
21
+ case "d":
22
+ result.shortDate = true;
23
+ break;
24
+ case "D":
25
+ result.longDate = true;
26
+ break;
27
+ case "w":
28
+ case "W":
29
+ result.dayOfWeek = true;
30
+ break;
31
+ default:
32
+ throw new Error(`Invalid date format character: ${c}`);
33
+ }
34
+ }
35
+ return result;
36
+ }
37
+ function dateEntityFormatToString(entity) {
38
+ if (entity.relative) return "r";
39
+ let result = "";
40
+ if (entity.dayOfWeek) result += "w";
41
+ if (entity.shortDate) result += "d";
42
+ if (entity.longDate) result += "D";
43
+ if (entity.shortTime) result += "t";
44
+ if (entity.longTime) result += "T";
45
+ return result;
46
+ }
47
+ exports.dateEntityFormatToString = dateEntityFormatToString;
48
+ exports.parseDateEntityFormat = parseDateEntityFormat;
@@ -0,0 +1,24 @@
1
+ import { tl } from '@mtcute/tl';
2
+ export type DateEntityFlags = Omit<tl.RawMessageEntityFormattedDate, '_' | 'offset' | 'length' | 'date'>;
3
+ /**
4
+ * Parse a date-time entity format string into flags for `messageEntityFormattedDate`.
5
+ *
6
+ * Format string must match: `r|w?[dD]?[tT]?`
7
+ *
8
+ * Control characters:
9
+ * - `r`: relative time (cannot be combined with others)
10
+ * - `w`: day of the week
11
+ * - `d`: short date (e.g. "17.03.22")
12
+ * - `D`: long date (e.g. "March 17, 2022")
13
+ * - `t`: short time (e.g. "22:45")
14
+ * - `T`: long time (e.g. "22:45:00")
15
+ *
16
+ * Empty string means display text as-is, user can still see the underlying date.
17
+ */
18
+ export declare function parseDateEntityFormat(format: string): DateEntityFlags;
19
+ /**
20
+ * Convert `messageEntityFormattedDate` flags to a format string.
21
+ *
22
+ * @see {@link parseDateEntityFormat} for the format description
23
+ */
24
+ export declare function dateEntityFormatToString(entity: DateEntityFlags): string;
@@ -0,0 +1,24 @@
1
+ import { tl } from '@mtcute/tl';
2
+ export type DateEntityFlags = Omit<tl.RawMessageEntityFormattedDate, '_' | 'offset' | 'length' | 'date'>;
3
+ /**
4
+ * Parse a date-time entity format string into flags for `messageEntityFormattedDate`.
5
+ *
6
+ * Format string must match: `r|w?[dD]?[tT]?`
7
+ *
8
+ * Control characters:
9
+ * - `r`: relative time (cannot be combined with others)
10
+ * - `w`: day of the week
11
+ * - `d`: short date (e.g. "17.03.22")
12
+ * - `D`: long date (e.g. "March 17, 2022")
13
+ * - `t`: short time (e.g. "22:45")
14
+ * - `T`: long time (e.g. "22:45:00")
15
+ *
16
+ * Empty string means display text as-is, user can still see the underlying date.
17
+ */
18
+ export declare function parseDateEntityFormat(format: string): DateEntityFlags;
19
+ /**
20
+ * Convert `messageEntityFormattedDate` flags to a format string.
21
+ *
22
+ * @see {@link parseDateEntityFormat} for the format description
23
+ */
24
+ export declare function dateEntityFormatToString(entity: DateEntityFlags): string;
@@ -0,0 +1,43 @@
1
+ function parseDateEntityFormat(format) {
2
+ if (format === "r" || format === "R") {
3
+ return { relative: true };
4
+ }
5
+ const result = {};
6
+ for (const c of format) {
7
+ switch (c) {
8
+ case "t":
9
+ result.shortTime = true;
10
+ break;
11
+ case "T":
12
+ result.longTime = true;
13
+ break;
14
+ case "d":
15
+ result.shortDate = true;
16
+ break;
17
+ case "D":
18
+ result.longDate = true;
19
+ break;
20
+ case "w":
21
+ case "W":
22
+ result.dayOfWeek = true;
23
+ break;
24
+ default:
25
+ throw new Error(`Invalid date format character: ${c}`);
26
+ }
27
+ }
28
+ return result;
29
+ }
30
+ function dateEntityFormatToString(entity) {
31
+ if (entity.relative) return "r";
32
+ let result = "";
33
+ if (entity.dayOfWeek) result += "w";
34
+ if (entity.shortDate) result += "d";
35
+ if (entity.longDate) result += "D";
36
+ if (entity.shortTime) result += "t";
37
+ if (entity.longTime) result += "T";
38
+ return result;
39
+ }
40
+ export {
41
+ dateEntityFormatToString,
42
+ parseDateEntityFormat
43
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/utils/index.d.cts CHANGED
@@ -7,6 +7,7 @@ export * from './bigint-utils.js';
7
7
  export * from './binary/compat.js';
8
8
  export * from './binary/serialization.js';
9
9
  export * from './crypto/index.js';
10
+ export * from './date-entity-format.js';
10
11
  export * from './dcs.js';
11
12
  export * from './early-timer.js';
12
13
  export * from './function-utils.js';
@@ -19,3 +20,5 @@ export * from './sorted-array.js';
19
20
  export * from './tl-json.js';
20
21
  export * from './type-assertions.js';
21
22
  export * from '@mtcute/tl-runtime';
23
+ export { __tlReaderMap } from '@mtcute/tl/binary/reader.js';
24
+ export { __tlWriterMap } from '@mtcute/tl/binary/writer.js';
package/utils/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from './bigint-utils.js';
7
7
  export * from './binary/compat.js';
8
8
  export * from './binary/serialization.js';
9
9
  export * from './crypto/index.js';
10
+ export * from './date-entity-format.js';
10
11
  export * from './dcs.js';
11
12
  export * from './early-timer.js';
12
13
  export * from './function-utils.js';
@@ -19,3 +20,5 @@ export * from './sorted-array.js';
19
20
  export * from './tl-json.js';
20
21
  export * from './type-assertions.js';
21
22
  export * from '@mtcute/tl-runtime';
23
+ export { __tlReaderMap } from '@mtcute/tl/binary/reader.js';
24
+ export { __tlWriterMap } from '@mtcute/tl/binary/writer.js';
@@ -63,6 +63,9 @@ function normalizeBotAdmin(rights) {
63
63
  case "manageDirectMessages":
64
64
  return "manage_chat";
65
65
  // idk?
66
+ case "manageRanks":
67
+ return "manage_chat";
68
+ // idk?
66
69
  default:
67
70
  utils.assertNever();
68
71
  return "";
@@ -56,6 +56,9 @@ function normalizeBotAdmin(rights) {
56
56
  case "manageDirectMessages":
57
57
  return "manage_chat";
58
58
  // idk?
59
+ case "manageRanks":
60
+ return "manage_chat";
61
+ // idk?
59
62
  default:
60
63
  assertNever();
61
64
  return "";
package/utils.cjs CHANGED
@@ -12,6 +12,7 @@ const defaultDcs = require("./storage/service/default-dcs.cjs");
12
12
  const bigintUtils = require("./utils/bigint-utils.cjs");
13
13
  const compat = require("./utils/binary/compat.cjs");
14
14
  const serialization = require("./utils/binary/serialization.cjs");
15
+ const dateEntityFormat = require("./utils/date-entity-format.cjs");
15
16
  const dcs = require("./utils/dcs.cjs");
16
17
  const earlyTimer = require("./utils/early-timer.cjs");
17
18
  const functionUtils = require("./utils/function-utils.cjs");
@@ -23,6 +24,8 @@ const sortedArray = require("./utils/sorted-array.cjs");
23
24
  const tlJson = require("./utils/tl-json.cjs");
24
25
  const typeAssertions = require("./utils/type-assertions.cjs");
25
26
  const tlRuntime = require("@mtcute/tl-runtime");
27
+ const reader_js = require("@mtcute/tl/binary/reader.js");
28
+ const writer_js = require("@mtcute/tl/binary/writer.js");
26
29
  const convertFileId = require("./highlevel/utils/convert-file-id.cjs");
27
30
  const entities = require("./highlevel/utils/entities.cjs");
28
31
  const fileUtils = require("./highlevel/utils/file-utils.cjs");
@@ -48,12 +51,15 @@ exports.DefaultDcsService = defaultDcs.DefaultDcsService;
48
51
  exports.randomBigInt = bigintUtils.randomBigInt;
49
52
  exports.randomBigIntBits = bigintUtils.randomBigIntBits;
50
53
  exports.randomBigIntInRange = bigintUtils.randomBigIntInRange;
54
+ exports.__tlReaderMapWithCompat = compat.__tlReaderMapWithCompat;
51
55
  exports.deserializeObjectWithCompat = compat.deserializeObjectWithCompat;
52
56
  exports.deserializePeersIndexWithCompat = compat.deserializePeersIndexWithCompat;
53
57
  exports.deserializeObject = serialization.deserializeObject;
54
58
  exports.deserializePeersIndex = serialization.deserializePeersIndex;
55
59
  exports.serializeObject = serialization.serializeObject;
56
60
  exports.serializePeersIndex = serialization.serializePeersIndex;
61
+ exports.dateEntityFormatToString = dateEntityFormat.dateEntityFormatToString;
62
+ exports.parseDateEntityFormat = dateEntityFormat.parseDateEntityFormat;
57
63
  exports.defaultProductionDc = dcs.defaultProductionDc;
58
64
  exports.defaultProductionIpv6Dc = dcs.defaultProductionIpv6Dc;
59
65
  exports.defaultTestDc = dcs.defaultTestDc;
@@ -91,6 +97,14 @@ exports.hasValueAtKey = typeAssertions.hasValueAtKey;
91
97
  exports.isPresent = typeAssertions.isPresent;
92
98
  exports.isTlRpcError = typeAssertions.isTlRpcError;
93
99
  exports.mtpAssertTypeIs = typeAssertions.mtpAssertTypeIs;
100
+ Object.defineProperty(exports, "__tlReaderMap", {
101
+ enumerable: true,
102
+ get: () => reader_js.__tlReaderMap
103
+ });
104
+ Object.defineProperty(exports, "__tlWriterMap", {
105
+ enumerable: true,
106
+ get: () => writer_js.__tlWriterMap
107
+ });
94
108
  exports.fileIdToEncryptedFile = convertFileId.fileIdToEncryptedFile;
95
109
  exports.fileIdToInputDocument = convertFileId.fileIdToInputDocument;
96
110
  exports.fileIdToInputFileLocation = convertFileId.fileIdToInputFileLocation;
package/utils.js CHANGED
@@ -3,8 +3,9 @@ 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";
6
+ import { __tlReaderMapWithCompat, deserializeObjectWithCompat, deserializePeersIndexWithCompat } from "./utils/binary/compat.js";
7
7
  import { deserializeObject, deserializePeersIndex, serializeObject, serializePeersIndex } from "./utils/binary/serialization.js";
8
+ import { dateEntityFormatToString, parseDateEntityFormat } from "./utils/date-entity-format.js";
8
9
  import { defaultProductionDc, defaultProductionIpv6Dc, defaultTestDc, defaultTestIpv6Dc, parseBasicDcOption, serializeBasicDcOption } from "./utils/dcs.js";
9
10
  import { EarlyTimer } from "./utils/early-timer.js";
10
11
  import { asyncResettable, throttle } from "./utils/function-utils.js";
@@ -16,6 +17,8 @@ import { SortedArray } from "./utils/sorted-array.js";
16
17
  import { jsonToTlJson, tlJsonToJson } from "./utils/tl-json.js";
17
18
  import { assertTrue, assertTypeIs, assertTypeIsNot, hasValueAtKey, isPresent, isTlRpcError, mtpAssertTypeIs } from "./utils/type-assertions.js";
18
19
  export * from "@mtcute/tl-runtime";
20
+ import { __tlReaderMap } from "@mtcute/tl/binary/reader.js";
21
+ import { __tlWriterMap } from "@mtcute/tl/binary/writer.js";
19
22
  import { fileIdToEncryptedFile, fileIdToInputDocument, fileIdToInputFileLocation, fileIdToInputPhoto, fileIdToInputWebFileLocation, fileIdToSecureFile } from "./highlevel/utils/convert-file-id.js";
20
23
  import { joinTextWithEntities } from "./highlevel/utils/entities.js";
21
24
  import { determinePartSize, extractFileName, inflateSvgPath, isProbablyPlainText, strippedPhotoToJpg, svgPathToFile } from "./highlevel/utils/file-utils.js";
@@ -48,6 +51,9 @@ export {
48
51
  RpsMeter,
49
52
  SortedArray,
50
53
  UpdatesStateService,
54
+ __tlReaderMap,
55
+ __tlReaderMapWithCompat,
56
+ __tlWriterMap,
51
57
  addPublicKey,
52
58
  assertTrue,
53
59
  assertTypeIs,
@@ -59,6 +65,7 @@ export {
59
65
  computeSrpParams,
60
66
  createAesIgeForMessage,
61
67
  createAesIgeForMessageOld,
68
+ dateEntityFormatToString,
62
69
  decodeWaveform,
63
70
  defaultProductionDc,
64
71
  defaultProductionIpv6Dc,
@@ -113,6 +120,7 @@ export {
113
120
  normalizeMessageId,
114
121
  normalizePhoneNumber,
115
122
  parseBasicDcOption,
123
+ parseDateEntityFormat,
116
124
  parseInlineMessageId,
117
125
  parseMarkedPeerId,
118
126
  parsePublicKey,