@mtcute/core 0.1.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 (502) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +26 -0
  3. package/cjs/base-client.d.ts +297 -0
  4. package/cjs/base-client.js +324 -0
  5. package/cjs/base-client.js.map +1 -0
  6. package/cjs/index.d.ts +10 -0
  7. package/cjs/index.js +30 -0
  8. package/cjs/index.js.map +1 -0
  9. package/cjs/network/auth-key.d.ts +21 -0
  10. package/cjs/network/auth-key.js +101 -0
  11. package/cjs/network/auth-key.js.map +1 -0
  12. package/cjs/network/authorization.d.ts +9 -0
  13. package/cjs/network/authorization.js +332 -0
  14. package/cjs/network/authorization.js.map +1 -0
  15. package/cjs/network/config-manager.d.ts +33 -0
  16. package/cjs/network/config-manager.js +93 -0
  17. package/cjs/network/config-manager.js.map +1 -0
  18. package/cjs/network/index.d.ts +4 -0
  19. package/cjs/network/index.js +20 -0
  20. package/cjs/network/index.js.map +1 -0
  21. package/cjs/network/mtproto-session.d.ts +116 -0
  22. package/cjs/network/mtproto-session.js +209 -0
  23. package/cjs/network/mtproto-session.js.map +1 -0
  24. package/cjs/network/multi-session-connection.d.ts +33 -0
  25. package/cjs/network/multi-session-connection.js +243 -0
  26. package/cjs/network/multi-session-connection.js.map +1 -0
  27. package/cjs/network/network-manager.d.ts +190 -0
  28. package/cjs/network/network-manager.js +547 -0
  29. package/cjs/network/network-manager.js.map +1 -0
  30. package/cjs/network/persistent-connection.d.ts +51 -0
  31. package/cjs/network/persistent-connection.js +173 -0
  32. package/cjs/network/persistent-connection.js.map +1 -0
  33. package/cjs/network/reconnection.d.ts +11 -0
  34. package/cjs/network/reconnection.js +18 -0
  35. package/cjs/network/reconnection.js.map +1 -0
  36. package/cjs/network/session-connection.d.ts +72 -0
  37. package/cjs/network/session-connection.js +1363 -0
  38. package/cjs/network/session-connection.js.map +1 -0
  39. package/cjs/network/transports/abstract.d.ts +99 -0
  40. package/cjs/network/transports/abstract.js +38 -0
  41. package/cjs/network/transports/abstract.js.map +1 -0
  42. package/cjs/network/transports/index.d.ts +8 -0
  43. package/cjs/network/transports/index.js +26 -0
  44. package/cjs/network/transports/index.js.map +1 -0
  45. package/cjs/network/transports/intermediate.d.ts +20 -0
  46. package/cjs/network/transports/intermediate.js +67 -0
  47. package/cjs/network/transports/intermediate.js.map +1 -0
  48. package/cjs/network/transports/obfuscated.d.ts +18 -0
  49. package/cjs/network/transports/obfuscated.js +83 -0
  50. package/cjs/network/transports/obfuscated.js.map +1 -0
  51. package/cjs/network/transports/streamed.d.ts +24 -0
  52. package/cjs/network/transports/streamed.js +32 -0
  53. package/cjs/network/transports/streamed.js.map +1 -0
  54. package/cjs/network/transports/tcp.d.ts +33 -0
  55. package/cjs/network/transports/tcp.js +130 -0
  56. package/cjs/network/transports/tcp.js.map +1 -0
  57. package/cjs/network/transports/websocket.d.ts +47 -0
  58. package/cjs/network/transports/websocket.js +124 -0
  59. package/cjs/network/transports/websocket.js.map +1 -0
  60. package/cjs/network/transports/wrapped.d.ts +11 -0
  61. package/cjs/network/transports/wrapped.js +26 -0
  62. package/cjs/network/transports/wrapped.js.map +1 -0
  63. package/cjs/package.json +3 -0
  64. package/cjs/storage/abstract.d.ts +174 -0
  65. package/cjs/storage/abstract.js +3 -0
  66. package/cjs/storage/abstract.js.map +1 -0
  67. package/cjs/storage/index.d.ts +5 -0
  68. package/cjs/storage/index.js +22 -0
  69. package/cjs/storage/index.js.map +1 -0
  70. package/cjs/storage/json-file.d.ts +31 -0
  71. package/cjs/storage/json-file.js +90 -0
  72. package/cjs/storage/json-file.js.map +1 -0
  73. package/cjs/storage/json.d.ts +9 -0
  74. package/cjs/storage/json.js +65 -0
  75. package/cjs/storage/json.js.map +1 -0
  76. package/cjs/storage/localstorage.d.ts +7 -0
  77. package/cjs/storage/localstorage.js +25 -0
  78. package/cjs/storage/localstorage.js.map +1 -0
  79. package/cjs/storage/memory.d.ts +98 -0
  80. package/cjs/storage/memory.js +299 -0
  81. package/cjs/storage/memory.js.map +1 -0
  82. package/cjs/types/errors.d.ts +53 -0
  83. package/cjs/types/errors.js +58 -0
  84. package/cjs/types/errors.js.map +1 -0
  85. package/cjs/types/index.d.ts +3 -0
  86. package/cjs/types/index.js +20 -0
  87. package/cjs/types/index.js.map +1 -0
  88. package/cjs/types/peers.d.ts +4 -0
  89. package/cjs/types/peers.js +3 -0
  90. package/cjs/types/peers.js.map +1 -0
  91. package/cjs/types/utils.d.ts +6 -0
  92. package/cjs/types/utils.js +9 -0
  93. package/cjs/types/utils.js.map +1 -0
  94. package/cjs/utils/async-lock.d.ts +10 -0
  95. package/cjs/utils/async-lock.js +43 -0
  96. package/cjs/utils/async-lock.js.map +1 -0
  97. package/cjs/utils/bigint-utils.d.ts +40 -0
  98. package/cjs/utils/bigint-utils.js +104 -0
  99. package/cjs/utils/bigint-utils.js.map +1 -0
  100. package/cjs/utils/binary/asn1-parser.d.ts +17 -0
  101. package/cjs/utils/binary/asn1-parser.js +121 -0
  102. package/cjs/utils/binary/asn1-parser.js.map +1 -0
  103. package/cjs/utils/buffer-utils.d.ts +21 -0
  104. package/cjs/utils/buffer-utils.js +63 -0
  105. package/cjs/utils/buffer-utils.js.map +1 -0
  106. package/cjs/utils/condition-variable.d.ts +9 -0
  107. package/cjs/utils/condition-variable.js +28 -0
  108. package/cjs/utils/condition-variable.js.map +1 -0
  109. package/cjs/utils/controllable-promise.d.ts +16 -0
  110. package/cjs/utils/controllable-promise.js +25 -0
  111. package/cjs/utils/controllable-promise.js.map +1 -0
  112. package/cjs/utils/crypto/abstract.d.ts +23 -0
  113. package/cjs/utils/crypto/abstract.js +19 -0
  114. package/cjs/utils/crypto/abstract.js.map +1 -0
  115. package/cjs/utils/crypto/common.d.ts +12 -0
  116. package/cjs/utils/crypto/common.js +54 -0
  117. package/cjs/utils/crypto/common.js.map +1 -0
  118. package/cjs/utils/crypto/factorization.d.ts +5 -0
  119. package/cjs/utils/crypto/factorization.js +69 -0
  120. package/cjs/utils/crypto/factorization.js.map +1 -0
  121. package/cjs/utils/crypto/index.d.ts +5 -0
  122. package/cjs/utils/crypto/index.js +23 -0
  123. package/cjs/utils/crypto/index.js.map +1 -0
  124. package/cjs/utils/crypto/keys.d.ts +27 -0
  125. package/cjs/utils/crypto/keys.js +70 -0
  126. package/cjs/utils/crypto/keys.js.map +1 -0
  127. package/cjs/utils/crypto/miller-rabin.d.ts +2 -0
  128. package/cjs/utils/crypto/miller-rabin.js +44 -0
  129. package/cjs/utils/crypto/miller-rabin.js.map +1 -0
  130. package/cjs/utils/crypto/mtproto.d.ts +31 -0
  131. package/cjs/utils/crypto/mtproto.js +66 -0
  132. package/cjs/utils/crypto/mtproto.js.map +1 -0
  133. package/cjs/utils/crypto/node-crypto.d.ts +10 -0
  134. package/cjs/utils/crypto/node-crypto.js +46 -0
  135. package/cjs/utils/crypto/node-crypto.js.map +1 -0
  136. package/cjs/utils/crypto/password.d.ts +29 -0
  137. package/cjs/utils/crypto/password.js +106 -0
  138. package/cjs/utils/crypto/password.js.map +1 -0
  139. package/cjs/utils/crypto/subtle.d.ts +12 -0
  140. package/cjs/utils/crypto/subtle.js +86 -0
  141. package/cjs/utils/crypto/subtle.js.map +1 -0
  142. package/cjs/utils/crypto/utils.d.ts +14 -0
  143. package/cjs/utils/crypto/utils.js +30 -0
  144. package/cjs/utils/crypto/utils.js.map +1 -0
  145. package/cjs/utils/default-dcs.d.ts +7 -0
  146. package/cjs/utils/default-dcs.js +76 -0
  147. package/cjs/utils/default-dcs.js.map +1 -0
  148. package/cjs/utils/deque.d.ts +29 -0
  149. package/cjs/utils/deque.js +210 -0
  150. package/cjs/utils/deque.js.map +1 -0
  151. package/cjs/utils/early-timer.d.ts +42 -0
  152. package/cjs/utils/early-timer.js +79 -0
  153. package/cjs/utils/early-timer.js.map +1 -0
  154. package/cjs/utils/flood-control.d.ts +14 -0
  155. package/cjs/utils/flood-control.js +65 -0
  156. package/cjs/utils/flood-control.js.map +1 -0
  157. package/cjs/utils/function-utils.d.ts +13 -0
  158. package/cjs/utils/function-utils.js +30 -0
  159. package/cjs/utils/function-utils.js.map +1 -0
  160. package/cjs/utils/index.d.ts +24 -0
  161. package/cjs/utils/index.js +41 -0
  162. package/cjs/utils/index.js.map +1 -0
  163. package/cjs/utils/linked-list.d.ts +21 -0
  164. package/cjs/utils/linked-list.js +73 -0
  165. package/cjs/utils/linked-list.js.map +1 -0
  166. package/cjs/utils/links/bots.d.ts +71 -0
  167. package/cjs/utils/links/bots.js +259 -0
  168. package/cjs/utils/links/bots.js.map +1 -0
  169. package/cjs/utils/links/bundle.d.ts +7 -0
  170. package/cjs/utils/links/bundle.js +24 -0
  171. package/cjs/utils/links/bundle.js.map +1 -0
  172. package/cjs/utils/links/calls.d.ts +16 -0
  173. package/cjs/utils/links/calls.js +59 -0
  174. package/cjs/utils/links/calls.js.map +1 -0
  175. package/cjs/utils/links/chat.d.ts +46 -0
  176. package/cjs/utils/links/chat.js +160 -0
  177. package/cjs/utils/links/chat.js.map +1 -0
  178. package/cjs/utils/links/common.d.ts +31 -0
  179. package/cjs/utils/links/common.js +60 -0
  180. package/cjs/utils/links/common.js.map +1 -0
  181. package/cjs/utils/links/index.d.ts +2 -0
  182. package/cjs/utils/links/index.js +29 -0
  183. package/cjs/utils/links/index.js.map +1 -0
  184. package/cjs/utils/links/misc.d.ts +19 -0
  185. package/cjs/utils/links/misc.js +77 -0
  186. package/cjs/utils/links/misc.js.map +1 -0
  187. package/cjs/utils/links/proxy.d.ts +17 -0
  188. package/cjs/utils/links/proxy.js +61 -0
  189. package/cjs/utils/links/proxy.js.map +1 -0
  190. package/cjs/utils/links/stickers.d.ts +9 -0
  191. package/cjs/utils/links/stickers.js +28 -0
  192. package/cjs/utils/links/stickers.js.map +1 -0
  193. package/cjs/utils/links/user.d.ts +27 -0
  194. package/cjs/utils/links/user.js +81 -0
  195. package/cjs/utils/links/user.js.map +1 -0
  196. package/cjs/utils/logger.d.ts +54 -0
  197. package/cjs/utils/logger.js +158 -0
  198. package/cjs/utils/logger.js.map +1 -0
  199. package/cjs/utils/long-utils.d.ts +75 -0
  200. package/cjs/utils/long-utils.js +161 -0
  201. package/cjs/utils/long-utils.js.map +1 -0
  202. package/cjs/utils/lru-map.d.ts +21 -0
  203. package/cjs/utils/lru-map.js +107 -0
  204. package/cjs/utils/lru-map.js.map +1 -0
  205. package/cjs/utils/lru-set.d.ts +22 -0
  206. package/cjs/utils/lru-set.js +48 -0
  207. package/cjs/utils/lru-set.js.map +1 -0
  208. package/cjs/utils/misc-utils.d.ts +7 -0
  209. package/cjs/utils/misc-utils.js +15 -0
  210. package/cjs/utils/misc-utils.js.map +1 -0
  211. package/cjs/utils/peer-utils.d.ts +35 -0
  212. package/cjs/utils/peer-utils.js +188 -0
  213. package/cjs/utils/peer-utils.js.map +1 -0
  214. package/cjs/utils/platform/crypto.d.ts +1 -0
  215. package/cjs/utils/platform/crypto.js +8 -0
  216. package/cjs/utils/platform/crypto.js.map +1 -0
  217. package/cjs/utils/platform/crypto.web.d.ts +1 -0
  218. package/cjs/utils/platform/crypto.web.js +14 -0
  219. package/cjs/utils/platform/crypto.web.js.map +1 -0
  220. package/cjs/utils/platform/error-reporting.d.ts +3 -0
  221. package/cjs/utils/platform/error-reporting.js +22 -0
  222. package/cjs/utils/platform/error-reporting.js.map +1 -0
  223. package/cjs/utils/platform/logging.d.ts +1 -0
  224. package/cjs/utils/platform/logging.js +35 -0
  225. package/cjs/utils/platform/logging.js.map +1 -0
  226. package/cjs/utils/platform/logging.web.d.ts +1 -0
  227. package/cjs/utils/platform/logging.web.js +35 -0
  228. package/cjs/utils/platform/logging.web.js.map +1 -0
  229. package/cjs/utils/platform/random.d.ts +1 -0
  230. package/cjs/utils/platform/random.js +7 -0
  231. package/cjs/utils/platform/random.js.map +1 -0
  232. package/cjs/utils/platform/random.web.d.ts +1 -0
  233. package/cjs/utils/platform/random.web.js +10 -0
  234. package/cjs/utils/platform/random.web.js.map +1 -0
  235. package/cjs/utils/platform/transport.d.ts +1 -0
  236. package/cjs/utils/platform/transport.js +8 -0
  237. package/cjs/utils/platform/transport.js.map +1 -0
  238. package/cjs/utils/platform/transport.web.d.ts +1 -0
  239. package/cjs/utils/platform/transport.web.js +15 -0
  240. package/cjs/utils/platform/transport.web.js.map +1 -0
  241. package/cjs/utils/sorted-array.d.ts +17 -0
  242. package/cjs/utils/sorted-array.js +83 -0
  243. package/cjs/utils/sorted-array.js.map +1 -0
  244. package/cjs/utils/string-session.d.ts +11 -0
  245. package/cjs/utils/string-session.js +73 -0
  246. package/cjs/utils/string-session.js.map +1 -0
  247. package/cjs/utils/tl-json.d.ts +13 -0
  248. package/cjs/utils/tl-json.js +62 -0
  249. package/cjs/utils/tl-json.js.map +1 -0
  250. package/cjs/utils/type-assertions.d.ts +37 -0
  251. package/cjs/utils/type-assertions.js +70 -0
  252. package/cjs/utils/type-assertions.js.map +1 -0
  253. package/esm/base-client.d.ts +297 -0
  254. package/esm/base-client.js +317 -0
  255. package/esm/base-client.js.map +1 -0
  256. package/esm/index.d.ts +10 -0
  257. package/esm/index.js +11 -0
  258. package/esm/index.js.map +1 -0
  259. package/esm/network/auth-key.d.ts +21 -0
  260. package/esm/network/auth-key.js +97 -0
  261. package/esm/network/auth-key.js.map +1 -0
  262. package/esm/network/authorization.d.ts +9 -0
  263. package/esm/network/authorization.js +325 -0
  264. package/esm/network/authorization.js.map +1 -0
  265. package/esm/network/config-manager.d.ts +33 -0
  266. package/esm/network/config-manager.js +89 -0
  267. package/esm/network/config-manager.js.map +1 -0
  268. package/esm/network/index.d.ts +4 -0
  269. package/esm/network/index.js +4 -0
  270. package/esm/network/index.js.map +1 -0
  271. package/esm/network/mtproto-session.d.ts +116 -0
  272. package/esm/network/mtproto-session.js +202 -0
  273. package/esm/network/mtproto-session.js.map +1 -0
  274. package/esm/network/multi-session-connection.d.ts +33 -0
  275. package/esm/network/multi-session-connection.js +236 -0
  276. package/esm/network/multi-session-connection.js.map +1 -0
  277. package/esm/network/network-manager.d.ts +190 -0
  278. package/esm/network/network-manager.js +542 -0
  279. package/esm/network/network-manager.js.map +1 -0
  280. package/esm/network/persistent-connection.d.ts +51 -0
  281. package/esm/network/persistent-connection.js +166 -0
  282. package/esm/network/persistent-connection.js.map +1 -0
  283. package/esm/network/reconnection.d.ts +11 -0
  284. package/esm/network/reconnection.js +14 -0
  285. package/esm/network/reconnection.js.map +1 -0
  286. package/esm/network/session-connection.d.ts +72 -0
  287. package/esm/network/session-connection.js +1356 -0
  288. package/esm/network/session-connection.js.map +1 -0
  289. package/esm/network/transports/abstract.d.ts +99 -0
  290. package/esm/network/transports/abstract.js +34 -0
  291. package/esm/network/transports/abstract.js.map +1 -0
  292. package/esm/network/transports/index.d.ts +8 -0
  293. package/esm/network/transports/index.js +9 -0
  294. package/esm/network/transports/index.js.map +1 -0
  295. package/esm/network/transports/intermediate.d.ts +20 -0
  296. package/esm/network/transports/intermediate.js +62 -0
  297. package/esm/network/transports/intermediate.js.map +1 -0
  298. package/esm/network/transports/obfuscated.d.ts +18 -0
  299. package/esm/network/transports/obfuscated.js +79 -0
  300. package/esm/network/transports/obfuscated.js.map +1 -0
  301. package/esm/network/transports/streamed.d.ts +24 -0
  302. package/esm/network/transports/streamed.js +25 -0
  303. package/esm/network/transports/streamed.js.map +1 -0
  304. package/esm/network/transports/tcp.d.ts +33 -0
  305. package/esm/network/transports/tcp.js +122 -0
  306. package/esm/network/transports/tcp.js.map +1 -0
  307. package/esm/network/transports/websocket.d.ts +47 -0
  308. package/esm/network/transports/websocket.js +116 -0
  309. package/esm/network/transports/websocket.js.map +1 -0
  310. package/esm/network/transports/wrapped.d.ts +11 -0
  311. package/esm/network/transports/wrapped.js +19 -0
  312. package/esm/network/transports/wrapped.js.map +1 -0
  313. package/esm/storage/abstract.d.ts +174 -0
  314. package/esm/storage/abstract.js +2 -0
  315. package/esm/storage/abstract.js.map +1 -0
  316. package/esm/storage/index.d.ts +5 -0
  317. package/esm/storage/index.js +6 -0
  318. package/esm/storage/index.js.map +1 -0
  319. package/esm/storage/json-file.d.ts +31 -0
  320. package/esm/storage/json-file.js +63 -0
  321. package/esm/storage/json-file.js.map +1 -0
  322. package/esm/storage/json.d.ts +9 -0
  323. package/esm/storage/json.js +61 -0
  324. package/esm/storage/json.js.map +1 -0
  325. package/esm/storage/localstorage.d.ts +7 -0
  326. package/esm/storage/localstorage.js +21 -0
  327. package/esm/storage/localstorage.js.map +1 -0
  328. package/esm/storage/memory.d.ts +98 -0
  329. package/esm/storage/memory.js +295 -0
  330. package/esm/storage/memory.js.map +1 -0
  331. package/esm/types/errors.d.ts +53 -0
  332. package/esm/types/errors.js +49 -0
  333. package/esm/types/errors.js.map +1 -0
  334. package/esm/types/index.d.ts +3 -0
  335. package/esm/types/index.js +4 -0
  336. package/esm/types/index.js.map +1 -0
  337. package/esm/types/peers.d.ts +4 -0
  338. package/esm/types/peers.js +2 -0
  339. package/esm/types/peers.js.map +1 -0
  340. package/esm/types/utils.d.ts +6 -0
  341. package/esm/types/utils.js +5 -0
  342. package/esm/types/utils.js.map +1 -0
  343. package/esm/utils/async-lock.d.ts +10 -0
  344. package/esm/utils/async-lock.js +39 -0
  345. package/esm/utils/async-lock.js.map +1 -0
  346. package/esm/utils/bigint-utils.d.ts +40 -0
  347. package/esm/utils/bigint-utils.js +92 -0
  348. package/esm/utils/bigint-utils.js.map +1 -0
  349. package/esm/utils/binary/asn1-parser.d.ts +17 -0
  350. package/esm/utils/binary/asn1-parser.js +116 -0
  351. package/esm/utils/binary/asn1-parser.js.map +1 -0
  352. package/esm/utils/buffer-utils.d.ts +21 -0
  353. package/esm/utils/buffer-utils.js +55 -0
  354. package/esm/utils/buffer-utils.js.map +1 -0
  355. package/esm/utils/condition-variable.d.ts +9 -0
  356. package/esm/utils/condition-variable.js +24 -0
  357. package/esm/utils/condition-variable.js.map +1 -0
  358. package/esm/utils/controllable-promise.d.ts +16 -0
  359. package/esm/utils/controllable-promise.js +20 -0
  360. package/esm/utils/controllable-promise.js.map +1 -0
  361. package/esm/utils/crypto/abstract.d.ts +23 -0
  362. package/esm/utils/crypto/abstract.js +15 -0
  363. package/esm/utils/crypto/abstract.js.map +1 -0
  364. package/esm/utils/crypto/common.d.ts +12 -0
  365. package/esm/utils/crypto/common.js +50 -0
  366. package/esm/utils/crypto/common.js.map +1 -0
  367. package/esm/utils/crypto/factorization.d.ts +5 -0
  368. package/esm/utils/crypto/factorization.js +62 -0
  369. package/esm/utils/crypto/factorization.js.map +1 -0
  370. package/esm/utils/crypto/index.d.ts +5 -0
  371. package/esm/utils/crypto/index.js +6 -0
  372. package/esm/utils/crypto/index.js.map +1 -0
  373. package/esm/utils/crypto/keys.d.ts +27 -0
  374. package/esm/utils/crypto/keys.js +64 -0
  375. package/esm/utils/crypto/keys.js.map +1 -0
  376. package/esm/utils/crypto/miller-rabin.d.ts +2 -0
  377. package/esm/utils/crypto/miller-rabin.js +37 -0
  378. package/esm/utils/crypto/miller-rabin.js.map +1 -0
  379. package/esm/utils/crypto/mtproto.d.ts +31 -0
  380. package/esm/utils/crypto/mtproto.js +60 -0
  381. package/esm/utils/crypto/mtproto.js.map +1 -0
  382. package/esm/utils/crypto/node-crypto.d.ts +10 -0
  383. package/esm/utils/crypto/node-crypto.js +42 -0
  384. package/esm/utils/crypto/node-crypto.js.map +1 -0
  385. package/esm/utils/crypto/password.d.ts +29 -0
  386. package/esm/utils/crypto/password.js +97 -0
  387. package/esm/utils/crypto/password.js.map +1 -0
  388. package/esm/utils/crypto/subtle.d.ts +12 -0
  389. package/esm/utils/crypto/subtle.js +59 -0
  390. package/esm/utils/crypto/subtle.js.map +1 -0
  391. package/esm/utils/crypto/utils.d.ts +14 -0
  392. package/esm/utils/crypto/utils.js +25 -0
  393. package/esm/utils/crypto/utils.js.map +1 -0
  394. package/esm/utils/default-dcs.d.ts +7 -0
  395. package/esm/utils/default-dcs.js +73 -0
  396. package/esm/utils/default-dcs.js.map +1 -0
  397. package/esm/utils/deque.d.ts +29 -0
  398. package/esm/utils/deque.js +206 -0
  399. package/esm/utils/deque.js.map +1 -0
  400. package/esm/utils/early-timer.d.ts +42 -0
  401. package/esm/utils/early-timer.js +75 -0
  402. package/esm/utils/early-timer.js.map +1 -0
  403. package/esm/utils/flood-control.d.ts +14 -0
  404. package/esm/utils/flood-control.js +61 -0
  405. package/esm/utils/flood-control.js.map +1 -0
  406. package/esm/utils/function-utils.d.ts +13 -0
  407. package/esm/utils/function-utils.js +26 -0
  408. package/esm/utils/function-utils.js.map +1 -0
  409. package/esm/utils/index.d.ts +24 -0
  410. package/esm/utils/index.js +25 -0
  411. package/esm/utils/index.js.map +1 -0
  412. package/esm/utils/linked-list.d.ts +21 -0
  413. package/esm/utils/linked-list.js +69 -0
  414. package/esm/utils/linked-list.js.map +1 -0
  415. package/esm/utils/links/bots.d.ts +71 -0
  416. package/esm/utils/links/bots.js +256 -0
  417. package/esm/utils/links/bots.js.map +1 -0
  418. package/esm/utils/links/bundle.d.ts +7 -0
  419. package/esm/utils/links/bundle.js +8 -0
  420. package/esm/utils/links/bundle.js.map +1 -0
  421. package/esm/utils/links/calls.d.ts +16 -0
  422. package/esm/utils/links/calls.js +56 -0
  423. package/esm/utils/links/calls.js.map +1 -0
  424. package/esm/utils/links/chat.d.ts +46 -0
  425. package/esm/utils/links/chat.js +157 -0
  426. package/esm/utils/links/chat.js.map +1 -0
  427. package/esm/utils/links/common.d.ts +31 -0
  428. package/esm/utils/links/common.js +56 -0
  429. package/esm/utils/links/common.js.map +1 -0
  430. package/esm/utils/links/index.d.ts +2 -0
  431. package/esm/utils/links/index.js +3 -0
  432. package/esm/utils/links/index.js.map +1 -0
  433. package/esm/utils/links/misc.d.ts +19 -0
  434. package/esm/utils/links/misc.js +74 -0
  435. package/esm/utils/links/misc.js.map +1 -0
  436. package/esm/utils/links/proxy.d.ts +17 -0
  437. package/esm/utils/links/proxy.js +58 -0
  438. package/esm/utils/links/proxy.js.map +1 -0
  439. package/esm/utils/links/stickers.d.ts +9 -0
  440. package/esm/utils/links/stickers.js +25 -0
  441. package/esm/utils/links/stickers.js.map +1 -0
  442. package/esm/utils/links/user.d.ts +27 -0
  443. package/esm/utils/links/user.js +78 -0
  444. package/esm/utils/links/user.js.map +1 -0
  445. package/esm/utils/logger.d.ts +54 -0
  446. package/esm/utils/logger.js +154 -0
  447. package/esm/utils/logger.js.map +1 -0
  448. package/esm/utils/long-utils.d.ts +75 -0
  449. package/esm/utils/long-utils.js +148 -0
  450. package/esm/utils/long-utils.js.map +1 -0
  451. package/esm/utils/lru-map.d.ts +21 -0
  452. package/esm/utils/lru-map.js +103 -0
  453. package/esm/utils/lru-map.js.map +1 -0
  454. package/esm/utils/lru-set.d.ts +22 -0
  455. package/esm/utils/lru-set.js +44 -0
  456. package/esm/utils/lru-set.js.map +1 -0
  457. package/esm/utils/misc-utils.d.ts +7 -0
  458. package/esm/utils/misc-utils.js +10 -0
  459. package/esm/utils/misc-utils.js.map +1 -0
  460. package/esm/utils/peer-utils.d.ts +35 -0
  461. package/esm/utils/peer-utils.js +179 -0
  462. package/esm/utils/peer-utils.js.map +1 -0
  463. package/esm/utils/platform/crypto.d.ts +1 -0
  464. package/esm/utils/platform/crypto.js +4 -0
  465. package/esm/utils/platform/crypto.js.map +1 -0
  466. package/esm/utils/platform/crypto.web.d.ts +1 -0
  467. package/esm/utils/platform/crypto.web.js +10 -0
  468. package/esm/utils/platform/crypto.web.js.map +1 -0
  469. package/esm/utils/platform/error-reporting.d.ts +3 -0
  470. package/esm/utils/platform/error-reporting.js +18 -0
  471. package/esm/utils/platform/error-reporting.js.map +1 -0
  472. package/esm/utils/platform/logging.d.ts +1 -0
  473. package/esm/utils/platform/logging.js +32 -0
  474. package/esm/utils/platform/logging.js.map +1 -0
  475. package/esm/utils/platform/logging.web.d.ts +1 -0
  476. package/esm/utils/platform/logging.web.js +31 -0
  477. package/esm/utils/platform/logging.web.js.map +1 -0
  478. package/esm/utils/platform/random.d.ts +1 -0
  479. package/esm/utils/platform/random.js +4 -0
  480. package/esm/utils/platform/random.js.map +1 -0
  481. package/esm/utils/platform/random.web.d.ts +1 -0
  482. package/esm/utils/platform/random.web.js +6 -0
  483. package/esm/utils/platform/random.web.js.map +1 -0
  484. package/esm/utils/platform/transport.d.ts +1 -0
  485. package/esm/utils/platform/transport.js +4 -0
  486. package/esm/utils/platform/transport.js.map +1 -0
  487. package/esm/utils/platform/transport.web.d.ts +1 -0
  488. package/esm/utils/platform/transport.web.js +12 -0
  489. package/esm/utils/platform/transport.web.js.map +1 -0
  490. package/esm/utils/sorted-array.d.ts +17 -0
  491. package/esm/utils/sorted-array.js +79 -0
  492. package/esm/utils/sorted-array.js.map +1 -0
  493. package/esm/utils/string-session.d.ts +11 -0
  494. package/esm/utils/string-session.js +68 -0
  495. package/esm/utils/string-session.js.map +1 -0
  496. package/esm/utils/tl-json.d.ts +13 -0
  497. package/esm/utils/tl-json.js +57 -0
  498. package/esm/utils/tl-json.js.map +1 -0
  499. package/esm/utils/type-assertions.d.ts +37 -0
  500. package/esm/utils/type-assertions.js +61 -0
  501. package/esm/utils/type-assertions.js.map +1 -0
  502. package/package.json +50 -0
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.SubtleCryptoProvider = void 0;
27
+ const abstract_js_1 = require("./abstract.js");
28
+ const aes_1 = __importStar(require("@cryptography/aes"));
29
+ const AES = 'default' in aes_1.default ? aes_1.default.default : aes_1.default;
30
+ const ALGO_TO_SUBTLE = {
31
+ sha256: 'SHA-256',
32
+ sha1: 'SHA-1',
33
+ sha512: 'SHA-512',
34
+ };
35
+ function wordsToBytes(words) {
36
+ const o = new Uint8Array(words.byteLength);
37
+ const len = words.length * 4;
38
+ for (let i = 0; i < len; ++i) {
39
+ o[i] = ((words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff);
40
+ }
41
+ return o;
42
+ }
43
+ class SubtleCryptoProvider extends abstract_js_1.BaseCryptoProvider {
44
+ constructor(subtle) {
45
+ super();
46
+ this.subtle = subtle;
47
+ }
48
+ sha1(data) {
49
+ return this.subtle.digest('SHA-1', data).then((result) => new Uint8Array(result));
50
+ }
51
+ sha256(data) {
52
+ return this.subtle.digest('SHA-256', data).then((result) => new Uint8Array(result));
53
+ }
54
+ async pbkdf2(password, salt, iterations, keylen, algo) {
55
+ const keyMaterial = await this.subtle.importKey('raw', password, 'PBKDF2', false, ['deriveBits']);
56
+ return this.subtle
57
+ .deriveBits({
58
+ name: 'PBKDF2',
59
+ salt,
60
+ iterations,
61
+ hash: algo ? ALGO_TO_SUBTLE[algo] : 'SHA-512',
62
+ }, keyMaterial, (keylen || 64) * 8)
63
+ .then((result) => new Uint8Array(result));
64
+ }
65
+ async hmacSha256(data, key) {
66
+ const keyMaterial = await this.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);
67
+ const res = await this.subtle.sign({ name: 'HMAC' }, keyMaterial, data);
68
+ return new Uint8Array(res);
69
+ }
70
+ createAesCtr(key, iv) {
71
+ const aes = new aes_1.CTR(key, iv);
72
+ return {
73
+ encrypt: (data) => wordsToBytes(aes.encrypt(data)),
74
+ decrypt: (data) => wordsToBytes(aes.decrypt(data)),
75
+ };
76
+ }
77
+ createAesEcb(key) {
78
+ const aes = new AES(key);
79
+ return {
80
+ encrypt: (data) => wordsToBytes(aes.encrypt(data)),
81
+ decrypt: (data) => wordsToBytes(aes.decrypt(data)),
82
+ };
83
+ }
84
+ }
85
+ exports.SubtleCryptoProvider = SubtleCryptoProvider;
86
+ //# sourceMappingURL=subtle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subtle.js","sourceRoot":"","sources":["../../../../src/utils/crypto/subtle.ts"],"names":[],"mappings":"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","sourcesContent":["import { MaybeAsync } from '../../index.js'\nimport { BaseCryptoProvider, ICryptoProvider, IEncryptionScheme } from './abstract.js'\n\nimport AES_, { CTR } from '@cryptography/aes'\n\n// fucking weird flex with es modules.\n// i hate default imports please for the love of god never use them\ntype AES_ = typeof AES_.default\nconst AES = 'default' in AES_ ? AES_.default : AES_ as AES_\n\nconst ALGO_TO_SUBTLE: Record<string, string> = {\n sha256: 'SHA-256',\n sha1: 'SHA-1',\n sha512: 'SHA-512',\n}\n\nfunction wordsToBytes(words: Uint32Array): Uint8Array {\n const o = new Uint8Array(words.byteLength)\n\n const len = words.length * 4\n\n for (let i = 0; i < len; ++i) {\n o[i] = ((words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)\n }\n\n return o\n}\n\nexport class SubtleCryptoProvider extends BaseCryptoProvider implements ICryptoProvider {\n constructor(\n readonly subtle: SubtleCrypto,\n ) {\n super()\n }\n\n sha1(data: Uint8Array): MaybeAsync<Uint8Array> {\n return this.subtle.digest('SHA-1', data).then((result) => new Uint8Array(result))\n }\n\n sha256(data: Uint8Array): MaybeAsync<Uint8Array> {\n return this.subtle.digest('SHA-256', data).then((result) => new Uint8Array(result))\n }\n\n async pbkdf2(\n password: Uint8Array,\n salt: Uint8Array,\n iterations: number,\n keylen?: number | undefined,\n algo?: string | undefined,\n ): Promise<Uint8Array> {\n const keyMaterial = await this.subtle.importKey('raw', password, 'PBKDF2', false, ['deriveBits'])\n\n return this.subtle\n .deriveBits(\n {\n name: 'PBKDF2',\n salt,\n iterations,\n hash: algo ? ALGO_TO_SUBTLE[algo] : 'SHA-512',\n },\n keyMaterial,\n (keylen || 64) * 8,\n )\n .then((result) => new Uint8Array(result))\n }\n\n async hmacSha256(data: Uint8Array, key: Uint8Array): Promise<Uint8Array> {\n const keyMaterial = await this.subtle.importKey(\n 'raw',\n key,\n { name: 'HMAC', hash: { name: 'SHA-256' } },\n false,\n ['sign'],\n )\n\n const res = await this.subtle.sign({ name: 'HMAC' }, keyMaterial, data)\n\n return new Uint8Array(res)\n }\n\n createAesCtr(key: Uint8Array, iv: Uint8Array): IEncryptionScheme {\n const aes = new CTR(key, iv)\n\n return {\n encrypt: (data) => wordsToBytes(aes.encrypt(data)),\n decrypt: (data) => wordsToBytes(aes.decrypt(data)),\n }\n }\n\n createAesEcb(key: Uint8Array): IEncryptionScheme {\n const aes = new AES(key)\n\n return {\n encrypt: (data) => wordsToBytes(aes.encrypt(data)),\n decrypt: (data) => wordsToBytes(aes.decrypt(data)),\n }\n }\n}\n"]}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Perform XOR operation on two buffers and return the new buffer
3
+ *
4
+ * @param data Buffer to XOR
5
+ * @param key Key to XOR with
6
+ */
7
+ export declare function xorBuffer(data: Uint8Array, key: Uint8Array): Uint8Array;
8
+ /**
9
+ * Perform XOR operation on two buffers in-place
10
+ *
11
+ * @param data Buffer to XOR
12
+ * @param key Key to XOR with
13
+ */
14
+ export declare function xorBufferInPlace(data: Uint8Array, key: Uint8Array): void;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.xorBufferInPlace = exports.xorBuffer = void 0;
4
+ /**
5
+ * Perform XOR operation on two buffers and return the new buffer
6
+ *
7
+ * @param data Buffer to XOR
8
+ * @param key Key to XOR with
9
+ */
10
+ function xorBuffer(data, key) {
11
+ const ret = new Uint8Array(data.length);
12
+ for (let i = 0; i < data.length; i++) {
13
+ ret[i] = data[i] ^ key[i];
14
+ }
15
+ return ret;
16
+ }
17
+ exports.xorBuffer = xorBuffer;
18
+ /**
19
+ * Perform XOR operation on two buffers in-place
20
+ *
21
+ * @param data Buffer to XOR
22
+ * @param key Key to XOR with
23
+ */
24
+ function xorBufferInPlace(data, key) {
25
+ for (let i = 0; i < data.length; i++) {
26
+ data[i] ^= key[i];
27
+ }
28
+ }
29
+ exports.xorBufferInPlace = xorBufferInPlace;
30
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/crypto/utils.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,IAAgB,EAAE,GAAe;IACvD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;KAC5B;IAED,OAAO,GAAG,CAAA;AACd,CAAC;AARD,8BAQC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,IAAgB,EAAE,GAAe;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;KACpB;AACL,CAAC;AAJD,4CAIC","sourcesContent":["/**\n * Perform XOR operation on two buffers and return the new buffer\n *\n * @param data Buffer to XOR\n * @param key Key to XOR with\n */\nexport function xorBuffer(data: Uint8Array, key: Uint8Array): Uint8Array {\n const ret = new Uint8Array(data.length)\n\n for (let i = 0; i < data.length; i++) {\n ret[i] = data[i] ^ key[i]\n }\n\n return ret\n}\n\n/**\n * Perform XOR operation on two buffers in-place\n *\n * @param data Buffer to XOR\n * @param key Key to XOR with\n */\nexport function xorBufferInPlace(data: Uint8Array, key: Uint8Array): void {\n for (let i = 0; i < data.length; i++) {\n data[i] ^= key[i]\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { ITelegramStorage } from '../storage/abstract.js';
2
+ export declare const defaultDcs: {
3
+ readonly defaultTestDc: ITelegramStorage.DcOptions;
4
+ readonly defaultTestIpv6Dc: ITelegramStorage.DcOptions;
5
+ readonly defaultProductionDc: ITelegramStorage.DcOptions;
6
+ readonly defaultProductionIpv6Dc: ITelegramStorage.DcOptions;
7
+ };
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultDcs = exports.defaultTestIpv6Dc = exports.defaultTestDc = exports.defaultProductionIpv6Dc = exports.defaultProductionDc = void 0;
4
+ /** @internal */
5
+ exports.defaultProductionDc = {
6
+ main: {
7
+ _: 'dcOption',
8
+ ipAddress: '149.154.167.50',
9
+ port: 443,
10
+ id: 2,
11
+ },
12
+ media: {
13
+ _: 'dcOption',
14
+ ipAddress: '149.154.167.222',
15
+ port: 443,
16
+ id: 2,
17
+ mediaOnly: true,
18
+ },
19
+ };
20
+ /** @internal */
21
+ exports.defaultProductionIpv6Dc = {
22
+ main: {
23
+ _: 'dcOption',
24
+ ipAddress: '2001:067c:04e8:f002:0000:0000:0000:000a',
25
+ ipv6: true,
26
+ port: 443,
27
+ id: 2,
28
+ },
29
+ media: {
30
+ _: 'dcOption',
31
+ ipAddress: '2001:067c:04e8:f002:0000:0000:0000:000b',
32
+ ipv6: true,
33
+ mediaOnly: true,
34
+ port: 443,
35
+ id: 2,
36
+ },
37
+ };
38
+ /** @internal */
39
+ exports.defaultTestDc = {
40
+ main: {
41
+ _: 'dcOption',
42
+ ipAddress: '149.154.167.40',
43
+ port: 443,
44
+ id: 2,
45
+ },
46
+ media: {
47
+ _: 'dcOption',
48
+ ipAddress: '149.154.167.40',
49
+ port: 443,
50
+ id: 2,
51
+ },
52
+ };
53
+ /** @internal */
54
+ exports.defaultTestIpv6Dc = {
55
+ main: {
56
+ _: 'dcOption',
57
+ ipAddress: '2001:67c:4e8:f002::e',
58
+ port: 443,
59
+ ipv6: true,
60
+ id: 2,
61
+ },
62
+ media: {
63
+ _: 'dcOption',
64
+ ipAddress: '2001:67c:4e8:f002::e',
65
+ port: 443,
66
+ ipv6: true,
67
+ id: 2,
68
+ },
69
+ };
70
+ exports.defaultDcs = {
71
+ defaultTestDc: exports.defaultTestDc,
72
+ defaultTestIpv6Dc: exports.defaultTestIpv6Dc,
73
+ defaultProductionDc: exports.defaultProductionDc,
74
+ defaultProductionIpv6Dc: exports.defaultProductionIpv6Dc,
75
+ };
76
+ //# sourceMappingURL=default-dcs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-dcs.js","sourceRoot":"","sources":["../../../src/utils/default-dcs.ts"],"names":[],"mappings":";;;AAEA,gBAAgB;AACH,QAAA,mBAAmB,GAA+B;IAC3D,IAAI,EAAE;QACF,CAAC,EAAE,UAAU;QACb,SAAS,EAAE,gBAAgB;QAC3B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,CAAC,EAAE,UAAU;QACb,SAAS,EAAE,iBAAiB;QAC5B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;QACL,SAAS,EAAE,IAAI;KAClB;CACJ,CAAA;AAED,gBAAgB;AACH,QAAA,uBAAuB,GAA+B;IAC/D,IAAI,EAAE;QACF,CAAC,EAAE,UAAU;QACb,SAAS,EAAE,yCAAyC;QACpD,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,CAAC,EAAE,UAAU;QACb,SAAS,EAAE,yCAAyC;QACpD,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;KACR;CACJ,CAAA;AAED,gBAAgB;AACH,QAAA,aAAa,GAA+B;IACrD,IAAI,EAAE;QACF,CAAC,EAAE,UAAU;QACb,SAAS,EAAE,gBAAgB;QAC3B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,CAAC,EAAE,UAAU;QACb,SAAS,EAAE,gBAAgB;QAC3B,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,CAAC;KACR;CACJ,CAAA;AAED,gBAAgB;AACH,QAAA,iBAAiB,GAA+B;IACzD,IAAI,EAAE;QACF,CAAC,EAAE,UAAU;QACb,SAAS,EAAE,sBAAsB;QACjC,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACH,CAAC,EAAE,UAAU;QACb,SAAS,EAAE,sBAAsB;QACjC,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,CAAC;KACR;CACJ,CAAA;AAEY,QAAA,UAAU,GAAG;IACtB,aAAa,EAAb,qBAAa;IACb,iBAAiB,EAAjB,yBAAiB;IACjB,mBAAmB,EAAnB,2BAAmB;IACnB,uBAAuB,EAAvB,+BAAuB;CACjB,CAAA","sourcesContent":["import { ITelegramStorage } from '../storage/abstract.js'\n\n/** @internal */\nexport const defaultProductionDc: ITelegramStorage.DcOptions = {\n main: {\n _: 'dcOption',\n ipAddress: '149.154.167.50',\n port: 443,\n id: 2,\n },\n media: {\n _: 'dcOption',\n ipAddress: '149.154.167.222',\n port: 443,\n id: 2,\n mediaOnly: true,\n },\n}\n\n/** @internal */\nexport const defaultProductionIpv6Dc: ITelegramStorage.DcOptions = {\n main: {\n _: 'dcOption',\n ipAddress: '2001:067c:04e8:f002:0000:0000:0000:000a',\n ipv6: true,\n port: 443,\n id: 2,\n },\n media: {\n _: 'dcOption',\n ipAddress: '2001:067c:04e8:f002:0000:0000:0000:000b',\n ipv6: true,\n mediaOnly: true,\n port: 443,\n id: 2,\n },\n}\n\n/** @internal */\nexport const defaultTestDc: ITelegramStorage.DcOptions = {\n main: {\n _: 'dcOption',\n ipAddress: '149.154.167.40',\n port: 443,\n id: 2,\n },\n media: {\n _: 'dcOption',\n ipAddress: '149.154.167.40',\n port: 443,\n id: 2,\n },\n}\n\n/** @internal */\nexport const defaultTestIpv6Dc: ITelegramStorage.DcOptions = {\n main: {\n _: 'dcOption',\n ipAddress: '2001:67c:4e8:f002::e',\n port: 443,\n ipv6: true,\n id: 2,\n },\n media: {\n _: 'dcOption',\n ipAddress: '2001:67c:4e8:f002::e',\n port: 443,\n ipv6: true,\n id: 2,\n },\n}\n\nexport const defaultDcs = {\n defaultTestDc,\n defaultTestIpv6Dc,\n defaultProductionDc,\n defaultProductionIpv6Dc,\n} as const\n"]}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Deque implementation.
3
+ * `undefined` values are not allowed
4
+ *
5
+ * Based on Java implementation
6
+ */
7
+ export declare class Deque<T> {
8
+ readonly maxLength: number;
9
+ protected _elements: (T | undefined)[];
10
+ protected _head: number;
11
+ protected _tail: number;
12
+ protected _capacity: number;
13
+ constructor(minCapacity?: number, maxLength?: number);
14
+ protected _resize(): void;
15
+ pushBack(item: T): void;
16
+ pushFront(item: T): void;
17
+ popFront(): T | undefined;
18
+ popBack(): T | undefined;
19
+ peekFront(): T | undefined;
20
+ peekBack(): T | undefined;
21
+ get length(): number;
22
+ toArray(): T[];
23
+ protected _delete(i: number): void;
24
+ remove(item: T): void;
25
+ removeBy(pred: (it: T) => boolean): void;
26
+ at(idx: number): T | undefined;
27
+ iter(): IterableIterator<T>;
28
+ clear(): void;
29
+ }
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Deque = void 0;
4
+ // ^^ because of performance reasons
5
+ const MIN_INITIAL_CAPACITY = 8;
6
+ // System.arraycopy from java
7
+ function arraycopy(src, srcPos, dest, destPos, length) {
8
+ for (let i = 0; i < length; i++) {
9
+ dest[destPos + i] = src[srcPos + i];
10
+ }
11
+ }
12
+ /**
13
+ * Deque implementation.
14
+ * `undefined` values are not allowed
15
+ *
16
+ * Based on Java implementation
17
+ */
18
+ class Deque {
19
+ constructor(minCapacity = MIN_INITIAL_CAPACITY, maxLength = Infinity) {
20
+ this.maxLength = maxLength;
21
+ this._head = 0;
22
+ this._tail = 0;
23
+ let capacity = minCapacity;
24
+ if (capacity >= MIN_INITIAL_CAPACITY) {
25
+ // Find the best power of two to hold elements.
26
+ // >= because array can't be full
27
+ capacity |= capacity >>> 1;
28
+ capacity |= capacity >>> 2;
29
+ capacity |= capacity >>> 4;
30
+ capacity |= capacity >>> 8;
31
+ capacity |= capacity >>> 16;
32
+ capacity += 1;
33
+ if (capacity < 0) {
34
+ // too many
35
+ capacity >>>= 1;
36
+ }
37
+ }
38
+ this._elements = new Array(capacity);
39
+ this._capacity = capacity;
40
+ }
41
+ _resize() {
42
+ const p = this._head;
43
+ const n = this._capacity;
44
+ const r = n - p; // number of elements to the right of the head
45
+ const newCapacity = n << 1;
46
+ if (newCapacity < 0)
47
+ throw new Error('Deque is too big');
48
+ const arr = new Array(newCapacity);
49
+ // copy items to the new array
50
+ // copy head till the end of arr
51
+ arraycopy(this._elements, p, arr, 0, r);
52
+ // copy from start to tail
53
+ arraycopy(this._elements, 0, arr, r, p);
54
+ this._elements = arr;
55
+ this._head = 0;
56
+ this._tail = n;
57
+ this._capacity = newCapacity;
58
+ }
59
+ pushBack(item) {
60
+ if (item === undefined)
61
+ throw new Error('item can not be undefined');
62
+ this._elements[this._tail] = item;
63
+ if ((this._tail = (this._tail + 1) & (this._capacity - 1)) === this._head) {
64
+ this._resize();
65
+ }
66
+ if (this.length > this.maxLength) {
67
+ this.popFront();
68
+ }
69
+ }
70
+ pushFront(item) {
71
+ if (item === undefined)
72
+ throw new Error('item can not be undefined');
73
+ this._elements[(this._head = (this._head - 1) & (this._capacity - 1))] = item;
74
+ if (this._head === this._tail) {
75
+ this._resize();
76
+ }
77
+ if (this.length > this.maxLength) {
78
+ this.popBack();
79
+ }
80
+ }
81
+ popFront() {
82
+ const h = this._head;
83
+ const res = this._elements[h];
84
+ if (res === undefined)
85
+ return undefined;
86
+ this._elements[h] = undefined;
87
+ this._head = (h + 1) & (this._capacity - 1);
88
+ return res;
89
+ }
90
+ popBack() {
91
+ const t = (this._tail - 1) & (this._capacity - 1);
92
+ const res = this._elements[t];
93
+ if (res === undefined)
94
+ return undefined;
95
+ this._elements[t] = undefined;
96
+ this._tail = t;
97
+ return res;
98
+ }
99
+ peekFront() {
100
+ return this._elements[this._head];
101
+ }
102
+ peekBack() {
103
+ return this._elements[(this._tail - 1) & (this._capacity - 1)];
104
+ }
105
+ get length() {
106
+ return (this._tail - this._head) & (this._capacity - 1);
107
+ }
108
+ toArray() {
109
+ const sz = this.length;
110
+ const arr = new Array(sz);
111
+ if (this._head < this._tail) {
112
+ // copy as-is, head to tail
113
+ arraycopy(this._elements, this._head, arr, 0, sz);
114
+ }
115
+ else {
116
+ const headPortion = this._capacity - this._head;
117
+ // copy from head to end
118
+ arraycopy(this._elements, this._head, arr, 0, headPortion);
119
+ // copy from start to tail
120
+ arraycopy(this._elements, 0, arr, headPortion, this._tail);
121
+ }
122
+ return arr;
123
+ }
124
+ _delete(i) {
125
+ const els = this._elements;
126
+ const mask = this._capacity - 1;
127
+ const h = this._head;
128
+ const t = this._tail;
129
+ const front = (i - h) & mask;
130
+ const back = (t - i) & mask;
131
+ if (front < back) {
132
+ if (h <= i) {
133
+ arraycopy(els, h, els, h + 1, front);
134
+ }
135
+ else {
136
+ // wrap
137
+ arraycopy(els, 0, els, 1, i);
138
+ els[0] = els[mask];
139
+ arraycopy(els, h, els, h + 1, mask - h);
140
+ }
141
+ els[h] = undefined;
142
+ this._head = (h + 1) & mask;
143
+ }
144
+ else if (i < t) {
145
+ // copy null tail as well
146
+ arraycopy(els, i + 1, els, i, back);
147
+ this._tail = t - 1;
148
+ }
149
+ else {
150
+ // wrap
151
+ arraycopy(els, i + 1, els, i, mask - i);
152
+ els[mask] = els[0];
153
+ arraycopy(els, 1, els, 0, t);
154
+ this._tail = (t - 1) & mask;
155
+ }
156
+ }
157
+ remove(item) {
158
+ const mask = this._capacity - 1;
159
+ let i = this._head;
160
+ let val;
161
+ while ((val = this._elements[i]) !== undefined) {
162
+ if (item === val) {
163
+ this._delete(i);
164
+ return;
165
+ }
166
+ i = (i + 1) & mask;
167
+ }
168
+ }
169
+ removeBy(pred) {
170
+ const mask = this._capacity - 1;
171
+ let i = this._head;
172
+ let val;
173
+ while ((val = this._elements[i]) !== undefined) {
174
+ if (pred(val)) {
175
+ this._delete(i);
176
+ return;
177
+ }
178
+ i = (i + 1) & mask;
179
+ }
180
+ }
181
+ at(idx) {
182
+ return this._elements[(this._head + idx) & (this._capacity - 1)];
183
+ }
184
+ *iter() {
185
+ const sz = this.length;
186
+ if (this._head < this._tail) {
187
+ // head to tail
188
+ for (let i = 0; i < sz; i++) {
189
+ yield this._elements[this._head + i];
190
+ }
191
+ }
192
+ else {
193
+ const headPortion = this._capacity - this._head;
194
+ // head to end
195
+ for (let i = 0; i < headPortion; i++) {
196
+ yield this._elements[this._head + i];
197
+ }
198
+ // start to tail
199
+ for (let i = 0; i < this._tail; i++) {
200
+ yield this._elements[i];
201
+ }
202
+ }
203
+ }
204
+ clear() {
205
+ this._elements = new Array(this._capacity);
206
+ this._head = this._tail = 0;
207
+ }
208
+ }
209
+ exports.Deque = Deque;
210
+ //# sourceMappingURL=deque.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deque.js","sourceRoot":"","sources":["../../../src/utils/deque.ts"],"names":[],"mappings":"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","sourcesContent":["// ^^ because of performance reasons\nconst MIN_INITIAL_CAPACITY = 8\n\n// System.arraycopy from java\nfunction arraycopy<T>(src: T[], srcPos: number, dest: T[], destPos: number, length: number) {\n for (let i = 0; i < length; i++) {\n dest[destPos + i] = src[srcPos + i]\n }\n}\n\n/**\n * Deque implementation.\n * `undefined` values are not allowed\n *\n * Based on Java implementation\n */\nexport class Deque<T> {\n // another implementation variant would be to use\n // blocks of fixed size instead of a single array\n // to avoid copying stuff around\n protected _elements: (T | undefined)[]\n protected _head = 0\n protected _tail = 0\n protected _capacity: number\n\n constructor(\n minCapacity = MIN_INITIAL_CAPACITY,\n readonly maxLength = Infinity,\n ) {\n let capacity = minCapacity\n\n if (capacity >= MIN_INITIAL_CAPACITY) {\n // Find the best power of two to hold elements.\n // >= because array can't be full\n capacity |= capacity >>> 1\n capacity |= capacity >>> 2\n capacity |= capacity >>> 4\n capacity |= capacity >>> 8\n capacity |= capacity >>> 16\n capacity += 1\n\n if (capacity < 0) {\n // too many\n capacity >>>= 1\n }\n }\n\n this._elements = new Array<T | undefined>(capacity)\n this._capacity = capacity\n }\n\n protected _resize() {\n const p = this._head\n const n = this._capacity\n const r = n - p // number of elements to the right of the head\n\n const newCapacity = n << 1\n if (newCapacity < 0) throw new Error('Deque is too big')\n\n const arr = new Array<T | undefined>(newCapacity)\n\n // copy items to the new array\n // copy head till the end of arr\n arraycopy(this._elements, p, arr, 0, r)\n // copy from start to tail\n arraycopy(this._elements, 0, arr, r, p)\n\n this._elements = arr\n this._head = 0\n this._tail = n\n this._capacity = newCapacity\n }\n\n pushBack(item: T): void {\n if (item === undefined) throw new Error('item can not be undefined')\n\n this._elements[this._tail] = item\n\n if ((this._tail = (this._tail + 1) & (this._capacity - 1)) === this._head) {\n this._resize()\n }\n\n if (this.length > this.maxLength) {\n this.popFront()\n }\n }\n\n pushFront(item: T): void {\n if (item === undefined) throw new Error('item can not be undefined')\n\n this._elements[(this._head = (this._head - 1) & (this._capacity - 1))] = item\n\n if (this._head === this._tail) {\n this._resize()\n }\n\n if (this.length > this.maxLength) {\n this.popBack()\n }\n }\n\n popFront(): T | undefined {\n const h = this._head\n const res = this._elements[h]\n if (res === undefined) return undefined\n\n this._elements[h] = undefined\n this._head = (h + 1) & (this._capacity - 1)\n\n return res\n }\n\n popBack(): T | undefined {\n const t = (this._tail - 1) & (this._capacity - 1)\n const res = this._elements[t]\n if (res === undefined) return undefined\n\n this._elements[t] = undefined\n this._tail = t\n\n return res\n }\n\n peekFront(): T | undefined {\n return this._elements[this._head]\n }\n\n peekBack(): T | undefined {\n return this._elements[(this._tail - 1) & (this._capacity - 1)]\n }\n\n get length(): number {\n return (this._tail - this._head) & (this._capacity - 1)\n }\n\n toArray(): T[] {\n const sz = this.length\n const arr = new Array(sz)\n\n if (this._head < this._tail) {\n // copy as-is, head to tail\n arraycopy(this._elements, this._head, arr, 0, sz)\n } else {\n const headPortion = this._capacity - this._head\n\n // copy from head to end\n arraycopy(this._elements, this._head, arr, 0, headPortion)\n // copy from start to tail\n arraycopy(this._elements, 0, arr, headPortion, this._tail)\n }\n\n return arr as T[]\n }\n\n protected _delete(i: number): void {\n const els = this._elements\n const mask = this._capacity - 1\n const h = this._head\n const t = this._tail\n const front = (i - h) & mask\n const back = (t - i) & mask\n\n if (front < back) {\n if (h <= i) {\n arraycopy(els, h, els, h + 1, front)\n } else {\n // wrap\n arraycopy(els, 0, els, 1, i)\n els[0] = els[mask]\n arraycopy(els, h, els, h + 1, mask - h)\n }\n els[h] = undefined\n this._head = (h + 1) & mask\n } else if (i < t) {\n // copy null tail as well\n arraycopy(els, i + 1, els, i, back)\n this._tail = t - 1\n } else {\n // wrap\n arraycopy(els, i + 1, els, i, mask - i)\n els[mask] = els[0]\n arraycopy(els, 1, els, 0, t)\n this._tail = (t - 1) & mask\n }\n }\n\n remove(item: T): void {\n const mask = this._capacity - 1\n let i = this._head\n let val: T | undefined\n\n while ((val = this._elements[i]) !== undefined) {\n if (item === val) {\n this._delete(i)\n\n return\n }\n i = (i + 1) & mask\n }\n }\n\n removeBy(pred: (it: T) => boolean): void {\n const mask = this._capacity - 1\n let i = this._head\n let val: T | undefined\n\n while ((val = this._elements[i]) !== undefined) {\n if (pred(val)) {\n this._delete(i)\n\n return\n }\n i = (i + 1) & mask\n }\n }\n\n at(idx: number): T | undefined {\n return this._elements[(this._head + idx) & (this._capacity - 1)]\n }\n\n *iter(): IterableIterator<T> {\n const sz = this.length\n\n if (this._head < this._tail) {\n // head to tail\n for (let i = 0; i < sz; i++) {\n yield this._elements[this._head + i]!\n }\n } else {\n const headPortion = this._capacity - this._head\n\n // head to end\n for (let i = 0; i < headPortion; i++) {\n yield this._elements[this._head + i]!\n }\n // start to tail\n for (let i = 0; i < this._tail; i++) {\n yield this._elements[i]!\n }\n }\n }\n\n clear(): void {\n this._elements = new Array<T | undefined>(this._capacity)\n this._head = this._tail = 0\n }\n}\n"]}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Wrapper over JS timers that allows re-scheduling them
3
+ * to earlier time
4
+ */
5
+ export declare class EarlyTimer {
6
+ private _timeout?;
7
+ private _immediate?;
8
+ private _timeoutTs?;
9
+ private _handler;
10
+ constructor();
11
+ /**
12
+ * Emit the timer when the event loop is idle
13
+ * (basically `setImmediate()`)
14
+ */
15
+ emitWhenIdle(): void;
16
+ /**
17
+ * Emit the timer before the next given milliseconds
18
+ *
19
+ * Shorthand for `emitBefore(Date.now() + ms)`
20
+ *
21
+ * @param ms Milliseconds to schedule for
22
+ */
23
+ emitBeforeNext(ms: number): void;
24
+ /**
25
+ * Emit the timer before the given time
26
+ *
27
+ * @param ts Unix time in MS
28
+ */
29
+ emitBefore(ts: number): void;
30
+ /**
31
+ * Emit the timer right now
32
+ */
33
+ emitNow(): void;
34
+ /**
35
+ * Cancel the timer
36
+ */
37
+ reset(): void;
38
+ /**
39
+ * Set timeout handler
40
+ */
41
+ onTimeout(handler: () => void): void;
42
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EarlyTimer = void 0;
4
+ /**
5
+ * Wrapper over JS timers that allows re-scheduling them
6
+ * to earlier time
7
+ */
8
+ class EarlyTimer {
9
+ constructor() {
10
+ this._handler = () => { };
11
+ this.emitNow = this.emitNow.bind(this);
12
+ }
13
+ /**
14
+ * Emit the timer when the event loop is idle
15
+ * (basically `setImmediate()`)
16
+ */
17
+ emitWhenIdle() {
18
+ if (this._immediate)
19
+ return;
20
+ clearTimeout(this._timeout);
21
+ this._timeoutTs = Date.now();
22
+ if (typeof setImmediate !== 'undefined') {
23
+ this._immediate = setImmediate(this.emitNow);
24
+ }
25
+ else {
26
+ this._timeout = setTimeout(this.emitNow, 0);
27
+ }
28
+ }
29
+ /**
30
+ * Emit the timer before the next given milliseconds
31
+ *
32
+ * Shorthand for `emitBefore(Date.now() + ms)`
33
+ *
34
+ * @param ms Milliseconds to schedule for
35
+ */
36
+ emitBeforeNext(ms) {
37
+ return this.emitBefore(Date.now() + ms);
38
+ }
39
+ /**
40
+ * Emit the timer before the given time
41
+ *
42
+ * @param ts Unix time in MS
43
+ */
44
+ emitBefore(ts) {
45
+ if (!this._timeoutTs || ts < this._timeoutTs) {
46
+ this.reset();
47
+ this._timeout = setTimeout(this.emitNow, ts - Date.now());
48
+ this._timeoutTs = ts;
49
+ }
50
+ }
51
+ /**
52
+ * Emit the timer right now
53
+ */
54
+ emitNow() {
55
+ this.reset();
56
+ this._handler();
57
+ }
58
+ /**
59
+ * Cancel the timer
60
+ */
61
+ reset() {
62
+ if (this._immediate) {
63
+ clearImmediate(this._immediate);
64
+ this._immediate = undefined;
65
+ }
66
+ else {
67
+ clearTimeout(this._timeout);
68
+ }
69
+ this._timeoutTs = undefined;
70
+ }
71
+ /**
72
+ * Set timeout handler
73
+ */
74
+ onTimeout(handler) {
75
+ this._handler = handler;
76
+ }
77
+ }
78
+ exports.EarlyTimer = EarlyTimer;
79
+ //# sourceMappingURL=early-timer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"early-timer.js","sourceRoot":"","sources":["../../../src/utils/early-timer.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,UAAU;IAOnB;QAFQ,aAAQ,GAAe,GAAG,EAAE,GAAE,CAAC,CAAA;QAGnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED;;;OAGG;IACH,YAAY;QACR,IAAI,IAAI,CAAC,UAAU;YAAE,OAAM;QAE3B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;YACrC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SAC/C;aAAM;YACH,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;SAC9C;IACL,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,EAAU;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YACzD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;SACvB;IACL,CAAC;IAED;;OAEG;IACH,OAAO;QACH,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,IAAI,CAAC,QAAQ,EAAE,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,KAAK;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC/B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;SAC9B;aAAM;YACH,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAC9B;QACD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,OAAmB;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IAC3B,CAAC;CACJ;AA/ED,gCA+EC","sourcesContent":["/**\n * Wrapper over JS timers that allows re-scheduling them\n * to earlier time\n */\nexport class EarlyTimer {\n private _timeout?: NodeJS.Timeout\n private _immediate?: NodeJS.Immediate\n private _timeoutTs?: number\n\n private _handler: () => void = () => {}\n\n constructor() {\n this.emitNow = this.emitNow.bind(this)\n }\n\n /**\n * Emit the timer when the event loop is idle\n * (basically `setImmediate()`)\n */\n emitWhenIdle(): void {\n if (this._immediate) return\n\n clearTimeout(this._timeout)\n this._timeoutTs = Date.now()\n\n if (typeof setImmediate !== 'undefined') {\n this._immediate = setImmediate(this.emitNow)\n } else {\n this._timeout = setTimeout(this.emitNow, 0)\n }\n }\n\n /**\n * Emit the timer before the next given milliseconds\n *\n * Shorthand for `emitBefore(Date.now() + ms)`\n *\n * @param ms Milliseconds to schedule for\n */\n emitBeforeNext(ms: number): void {\n return this.emitBefore(Date.now() + ms)\n }\n\n /**\n * Emit the timer before the given time\n *\n * @param ts Unix time in MS\n */\n emitBefore(ts: number): void {\n if (!this._timeoutTs || ts < this._timeoutTs) {\n this.reset()\n this._timeout = setTimeout(this.emitNow, ts - Date.now())\n this._timeoutTs = ts\n }\n }\n\n /**\n * Emit the timer right now\n */\n emitNow(): void {\n this.reset()\n this._handler()\n }\n\n /**\n * Cancel the timer\n */\n reset(): void {\n if (this._immediate) {\n clearImmediate(this._immediate)\n this._immediate = undefined\n } else {\n clearTimeout(this._timeout)\n }\n this._timeoutTs = undefined\n }\n\n /**\n * Set timeout handler\n */\n onTimeout(handler: () => void): void {\n this._handler = handler\n }\n}\n"]}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Flood limiter, based on TDlib
3
+ */
4
+ export declare class FloodControl {
5
+ private _wakeupAt;
6
+ private _withoutUpdate;
7
+ private _events;
8
+ private _limits;
9
+ addLimit(duration: number, count: number): void;
10
+ addEvent(now: number): void;
11
+ clear(): void;
12
+ get wakeupAt(): number;
13
+ private _update;
14
+ }