@mtkruto/browser 0.119.0 → 0.120.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 (128) hide show
  1. package/README.md +1 -1
  2. package/esm/0_errors.d.ts.map +1 -1
  3. package/esm/0_errors.js +9 -31
  4. package/esm/3_errors.js +2 -12
  5. package/esm/4_errors.js +2 -12
  6. package/esm/_dnt.polyfills.d.ts +0 -99
  7. package/esm/_dnt.polyfills.d.ts.map +1 -1
  8. package/esm/_dnt.polyfills.js +1 -127
  9. package/esm/client/0_abortable_loop.js +26 -39
  10. package/esm/client/0_storage_operations.js +179 -218
  11. package/esm/client/1_client_plain.js +4 -22
  12. package/esm/client/2_account_manager.js +140 -149
  13. package/esm/client/2_bot_info_manager.js +26 -38
  14. package/esm/client/2_business_connection_manager.js +10 -23
  15. package/esm/client/2_client_encrypted.js +198 -215
  16. package/esm/client/2_file_manager.js +255 -262
  17. package/esm/client/2_network_statistics_manager.js +31 -44
  18. package/esm/client/2_payment_manager.js +7 -20
  19. package/esm/client/2_reaction_manager.js +7 -20
  20. package/esm/client/2_translations_manager.js +101 -111
  21. package/esm/client/2_update_manager.js +750 -745
  22. package/esm/client/3_client_encrypted_pool.js +10 -26
  23. package/esm/client/3_message_manager.js +503 -508
  24. package/esm/client/3_video_chat_manager.js +57 -68
  25. package/esm/client/4_callback_query_manager.js +18 -30
  26. package/esm/client/4_chat_list_manager.js +140 -146
  27. package/esm/client/4_chat_manager.js +161 -169
  28. package/esm/client/4_checklist_manager.js +26 -39
  29. package/esm/client/4_context.js +244 -259
  30. package/esm/client/4_forum_manager.js +67 -73
  31. package/esm/client/4_gift_manager.js +22 -35
  32. package/esm/client/4_inline_query_manager.js +16 -28
  33. package/esm/client/4_link_preview_manager.js +6 -19
  34. package/esm/client/4_poll_manager.js +44 -57
  35. package/esm/client/4_story_manager.js +41 -53
  36. package/esm/client/5_composer.js +13 -26
  37. package/esm/client/6_client.js +866 -896
  38. package/esm/client/6_client_dispatcher.js +308 -325
  39. package/esm/client/7_client_worker.js +16 -29
  40. package/esm/connection/1_connection_tcp.js +55 -82
  41. package/esm/connection/1_connection_web_socket.js +75 -91
  42. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.1/dist/tgcrypto.js +3 -11
  43. package/esm/deps/jsr.io/@std/async/1.2.0/mux_async_iterator.js +31 -47
  44. package/esm/deps/jsr.io/@std/async/1.2.0/tee.js +11 -34
  45. package/esm/deps/jsr.io/@std/cache/0.2.2/lru_cache.js +30 -47
  46. package/esm/deps/jsr.io/@std/datetime/0.225.7/_date_time_formatter.js +4 -17
  47. package/esm/session/0_session_state.js +12 -38
  48. package/esm/session/1_session.js +49 -72
  49. package/esm/session/2_session_encrypted.js +422 -420
  50. package/esm/storage/2_storage_indexed_db.js +26 -44
  51. package/esm/storage/2_storage_local_storage.js +3 -16
  52. package/esm/storage/2_storage_memory.js +24 -41
  53. package/esm/storage/2_storage_session_storage.js +3 -16
  54. package/esm/tl/1_tl_reader.d.ts +1 -1
  55. package/esm/tl/1_tl_reader.d.ts.map +1 -1
  56. package/esm/tl/1_tl_reader.js +95 -103
  57. package/esm/tl/1_tl_writer.js +169 -178
  58. package/esm/transport/0_transport.js +1 -8
  59. package/esm/transport/1_transport_abridged.js +11 -24
  60. package/esm/transport/1_transport_intermediate.js +10 -23
  61. package/esm/utilities/0_mutex.js +4 -19
  62. package/esm/utilities/0_part_stream.js +11 -25
  63. package/esm/utilities/1_crypto.js +42 -53
  64. package/esm/utilities/2_queue.js +29 -47
  65. package/package.json +1 -1
  66. package/script/0_errors.d.ts.map +1 -1
  67. package/script/0_errors.js +9 -31
  68. package/script/3_errors.js +2 -12
  69. package/script/4_errors.js +2 -12
  70. package/script/_dnt.polyfills.d.ts +0 -99
  71. package/script/_dnt.polyfills.d.ts.map +1 -1
  72. package/script/_dnt.polyfills.js +0 -128
  73. package/script/client/0_abortable_loop.js +27 -40
  74. package/script/client/0_storage_operations.js +179 -218
  75. package/script/client/1_client_plain.js +4 -22
  76. package/script/client/2_account_manager.js +140 -149
  77. package/script/client/2_bot_info_manager.js +26 -38
  78. package/script/client/2_business_connection_manager.js +10 -23
  79. package/script/client/2_client_encrypted.js +199 -216
  80. package/script/client/2_file_manager.js +255 -262
  81. package/script/client/2_network_statistics_manager.js +32 -45
  82. package/script/client/2_payment_manager.js +7 -20
  83. package/script/client/2_reaction_manager.js +7 -20
  84. package/script/client/2_translations_manager.js +102 -112
  85. package/script/client/2_update_manager.js +750 -745
  86. package/script/client/3_client_encrypted_pool.js +10 -26
  87. package/script/client/3_message_manager.js +503 -508
  88. package/script/client/3_video_chat_manager.js +57 -68
  89. package/script/client/4_callback_query_manager.js +18 -30
  90. package/script/client/4_chat_list_manager.js +140 -146
  91. package/script/client/4_chat_manager.js +161 -169
  92. package/script/client/4_checklist_manager.js +26 -39
  93. package/script/client/4_context.js +244 -259
  94. package/script/client/4_forum_manager.js +67 -73
  95. package/script/client/4_gift_manager.js +22 -35
  96. package/script/client/4_inline_query_manager.js +16 -28
  97. package/script/client/4_link_preview_manager.js +6 -19
  98. package/script/client/4_poll_manager.js +44 -57
  99. package/script/client/4_story_manager.js +41 -53
  100. package/script/client/5_composer.js +13 -26
  101. package/script/client/6_client.js +866 -896
  102. package/script/client/6_client_dispatcher.js +308 -325
  103. package/script/client/7_client_worker.js +16 -29
  104. package/script/connection/1_connection_tcp.js +55 -82
  105. package/script/connection/1_connection_web_socket.js +75 -91
  106. package/script/deps/jsr.io/@roj/tgcrypto/1.0.1/dist/tgcrypto.js +3 -11
  107. package/script/deps/jsr.io/@std/async/1.2.0/mux_async_iterator.js +31 -47
  108. package/script/deps/jsr.io/@std/async/1.2.0/tee.js +11 -34
  109. package/script/deps/jsr.io/@std/cache/0.2.2/lru_cache.js +30 -47
  110. package/script/deps/jsr.io/@std/datetime/0.225.7/_date_time_formatter.js +4 -17
  111. package/script/session/0_session_state.js +12 -38
  112. package/script/session/1_session.js +49 -72
  113. package/script/session/2_session_encrypted.js +423 -421
  114. package/script/storage/2_storage_indexed_db.js +26 -44
  115. package/script/storage/2_storage_local_storage.js +3 -16
  116. package/script/storage/2_storage_memory.js +24 -41
  117. package/script/storage/2_storage_session_storage.js +3 -16
  118. package/script/tl/1_tl_reader.d.ts +1 -1
  119. package/script/tl/1_tl_reader.d.ts.map +1 -1
  120. package/script/tl/1_tl_reader.js +96 -104
  121. package/script/tl/1_tl_writer.js +170 -179
  122. package/script/transport/0_transport.js +1 -8
  123. package/script/transport/1_transport_abridged.js +11 -24
  124. package/script/transport/1_transport_intermediate.js +10 -23
  125. package/script/utilities/0_mutex.js +4 -19
  126. package/script/utilities/0_part_stream.js +11 -25
  127. package/script/utilities/1_crypto.js +43 -54
  128. package/script/utilities/2_queue.js +30 -48
@@ -18,37 +18,22 @@
18
18
  * You should have received a copy of the GNU Lesser General Public License
19
19
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
20
20
  */
21
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
22
- if (kind === "m") throw new TypeError("Private method is not writable");
23
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
24
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
25
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
26
- };
27
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
28
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
29
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
30
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
31
- };
32
- var _NetworkStatisticsManager_instances, _NetworkStatisticsManager_c, _NetworkStatisticsManager_L, _NetworkStatisticsManager_pendingWrites, _NetworkStatisticsManager_writing, _NetworkStatisticsManager_write;
33
21
  Object.defineProperty(exports, "__esModule", { value: true });
34
22
  exports.NetworkStatisticsManager = void 0;
35
23
  const _1_logger_js_1 = require("../utilities/1_logger.js");
36
24
  class NetworkStatisticsManager {
25
+ #c;
26
+ #L;
37
27
  constructor(c) {
38
- _NetworkStatisticsManager_instances.add(this);
39
- _NetworkStatisticsManager_c.set(this, void 0);
40
- _NetworkStatisticsManager_L.set(this, void 0);
41
- _NetworkStatisticsManager_pendingWrites.set(this, {});
42
- _NetworkStatisticsManager_writing.set(this, false);
43
- __classPrivateFieldSet(this, _NetworkStatisticsManager_c, c, "f");
44
- __classPrivateFieldSet(this, _NetworkStatisticsManager_L, (0, _1_logger_js_1.getLogger)("NetworkStatisticsManager"), "f");
28
+ this.#c = c;
29
+ this.#L = (0, _1_logger_js_1.getLogger)("NetworkStatisticsManager");
45
30
  }
46
31
  async getNetworkStatistics() {
47
32
  const [messagesRead, messagesWrite, cdnRead, cdnWrite] = await Promise.all([
48
- __classPrivateFieldGet(this, _NetworkStatisticsManager_c, "f").storage.get(["netstat_messages_read"]),
49
- __classPrivateFieldGet(this, _NetworkStatisticsManager_c, "f").storage.get(["netstat_messages_write"]),
50
- __classPrivateFieldGet(this, _NetworkStatisticsManager_c, "f").storage.get(["netstat_cdn_read"]),
51
- __classPrivateFieldGet(this, _NetworkStatisticsManager_c, "f").storage.get(["netstat_cdn_write"]),
33
+ this.#c.storage.get(["netstat_messages_read"]),
34
+ this.#c.storage.get(["netstat_messages_write"]),
35
+ this.#c.storage.get(["netstat_cdn_read"]),
36
+ this.#c.storage.get(["netstat_cdn_write"]),
52
37
  ]);
53
38
  const messages = {
54
39
  sent: Number(messagesWrite || 0),
@@ -60,38 +45,40 @@ class NetworkStatisticsManager {
60
45
  };
61
46
  return { messages, cdn };
62
47
  }
48
+ #pendingWrites = {};
63
49
  getTransportReadWriteCallback(isCcdn) {
64
50
  return {
65
51
  read: (count) => {
66
52
  const key = isCcdn ? "netstat_cdn_read" : "netstat_messages_read";
67
- __classPrivateFieldGet(this, _NetworkStatisticsManager_pendingWrites, "f")[key] = (__classPrivateFieldGet(this, _NetworkStatisticsManager_pendingWrites, "f")[key] ?? 0) + count;
68
- __classPrivateFieldGet(this, _NetworkStatisticsManager_instances, "m", _NetworkStatisticsManager_write).call(this);
53
+ this.#pendingWrites[key] = (this.#pendingWrites[key] ?? 0) + count;
54
+ this.#write();
69
55
  },
70
56
  write: (count) => {
71
57
  const key = isCcdn ? "netstat_cdn_write" : "netstat_messages_write";
72
- __classPrivateFieldGet(this, _NetworkStatisticsManager_pendingWrites, "f")[key] = (__classPrivateFieldGet(this, _NetworkStatisticsManager_pendingWrites, "f")[key] ?? 0) + count;
73
- __classPrivateFieldGet(this, _NetworkStatisticsManager_instances, "m", _NetworkStatisticsManager_write).call(this);
58
+ this.#pendingWrites[key] = (this.#pendingWrites[key] ?? 0) + count;
59
+ this.#write();
74
60
  },
75
61
  };
76
62
  }
77
- }
78
- exports.NetworkStatisticsManager = NetworkStatisticsManager;
79
- _NetworkStatisticsManager_c = new WeakMap(), _NetworkStatisticsManager_L = new WeakMap(), _NetworkStatisticsManager_pendingWrites = new WeakMap(), _NetworkStatisticsManager_writing = new WeakMap(), _NetworkStatisticsManager_instances = new WeakSet(), _NetworkStatisticsManager_write = async function _NetworkStatisticsManager_write() {
80
- if (__classPrivateFieldGet(this, _NetworkStatisticsManager_writing, "f")) {
81
- return;
82
- }
83
- __classPrivateFieldSet(this, _NetworkStatisticsManager_writing, true, "f");
84
- for (const [k, v] of Object.entries(__classPrivateFieldGet(this, _NetworkStatisticsManager_pendingWrites, "f"))) {
85
- if (v < 1) {
86
- continue;
63
+ #writing = false;
64
+ async #write() {
65
+ if (this.#writing) {
66
+ return;
87
67
  }
88
- try {
89
- await __classPrivateFieldGet(this, _NetworkStatisticsManager_c, "f").messageStorage.incr([k], v);
90
- __classPrivateFieldGet(this, _NetworkStatisticsManager_pendingWrites, "f")[k] -= v;
91
- }
92
- catch (err) {
93
- __classPrivateFieldGet(this, _NetworkStatisticsManager_L, "f").error("write failed:", err);
68
+ this.#writing = true;
69
+ for (const [k, v] of Object.entries(this.#pendingWrites)) {
70
+ if (v < 1) {
71
+ continue;
72
+ }
73
+ try {
74
+ await this.#c.messageStorage.incr([k], v);
75
+ this.#pendingWrites[k] -= v;
76
+ }
77
+ catch (err) {
78
+ this.#L.error("write failed:", err);
79
+ }
94
80
  }
81
+ this.#writing = false;
95
82
  }
96
- __classPrivateFieldSet(this, _NetworkStatisticsManager_writing, false, "f");
97
- };
83
+ }
84
+ exports.NetworkStatisticsManager = NetworkStatisticsManager;
@@ -18,18 +18,6 @@
18
18
  * You should have received a copy of the GNU Lesser General Public License
19
19
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
20
20
  */
21
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
22
- if (kind === "m") throw new TypeError("Private method is not writable");
23
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
24
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
25
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
26
- };
27
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
28
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
29
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
30
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
31
- };
32
- var _PaymentManager_c;
33
21
  Object.defineProperty(exports, "__esModule", { value: true });
34
22
  exports.PaymentManager = void 0;
35
23
  const _0_errors_js_1 = require("../0_errors.js");
@@ -39,22 +27,22 @@ const paymentManagerUpdates = [
39
27
  "updateBotPrecheckoutQuery",
40
28
  ];
41
29
  class PaymentManager {
30
+ #c;
42
31
  constructor(c) {
43
- _PaymentManager_c.set(this, void 0);
44
- __classPrivateFieldSet(this, _PaymentManager_c, c, "f");
32
+ this.#c = c;
45
33
  }
46
34
  canHandleUpdate(update) {
47
35
  return _2_tl_js_1.Api.isOneOf(paymentManagerUpdates, update);
48
36
  }
49
37
  handleUpdate(update) {
50
38
  if (_2_tl_js_1.Api.is("updateBotPrecheckoutQuery", update)) {
51
- const preCheckoutQuery = (0, _3_types_js_1.constructPreCheckoutQuery)(update, __classPrivateFieldGet(this, _PaymentManager_c, "f").getPeer);
39
+ const preCheckoutQuery = (0, _3_types_js_1.constructPreCheckoutQuery)(update, this.#c.getPeer);
52
40
  return { preCheckoutQuery };
53
41
  }
54
42
  return null;
55
43
  }
56
44
  async answerPreCheckoutQuery(preCheckoutQueryId, ok, params) {
57
- __classPrivateFieldGet(this, _PaymentManager_c, "f").storage.assertBot("answerPreCheckoutQuery");
45
+ this.#c.storage.assertBot("answerPreCheckoutQuery");
58
46
  if (!ok && !params?.error) {
59
47
  throw new _0_errors_js_1.InputError("error is required when ok is false");
60
48
  }
@@ -62,12 +50,11 @@ class PaymentManager {
62
50
  if (!queryId) {
63
51
  throw new _0_errors_js_1.InputError("Invalid pre-checkout query ID");
64
52
  }
65
- await __classPrivateFieldGet(this, _PaymentManager_c, "f").invoke({ _: "messages.setBotPrecheckoutResults", query_id: queryId, error: params?.error, success: ok ? true : undefined });
53
+ await this.#c.invoke({ _: "messages.setBotPrecheckoutResults", query_id: queryId, error: params?.error, success: ok ? true : undefined });
66
54
  }
67
55
  async refundStarPayment(userId, telegramPaymentChargeId) {
68
- __classPrivateFieldGet(this, _PaymentManager_c, "f").storage.assertBot("refundStarPayment");
69
- await __classPrivateFieldGet(this, _PaymentManager_c, "f").invoke({ _: "payments.refundStarsCharge", user_id: await __classPrivateFieldGet(this, _PaymentManager_c, "f").getInputUser(userId), charge_id: telegramPaymentChargeId });
56
+ this.#c.storage.assertBot("refundStarPayment");
57
+ await this.#c.invoke({ _: "payments.refundStarsCharge", user_id: await this.#c.getInputUser(userId), charge_id: telegramPaymentChargeId });
70
58
  }
71
59
  }
72
60
  exports.PaymentManager = PaymentManager;
73
- _PaymentManager_c = new WeakMap();
@@ -18,18 +18,6 @@
18
18
  * You should have received a copy of the GNU Lesser General Public License
19
19
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
20
20
  */
21
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
22
- if (kind === "m") throw new TypeError("Private method is not writable");
23
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
24
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
25
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
26
- };
27
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
28
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
29
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
30
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
31
- };
32
- var _ReactionManager_c;
33
21
  Object.defineProperty(exports, "__esModule", { value: true });
34
22
  exports.ReactionManager = void 0;
35
23
  const _0_deps_js_1 = require("../0_deps.js");
@@ -43,16 +31,16 @@ const reactionManagerUpdates = [
43
31
  "updateChannelMessageForwards",
44
32
  ];
45
33
  class ReactionManager {
34
+ #c;
46
35
  constructor(c) {
47
- _ReactionManager_c.set(this, void 0);
48
- __classPrivateFieldSet(this, _ReactionManager_c, c, "f");
36
+ this.#c = c;
49
37
  }
50
38
  canHandleUpdate(update) {
51
39
  return _2_tl_js_1.Api.isOneOf(reactionManagerUpdates, update);
52
40
  }
53
41
  async handleUpdate(update) {
54
42
  if (_2_tl_js_1.Api.is("updateBotMessageReactions", update)) {
55
- const messageReactionCount = (0, _3_types_js_1.constructMessageReactionCount)(update, __classPrivateFieldGet(this, _ReactionManager_c, "f").getPeer);
43
+ const messageReactionCount = (0, _3_types_js_1.constructMessageReactionCount)(update, this.#c.getPeer);
56
44
  if (messageReactionCount) {
57
45
  return { messageReactionCount };
58
46
  }
@@ -61,7 +49,7 @@ class ReactionManager {
61
49
  }
62
50
  }
63
51
  else if (_2_tl_js_1.Api.is("updateBotMessageReaction", update)) {
64
- const messageReactions = (0, _3_types_js_1.constructMessageReactions)(update, __classPrivateFieldGet(this, _ReactionManager_c, "f").getPeer);
52
+ const messageReactions = (0, _3_types_js_1.constructMessageReactions)(update, this.#c.getPeer);
65
53
  if (messageReactions) {
66
54
  return { messageReactions };
67
55
  }
@@ -71,10 +59,10 @@ class ReactionManager {
71
59
  }
72
60
  else if (_2_tl_js_1.Api.is("updateMessageReactions", update)) {
73
61
  const chatId = _2_tl_js_1.Api.peerToChatId(update.peer);
74
- const message = await __classPrivateFieldGet(this, _ReactionManager_c, "f").messageStorage.getMessage(chatId, update.msg_id);
62
+ const message = await this.#c.messageStorage.getMessage(chatId, update.msg_id);
75
63
  if (_2_tl_js_1.Api.is("message", message)) {
76
64
  message.reactions = update.reactions;
77
- await __classPrivateFieldGet(this, _ReactionManager_c, "f").messageStorage.setMessage(chatId, update.msg_id, message);
65
+ await this.#c.messageStorage.setMessage(chatId, update.msg_id, message);
78
66
  const views = message.views ?? 0;
79
67
  const forwards = message.forwards ?? 0;
80
68
  const recentReactions = update.reactions.recent_reactions ?? [];
@@ -87,7 +75,7 @@ class ReactionManager {
87
75
  }
88
76
  else if (_2_tl_js_1.Api.isOneOf(["updateChannelMessageViews", "updateChannelMessageForwards"], update)) {
89
77
  const chatId = _2_tl_js_1.Api.peerToChatId({ ...update, _: "peerChannel" });
90
- const message = await __classPrivateFieldGet(this, _ReactionManager_c, "f").messageStorage.getMessage(chatId, update.id);
78
+ const message = await this.#c.messageStorage.getMessage(chatId, update.id);
91
79
  if (_2_tl_js_1.Api.is("message", message)) {
92
80
  if ("views" in update) {
93
81
  message.views = update.views;
@@ -111,4 +99,3 @@ class ReactionManager {
111
99
  }
112
100
  }
113
101
  exports.ReactionManager = ReactionManager;
114
- _ReactionManager_c = new WeakMap();
@@ -18,18 +18,6 @@
18
18
  * You should have received a copy of the GNU Lesser General Public License
19
19
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
20
20
  */
21
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
22
- if (kind === "m") throw new TypeError("Private method is not writable");
23
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
24
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
25
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
26
- };
27
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
28
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
29
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
30
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
31
- };
32
- var _TranslationsManager_instances, _TranslationsManager_c, _TranslationsManager_getTranslationsInner, _TranslationsManager_updateTranslationsQueue, _TranslationsManager_updateTranslations, _TranslationsManager_applyLangPackDifferenceAndSave, _TranslationsManager_applyLangPackDifference;
33
21
  Object.defineProperty(exports, "__esModule", { value: true });
34
22
  exports.TranslationsManager = void 0;
35
23
  const _0_deps_js_1 = require("../0_deps.js");
@@ -42,134 +30,136 @@ const translationsManagerUpdates = [
42
30
  "updateLangPack",
43
31
  ];
44
32
  class TranslationsManager {
33
+ #c;
45
34
  constructor(c) {
46
- _TranslationsManager_instances.add(this);
47
- _TranslationsManager_c.set(this, void 0);
48
- _TranslationsManager_updateTranslationsQueue.set(this, new _1_utilities_js_1.Queue("updateTranslations"));
49
- __classPrivateFieldSet(this, _TranslationsManager_c, c, "f");
35
+ this.#c = c;
50
36
  }
51
37
  canHandleUpdate(update) {
52
38
  return _2_tl_js_1.Api.isOneOf(translationsManagerUpdates, update);
53
39
  }
54
40
  async getTranslations(params) {
55
- __classPrivateFieldGet(this, _TranslationsManager_c, "f").storage.assertUser("getTranslations");
56
- const platform = params?.platform ?? __classPrivateFieldGet(this, _TranslationsManager_c, "f").langPack;
41
+ this.#c.storage.assertUser("getTranslations");
42
+ const platform = params?.platform ?? this.#c.langPack;
57
43
  if (!platform) {
58
44
  throw new _0_errors_js_1.InputError("No platform specified.");
59
45
  }
60
- const language = params?.language ?? __classPrivateFieldGet(this, _TranslationsManager_c, "f").langCode;
46
+ const language = params?.language ?? this.#c.langCode;
61
47
  if (!language) {
62
48
  throw new _0_errors_js_1.InputError("No language specified.");
63
49
  }
64
- return await __classPrivateFieldGet(this, _TranslationsManager_instances, "m", _TranslationsManager_getTranslationsInner).call(this, platform, language);
50
+ return await this.#getTranslationsInner(platform, language);
65
51
  }
66
- async handleUpdate(update) {
67
- if (!__classPrivateFieldGet(this, _TranslationsManager_c, "f").langPack) {
68
- return null;
52
+ async #getTranslationsInner(platform, language, assert = false) {
53
+ const maybeTranslations = await this.#c.messageStorage.translations.get([platform, language]);
54
+ if (maybeTranslations !== null) {
55
+ return maybeTranslations.translations;
69
56
  }
70
- if (_2_tl_js_1.Api.is("updateLangPackTooLong", update)) {
71
- await __classPrivateFieldGet(this, _TranslationsManager_instances, "m", _TranslationsManager_updateTranslations).call(this, __classPrivateFieldGet(this, _TranslationsManager_c, "f").langPack, update.lang_code);
72
- const translations = await __classPrivateFieldGet(this, _TranslationsManager_instances, "m", _TranslationsManager_getTranslationsInner).call(this, __classPrivateFieldGet(this, _TranslationsManager_c, "f").langPack, update.lang_code, true);
73
- return { platform: __classPrivateFieldGet(this, _TranslationsManager_c, "f").langPack, language: update.lang_code, translations };
57
+ else if (assert) {
58
+ (0, _0_deps_js_1.unreachable)();
74
59
  }
75
- else if (_2_tl_js_1.Api.is("updateLangPack", update)) {
76
- if (!__classPrivateFieldGet(this, _TranslationsManager_c, "f").langCode) {
77
- return null;
78
- }
79
- const translations = await __classPrivateFieldGet(this, _TranslationsManager_instances, "m", _TranslationsManager_applyLangPackDifferenceAndSave).call(this, __classPrivateFieldGet(this, _TranslationsManager_c, "f").langPack, __classPrivateFieldGet(this, _TranslationsManager_c, "f").langCode, update.difference.version, update.difference.from_version, update.difference.strings);
80
- if (!translations) {
81
- return null;
82
- }
83
- else {
84
- return { platform: __classPrivateFieldGet(this, _TranslationsManager_c, "f").langPack, language: __classPrivateFieldGet(this, _TranslationsManager_c, "f").langCode, translations };
85
- }
60
+ else {
61
+ await this.#updateTranslations(platform, language);
62
+ return await this.#getTranslationsInner(platform, language, true);
86
63
  }
87
- return null;
88
64
  }
89
- }
90
- exports.TranslationsManager = TranslationsManager;
91
- _TranslationsManager_c = new WeakMap(), _TranslationsManager_updateTranslationsQueue = new WeakMap(), _TranslationsManager_instances = new WeakSet(), _TranslationsManager_getTranslationsInner = async function _TranslationsManager_getTranslationsInner(platform, language, assert = false) {
92
- const maybeTranslations = await __classPrivateFieldGet(this, _TranslationsManager_c, "f").messageStorage.translations.get([platform, language]);
93
- if (maybeTranslations !== null) {
94
- return maybeTranslations.translations;
95
- }
96
- else if (assert) {
97
- (0, _0_deps_js_1.unreachable)();
98
- }
99
- else {
100
- await __classPrivateFieldGet(this, _TranslationsManager_instances, "m", _TranslationsManager_updateTranslations).call(this, platform, language);
101
- return await __classPrivateFieldGet(this, _TranslationsManager_instances, "m", _TranslationsManager_getTranslationsInner).call(this, platform, language, true);
102
- }
103
- }, _TranslationsManager_updateTranslations = async function _TranslationsManager_updateTranslations(platform, language) {
104
- await new Promise((resolve, reject) => {
105
- __classPrivateFieldGet(this, _TranslationsManager_updateTranslationsQueue, "f").add(async () => {
106
- try {
107
- const maybeTranslations = await __classPrivateFieldGet(this, _TranslationsManager_c, "f").messageStorage.translations.get([platform, language]);
108
- if (maybeTranslations !== null) {
109
- const difference = await __classPrivateFieldGet(this, _TranslationsManager_c, "f").invoke({ _: "langpack.getDifference", lang_pack: platform, lang_code: language, from_version: maybeTranslations.version });
110
- const newTranslations = __classPrivateFieldGet(this, _TranslationsManager_instances, "m", _TranslationsManager_applyLangPackDifference).call(this, maybeTranslations.translations, difference.strings);
111
- __classPrivateFieldGet(this, _TranslationsManager_c, "f").messageStorage.translations.set([platform, language], { date: new Date(), version: difference.version, translations: newTranslations });
65
+ #updateTranslationsQueue = new _1_utilities_js_1.Queue("updateTranslations");
66
+ async #updateTranslations(platform, language) {
67
+ await new Promise((resolve, reject) => {
68
+ this.#updateTranslationsQueue.add(async () => {
69
+ try {
70
+ const maybeTranslations = await this.#c.messageStorage.translations.get([platform, language]);
71
+ if (maybeTranslations !== null) {
72
+ const difference = await this.#c.invoke({ _: "langpack.getDifference", lang_pack: platform, lang_code: language, from_version: maybeTranslations.version });
73
+ const newTranslations = this.#applyLangPackDifference(maybeTranslations.translations, difference.strings);
74
+ this.#c.messageStorage.translations.set([platform, language], { date: new Date(), version: difference.version, translations: newTranslations });
75
+ }
76
+ else {
77
+ const pack = await this.#c.invoke({ _: "langpack.getLangPack", lang_pack: platform, lang_code: language });
78
+ const version = pack.version;
79
+ const translations = pack.strings.map(_3_types_js_1.constructTranslation);
80
+ this.#c.messageStorage.translations.set([platform, language], { date: new Date(), version, translations });
81
+ }
82
+ resolve();
112
83
  }
113
- else {
114
- const pack = await __classPrivateFieldGet(this, _TranslationsManager_c, "f").invoke({ _: "langpack.getLangPack", lang_pack: platform, lang_code: language });
115
- const version = pack.version;
116
- const translations = pack.strings.map(_3_types_js_1.constructTranslation);
117
- __classPrivateFieldGet(this, _TranslationsManager_c, "f").messageStorage.translations.set([platform, language], { date: new Date(), version, translations });
84
+ catch (err) {
85
+ reject(err);
118
86
  }
119
- resolve();
120
- }
121
- catch (err) {
122
- reject(err);
123
- }
87
+ });
124
88
  });
125
- });
126
- }, _TranslationsManager_applyLangPackDifferenceAndSave = async function _TranslationsManager_applyLangPackDifferenceAndSave(platform, language, version, fromVersion, strings) {
127
- const result = await new Promise((resolve, reject) => {
128
- __classPrivateFieldGet(this, _TranslationsManager_updateTranslationsQueue, "f").add(async () => {
129
- try {
130
- const maybeTranslations = await __classPrivateFieldGet(this, _TranslationsManager_c, "f").messageStorage.translations.get([platform, language]);
131
- let newTranslations = null;
132
- if (maybeTranslations) {
133
- if (fromVersion !== maybeTranslations.version) {
134
- resolve("mustUpdate");
135
- return;
89
+ }
90
+ async #applyLangPackDifferenceAndSave(platform, language, version, fromVersion, strings) {
91
+ const result = await new Promise((resolve, reject) => {
92
+ this.#updateTranslationsQueue.add(async () => {
93
+ try {
94
+ const maybeTranslations = await this.#c.messageStorage.translations.get([platform, language]);
95
+ let newTranslations = null;
96
+ if (maybeTranslations) {
97
+ if (fromVersion !== maybeTranslations.version) {
98
+ resolve("mustUpdate");
99
+ return;
100
+ }
101
+ newTranslations = this.#applyLangPackDifference(maybeTranslations.translations, strings);
102
+ this.#c.messageStorage.translations.set([platform, language], {
103
+ date: new Date(),
104
+ version,
105
+ translations: newTranslations,
106
+ });
136
107
  }
137
- newTranslations = __classPrivateFieldGet(this, _TranslationsManager_instances, "m", _TranslationsManager_applyLangPackDifference).call(this, maybeTranslations.translations, strings);
138
- __classPrivateFieldGet(this, _TranslationsManager_c, "f").messageStorage.translations.set([platform, language], {
139
- date: new Date(),
140
- version,
141
- translations: newTranslations,
142
- });
108
+ resolve(newTranslations);
143
109
  }
144
- resolve(newTranslations);
145
- }
146
- catch (err) {
147
- reject(err);
148
- }
110
+ catch (err) {
111
+ reject(err);
112
+ }
113
+ });
149
114
  });
150
- });
151
- if (result === "mustUpdate") {
152
- await __classPrivateFieldGet(this, _TranslationsManager_instances, "m", _TranslationsManager_updateTranslations).call(this, platform, language);
153
- return await __classPrivateFieldGet(this, _TranslationsManager_instances, "m", _TranslationsManager_getTranslationsInner).call(this, platform, language, true);
115
+ if (result === "mustUpdate") {
116
+ await this.#updateTranslations(platform, language);
117
+ return await this.#getTranslationsInner(platform, language, true);
118
+ }
119
+ else {
120
+ return result;
121
+ }
154
122
  }
155
- else {
156
- return result;
123
+ #applyLangPackDifference(translations, strings) {
124
+ for (const string of strings) {
125
+ if (_2_tl_js_1.Api.is("langPackStringDeleted", string)) {
126
+ translations = translations.filter((v) => v.key !== string.key);
127
+ }
128
+ else {
129
+ const newTranslation = (0, _3_types_js_1.constructTranslation)(string);
130
+ const currentTranslation = translations.find((v) => v.key === string.key);
131
+ if (currentTranslation) {
132
+ Object.assign(currentTranslation, newTranslation);
133
+ }
134
+ else {
135
+ translations.push(newTranslation);
136
+ }
137
+ }
138
+ }
139
+ return translations;
157
140
  }
158
- }, _TranslationsManager_applyLangPackDifference = function _TranslationsManager_applyLangPackDifference(translations, strings) {
159
- for (const string of strings) {
160
- if (_2_tl_js_1.Api.is("langPackStringDeleted", string)) {
161
- translations = translations.filter((v) => v.key !== string.key);
141
+ async handleUpdate(update) {
142
+ if (!this.#c.langPack) {
143
+ return null;
162
144
  }
163
- else {
164
- const newTranslation = (0, _3_types_js_1.constructTranslation)(string);
165
- const currentTranslation = translations.find((v) => v.key === string.key);
166
- if (currentTranslation) {
167
- Object.assign(currentTranslation, newTranslation);
145
+ if (_2_tl_js_1.Api.is("updateLangPackTooLong", update)) {
146
+ await this.#updateTranslations(this.#c.langPack, update.lang_code);
147
+ const translations = await this.#getTranslationsInner(this.#c.langPack, update.lang_code, true);
148
+ return { platform: this.#c.langPack, language: update.lang_code, translations };
149
+ }
150
+ else if (_2_tl_js_1.Api.is("updateLangPack", update)) {
151
+ if (!this.#c.langCode) {
152
+ return null;
153
+ }
154
+ const translations = await this.#applyLangPackDifferenceAndSave(this.#c.langPack, this.#c.langCode, update.difference.version, update.difference.from_version, update.difference.strings);
155
+ if (!translations) {
156
+ return null;
168
157
  }
169
158
  else {
170
- translations.push(newTranslation);
159
+ return { platform: this.#c.langPack, language: this.#c.langCode, translations };
171
160
  }
172
161
  }
162
+ return null;
173
163
  }
174
- return translations;
175
- };
164
+ }
165
+ exports.TranslationsManager = TranslationsManager;