@mtkruto/browser 0.119.0 → 0.119.1

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 (127) hide show
  1. package/esm/0_errors.d.ts.map +1 -1
  2. package/esm/0_errors.js +9 -31
  3. package/esm/3_errors.js +2 -12
  4. package/esm/4_errors.js +2 -12
  5. package/esm/_dnt.polyfills.d.ts +0 -99
  6. package/esm/_dnt.polyfills.d.ts.map +1 -1
  7. package/esm/_dnt.polyfills.js +1 -127
  8. package/esm/client/0_abortable_loop.js +26 -39
  9. package/esm/client/0_storage_operations.js +179 -218
  10. package/esm/client/1_client_plain.js +4 -22
  11. package/esm/client/2_account_manager.js +140 -149
  12. package/esm/client/2_bot_info_manager.js +26 -38
  13. package/esm/client/2_business_connection_manager.js +10 -23
  14. package/esm/client/2_client_encrypted.js +198 -215
  15. package/esm/client/2_file_manager.js +255 -262
  16. package/esm/client/2_network_statistics_manager.js +31 -44
  17. package/esm/client/2_payment_manager.js +7 -20
  18. package/esm/client/2_reaction_manager.js +7 -20
  19. package/esm/client/2_translations_manager.js +101 -111
  20. package/esm/client/2_update_manager.js +750 -745
  21. package/esm/client/3_client_encrypted_pool.js +10 -26
  22. package/esm/client/3_message_manager.js +503 -508
  23. package/esm/client/3_video_chat_manager.js +57 -68
  24. package/esm/client/4_callback_query_manager.js +18 -30
  25. package/esm/client/4_chat_list_manager.js +140 -146
  26. package/esm/client/4_chat_manager.js +161 -169
  27. package/esm/client/4_checklist_manager.js +26 -39
  28. package/esm/client/4_context.js +244 -259
  29. package/esm/client/4_forum_manager.js +67 -73
  30. package/esm/client/4_gift_manager.js +22 -35
  31. package/esm/client/4_inline_query_manager.js +16 -28
  32. package/esm/client/4_link_preview_manager.js +6 -19
  33. package/esm/client/4_poll_manager.js +44 -57
  34. package/esm/client/4_story_manager.js +41 -53
  35. package/esm/client/5_composer.js +13 -26
  36. package/esm/client/6_client.js +866 -896
  37. package/esm/client/6_client_dispatcher.js +308 -325
  38. package/esm/client/7_client_worker.js +16 -29
  39. package/esm/connection/1_connection_tcp.js +55 -82
  40. package/esm/connection/1_connection_web_socket.js +75 -91
  41. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.1/dist/tgcrypto.js +3 -11
  42. package/esm/deps/jsr.io/@std/async/1.2.0/mux_async_iterator.js +31 -47
  43. package/esm/deps/jsr.io/@std/async/1.2.0/tee.js +11 -34
  44. package/esm/deps/jsr.io/@std/cache/0.2.2/lru_cache.js +30 -47
  45. package/esm/deps/jsr.io/@std/datetime/0.225.7/_date_time_formatter.js +4 -17
  46. package/esm/session/0_session_state.js +12 -38
  47. package/esm/session/1_session.js +49 -72
  48. package/esm/session/2_session_encrypted.js +422 -420
  49. package/esm/storage/2_storage_indexed_db.js +26 -44
  50. package/esm/storage/2_storage_local_storage.js +3 -16
  51. package/esm/storage/2_storage_memory.js +24 -41
  52. package/esm/storage/2_storage_session_storage.js +3 -16
  53. package/esm/tl/1_tl_reader.d.ts +1 -1
  54. package/esm/tl/1_tl_reader.d.ts.map +1 -1
  55. package/esm/tl/1_tl_reader.js +95 -103
  56. package/esm/tl/1_tl_writer.js +169 -178
  57. package/esm/transport/0_transport.js +1 -8
  58. package/esm/transport/1_transport_abridged.js +11 -24
  59. package/esm/transport/1_transport_intermediate.js +10 -23
  60. package/esm/utilities/0_mutex.js +4 -19
  61. package/esm/utilities/0_part_stream.js +11 -25
  62. package/esm/utilities/1_crypto.js +42 -53
  63. package/esm/utilities/2_queue.js +29 -47
  64. package/package.json +1 -1
  65. package/script/0_errors.d.ts.map +1 -1
  66. package/script/0_errors.js +9 -31
  67. package/script/3_errors.js +2 -12
  68. package/script/4_errors.js +2 -12
  69. package/script/_dnt.polyfills.d.ts +0 -99
  70. package/script/_dnt.polyfills.d.ts.map +1 -1
  71. package/script/_dnt.polyfills.js +0 -128
  72. package/script/client/0_abortable_loop.js +27 -40
  73. package/script/client/0_storage_operations.js +179 -218
  74. package/script/client/1_client_plain.js +4 -22
  75. package/script/client/2_account_manager.js +140 -149
  76. package/script/client/2_bot_info_manager.js +26 -38
  77. package/script/client/2_business_connection_manager.js +10 -23
  78. package/script/client/2_client_encrypted.js +199 -216
  79. package/script/client/2_file_manager.js +255 -262
  80. package/script/client/2_network_statistics_manager.js +32 -45
  81. package/script/client/2_payment_manager.js +7 -20
  82. package/script/client/2_reaction_manager.js +7 -20
  83. package/script/client/2_translations_manager.js +102 -112
  84. package/script/client/2_update_manager.js +750 -745
  85. package/script/client/3_client_encrypted_pool.js +10 -26
  86. package/script/client/3_message_manager.js +503 -508
  87. package/script/client/3_video_chat_manager.js +57 -68
  88. package/script/client/4_callback_query_manager.js +18 -30
  89. package/script/client/4_chat_list_manager.js +140 -146
  90. package/script/client/4_chat_manager.js +161 -169
  91. package/script/client/4_checklist_manager.js +26 -39
  92. package/script/client/4_context.js +244 -259
  93. package/script/client/4_forum_manager.js +67 -73
  94. package/script/client/4_gift_manager.js +22 -35
  95. package/script/client/4_inline_query_manager.js +16 -28
  96. package/script/client/4_link_preview_manager.js +6 -19
  97. package/script/client/4_poll_manager.js +44 -57
  98. package/script/client/4_story_manager.js +41 -53
  99. package/script/client/5_composer.js +13 -26
  100. package/script/client/6_client.js +866 -896
  101. package/script/client/6_client_dispatcher.js +308 -325
  102. package/script/client/7_client_worker.js +16 -29
  103. package/script/connection/1_connection_tcp.js +55 -82
  104. package/script/connection/1_connection_web_socket.js +75 -91
  105. package/script/deps/jsr.io/@roj/tgcrypto/1.0.1/dist/tgcrypto.js +3 -11
  106. package/script/deps/jsr.io/@std/async/1.2.0/mux_async_iterator.js +31 -47
  107. package/script/deps/jsr.io/@std/async/1.2.0/tee.js +11 -34
  108. package/script/deps/jsr.io/@std/cache/0.2.2/lru_cache.js +30 -47
  109. package/script/deps/jsr.io/@std/datetime/0.225.7/_date_time_formatter.js +4 -17
  110. package/script/session/0_session_state.js +12 -38
  111. package/script/session/1_session.js +49 -72
  112. package/script/session/2_session_encrypted.js +423 -421
  113. package/script/storage/2_storage_indexed_db.js +26 -44
  114. package/script/storage/2_storage_local_storage.js +3 -16
  115. package/script/storage/2_storage_memory.js +24 -41
  116. package/script/storage/2_storage_session_storage.js +3 -16
  117. package/script/tl/1_tl_reader.d.ts +1 -1
  118. package/script/tl/1_tl_reader.d.ts.map +1 -1
  119. package/script/tl/1_tl_reader.js +96 -104
  120. package/script/tl/1_tl_writer.js +170 -179
  121. package/script/transport/0_transport.js +1 -8
  122. package/script/transport/1_transport_abridged.js +11 -24
  123. package/script/transport/1_transport_intermediate.js +10 -23
  124. package/script/utilities/0_mutex.js +4 -19
  125. package/script/utilities/0_part_stream.js +11 -25
  126. package/script/utilities/1_crypto.js +43 -54
  127. 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
- };