@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,174 @@
1
+ import { tl } from '@mtcute/tl';
2
+ import { TlReaderMap, TlWriterMap } from '@mtcute/tl-runtime';
3
+ import { BasicPeerType, MaybeAsync } from '../types/index.js';
4
+ import { Logger } from '../utils/index.js';
5
+ export declare namespace ITelegramStorage {
6
+ /** Information about a cached peer */
7
+ interface PeerInfo {
8
+ /** Peer marked ID */
9
+ id: number;
10
+ /** Peer access hash */
11
+ accessHash: tl.Long;
12
+ /** Peer type */
13
+ type: BasicPeerType;
14
+ /** Peer username, if any */
15
+ username?: string;
16
+ /** Peer phone number, if available */
17
+ phone?: string;
18
+ /** Full TL object with the cached entity */
19
+ full: tl.TypeUser | tl.TypeChat;
20
+ }
21
+ /** Information about currently logged in user */
22
+ interface SelfInfo {
23
+ /** Whether this is a bot */
24
+ isBot: boolean;
25
+ /** Current user's ID */
26
+ userId: number;
27
+ }
28
+ /** Information about preferred DC-s for the user */
29
+ interface DcOptions {
30
+ /** Main DC */
31
+ main: tl.RawDcOption;
32
+ /** Media DC. Can be the same as main */
33
+ media: tl.RawDcOption;
34
+ }
35
+ }
36
+ /**
37
+ * Abstract interface for persistent storage.
38
+ *
39
+ * In some cases you may want to extend existing MemorySession
40
+ * and override save()/load()/destroy() methods, but you are also free
41
+ * to implement your own session (be sure to refer to MemorySession
42
+ * source code to avoid shooting your leg though)
43
+ *
44
+ * Note that even though set methods *can* be async, you should only
45
+ * write updates to the disk when `save()` is called.
46
+ */
47
+ export interface ITelegramStorage {
48
+ /**
49
+ * This method is called before any other.
50
+ * For storages that use logging, logger instance.
51
+ * For storages that use binary storage, binary maps
52
+ */
53
+ setup?(log: Logger, readerMap: TlReaderMap, writerMap: TlWriterMap): void;
54
+ /**
55
+ * Load session from some external storage.
56
+ * Should be used either to load session content from file/network/etc
57
+ * to memory, or to open required connections to fetch session content later
58
+ */
59
+ load?(): MaybeAsync<void>;
60
+ /**
61
+ * Save session to some external storage.
62
+ * Should be used to commit pending changes in the session.
63
+ * For example, saving session content to file/network/etc,
64
+ * or committing a database transaction
65
+ */
66
+ save?(): MaybeAsync<void>;
67
+ /**
68
+ * Cleanup session and release all used resources.
69
+ */
70
+ destroy?(): MaybeAsync<void>;
71
+ /**
72
+ * Reset session to its default state
73
+ */
74
+ reset(): void;
75
+ /**
76
+ * Set default datacenter to use with this session.
77
+ */
78
+ setDefaultDcs(dcs: ITelegramStorage.DcOptions | null): MaybeAsync<void>;
79
+ /**
80
+ * Get default datacenter for this session
81
+ * (by default should return null)
82
+ */
83
+ getDefaultDcs(): MaybeAsync<ITelegramStorage.DcOptions | null>;
84
+ /**
85
+ * Get auth_key for a given DC
86
+ * (returning null will start authorization)
87
+ * For temp keys: should also return null if the key has expired
88
+ *
89
+ * @param dcId DC ID
90
+ * @param tempIndex Index of the temporary key (usually 0, used for multi-connections)
91
+ */
92
+ getAuthKeyFor(dcId: number, tempIndex?: number): MaybeAsync<Uint8Array | null>;
93
+ /**
94
+ * Set auth_key for a given DC
95
+ */
96
+ setAuthKeyFor(dcId: number, key: Uint8Array | null): MaybeAsync<void>;
97
+ /**
98
+ * Set temp_auth_key for a given DC
99
+ * expiresAt is unix time in ms
100
+ */
101
+ setTempAuthKeyFor(dcId: number, index: number, key: Uint8Array | null, expiresAt: number): MaybeAsync<void>;
102
+ /**
103
+ * Remove all saved auth keys (both temp and perm)
104
+ * for the given DC. Used when perm_key becomes invalid,
105
+ * meaning all temp_keys also become invalid
106
+ */
107
+ dropAuthKeysFor(dcId: number): MaybeAsync<void>;
108
+ /**
109
+ * Get information about currently logged in user (if available)
110
+ */
111
+ getSelf(): MaybeAsync<ITelegramStorage.SelfInfo | null>;
112
+ /**
113
+ * Save information about currently logged in user
114
+ */
115
+ setSelf(self: ITelegramStorage.SelfInfo | null): MaybeAsync<void>;
116
+ /**
117
+ * Update local database of input peers from the peer info list
118
+ */
119
+ updatePeers(peers: ITelegramStorage.PeerInfo[]): MaybeAsync<void>;
120
+ /**
121
+ * Find a peer in local database by its marked ID
122
+ */
123
+ getPeerById(peerId: number): MaybeAsync<tl.TypeInputPeer | null>;
124
+ /**
125
+ * Find a peer in local database by its username
126
+ */
127
+ getPeerByUsername(username: string): MaybeAsync<tl.TypeInputPeer | null>;
128
+ /**
129
+ * Find a peer in local database by its phone number
130
+ */
131
+ getPeerByPhone(phone: string): MaybeAsync<tl.TypeInputPeer | null>;
132
+ /**
133
+ * Get updates state (if available), represented as a tuple
134
+ * containing: `pts, qts, date, seq`
135
+ */
136
+ getUpdatesState(): MaybeAsync<[number, number, number, number] | null>;
137
+ /**
138
+ * Set common `pts` value
139
+ */
140
+ setUpdatesPts(val: number): MaybeAsync<void>;
141
+ /**
142
+ * Set common `qts` value
143
+ */
144
+ setUpdatesQts(val: number): MaybeAsync<void>;
145
+ /**
146
+ * Set updates `date` value
147
+ */
148
+ setUpdatesDate(val: number): MaybeAsync<void>;
149
+ /**
150
+ * Set updates `seq` value
151
+ */
152
+ setUpdatesSeq(val: number): MaybeAsync<void>;
153
+ /**
154
+ * Get channel `pts` value
155
+ */
156
+ getChannelPts(entityId: number): MaybeAsync<number | null>;
157
+ /**
158
+ * Set channels `pts` values in batch.
159
+ * Storage is supposed to replace stored channel `pts` values
160
+ * with given in the object (key is unmarked peer id, value is the `pts`)
161
+ */
162
+ setManyChannelPts(values: Map<number, number>): MaybeAsync<void>;
163
+ /**
164
+ * Get cached peer information by their marked ID.
165
+ * Return `null` if caching is not supported, or the entity
166
+ * is not cached (yet).
167
+ *
168
+ * This is primarily used when a `min` entity is encountered
169
+ * in an update, or when a *short* update is encountered.
170
+ * Returning `null` will require re-fetching that
171
+ * update with the peers added, which might not be very efficient.
172
+ */
173
+ getFullPeerById(id: number): MaybeAsync<tl.TypeUser | tl.TypeChat | null>;
174
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../src/storage/abstract.ts"],"names":[],"mappings":"","sourcesContent":["import { tl } from '@mtcute/tl'\nimport { TlReaderMap, TlWriterMap } from '@mtcute/tl-runtime'\n\nimport { BasicPeerType, MaybeAsync } from '../types/index.js'\nimport { Logger } from '../utils/index.js'\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ITelegramStorage {\n /** Information about a cached peer */\n export interface PeerInfo {\n /** Peer marked ID */\n id: number\n /** Peer access hash */\n accessHash: tl.Long\n /** Peer type */\n type: BasicPeerType\n /** Peer username, if any */\n username?: string\n /** Peer phone number, if available */\n phone?: string\n\n /** Full TL object with the cached entity */\n full: tl.TypeUser | tl.TypeChat\n }\n\n /** Information about currently logged in user */\n export interface SelfInfo {\n /** Whether this is a bot */\n isBot: boolean\n /** Current user's ID */\n userId: number\n }\n\n /** Information about preferred DC-s for the user */\n export interface DcOptions {\n /** Main DC */\n main: tl.RawDcOption\n /** Media DC. Can be the same as main */\n media: tl.RawDcOption\n }\n}\n\n/**\n * Abstract interface for persistent storage.\n *\n * In some cases you may want to extend existing MemorySession\n * and override save()/load()/destroy() methods, but you are also free\n * to implement your own session (be sure to refer to MemorySession\n * source code to avoid shooting your leg though)\n *\n * Note that even though set methods *can* be async, you should only\n * write updates to the disk when `save()` is called.\n */\nexport interface ITelegramStorage {\n /**\n * This method is called before any other.\n * For storages that use logging, logger instance.\n * For storages that use binary storage, binary maps\n */\n setup?(log: Logger, readerMap: TlReaderMap, writerMap: TlWriterMap): void\n\n /**\n * Load session from some external storage.\n * Should be used either to load session content from file/network/etc\n * to memory, or to open required connections to fetch session content later\n */\n load?(): MaybeAsync<void>\n /**\n * Save session to some external storage.\n * Should be used to commit pending changes in the session.\n * For example, saving session content to file/network/etc,\n * or committing a database transaction\n */\n save?(): MaybeAsync<void>\n /**\n * Cleanup session and release all used resources.\n */\n destroy?(): MaybeAsync<void>\n\n /**\n * Reset session to its default state\n */\n reset(): void\n\n /**\n * Set default datacenter to use with this session.\n */\n setDefaultDcs(dcs: ITelegramStorage.DcOptions | null): MaybeAsync<void>\n /**\n * Get default datacenter for this session\n * (by default should return null)\n */\n getDefaultDcs(): MaybeAsync<ITelegramStorage.DcOptions | null>\n\n /**\n * Get auth_key for a given DC\n * (returning null will start authorization)\n * For temp keys: should also return null if the key has expired\n *\n * @param dcId DC ID\n * @param tempIndex Index of the temporary key (usually 0, used for multi-connections)\n */\n getAuthKeyFor(dcId: number, tempIndex?: number): MaybeAsync<Uint8Array | null>\n /**\n * Set auth_key for a given DC\n */\n setAuthKeyFor(dcId: number, key: Uint8Array | null): MaybeAsync<void>\n /**\n * Set temp_auth_key for a given DC\n * expiresAt is unix time in ms\n */\n setTempAuthKeyFor(dcId: number, index: number, key: Uint8Array | null, expiresAt: number): MaybeAsync<void>\n /**\n * Remove all saved auth keys (both temp and perm)\n * for the given DC. Used when perm_key becomes invalid,\n * meaning all temp_keys also become invalid\n */\n dropAuthKeysFor(dcId: number): MaybeAsync<void>\n\n /**\n * Get information about currently logged in user (if available)\n */\n getSelf(): MaybeAsync<ITelegramStorage.SelfInfo | null>\n /**\n * Save information about currently logged in user\n */\n setSelf(self: ITelegramStorage.SelfInfo | null): MaybeAsync<void>\n\n /**\n * Update local database of input peers from the peer info list\n */\n updatePeers(peers: ITelegramStorage.PeerInfo[]): MaybeAsync<void>\n /**\n * Find a peer in local database by its marked ID\n */\n getPeerById(peerId: number): MaybeAsync<tl.TypeInputPeer | null>\n /**\n * Find a peer in local database by its username\n */\n getPeerByUsername(username: string): MaybeAsync<tl.TypeInputPeer | null>\n /**\n * Find a peer in local database by its phone number\n */\n getPeerByPhone(phone: string): MaybeAsync<tl.TypeInputPeer | null>\n\n /**\n * Get updates state (if available), represented as a tuple\n * containing: `pts, qts, date, seq`\n */\n getUpdatesState(): MaybeAsync<[number, number, number, number] | null>\n\n /**\n * Set common `pts` value\n */\n setUpdatesPts(val: number): MaybeAsync<void>\n /**\n * Set common `qts` value\n */\n setUpdatesQts(val: number): MaybeAsync<void>\n /**\n * Set updates `date` value\n */\n setUpdatesDate(val: number): MaybeAsync<void>\n /**\n * Set updates `seq` value\n */\n setUpdatesSeq(val: number): MaybeAsync<void>\n\n /**\n * Get channel `pts` value\n */\n getChannelPts(entityId: number): MaybeAsync<number | null>\n /**\n * Set channels `pts` values in batch.\n * Storage is supposed to replace stored channel `pts` values\n * with given in the object (key is unmarked peer id, value is the `pts`)\n */\n setManyChannelPts(values: Map<number, number>): MaybeAsync<void>\n\n /**\n * Get cached peer information by their marked ID.\n * Return `null` if caching is not supported, or the entity\n * is not cached (yet).\n *\n * This is primarily used when a `min` entity is encountered\n * in an update, or when a *short* update is encountered.\n * Returning `null` will require re-fetching that\n * update with the peers added, which might not be very efficient.\n */\n getFullPeerById(id: number): MaybeAsync<tl.TypeUser | tl.TypeChat | null>\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export * from './abstract.js';
2
+ export * from './json.js';
3
+ export * from './json-file.js';
4
+ export * from './localstorage.js';
5
+ export * from './memory.js';
@@ -0,0 +1,22 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./abstract.js"), exports);
18
+ __exportStar(require("./json.js"), exports);
19
+ __exportStar(require("./json-file.js"), exports);
20
+ __exportStar(require("./localstorage.js"), exports);
21
+ __exportStar(require("./memory.js"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,4CAAyB;AACzB,iDAA8B;AAC9B,oDAAiC;AACjC,8CAA2B","sourcesContent":["export * from './abstract.js'\nexport * from './json.js'\nexport * from './json-file.js'\nexport * from './localstorage.js'\nexport * from './memory.js'\n"]}
@@ -0,0 +1,31 @@
1
+ import { JsonMemoryStorage } from './json.js';
2
+ export declare class JsonFileStorage extends JsonMemoryStorage {
3
+ private readonly _filename;
4
+ private readonly _safe;
5
+ private readonly _cleanup;
6
+ constructor(filename: string, params?: {
7
+ /**
8
+ * Whether to save file "safely", meaning that the file will first be saved
9
+ * to `${filename}.tmp`, and then renamed to `filename`,
10
+ * instead of writing directly to `filename`.
11
+ *
12
+ * This solves the issue with the storage being saved as
13
+ * a blank file because of the app being stopped while
14
+ * the storage is being written.
15
+ *
16
+ * @default `true`
17
+ */
18
+ safe?: boolean;
19
+ /**
20
+ * Whether to save file on process exit.
21
+ *
22
+ * @default `true`
23
+ */
24
+ cleanup?: boolean;
25
+ });
26
+ load(): Promise<void>;
27
+ save(): Promise<void>;
28
+ private _processExitHandled;
29
+ private _onProcessExit;
30
+ destroy(): void;
31
+ }
@@ -0,0 +1,90 @@
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.JsonFileStorage = void 0;
27
+ // eslint-disable-next-line no-restricted-imports
28
+ const fs = __importStar(require("fs"));
29
+ const json_js_1 = require("./json.js");
30
+ const EVENTS = ['exit', 'SIGINT', 'SIGUSR1', 'SIGUSR2', 'uncaughtException', 'SIGTERM'];
31
+ class JsonFileStorage extends json_js_1.JsonMemoryStorage {
32
+ constructor(filename, params) {
33
+ super();
34
+ this._processExitHandled = false;
35
+ this._filename = filename;
36
+ this._safe = params?.safe ?? true;
37
+ this._cleanup = params?.cleanup ?? true;
38
+ if (this._cleanup) {
39
+ this._onProcessExit = this._onProcessExit.bind(this);
40
+ EVENTS.forEach((event) => process.on(event, this._onProcessExit));
41
+ }
42
+ }
43
+ async load() {
44
+ try {
45
+ this._loadJson(await new Promise((res, rej) => fs.readFile(this._filename, 'utf-8', (err, data) => (err ? rej(err) : res(data)))));
46
+ }
47
+ catch (e) { }
48
+ }
49
+ save() {
50
+ return new Promise((resolve, reject) => {
51
+ fs.writeFile(this._safe ? this._filename + '.tmp' : this._filename, this._saveJson(), (err) => {
52
+ if (err)
53
+ reject(err);
54
+ else if (this._safe) {
55
+ fs.rename(this._filename + '.tmp', this._filename, (err) => {
56
+ if (err && err.code !== 'ENOENT')
57
+ reject(err);
58
+ else
59
+ resolve();
60
+ });
61
+ }
62
+ else
63
+ resolve();
64
+ });
65
+ });
66
+ }
67
+ _onProcessExit() {
68
+ // on exit handler must be synchronous, thus we use sync methods here
69
+ if (this._processExitHandled)
70
+ return;
71
+ this._processExitHandled = true;
72
+ try {
73
+ fs.writeFileSync(this._filename, this._saveJson());
74
+ }
75
+ catch (e) { }
76
+ if (this._safe) {
77
+ try {
78
+ fs.unlinkSync(this._filename + '.tmp');
79
+ }
80
+ catch (e) { }
81
+ }
82
+ }
83
+ destroy() {
84
+ if (this._cleanup) {
85
+ EVENTS.forEach((event) => process.off(event, this._onProcessExit));
86
+ }
87
+ }
88
+ }
89
+ exports.JsonFileStorage = JsonFileStorage;
90
+ //# sourceMappingURL=json-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-file.js","sourceRoot":"","sources":["../../../src/storage/json-file.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAiD;AACjD,uCAAwB;AAExB,uCAA6C;AAE7C,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAA;AAEvF,MAAa,eAAgB,SAAQ,2BAAiB;IAKlD,YACI,QAAgB,EAChB,MAoBC;QAED,KAAK,EAAE,CAAA;QAoCH,wBAAmB,GAAG,KAAK,CAAA;QAlC/B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,CAAA;QACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,OAAO,IAAI,IAAI,CAAA;QAEvC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;SACpE;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI;YACA,IAAI,CAAC,SAAS,CACV,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAC3B,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CACpF,CACJ,CAAA;SACJ;QAAC,OAAO,CAAC,EAAE,GAAE;IAClB,CAAC;IAED,IAAI;QACA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1F,IAAI,GAAG;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAA;qBACf,IAAI,IAAI,CAAC,KAAK,EAAE;oBACjB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;wBACvD,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;4BAAE,MAAM,CAAC,GAAG,CAAC,CAAA;;4BACxC,OAAO,EAAE,CAAA;oBAClB,CAAC,CAAC,CAAA;iBACL;;oBAAM,OAAO,EAAE,CAAA;YACpB,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;IAGO,cAAc;QAClB,qEAAqE;QACrE,IAAI,IAAI,CAAC,mBAAmB;YAAE,OAAM;QACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;QAE/B,IAAI;YACA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;SACrD;QAAC,OAAO,CAAC,EAAE,GAAE;QAEd,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI;gBACA,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAA;aACzC;YAAC,OAAO,CAAC,EAAE,GAAE;SACjB;IACL,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;SACrE;IACL,CAAC;CACJ;AAvFD,0CAuFC","sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport * as fs from 'fs'\n\nimport { JsonMemoryStorage } from './json.js'\n\nconst EVENTS = ['exit', 'SIGINT', 'SIGUSR1', 'SIGUSR2', 'uncaughtException', 'SIGTERM']\n\nexport class JsonFileStorage extends JsonMemoryStorage {\n private readonly _filename: string\n private readonly _safe: boolean\n private readonly _cleanup: boolean\n\n constructor(\n filename: string,\n params?: {\n /**\n * Whether to save file \"safely\", meaning that the file will first be saved\n * to `${filename}.tmp`, and then renamed to `filename`,\n * instead of writing directly to `filename`.\n *\n * This solves the issue with the storage being saved as\n * a blank file because of the app being stopped while\n * the storage is being written.\n *\n * @default `true`\n */\n safe?: boolean\n\n /**\n * Whether to save file on process exit.\n *\n * @default `true`\n */\n cleanup?: boolean\n },\n ) {\n super()\n\n this._filename = filename\n this._safe = params?.safe ?? true\n this._cleanup = params?.cleanup ?? true\n\n if (this._cleanup) {\n this._onProcessExit = this._onProcessExit.bind(this)\n EVENTS.forEach((event) => process.on(event, this._onProcessExit))\n }\n }\n\n async load(): Promise<void> {\n try {\n this._loadJson(\n await new Promise((res, rej) =>\n fs.readFile(this._filename, 'utf-8', (err, data) => (err ? rej(err) : res(data))),\n ),\n )\n } catch (e) {}\n }\n\n save(): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.writeFile(this._safe ? this._filename + '.tmp' : this._filename, this._saveJson(), (err) => {\n if (err) reject(err)\n else if (this._safe) {\n fs.rename(this._filename + '.tmp', this._filename, (err) => {\n if (err && err.code !== 'ENOENT') reject(err)\n else resolve()\n })\n } else resolve()\n })\n })\n }\n\n private _processExitHandled = false\n private _onProcessExit(): void {\n // on exit handler must be synchronous, thus we use sync methods here\n if (this._processExitHandled) return\n this._processExitHandled = true\n\n try {\n fs.writeFileSync(this._filename, this._saveJson())\n } catch (e) {}\n\n if (this._safe) {\n try {\n fs.unlinkSync(this._filename + '.tmp')\n } catch (e) {}\n }\n }\n\n destroy(): void {\n if (this._cleanup) {\n EVENTS.forEach((event) => process.off(event, this._onProcessExit))\n }\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import { MemoryStorage } from './memory.js';
2
+ /**
3
+ * Helper class that provides json serialization functions
4
+ * to the session.
5
+ */
6
+ export declare class JsonMemoryStorage extends MemoryStorage {
7
+ protected _loadJson(json: string): void;
8
+ protected _saveJson(): string;
9
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonMemoryStorage = void 0;
4
+ const tl_runtime_1 = require("@mtcute/tl-runtime");
5
+ const long_utils_js_1 = require("../utils/long-utils.js");
6
+ const memory_js_1 = require("./memory.js");
7
+ /**
8
+ * Helper class that provides json serialization functions
9
+ * to the session.
10
+ */
11
+ class JsonMemoryStorage extends memory_js_1.MemoryStorage {
12
+ _loadJson(json) {
13
+ this._setStateFrom(JSON.parse(json, (key, value) => {
14
+ switch (key) {
15
+ case 'authKeys':
16
+ case 'authKeysTemp': {
17
+ const ret = {};
18
+ value.split('|').forEach((pair) => {
19
+ const [dcId, b64] = pair.split(',');
20
+ ret[dcId] = (0, tl_runtime_1.base64DecodeToBuffer)(b64);
21
+ });
22
+ return ret;
23
+ }
24
+ case 'authKeysTempExpiry':
25
+ case 'entities':
26
+ case 'phoneIndex':
27
+ case 'usernameIndex':
28
+ case 'pts':
29
+ case 'fsm':
30
+ case 'rl':
31
+ return new Map(Object.entries(value));
32
+ case 'accessHash':
33
+ return (0, long_utils_js_1.longFromFastString)(value);
34
+ }
35
+ return value;
36
+ }));
37
+ }
38
+ _saveJson() {
39
+ return JSON.stringify(this._state, (key, value) => {
40
+ switch (key) {
41
+ case 'authKeys':
42
+ case 'authKeysTemp': {
43
+ const value_ = value;
44
+ return [...value_.entries()]
45
+ .filter((it) => it[1] !== null)
46
+ .map(([dcId, key]) => dcId + ',' + (0, tl_runtime_1.base64Encode)(key))
47
+ .join('|');
48
+ }
49
+ case 'authKeysTempExpiry':
50
+ case 'entities':
51
+ case 'phoneIndex':
52
+ case 'usernameIndex':
53
+ case 'pts':
54
+ case 'fsm':
55
+ case 'rl':
56
+ return Object.fromEntries([...value.entries()]);
57
+ case 'accessHash':
58
+ return (0, long_utils_js_1.longToFastString)(value);
59
+ }
60
+ return value;
61
+ });
62
+ }
63
+ }
64
+ exports.JsonMemoryStorage = JsonMemoryStorage;
65
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/storage/json.ts"],"names":[],"mappings":";;;AAEA,mDAAuE;AAEvE,0DAA6E;AAC7E,2CAA+D;AAE/D;;;GAGG;AACH,MAAa,iBAAkB,SAAQ,yBAAa;IACtC,SAAS,CAAC,IAAY;QAC5B,IAAI,CAAC,aAAa,CACd,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC5B,QAAQ,GAAG,EAAE;gBACT,KAAK,UAAU,CAAC;gBAChB,KAAK,cAAc,CAAC,CAAC;oBACjB,MAAM,GAAG,GAA+B,EAAE,CAEzC;oBAAC,KAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE;wBACnD,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;wBACnC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAA,iCAAoB,EAAC,GAAG,CAAC,CAAA;oBACzC,CAAC,CAAC,CAAA;oBAEF,OAAO,GAAG,CAAA;iBACb;gBACD,KAAK,oBAAoB,CAAC;gBAC1B,KAAK,UAAU,CAAC;gBAChB,KAAK,YAAY,CAAC;gBAClB,KAAK,eAAe,CAAC;gBACrB,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK,CAAC;gBACX,KAAK,IAAI;oBACL,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAA+B,CAAC,CAAC,CAAA;gBACnE,KAAK,YAAY;oBACb,OAAO,IAAA,kCAAkB,EAAC,KAAe,CAAC,CAAA;aACjD;YAED,OAAO,KAAK,CAAA;QAChB,CAAC,CAAuB,CAC3B,CAAA;IACL,CAAC;IAES,SAAS;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC9C,QAAQ,GAAG,EAAE;gBACT,KAAK,UAAU,CAAC;gBAChB,KAAK,cAAc,CAAC,CAAC;oBACjB,MAAM,MAAM,GAAG,KAAuC,CAAA;oBAEtD,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;yBACvB,MAAM,CAAC,CAAC,EAAE,EAA8B,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;yBAC1D,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,IAAA,yBAAY,EAAC,GAAG,CAAC,CAAC;yBACpD,IAAI,CAAC,GAAG,CAAC,CAAA;iBACjB;gBACD,KAAK,oBAAoB,CAAC;gBAC1B,KAAK,UAAU,CAAC;gBAChB,KAAK,YAAY,CAAC;gBAClB,KAAK,eAAe,CAAC;gBACrB,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK,CAAC;gBACX,KAAK,IAAI;oBACL,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,GAAI,KAA6B,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBAC5E,KAAK,YAAY;oBACb,OAAO,IAAA,gCAAgB,EAAC,KAAgB,CAAC,CAAA;aAChD;YAED,OAAO,KAAK,CAAA;QAChB,CAAC,CAAC,CAAA;IACN,CAAC;CACJ;AA5DD,8CA4DC","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { tl } from '@mtcute/tl'\nimport { base64DecodeToBuffer, base64Encode } from '@mtcute/tl-runtime'\n\nimport { longFromFastString, longToFastString } from '../utils/long-utils.js'\nimport { MemorySessionState, MemoryStorage } from './memory.js'\n\n/**\n * Helper class that provides json serialization functions\n * to the session.\n */\nexport class JsonMemoryStorage extends MemoryStorage {\n protected _loadJson(json: string): void {\n this._setStateFrom(\n JSON.parse(json, (key, value) => {\n switch (key) {\n case 'authKeys':\n case 'authKeysTemp': {\n const ret: Record<string, Uint8Array> = {}\n\n ;(value as string).split('|').forEach((pair: string) => {\n const [dcId, b64] = pair.split(',')\n ret[dcId] = base64DecodeToBuffer(b64)\n })\n\n return ret\n }\n case 'authKeysTempExpiry':\n case 'entities':\n case 'phoneIndex':\n case 'usernameIndex':\n case 'pts':\n case 'fsm':\n case 'rl':\n return new Map(Object.entries(value as Record<string, string>))\n case 'accessHash':\n return longFromFastString(value as string)\n }\n\n return value\n }) as MemorySessionState,\n )\n }\n\n protected _saveJson(): string {\n return JSON.stringify(this._state, (key, value) => {\n switch (key) {\n case 'authKeys':\n case 'authKeysTemp': {\n const value_ = value as Map<string, Uint8Array | null>\n\n return [...value_.entries()]\n .filter((it): it is [string, Uint8Array] => it[1] !== null)\n .map(([dcId, key]) => dcId + ',' + base64Encode(key))\n .join('|')\n }\n case 'authKeysTempExpiry':\n case 'entities':\n case 'phoneIndex':\n case 'usernameIndex':\n case 'pts':\n case 'fsm':\n case 'rl':\n return Object.fromEntries([...(value as Map<string, string>).entries()])\n case 'accessHash':\n return longToFastString(value as tl.Long)\n }\n\n return value\n })\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { JsonMemoryStorage } from './json.js';
2
+ export declare class LocalstorageStorage extends JsonMemoryStorage {
3
+ private readonly _key;
4
+ constructor(key: string);
5
+ load(): void;
6
+ save(): void;
7
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LocalstorageStorage = void 0;
4
+ const index_js_1 = require("../types/index.js");
5
+ const json_js_1 = require("./json.js");
6
+ class LocalstorageStorage extends json_js_1.JsonMemoryStorage {
7
+ constructor(key) {
8
+ super();
9
+ if (typeof localStorage === 'undefined') {
10
+ throw new index_js_1.MtUnsupportedError('localStorage is not available!');
11
+ }
12
+ this._key = key;
13
+ }
14
+ load() {
15
+ try {
16
+ this._loadJson(localStorage[this._key]);
17
+ }
18
+ catch (e) { }
19
+ }
20
+ save() {
21
+ localStorage[this._key] = this._saveJson();
22
+ }
23
+ }
24
+ exports.LocalstorageStorage = LocalstorageStorage;
25
+ //# sourceMappingURL=localstorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localstorage.js","sourceRoot":"","sources":["../../../src/storage/localstorage.ts"],"names":[],"mappings":";;;AAAA,gDAAsD;AACtD,uCAA6C;AAE7C,MAAa,mBAAoB,SAAQ,2BAAiB;IAGtD,YAAY,GAAW;QACnB,KAAK,EAAE,CAAA;QAEP,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;YACrC,MAAM,IAAI,6BAAkB,CAAC,gCAAgC,CAAC,CAAA;SACjE;QAED,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;IACnB,CAAC;IAED,IAAI;QACA,IAAI;YACA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAW,CAAC,CAAA;SACpD;QAAC,OAAO,CAAC,EAAE,GAAE;IAClB,CAAC;IAED,IAAI;QACA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;IAC9C,CAAC;CACJ;AAtBD,kDAsBC","sourcesContent":["import { MtUnsupportedError } from '../types/index.js'\nimport { JsonMemoryStorage } from './json.js'\n\nexport class LocalstorageStorage extends JsonMemoryStorage {\n private readonly _key: string\n\n constructor(key: string) {\n super()\n\n if (typeof localStorage === 'undefined') {\n throw new MtUnsupportedError('localStorage is not available!')\n }\n\n this._key = key\n }\n\n load(): void {\n try {\n this._loadJson(localStorage[this._key] as string)\n } catch (e) {}\n }\n\n save(): void {\n localStorage[this._key] = this._saveJson()\n }\n}\n"]}
@@ -0,0 +1,98 @@
1
+ import { tl } from '@mtcute/tl';
2
+ import { MaybeAsync } from '../types/index.js';
3
+ import { ITelegramStorage } from './abstract.js';
4
+ declare const CURRENT_VERSION = 1;
5
+ type PeerInfoWithUpdated = ITelegramStorage.PeerInfo & {
6
+ updated: number;
7
+ };
8
+ export interface MemorySessionState {
9
+ $version: typeof CURRENT_VERSION;
10
+ defaultDcs: ITelegramStorage.DcOptions | null;
11
+ authKeys: Map<number, Uint8Array>;
12
+ authKeysTemp: Map<string, Uint8Array>;
13
+ authKeysTempExpiry: Map<string, number>;
14
+ entities: Map<number, PeerInfoWithUpdated>;
15
+ phoneIndex: Map<string, number>;
16
+ usernameIndex: Map<string, number>;
17
+ gpts: [number, number, number, number] | null;
18
+ pts: Map<number, number>;
19
+ fsm: Map<string, {
20
+ v: unknown;
21
+ e?: number;
22
+ }>;
23
+ rl: Map<string, {
24
+ res: number;
25
+ rem: number;
26
+ }>;
27
+ self: ITelegramStorage.SelfInfo | null;
28
+ }
29
+ export declare class MemoryStorage implements ITelegramStorage {
30
+ protected _state: MemorySessionState;
31
+ private _cachedInputPeers;
32
+ private _cachedFull;
33
+ private _vacuumTimeout?;
34
+ private _vacuumInterval;
35
+ constructor(params?: {
36
+ /**
37
+ * Maximum number of cached full entities.
38
+ *
39
+ * Note that full entities are **NOT** persisted
40
+ * to the disk (in case this storage is backed
41
+ * by a local storage), and only available within
42
+ * the current runtime.
43
+ *
44
+ * @default `100`, use `0` to disable
45
+ */
46
+ cacheSize?: number;
47
+ /**
48
+ * Interval in milliseconds for vacuuming the storage.
49
+ *
50
+ * When vacuuming, the storage will remove expired FSM
51
+ * states to reduce memory usage.
52
+ *
53
+ * @default `300_000` (5 minutes)
54
+ */
55
+ vacuumInterval?: number;
56
+ });
57
+ load(): void;
58
+ destroy(): void;
59
+ reset(): void;
60
+ /**
61
+ * Set a given object as an underlying state.
62
+ *
63
+ * Note that this object will be used as-is, so if
64
+ * you plan on using it somewhere else, be sure to copy it beforehand.
65
+ */
66
+ protected _setStateFrom(obj: MemorySessionState): void;
67
+ private _vacuum;
68
+ getDefaultDcs(): ITelegramStorage.DcOptions | null;
69
+ setDefaultDcs(dcs: ITelegramStorage.DcOptions | null): void;
70
+ setTempAuthKeyFor(dcId: number, index: number, key: Uint8Array | null, expiresAt: number): void;
71
+ setAuthKeyFor(dcId: number, key: Uint8Array | null): void;
72
+ getAuthKeyFor(dcId: number, tempIndex?: number): Uint8Array | null;
73
+ dropAuthKeysFor(dcId: number): void;
74
+ updatePeers(peers: PeerInfoWithUpdated[]): MaybeAsync<void>;
75
+ protected _getInputPeer(peerInfo?: ITelegramStorage.PeerInfo): tl.TypeInputPeer | null;
76
+ getPeerById(peerId: number): tl.TypeInputPeer | null;
77
+ getPeerByPhone(phone: string): tl.TypeInputPeer | null;
78
+ getPeerByUsername(username: string): tl.TypeInputPeer | null;
79
+ getSelf(): ITelegramStorage.SelfInfo | null;
80
+ setSelf(self: ITelegramStorage.SelfInfo | null): void;
81
+ setManyChannelPts(values: Map<number, number>): void;
82
+ getChannelPts(entityId: number): number | null;
83
+ getUpdatesState(): MaybeAsync<[number, number, number, number] | null>;
84
+ setUpdatesPts(val: number): MaybeAsync<void>;
85
+ setUpdatesQts(val: number): MaybeAsync<void>;
86
+ setUpdatesDate(val: number): MaybeAsync<void>;
87
+ setUpdatesSeq(val: number): MaybeAsync<void>;
88
+ getFullPeerById(id: number): tl.TypeUser | tl.TypeChat | null;
89
+ getState(key: string): unknown;
90
+ setState(key: string, state: unknown, ttl?: number): void;
91
+ deleteState(key: string): void;
92
+ getCurrentScene(key: string): string | null;
93
+ setCurrentScene(key: string, scene: string, ttl?: number): void;
94
+ deleteCurrentScene(key: string): void;
95
+ getRateLimit(key: string, limit: number, window: number): [number, number];
96
+ resetRateLimit(key: string): void;
97
+ }
98
+ export {};