@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
@@ -1,17 +1,5 @@
1
1
  // Copyright 2018-2026 the Deno authors. MIT license.
2
2
  // This module is browser compatible.
3
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
4
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
5
- 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");
6
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
7
- };
8
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
9
- if (kind === "m") throw new TypeError("Private method is not writable");
10
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
11
- 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");
12
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
13
- };
14
- var _MuxAsyncIterator_instances, _MuxAsyncIterator_iteratorCount, _MuxAsyncIterator_yields, _MuxAsyncIterator_throws, _MuxAsyncIterator_signal, _MuxAsyncIterator_callIteratorNext;
15
3
  /**
16
4
  * Multiplexes multiple async iterators into a single stream. It currently
17
5
  * makes an assumption that the final result (the value returned and not
@@ -47,14 +35,11 @@ var _MuxAsyncIterator_instances, _MuxAsyncIterator_iteratorCount, _MuxAsyncItera
47
35
  * @typeParam T The type of the provided async iterables and generated async iterable.
48
36
  */
49
37
  export class MuxAsyncIterator {
50
- constructor() {
51
- _MuxAsyncIterator_instances.add(this);
52
- _MuxAsyncIterator_iteratorCount.set(this, 0);
53
- _MuxAsyncIterator_yields.set(this, []);
54
- // deno-lint-ignore no-explicit-any
55
- _MuxAsyncIterator_throws.set(this, []);
56
- _MuxAsyncIterator_signal.set(this, Promise.withResolvers());
57
- }
38
+ #iteratorCount = 0;
39
+ #yields = [];
40
+ // deno-lint-ignore no-explicit-any
41
+ #throws = [];
42
+ #signal = Promise.withResolvers();
58
43
  /**
59
44
  * Add an async iterable to the stream.
60
45
  *
@@ -80,9 +65,23 @@ export class MuxAsyncIterator {
80
65
  * ```
81
66
  */
82
67
  add(iterable) {
83
- var _a;
84
- __classPrivateFieldSet(this, _MuxAsyncIterator_iteratorCount, (_a = __classPrivateFieldGet(this, _MuxAsyncIterator_iteratorCount, "f"), ++_a), "f");
85
- __classPrivateFieldGet(this, _MuxAsyncIterator_instances, "m", _MuxAsyncIterator_callIteratorNext).call(this, iterable[Symbol.asyncIterator]());
68
+ ++this.#iteratorCount;
69
+ this.#callIteratorNext(iterable[Symbol.asyncIterator]());
70
+ }
71
+ async #callIteratorNext(iterator) {
72
+ try {
73
+ const { value, done } = await iterator.next();
74
+ if (done) {
75
+ --this.#iteratorCount;
76
+ }
77
+ else {
78
+ this.#yields.push({ iterator, value });
79
+ }
80
+ }
81
+ catch (e) {
82
+ this.#throws.push(e);
83
+ }
84
+ this.#signal.resolve();
86
85
  }
87
86
  /**
88
87
  * Returns an async iterator of the stream.
@@ -108,22 +107,22 @@ export class MuxAsyncIterator {
108
107
  * ```
109
108
  */
110
109
  async *iterate() {
111
- while (__classPrivateFieldGet(this, _MuxAsyncIterator_iteratorCount, "f") > 0) {
110
+ while (this.#iteratorCount > 0) {
112
111
  // Sleep until any of the wrapped iterators yields.
113
- await __classPrivateFieldGet(this, _MuxAsyncIterator_signal, "f").promise;
112
+ await this.#signal.promise;
114
113
  // Note that while we're looping over `yields`, new items may be added.
115
- for (const { iterator, value } of __classPrivateFieldGet(this, _MuxAsyncIterator_yields, "f")) {
114
+ for (const { iterator, value } of this.#yields) {
116
115
  yield value;
117
- __classPrivateFieldGet(this, _MuxAsyncIterator_instances, "m", _MuxAsyncIterator_callIteratorNext).call(this, iterator);
116
+ this.#callIteratorNext(iterator);
118
117
  }
119
- if (__classPrivateFieldGet(this, _MuxAsyncIterator_throws, "f").length) {
120
- for (const e of __classPrivateFieldGet(this, _MuxAsyncIterator_throws, "f")) {
118
+ if (this.#throws.length) {
119
+ for (const e of this.#throws) {
121
120
  throw e;
122
121
  }
123
122
  }
124
123
  // Clear the `yields` list and reset the `signal` promise.
125
- __classPrivateFieldGet(this, _MuxAsyncIterator_yields, "f").length = 0;
126
- __classPrivateFieldSet(this, _MuxAsyncIterator_signal, Promise.withResolvers(), "f");
124
+ this.#yields.length = 0;
125
+ this.#signal = Promise.withResolvers();
127
126
  }
128
127
  }
129
128
  /**
@@ -149,22 +148,7 @@ export class MuxAsyncIterator {
149
148
  * assertEquals(result, [1, 2, 3]);
150
149
  * ```
151
150
  */
152
- [(_MuxAsyncIterator_iteratorCount = new WeakMap(), _MuxAsyncIterator_yields = new WeakMap(), _MuxAsyncIterator_throws = new WeakMap(), _MuxAsyncIterator_signal = new WeakMap(), _MuxAsyncIterator_instances = new WeakSet(), _MuxAsyncIterator_callIteratorNext = async function _MuxAsyncIterator_callIteratorNext(iterator) {
153
- var _a;
154
- try {
155
- const { value, done } = await iterator.next();
156
- if (done) {
157
- __classPrivateFieldSet(this, _MuxAsyncIterator_iteratorCount, (_a = __classPrivateFieldGet(this, _MuxAsyncIterator_iteratorCount, "f"), --_a), "f");
158
- }
159
- else {
160
- __classPrivateFieldGet(this, _MuxAsyncIterator_yields, "f").push({ iterator, value });
161
- }
162
- }
163
- catch (e) {
164
- __classPrivateFieldGet(this, _MuxAsyncIterator_throws, "f").push(e);
165
- }
166
- __classPrivateFieldGet(this, _MuxAsyncIterator_signal, "f").resolve();
167
- }, Symbol.asyncIterator)]() {
151
+ [Symbol.asyncIterator]() {
168
152
  return this.iterate();
169
153
  }
170
154
  }
@@ -1,57 +1,34 @@
1
1
  // Copyright 2018-2026 the Deno authors. MIT license.
2
2
  // This module is browser compatible.
3
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
4
- if (kind === "m") throw new TypeError("Private method is not writable");
5
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
6
- 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");
7
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
8
- };
9
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
10
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
11
- 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");
12
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
13
- };
14
- var _Queue_source, _Queue_queue;
15
3
  class Queue {
4
+ #source;
5
+ #queue;
6
+ head;
7
+ done;
16
8
  constructor(iterable) {
17
- _Queue_source.set(this, void 0);
18
- _Queue_queue.set(this, void 0);
19
- Object.defineProperty(this, "head", {
20
- enumerable: true,
21
- configurable: true,
22
- writable: true,
23
- value: void 0
24
- });
25
- Object.defineProperty(this, "done", {
26
- enumerable: true,
27
- configurable: true,
28
- writable: true,
29
- value: void 0
30
- });
31
- __classPrivateFieldSet(this, _Queue_source, iterable[Symbol.asyncIterator](), "f");
32
- __classPrivateFieldSet(this, _Queue_queue, {
9
+ this.#source = iterable[Symbol.asyncIterator]();
10
+ this.#queue = {
33
11
  value: undefined,
34
12
  next: undefined,
35
- }, "f");
36
- this.head = __classPrivateFieldGet(this, _Queue_queue, "f");
13
+ };
14
+ this.head = this.#queue;
37
15
  this.done = false;
38
16
  }
39
17
  async next() {
40
- const result = await __classPrivateFieldGet(this, _Queue_source, "f").next();
18
+ const result = await this.#source.next();
41
19
  if (!result.done) {
42
20
  const nextNode = {
43
21
  value: result.value,
44
22
  next: undefined,
45
23
  };
46
- __classPrivateFieldGet(this, _Queue_queue, "f").next = nextNode;
47
- __classPrivateFieldSet(this, _Queue_queue, nextNode, "f");
24
+ this.#queue.next = nextNode;
25
+ this.#queue = nextNode;
48
26
  }
49
27
  else {
50
28
  this.done = true;
51
29
  }
52
30
  }
53
31
  }
54
- _Queue_source = new WeakMap(), _Queue_queue = new WeakMap();
55
32
  /**
56
33
  * Branches the given async iterable into the `n` branches.
57
34
  *
@@ -1,17 +1,5 @@
1
1
  // Copyright 2018-2026 the Deno authors. MIT license.
2
2
  // This module is browser compatible.
3
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
4
- if (kind === "m") throw new TypeError("Private method is not writable");
5
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
6
- 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");
7
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
8
- };
9
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
10
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
11
- 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");
12
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
13
- };
14
- var _LruCache_instances, _LruCache_eject, _LruCache_setMostRecentlyUsed, _LruCache_pruneToMaxSize;
15
3
  /**
16
4
  * Least-recently-used cache.
17
5
  *
@@ -67,6 +55,20 @@ var _LruCache_instances, _LruCache_eject, _LruCache_setMostRecentlyUsed, _LruCac
67
55
  * ```
68
56
  */
69
57
  export class LruCache extends Map {
58
+ /**
59
+ * The maximum number of entries to store in the cache.
60
+ *
61
+ * @example Max size
62
+ * ```ts no-assert
63
+ * import { LruCache } from "@std/cache";
64
+ * import { assertEquals } from "@std/assert";
65
+ *
66
+ * const cache = new LruCache<string, number>(100);
67
+ * assertEquals(cache.maxSize, 100);
68
+ * ```
69
+ */
70
+ maxSize;
71
+ #eject;
70
72
  /**
71
73
  * Constructs a new `LruCache`.
72
74
  *
@@ -75,28 +77,18 @@ export class LruCache extends Map {
75
77
  */
76
78
  constructor(maxSize, options) {
77
79
  super();
78
- _LruCache_instances.add(this);
79
- /**
80
- * The maximum number of entries to store in the cache.
81
- *
82
- * @example Max size
83
- * ```ts no-assert
84
- * import { LruCache } from "@std/cache";
85
- * import { assertEquals } from "@std/assert";
86
- *
87
- * const cache = new LruCache<string, number>(100);
88
- * assertEquals(cache.maxSize, 100);
89
- * ```
90
- */
91
- Object.defineProperty(this, "maxSize", {
92
- enumerable: true,
93
- configurable: true,
94
- writable: true,
95
- value: void 0
96
- });
97
- _LruCache_eject.set(this, void 0);
98
80
  this.maxSize = maxSize;
99
- __classPrivateFieldSet(this, _LruCache_eject, options?.onEject ?? (() => { }), "f");
81
+ this.#eject = options?.onEject ?? (() => { });
82
+ }
83
+ #setMostRecentlyUsed(key, value) {
84
+ // delete then re-add to ensure most recently accessed elements are last
85
+ super.delete(key);
86
+ super.set(key, value);
87
+ }
88
+ #pruneToMaxSize() {
89
+ if (this.size > this.maxSize) {
90
+ this.delete(this.keys().next().value);
91
+ }
100
92
  }
101
93
  /**
102
94
  * Checks whether an element with the specified key exists or not.
@@ -118,7 +110,7 @@ export class LruCache extends Map {
118
110
  has(key) {
119
111
  const exists = super.has(key);
120
112
  if (exists) {
121
- __classPrivateFieldGet(this, _LruCache_instances, "m", _LruCache_setMostRecentlyUsed).call(this, key, super.get(key));
113
+ this.#setMostRecentlyUsed(key, super.get(key));
122
114
  }
123
115
  return exists;
124
116
  }
@@ -142,7 +134,7 @@ export class LruCache extends Map {
142
134
  get(key) {
143
135
  if (super.has(key)) {
144
136
  const value = super.get(key);
145
- __classPrivateFieldGet(this, _LruCache_instances, "m", _LruCache_setMostRecentlyUsed).call(this, key, value);
137
+ this.#setMostRecentlyUsed(key, value);
146
138
  return value;
147
139
  }
148
140
  return undefined;
@@ -163,8 +155,8 @@ export class LruCache extends Map {
163
155
  * ```
164
156
  */
165
157
  set(key, value) {
166
- __classPrivateFieldGet(this, _LruCache_instances, "m", _LruCache_setMostRecentlyUsed).call(this, key, value);
167
- __classPrivateFieldGet(this, _LruCache_instances, "m", _LruCache_pruneToMaxSize).call(this);
158
+ this.#setMostRecentlyUsed(key, value);
159
+ this.#pruneToMaxSize();
168
160
  return this;
169
161
  }
170
162
  /**
@@ -189,17 +181,8 @@ export class LruCache extends Map {
189
181
  */
190
182
  delete(key) {
191
183
  if (super.has(key)) {
192
- __classPrivateFieldGet(this, _LruCache_eject, "f").call(this, key, super.get(key));
184
+ this.#eject(key, super.get(key));
193
185
  }
194
186
  return super.delete(key);
195
187
  }
196
188
  }
197
- _LruCache_eject = new WeakMap(), _LruCache_instances = new WeakSet(), _LruCache_setMostRecentlyUsed = function _LruCache_setMostRecentlyUsed(key, value) {
198
- // delete then re-add to ensure most recently accessed elements are last
199
- super.delete(key);
200
- super.set(key, value);
201
- }, _LruCache_pruneToMaxSize = function _LruCache_pruneToMaxSize() {
202
- if (this.size > this.maxSize) {
203
- this.delete(this.keys().next().value);
204
- }
205
- };
@@ -1,17 +1,5 @@
1
1
  // Copyright 2018-2026 the Deno authors. MIT license.
2
2
  // This module is browser compatible.
3
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
4
- if (kind === "m") throw new TypeError("Private method is not writable");
5
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
6
- 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");
7
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
8
- };
9
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
10
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
11
- 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");
12
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
13
- };
14
- var _DateTimeFormatter_formatParts;
15
3
  function digits(value, count = 2) {
16
4
  return String(value).padStart(count, "0");
17
5
  }
@@ -134,14 +122,14 @@ function sortDateTimeFormatParts(parts) {
134
122
  return result;
135
123
  }
136
124
  export class DateTimeFormatter {
125
+ #formatParts;
137
126
  constructor(formatString) {
138
- _DateTimeFormatter_formatParts.set(this, void 0);
139
- __classPrivateFieldSet(this, _DateTimeFormatter_formatParts, formatToFormatParts(formatString), "f");
127
+ this.#formatParts = formatToFormatParts(formatString);
140
128
  }
141
129
  format(date, options = {}) {
142
130
  let string = "";
143
131
  const utc = options.timeZone === "UTC";
144
- for (const part of __classPrivateFieldGet(this, _DateTimeFormatter_formatParts, "f")) {
132
+ for (const part of this.#formatParts) {
145
133
  const type = part.type;
146
134
  switch (type) {
147
135
  case "year": {
@@ -274,7 +262,7 @@ export class DateTimeFormatter {
274
262
  }
275
263
  formatToParts(string) {
276
264
  const parts = [];
277
- for (const part of __classPrivateFieldGet(this, _DateTimeFormatter_formatParts, "f")) {
265
+ for (const part of this.#formatParts) {
278
266
  const type = part.type;
279
267
  let length = 0;
280
268
  let value = "";
@@ -547,4 +535,3 @@ export class DateTimeFormatter {
547
535
  return this.partsToDate(parts);
548
536
  }
549
537
  }
550
- _DateTimeFormatter_formatParts = new WeakMap();
@@ -17,61 +17,35 @@
17
17
  * You should have received a copy of the GNU Lesser General Public License
18
18
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
19
19
  */
20
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
21
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
22
- 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");
23
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
24
- };
25
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
26
- if (kind === "m") throw new TypeError("Private method is not writable");
27
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
28
- 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");
29
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
30
- };
31
- var _SessionState_seqNo, _SessionState_messageId;
32
20
  import { toUnixTimestamp } from "../1_utilities.js";
33
21
  export class SessionState {
34
- constructor() {
35
- Object.defineProperty(this, "timeDifference", {
36
- enumerable: true,
37
- configurable: true,
38
- writable: true,
39
- value: 0
40
- });
41
- Object.defineProperty(this, "serverSalt", {
42
- enumerable: true,
43
- configurable: true,
44
- writable: true,
45
- value: 0n
46
- });
47
- _SessionState_seqNo.set(this, 0);
48
- _SessionState_messageId.set(this, 0n);
49
- }
22
+ timeDifference = 0;
23
+ serverSalt = 0n;
24
+ #seqNo = 0;
25
+ #messageId = 0n;
50
26
  nextMessageId() {
51
27
  const now = toUnixTimestamp(new Date()) + this.timeDifference;
52
28
  const nanoseconds = Math.floor((now - Math.floor(now)) * 1e9);
53
29
  const newMessageId = (BigInt(Math.floor(now)) << 32n) || (BigInt(nanoseconds) << 2n);
54
- if (__classPrivateFieldGet(this, _SessionState_messageId, "f") >= newMessageId) {
55
- __classPrivateFieldSet(this, _SessionState_messageId, __classPrivateFieldGet(this, _SessionState_messageId, "f") + 4n, "f");
30
+ if (this.#messageId >= newMessageId) {
31
+ this.#messageId += 4n;
56
32
  }
57
33
  else {
58
- __classPrivateFieldSet(this, _SessionState_messageId, newMessageId, "f");
34
+ this.#messageId = newMessageId;
59
35
  }
60
- return __classPrivateFieldGet(this, _SessionState_messageId, "f");
36
+ return this.#messageId;
61
37
  }
62
38
  nextSeqNo(contentRelated) {
63
- var _a;
64
- let seqNo = __classPrivateFieldGet(this, _SessionState_seqNo, "f") * 2;
39
+ let seqNo = this.#seqNo * 2;
65
40
  if (contentRelated) {
66
41
  seqNo++;
67
- __classPrivateFieldSet(this, _SessionState_seqNo, (_a = __classPrivateFieldGet(this, _SessionState_seqNo, "f"), _a++, _a), "f");
42
+ this.#seqNo++;
68
43
  }
69
44
  return seqNo;
70
45
  }
71
46
  reset() {
72
47
  this.serverSalt = 0n;
73
- __classPrivateFieldSet(this, _SessionState_seqNo, 0, "f");
74
- __classPrivateFieldSet(this, _SessionState_messageId, 0n, "f");
48
+ this.#seqNo = 0;
49
+ this.#messageId = 0n;
75
50
  }
76
51
  }
77
- _SessionState_seqNo = new WeakMap(), _SessionState_messageId = new WeakMap();
@@ -17,18 +17,6 @@
17
17
  * You should have received a copy of the GNU Lesser General Public License
18
18
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
19
19
  */
20
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
21
- if (kind === "m") throw new TypeError("Private method is not writable");
22
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
23
- 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");
24
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
25
- };
26
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
27
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
28
- 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");
29
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
30
- };
31
- var _Session_instances, _Session_dc, _Session_isCdn, _Session_lastConnect, _Session_isDisconnected, _Session_L, _Session_onConnectionStateChange, _Session_lastState, _Session_stateChangeHandler, _Session_connectMutex;
32
20
  import { delay, SECOND } from "../0_deps.js";
33
21
  import { drop, getLogger, Mutex } from "../1_utilities.js";
34
22
  import { transportProviderTcp, transportProviderWebSocket } from "../3_transport.js";
@@ -38,50 +26,37 @@ let id = 0;
38
26
  // @ts-ignore: lib
39
27
  const defaultTransportProvider = typeof Deno === "undefined" ? transportProviderWebSocket : transportProviderTcp;
40
28
  export class Session {
29
+ #dc;
30
+ #isCdn;
31
+ state = new SessionState();
32
+ transport;
33
+ #lastConnect;
34
+ #isDisconnected = true;
35
+ #L;
36
+ #onConnectionStateChange;
41
37
  constructor(dc, params) {
42
- _Session_instances.add(this);
43
- _Session_dc.set(this, void 0);
44
- _Session_isCdn.set(this, void 0);
45
- Object.defineProperty(this, "state", {
46
- enumerable: true,
47
- configurable: true,
48
- writable: true,
49
- value: new SessionState()
50
- });
51
- Object.defineProperty(this, "transport", {
52
- enumerable: true,
53
- configurable: true,
54
- writable: true,
55
- value: void 0
56
- });
57
- _Session_lastConnect.set(this, void 0);
58
- _Session_isDisconnected.set(this, true);
59
- _Session_L.set(this, void 0);
60
- _Session_onConnectionStateChange.set(this, void 0);
61
- _Session_lastState.set(this, void 0);
62
- _Session_connectMutex.set(this, new Mutex());
63
- __classPrivateFieldSet(this, _Session_dc, dc, "f");
64
- __classPrivateFieldSet(this, _Session_isCdn, params?.isCdn ?? false, "f");
38
+ this.#dc = dc;
39
+ this.#isCdn = params?.isCdn ?? false;
65
40
  const transportProvider = params?.transportProvider ?? defaultTransportProvider();
66
- this.transport = transportProvider({ dc: __classPrivateFieldGet(this, _Session_dc, "f"), isCdn: __classPrivateFieldGet(this, _Session_isCdn, "f") });
41
+ this.transport = transportProvider({ dc: this.#dc, isCdn: this.#isCdn });
67
42
  this.transport.connection.stateChangeHandler = (connected) => {
68
43
  setTimeout(() => {
69
- drop(__classPrivateFieldGet(this, _Session_instances, "m", _Session_stateChangeHandler).call(this, connected));
44
+ drop(this.#stateChangeHandler(connected));
70
45
  });
71
46
  };
72
- __classPrivateFieldSet(this, _Session_L, getLogger("Session").client(id++), "f");
47
+ this.#L = getLogger("Session").client(id++);
73
48
  }
74
49
  set onConnectionStateChange(onConnectionStateChange) {
75
- __classPrivateFieldSet(this, _Session_onConnectionStateChange, onConnectionStateChange, "f");
50
+ this.#onConnectionStateChange = onConnectionStateChange;
76
51
  }
77
52
  set connectionCallback(connectionCallback) {
78
53
  this.transport.connection.callback = connectionCallback;
79
54
  }
80
55
  get dc() {
81
- return __classPrivateFieldGet(this, _Session_dc, "f");
56
+ return this.#dc;
82
57
  }
83
58
  get isCdn() {
84
- return __classPrivateFieldGet(this, _Session_isCdn, "f");
59
+ return this.#isCdn;
85
60
  }
86
61
  set serverSalt(serverSalt) {
87
62
  this.state.serverSalt = serverSalt;
@@ -89,59 +64,61 @@ export class Session {
89
64
  get serverSalt() {
90
65
  return this.state.serverSalt;
91
66
  }
67
+ #lastState;
68
+ async #stateChangeHandler(isConnected) {
69
+ if (this.#lastState !== isConnected) {
70
+ setTimeout(() => {
71
+ this.#onConnectionStateChange?.(isConnected);
72
+ });
73
+ }
74
+ if (this.#lastState === isConnected) {
75
+ return;
76
+ }
77
+ this.#lastState = isConnected;
78
+ if (isConnected || this.#isDisconnected) {
79
+ if (this.#isDisconnected) {
80
+ this.#L.debug("not reconnecting because explicitly disconnected");
81
+ }
82
+ return;
83
+ }
84
+ if (this.#lastConnect && Date.now() - this.#lastConnect.getTime() <= 10 * SECOND) {
85
+ this.#L.debug("reconnecting after a delay");
86
+ await delay(3 * SECOND);
87
+ }
88
+ else {
89
+ this.#L.debug("reconnecting");
90
+ }
91
+ await this.connect();
92
+ }
92
93
  get isConnected() {
93
94
  return this.transport.connection.isConnected;
94
95
  }
96
+ #connectMutex = new Mutex();
95
97
  async connect() {
96
- const unlock = await __classPrivateFieldGet(this, _Session_connectMutex, "f").lock();
98
+ const unlock = await this.#connectMutex.lock();
97
99
  try {
98
100
  if (this.isConnected) {
99
101
  return;
100
102
  }
101
103
  await this.transport.connection.open();
102
104
  await this.transport.transport.initialize();
103
- __classPrivateFieldSet(this, _Session_lastConnect, new Date(), "f");
104
- __classPrivateFieldSet(this, _Session_isDisconnected, false, "f");
105
+ this.#lastConnect = new Date();
106
+ this.#isDisconnected = false;
105
107
  }
106
108
  finally {
107
109
  unlock();
108
110
  }
109
111
  }
110
112
  async waitUntilConnected() {
111
- (await __classPrivateFieldGet(this, _Session_connectMutex, "f").lock())();
113
+ (await this.#connectMutex.lock())();
112
114
  }
113
115
  get isDisconnected() {
114
- return __classPrivateFieldGet(this, _Session_isDisconnected, "f");
116
+ return this.#isDisconnected;
115
117
  }
116
118
  disconnect() {
117
- __classPrivateFieldSet(this, _Session_isDisconnected, true, "f");
119
+ this.#isDisconnected = true;
118
120
  if (this.transport.connection.isConnected) {
119
121
  this.transport.connection.close();
120
122
  }
121
123
  }
122
124
  }
123
- _Session_dc = new WeakMap(), _Session_isCdn = new WeakMap(), _Session_lastConnect = new WeakMap(), _Session_isDisconnected = new WeakMap(), _Session_L = new WeakMap(), _Session_onConnectionStateChange = new WeakMap(), _Session_lastState = new WeakMap(), _Session_connectMutex = new WeakMap(), _Session_instances = new WeakSet(), _Session_stateChangeHandler = async function _Session_stateChangeHandler(isConnected) {
124
- if (__classPrivateFieldGet(this, _Session_lastState, "f") !== isConnected) {
125
- setTimeout(() => {
126
- __classPrivateFieldGet(this, _Session_onConnectionStateChange, "f")?.call(this, isConnected);
127
- });
128
- }
129
- if (__classPrivateFieldGet(this, _Session_lastState, "f") === isConnected) {
130
- return;
131
- }
132
- __classPrivateFieldSet(this, _Session_lastState, isConnected, "f");
133
- if (isConnected || __classPrivateFieldGet(this, _Session_isDisconnected, "f")) {
134
- if (__classPrivateFieldGet(this, _Session_isDisconnected, "f")) {
135
- __classPrivateFieldGet(this, _Session_L, "f").debug("not reconnecting because explicitly disconnected");
136
- }
137
- return;
138
- }
139
- if (__classPrivateFieldGet(this, _Session_lastConnect, "f") && Date.now() - __classPrivateFieldGet(this, _Session_lastConnect, "f").getTime() <= 10 * SECOND) {
140
- __classPrivateFieldGet(this, _Session_L, "f").debug("reconnecting after a delay");
141
- await delay(3 * SECOND);
142
- }
143
- else {
144
- __classPrivateFieldGet(this, _Session_L, "f").debug("reconnecting");
145
- }
146
- await this.connect();
147
- };