@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 @@
1
+ {"version":3,"file":"peer-utils.js","sourceRoot":"","sources":["../../../src/utils/peer-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError, MtUnsupportedError } from '../types/errors.js'\nimport { BasicPeerType } from '../types/peers.js'\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.h\nconst ZERO_CHANNEL_ID = -1000000000000\nconst ZERO_SECRET_CHAT_ID = -2000000000000\nconst MAX_SECRET_CHAT_ID = -1997852516353 // ZERO_SECRET_CHAT_ID + 0x7fffffff\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChatId.h\n// const MAX_CHAT_ID = 999999999999\nconst MIN_MARKED_CHAT_ID = -999999999999 // -MAX_CHAT_ID\n// src: https://github.com/tdlib/td/blob/master/td/telegram/UserId.h\n// MAX_USER_ID = (1ll << 40) - 1\nconst MAX_USER_ID = 1099511627775\n// src: https://github.com/tdlib/td/blob/master/td/telegram/ChannelId.h\n// the last (1 << 31) - 1 identifiers will be used for secret chat dialog identifiers\n// MAX_CHANNEL_ID = 1000000000000ll - (1ll << 31)\n// const MAX_CHANNEL_ID = 997852516352\nconst MIN_MARKED_CHANNEL_ID = -1997852516352 // ZERO_CHANNEL_ID - MAX_CHANNEL_ID\n\n/**\n * Add or remove channel marker from ID\n */\nexport function toggleChannelIdMark(id: number): number {\n return ZERO_CHANNEL_ID - id\n}\n\n/**\n * Get the bare (non-marked) ID from a {@link tl.TypePeer}\n */\nexport function getBarePeerId(peer: tl.TypePeer): number {\n switch (peer._) {\n case 'peerUser':\n return peer.userId\n case 'peerChat':\n return peer.chatId\n case 'peerChannel':\n return peer.channelId\n }\n}\n\n// src: https://github.com/tdlib/td/blob/master/td/telegram/DialogId.cpp\n\n/**\n * Get the marked (non-bare) ID from a {@link tl.TypePeer}\n *\n * *Mark* is bot API compatible, which is:\n * - ID stays the same for users\n * - ID is negated for chats\n * - ID is negated and `-1e12` is subtracted for channels\n */\nexport function getMarkedPeerId(peerId: number, peerType: BasicPeerType): number\nexport function getMarkedPeerId(peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel): number\n\nexport function getMarkedPeerId(\n peer: tl.TypePeer | tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel | number,\n peerType?: BasicPeerType,\n): number {\n if (typeof peer === 'number') {\n switch (peerType) {\n case 'user':\n return peer\n case 'chat':\n return -peer\n case 'channel':\n return ZERO_CHANNEL_ID - peer\n }\n throw new MtArgumentError('Invalid peer type')\n }\n\n switch (peer._) {\n case 'peerUser':\n case 'inputPeerUser':\n case 'inputUser':\n return peer.userId\n case 'peerChat':\n case 'inputPeerChat':\n return -peer.chatId\n case 'peerChannel':\n case 'inputPeerChannel':\n case 'inputChannel':\n return ZERO_CHANNEL_ID - peer.channelId\n }\n\n throw new MtArgumentError('Invalid peer')\n}\n\n/**\n * Extract basic peer type from {@link tl.TypePeer} or its marked ID.\n */\nexport function getBasicPeerType(peer: tl.TypePeer | number): BasicPeerType {\n if (typeof peer !== 'number') {\n switch (peer._) {\n case 'peerUser':\n return 'user'\n case 'peerChat':\n return 'chat'\n case 'peerChannel':\n return 'channel'\n }\n }\n\n if (peer < 0) {\n if (MIN_MARKED_CHAT_ID <= peer) {\n return 'chat'\n }\n\n if (MIN_MARKED_CHANNEL_ID <= peer && peer !== ZERO_CHANNEL_ID) {\n return 'channel'\n }\n\n if (MAX_SECRET_CHAT_ID <= peer && peer !== ZERO_SECRET_CHAT_ID) {\n // return 'secret'\n throw new MtUnsupportedError('Secret chats are not supported')\n }\n } else if (peer > 0 && peer <= MAX_USER_ID) {\n return 'user'\n }\n\n throw new MtArgumentError(`Invalid marked peer id: ${peer}`)\n}\n\n/**\n * Extract bare peer ID from marked ID.\n *\n * @param peerId Marked peer ID\n */\nexport function markedPeerIdToBare(peerId: number): number {\n const type = getBasicPeerType(peerId)\n\n switch (type) {\n case 'user':\n return peerId\n case 'chat':\n return -peerId\n case 'channel':\n return toggleChannelIdMark(peerId)\n }\n}\n\n/**\n * Extracts all (cacheable) entities from a TlObject or a list of them.\n * Only checks `.user`, `.chat`, `.channel`, `.users` and `.chats` properties\n */\nexport function* getAllPeersFrom(obj: tl.TlObject | tl.TlObject[]): Iterable<tl.TypeUser | tl.TypeChat> {\n if (typeof obj !== 'object') return\n\n if (Array.isArray(obj)) {\n for (const it of obj) {\n yield* getAllPeersFrom(it)\n }\n\n return\n }\n\n switch (obj._) {\n case 'user':\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj\n\n return\n }\n\n if ('user' in obj && typeof obj.user === 'object' && obj.user._ === 'user') {\n yield obj.user\n }\n\n if ('chat' in obj && typeof obj.chat === 'object') {\n switch (obj.chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.chat\n break\n }\n }\n\n if ('channel' in obj && typeof obj.channel === 'object') {\n switch (obj.channel._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield obj.channel\n break\n }\n }\n\n if ('users' in obj && Array.isArray(obj.users) && obj.users.length) {\n for (const user of obj.users) {\n // .users is sometimes number[]\n if (typeof user === 'object' && user._ === 'user') {\n yield user\n }\n }\n }\n\n if ('chats' in obj && Array.isArray(obj.chats) && obj.chats.length) {\n for (const chat of obj.chats) {\n // .chats is sometimes number[]\n if (typeof chat === 'object') {\n switch (chat._) {\n case 'chat':\n case 'channel':\n case 'chatForbidden':\n case 'channelForbidden':\n yield chat\n break\n }\n }\n }\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._defaultCryptoProviderFactory = void 0;
4
+ const node_crypto_js_1 = require("../crypto/node-crypto.js");
5
+ /** @internal */
6
+ const _defaultCryptoProviderFactory = () => new node_crypto_js_1.NodeCryptoProvider();
7
+ exports._defaultCryptoProviderFactory = _defaultCryptoProviderFactory;
8
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../../src/utils/platform/crypto.ts"],"names":[],"mappings":";;;AAAA,6DAA6D;AAE7D,gBAAgB;AACT,MAAM,6BAA6B,GAAG,GAAG,EAAE,CAAC,IAAI,mCAAkB,EAAE,CAAA;AAA9D,QAAA,6BAA6B,iCAAiC","sourcesContent":["import { NodeCryptoProvider } from '../crypto/node-crypto.js'\n\n/** @internal */\nexport const _defaultCryptoProviderFactory = () => new NodeCryptoProvider()\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._defaultCryptoProviderFactory = void 0;
4
+ const index_js_1 = require("../../index.js");
5
+ const subtle_js_1 = require("../crypto/subtle.js");
6
+ /** @internal */
7
+ const _defaultCryptoProviderFactory = () => {
8
+ if (typeof crypto === 'undefined' || typeof crypto.subtle === 'undefined') {
9
+ throw new index_js_1.MtUnsupportedError('WebCrypto API is not available');
10
+ }
11
+ return new subtle_js_1.SubtleCryptoProvider(crypto.subtle);
12
+ };
13
+ exports._defaultCryptoProviderFactory = _defaultCryptoProviderFactory;
14
+ //# sourceMappingURL=crypto.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.web.js","sourceRoot":"","sources":["../../../../src/utils/platform/crypto.web.ts"],"names":[],"mappings":";;;AAAA,6CAAmD;AACnD,mDAA0D;AAE1D,gBAAgB;AACT,MAAM,6BAA6B,GAAG,GAAG,EAAE;IAC9C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;QACvE,MAAM,IAAI,6BAAkB,CAAC,gCAAgC,CAAC,CAAA;KACjE;IAED,OAAO,IAAI,gCAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAClD,CAAC,CAAA;AANY,QAAA,6BAA6B,iCAMzC","sourcesContent":["import { MtUnsupportedError } from '../../index.js'\nimport { SubtleCryptoProvider } from '../crypto/subtle.js'\n\n/** @internal */\nexport const _defaultCryptoProviderFactory = () => {\n if (typeof crypto === 'undefined' || typeof crypto.subtle === 'undefined') {\n throw new MtUnsupportedError('WebCrypto API is not available')\n }\n\n return new SubtleCryptoProvider(crypto.subtle)\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import { tl } from '@mtcute/tl';
2
+ import { Logger } from '../logger.js';
3
+ export declare function reportUnknownError(log: Logger, error: tl.RpcError, method: string): void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reportUnknownError = void 0;
4
+ function reportUnknownError(log, error, method) {
5
+ if (typeof fetch !== 'function')
6
+ return;
7
+ fetch(`https://rpc.pwrtelegram.xyz/?code=${error.code}&method=${method}&error=${error.text}`)
8
+ .then((r) => r.json())
9
+ .then((r) => {
10
+ if (r.ok) {
11
+ log.info('telerpc responded with error info for %s: %s', error.text, r.result);
12
+ }
13
+ else {
14
+ log.info('Reported error %s to telerpc. You can disable this using `enableErrorReporting: false`', error.text);
15
+ }
16
+ })
17
+ .catch((e) => {
18
+ log.debug('failed to report error %s to telerpc: %s', error.text, e);
19
+ });
20
+ }
21
+ exports.reportUnknownError = reportUnknownError;
22
+ //# sourceMappingURL=error-reporting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-reporting.js","sourceRoot":"","sources":["../../../../src/utils/platform/error-reporting.ts"],"names":[],"mappings":";;;AAIA,SAAgB,kBAAkB,CAAC,GAAW,EAAE,KAAkB,EAAE,MAAc;IAC9E,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAM;IAEvC,KAAK,CAAC,qCAAqC,KAAK,CAAC,IAAI,WAAW,MAAM,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC;SACxF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACR,IAAI,CAAC,CAAC,EAAE,EAAE;YACN,GAAG,CAAC,IAAI,CAAC,8CAA8C,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;SACjF;aAAM;YACH,GAAG,CAAC,IAAI,CACJ,wFAAwF,EACxF,KAAK,CAAC,IAAI,CACb,CAAA;SACJ;IACL,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;AACV,CAAC;AAlBD,gDAkBC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { Logger } from '../logger.js'\n\nexport function reportUnknownError(log: Logger, error: tl.RpcError, method: string): void {\n if (typeof fetch !== 'function') return\n\n fetch(`https://rpc.pwrtelegram.xyz/?code=${error.code}&method=${method}&error=${error.text}`)\n .then((r) => r.json())\n .then((r) => {\n if (r.ok) {\n log.info('telerpc responded with error info for %s: %s', error.text, r.result)\n } else {\n log.info(\n 'Reported error %s to telerpc. You can disable this using `enableErrorReporting: false`',\n error.text,\n )\n }\n })\n .catch((e) => {\n log.debug('failed to report error %s to telerpc: %s', error.text, e)\n })\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._defaultLoggingHandler = void 0;
4
+ const tty_1 = require("tty");
5
+ const isTty = (0, tty_1.isatty)(process.stdout.fd);
6
+ const BASE_FORMAT = isTty ? '%s [%s] [%s%s\x1b[0m] ' : '%s [%s] [%s] ';
7
+ const LEVEL_NAMES = isTty ?
8
+ [
9
+ '',
10
+ '\x1b[31mERR\x1b[0m',
11
+ '\x1b[33mWRN\x1b[0m',
12
+ '\x1b[34mINF\x1b[0m',
13
+ '\x1b[36mDBG\x1b[0m',
14
+ '\x1b[35mVRB\x1b[0m',
15
+ ] :
16
+ [
17
+ '',
18
+ 'ERR',
19
+ 'WRN',
20
+ 'INF',
21
+ 'DBG',
22
+ 'VRB',
23
+ ];
24
+ const TAG_COLORS = [6, 2, 3, 4, 5, 1].map((i) => `\x1b[3${i};1m`);
25
+ /** @internal */
26
+ exports._defaultLoggingHandler = isTty ?
27
+ (color, level, tag, fmt, args) => {
28
+ // eslint-disable-next-line no-console
29
+ console.log(BASE_FORMAT + fmt, new Date().toISOString(), LEVEL_NAMES[level], TAG_COLORS[color], tag, ...args);
30
+ } :
31
+ (color, level, tag, fmt, args) => {
32
+ // eslint-disable-next-line no-console
33
+ console.log(BASE_FORMAT + fmt, new Date().toISOString(), LEVEL_NAMES[level], tag, ...args);
34
+ };
35
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../../src/utils/platform/logging.ts"],"names":[],"mappings":";;;AAAA,6BAA4B;AAE5B,MAAM,KAAK,GAAG,IAAA,YAAM,EAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAEvC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,eAAe,CAAA;AACtE,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC;IACvB;QACI,EAAE;QACF,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACvB,CAAC,CAAC;IACH;QACI,EAAE;QACF,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;KACR,CAAA;AACL,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAEjE,gBAAgB;AACH,QAAA,sBAAsB,GAAG,KAAK,CAAC,CAAC;IACzC,CAAC,KAAa,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW,EAAE,IAAe,EAAQ,EAAE;QAC9E,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IACjH,CAAC,CAAC,CAAC;IACH,CAAC,KAAa,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW,EAAE,IAAe,EAAQ,EAAE;QAC9E,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IAC9F,CAAC,CAAA","sourcesContent":["import { isatty } from 'tty'\n\nconst isTty = isatty(process.stdout.fd)\n\nconst BASE_FORMAT = isTty ? '%s [%s] [%s%s\\x1b[0m] ' : '%s [%s] [%s] '\nconst LEVEL_NAMES = isTty ?\n [\n '', // OFF\n '\\x1b[31mERR\\x1b[0m',\n '\\x1b[33mWRN\\x1b[0m',\n '\\x1b[34mINF\\x1b[0m',\n '\\x1b[36mDBG\\x1b[0m',\n '\\x1b[35mVRB\\x1b[0m',\n ] :\n [\n '', // OFF\n 'ERR',\n 'WRN',\n 'INF',\n 'DBG',\n 'VRB',\n ]\nconst TAG_COLORS = [6, 2, 3, 4, 5, 1].map((i) => `\\x1b[3${i};1m`)\n\n/** @internal */\nexport const _defaultLoggingHandler = isTty ?\n (color: number, level: number, tag: string, fmt: string, args: unknown[]): void => {\n // eslint-disable-next-line no-console\n console.log(BASE_FORMAT + fmt, new Date().toISOString(), LEVEL_NAMES[level], TAG_COLORS[color], tag, ...args)\n } :\n (color: number, level: number, tag: string, fmt: string, args: unknown[]): void => {\n // eslint-disable-next-line no-console\n console.log(BASE_FORMAT + fmt, new Date().toISOString(), LEVEL_NAMES[level], tag, ...args)\n }\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._defaultLoggingHandler = void 0;
4
+ const BASE_FORMAT = '%s [%c%s%c] [%c%s%c] ';
5
+ const LEVEL_NAMES = [
6
+ '',
7
+ 'ERR',
8
+ 'WRN',
9
+ 'INF',
10
+ 'DBG',
11
+ 'VRB',
12
+ ];
13
+ const COLORS = [
14
+ '',
15
+ 'color: #7a5f9d',
16
+ 'color: #8d7041',
17
+ 'color: #396c9e',
18
+ 'color: #437761',
19
+ 'color: #7a5f9d',
20
+ ];
21
+ const TAG_COLORS = [
22
+ 'color: #437761',
23
+ 'color: #537a36',
24
+ 'color: #8d7041',
25
+ 'color: #396c9e',
26
+ 'color: #7a5f9d',
27
+ 'color: #7a5f9d',
28
+ ];
29
+ /** @internal */
30
+ const _defaultLoggingHandler = (color, level, tag, fmt, args) => {
31
+ // eslint-disable-next-line no-console
32
+ console.log(BASE_FORMAT + fmt, new Date().toISOString(), COLORS[level], LEVEL_NAMES[level], '', TAG_COLORS[color], tag, '', ...args);
33
+ };
34
+ exports._defaultLoggingHandler = _defaultLoggingHandler;
35
+ //# sourceMappingURL=logging.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.web.js","sourceRoot":"","sources":["../../../../src/utils/platform/logging.web.ts"],"names":[],"mappings":";;;AAAA,MAAM,WAAW,GAAG,uBAAuB,CAAA;AAC3C,MAAM,WAAW,GAAG;IAChB,EAAE;IACF,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACR,CAAA;AACD,MAAM,MAAM,GAAG;IACX,EAAE;IACF,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;CACnB,CAAA;AACD,MAAM,UAAU,GAAG;IACf,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;CACnB,CAAA;AAED,gBAAgB;AACT,MAAM,sBAAsB,GAAG,CAClC,KAAa,EACb,KAAa,EACb,GAAW,EACX,GAAW,EACX,IAAe,EACX,EAAE;IACN,sCAAsC;IACtC,OAAO,CAAC,GAAG,CACP,WAAW,GAAG,GAAG,EACjB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACxB,MAAM,CAAC,KAAK,CAAC,EACb,WAAW,CAAC,KAAK,CAAC,EAClB,EAAE,EACF,UAAU,CAAC,KAAK,CAAC,EACjB,GAAG,EACH,EAAE,EACF,GAAG,IAAI,CACV,CAAA;AACL,CAAC,CAAA;AAnBY,QAAA,sBAAsB,0BAmBlC","sourcesContent":["const BASE_FORMAT = '%s [%c%s%c] [%c%s%c] '\nconst LEVEL_NAMES = [\n '', // OFF\n 'ERR',\n 'WRN',\n 'INF',\n 'DBG',\n 'VRB',\n]\nconst COLORS = [\n '', // OFF\n 'color: #7a5f9d',\n 'color: #8d7041',\n 'color: #396c9e',\n 'color: #437761',\n 'color: #7a5f9d',\n]\nconst TAG_COLORS = [\n 'color: #437761',\n 'color: #537a36',\n 'color: #8d7041',\n 'color: #396c9e',\n 'color: #7a5f9d',\n 'color: #7a5f9d',\n]\n\n/** @internal */\nexport const _defaultLoggingHandler = (\n color: number,\n level: number,\n tag: string,\n fmt: string,\n args: unknown[],\n): void => {\n // eslint-disable-next-line no-console\n console.log(\n BASE_FORMAT + fmt,\n new Date().toISOString(),\n COLORS[level],\n LEVEL_NAMES[level],\n '',\n TAG_COLORS[color],\n tag,\n '',\n ...args,\n )\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare const _randomBytes: (size: number) => Uint8Array;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._randomBytes = void 0;
4
+ // eslint-disable-next-line no-restricted-imports
5
+ const crypto_1 = require("crypto");
6
+ exports._randomBytes = crypto_1.randomBytes;
7
+ //# sourceMappingURL=random.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.js","sourceRoot":"","sources":["../../../../src/utils/platform/random.ts"],"names":[],"mappings":";;;AAAA,iDAAiD;AACjD,mCAAoC;AAEvB,QAAA,YAAY,GAAG,oBAA2C,CAAA","sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { randomBytes } from 'crypto'\n\nexport const _randomBytes = randomBytes as (size: number) => Uint8Array\n"]}
@@ -0,0 +1 @@
1
+ export declare function _randomBytes(size: number): Uint8Array;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._randomBytes = void 0;
4
+ function _randomBytes(size) {
5
+ const ret = new Uint8Array(size);
6
+ crypto.getRandomValues(ret);
7
+ return ret;
8
+ }
9
+ exports._randomBytes = _randomBytes;
10
+ //# sourceMappingURL=random.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.web.js","sourceRoot":"","sources":["../../../../src/utils/platform/random.web.ts"],"names":[],"mappings":";;;AAAA,SAAgB,YAAY,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IAE3B,OAAO,GAAG,CAAA;AACd,CAAC;AALD,oCAKC","sourcesContent":["export function _randomBytes(size: number): Uint8Array {\n const ret = new Uint8Array(size)\n crypto.getRandomValues(ret)\n\n return ret\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._defaultTransportFactory = void 0;
4
+ const tcp_js_1 = require("../../network/transports/tcp.js");
5
+ /** @internal */
6
+ const _defaultTransportFactory = () => new tcp_js_1.TcpTransport();
7
+ exports._defaultTransportFactory = _defaultTransportFactory;
8
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/utils/platform/transport.ts"],"names":[],"mappings":";;;AAAA,4DAA8D;AAE9D,gBAAgB;AACT,MAAM,wBAAwB,GAAG,GAAG,EAAE,CAAC,IAAI,qBAAY,EAAE,CAAA;AAAnD,QAAA,wBAAwB,4BAA2B","sourcesContent":["import { TcpTransport } from '../../network/transports/tcp.js'\n\n/** @internal */\nexport const _defaultTransportFactory = () => new TcpTransport()\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._defaultTransportFactory = void 0;
4
+ const websocket_js_1 = require("../../network/transports/websocket.js");
5
+ const index_js_1 = require("../../types/index.js");
6
+ /** @internal */
7
+ exports._defaultTransportFactory =
8
+ // if no websocket, throw an error i guess ¯\_(ツ)_/¯
9
+ // (user can still implement something on their own)
10
+ typeof WebSocket === 'undefined' ?
11
+ () => {
12
+ throw new index_js_1.MtUnsupportedError('Neither TCP nor WebSocket are available. Please pass a Transport factory explicitly');
13
+ } :
14
+ () => new websocket_js_1.WebSocketTransport();
15
+ //# sourceMappingURL=transport.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.web.js","sourceRoot":"","sources":["../../../../src/utils/platform/transport.web.ts"],"names":[],"mappings":";;;AAAA,wEAA0E;AAC1E,mDAAyD;AAEzD,gBAAgB;AACH,QAAA,wBAAwB;AACjC,oDAAoD;AACpD,oDAAoD;AACpD,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC;IAC9B,GAAG,EAAE;QACD,MAAM,IAAI,6BAAkB,CACxB,qFAAqF,CACxF,CAAA;IACL,CAAC,CAAC,CAAC;IACH,GAAG,EAAE,CAAC,IAAI,iCAAkB,EAAE,CAAA","sourcesContent":["import { WebSocketTransport } from '../../network/transports/websocket.js'\nimport { MtUnsupportedError } from '../../types/index.js'\n\n/** @internal */\nexport const _defaultTransportFactory =\n // if no websocket, throw an error i guess ¯\\_(ツ)_/¯\n // (user can still implement something on their own)\n typeof WebSocket === 'undefined' ?\n () => {\n throw new MtUnsupportedError(\n 'Neither TCP nor WebSocket are available. Please pass a Transport factory explicitly',\n )\n } :\n () => new WebSocketTransport()\n"]}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Array that adds elements in sorted order.
3
+ *
4
+ * Comparator is always called like: comparator(itemFromSortedArray, yourItem)
5
+ */
6
+ export declare class SortedArray<T> {
7
+ readonly comparator: (a: T, b: T) => number;
8
+ readonly raw: T[];
9
+ constructor(array: T[] | undefined, comparator: (a: T, b: T) => number);
10
+ get length(): number;
11
+ insert(item: T | T[]): number;
12
+ index(item: T, closest?: boolean): number;
13
+ remove(item: T): void;
14
+ includes(item: T): boolean;
15
+ find(item: T): T | null;
16
+ clear(): void;
17
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SortedArray = void 0;
4
+ /**
5
+ * Array that adds elements in sorted order.
6
+ *
7
+ * Comparator is always called like: comparator(itemFromSortedArray, yourItem)
8
+ */
9
+ class SortedArray {
10
+ constructor(array = [], comparator) {
11
+ this.comparator = comparator;
12
+ this.raw = array.sort(comparator);
13
+ this.comparator = comparator;
14
+ }
15
+ get length() {
16
+ return this.raw.length;
17
+ }
18
+ insert(item) {
19
+ if (Array.isArray(item)) {
20
+ let ind = -1;
21
+ item.forEach((it) => {
22
+ ind = this.insert(it);
23
+ });
24
+ return ind;
25
+ }
26
+ if (this.raw.length === 0) {
27
+ this.raw.push(item);
28
+ return 0;
29
+ }
30
+ // find insert position
31
+ let lo = 0;
32
+ let hi = this.raw.length;
33
+ while (lo < hi) {
34
+ const mid = Math.floor((lo + hi) / 2);
35
+ if (this.comparator(this.raw[mid], item) > 0) {
36
+ hi = mid;
37
+ }
38
+ else {
39
+ lo = mid + 1;
40
+ }
41
+ }
42
+ this.raw.splice(lo, 0, item);
43
+ return lo;
44
+ }
45
+ // closest: return the closest value (right-hand side)
46
+ // meaning that raw[idx - 1] <= item <= raw[idx]
47
+ index(item, closest = false) {
48
+ let lo = 0;
49
+ let hi = this.raw.length;
50
+ while (lo < hi) {
51
+ const mid = Math.floor((lo + hi) / 2);
52
+ const cmp = this.comparator(this.raw[mid], item);
53
+ if (cmp === 0) {
54
+ return mid;
55
+ }
56
+ if (cmp > 0) {
57
+ hi = mid;
58
+ }
59
+ else {
60
+ lo = mid + 1;
61
+ }
62
+ }
63
+ return closest ? lo : -1;
64
+ }
65
+ remove(item) {
66
+ const idx = this.index(item);
67
+ if (idx === -1)
68
+ return;
69
+ this.raw.splice(idx, 1);
70
+ }
71
+ includes(item) {
72
+ return this.index(item) !== -1;
73
+ }
74
+ find(item) {
75
+ const ind = this.index(item);
76
+ return ind === -1 ? null : this.raw[ind];
77
+ }
78
+ clear() {
79
+ this.raw.length = 0;
80
+ }
81
+ }
82
+ exports.SortedArray = SortedArray;
83
+ //# sourceMappingURL=sorted-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sorted-array.js","sourceRoot":"","sources":["../../../src/utils/sorted-array.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Array that adds elements in sorted order.\n *\n * Comparator is always called like: comparator(itemFromSortedArray, yourItem)\n */\nexport class SortedArray<T> {\n readonly raw: T[]\n\n constructor(\n array: T[] = [],\n readonly comparator: (a: T, b: T) => number,\n ) {\n this.raw = array.sort(comparator)\n this.comparator = comparator\n }\n\n get length(): number {\n return this.raw.length\n }\n\n insert(item: T | T[]): number {\n if (Array.isArray(item)) {\n let ind = -1\n item.forEach((it) => {\n ind = this.insert(it)\n })\n\n return ind\n }\n\n if (this.raw.length === 0) {\n this.raw.push(item)\n\n return 0\n }\n\n // find insert position\n let lo = 0\n let hi = this.raw.length\n\n while (lo < hi) {\n const mid = Math.floor((lo + hi) / 2)\n\n if (this.comparator(this.raw[mid], item) > 0) {\n hi = mid\n } else {\n lo = mid + 1\n }\n }\n\n this.raw.splice(lo, 0, item)\n\n return lo\n }\n\n // closest: return the closest value (right-hand side)\n // meaning that raw[idx - 1] <= item <= raw[idx]\n index(item: T, closest = false): number {\n let lo = 0\n let hi = this.raw.length\n\n while (lo < hi) {\n const mid = Math.floor((lo + hi) / 2)\n const cmp = this.comparator(this.raw[mid], item)\n\n if (cmp === 0) {\n return mid\n }\n if (cmp > 0) {\n hi = mid\n } else {\n lo = mid + 1\n }\n }\n\n return closest ? lo : -1\n }\n\n remove(item: T): void {\n const idx = this.index(item)\n if (idx === -1) return\n\n this.raw.splice(idx, 1)\n }\n\n includes(item: T): boolean {\n return this.index(item) !== -1\n }\n\n find(item: T): T | null {\n const ind = this.index(item)\n\n return ind === -1 ? null : this.raw[ind]\n }\n\n clear(): void {\n this.raw.length = 0\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { TlReaderMap, TlWriterMap } from '@mtcute/tl-runtime';
2
+ import { ITelegramStorage } from '../storage/index.js';
3
+ export interface StringSessionData {
4
+ version: number;
5
+ testMode: boolean;
6
+ primaryDcs: ITelegramStorage.DcOptions;
7
+ self?: ITelegramStorage.SelfInfo | null;
8
+ authKey: Uint8Array;
9
+ }
10
+ export declare function writeStringSession(writerMap: TlWriterMap, data: StringSessionData): string;
11
+ export declare function readStringSession(readerMap: TlReaderMap, data: string): StringSessionData;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readStringSession = exports.writeStringSession = void 0;
4
+ const tl_runtime_1 = require("@mtcute/tl-runtime");
5
+ const index_js_1 = require("../types/index.js");
6
+ function writeStringSession(writerMap, data) {
7
+ const writer = tl_runtime_1.TlBinaryWriter.alloc(writerMap, 512);
8
+ const version = data.version;
9
+ if (version !== 1 && version !== 2) {
10
+ throw new index_js_1.MtArgumentError(`Unsupported string session version: ${version}`);
11
+ }
12
+ let flags = 0;
13
+ if (data.self) {
14
+ flags |= 1;
15
+ }
16
+ if (data.testMode) {
17
+ flags |= 2;
18
+ }
19
+ writer.uint8View[0] = version;
20
+ writer.pos += 1;
21
+ writer.int(flags);
22
+ writer.object(data.primaryDcs.main);
23
+ if (version >= 2 && data.primaryDcs.media !== data.primaryDcs.main) {
24
+ flags |= 4;
25
+ writer.object(data.primaryDcs.media);
26
+ }
27
+ if (data.self) {
28
+ writer.int53(data.self.userId);
29
+ writer.boolean(data.self.isBot);
30
+ }
31
+ writer.bytes(data.authKey);
32
+ return (0, tl_runtime_1.base64Encode)(writer.result(), true);
33
+ }
34
+ exports.writeStringSession = writeStringSession;
35
+ function readStringSession(readerMap, data) {
36
+ const buf = (0, tl_runtime_1.base64DecodeToBuffer)(data, true);
37
+ const version = buf[0];
38
+ if (version !== 1 && version !== 2) {
39
+ throw new Error(`Invalid session string (version = ${version})`);
40
+ }
41
+ const reader = new tl_runtime_1.TlBinaryReader(readerMap, buf, 1);
42
+ const flags = reader.int();
43
+ const hasSelf = flags & 1;
44
+ const testMode = Boolean(flags & 2);
45
+ const hasMedia = version >= 2 && Boolean(flags & 4);
46
+ const primaryDc = reader.object();
47
+ const primaryMediaDc = hasMedia ? reader.object() : primaryDc;
48
+ if (primaryDc._ !== 'dcOption') {
49
+ throw new index_js_1.MtArgumentError(`Invalid session string (dc._ = ${primaryDc._})`);
50
+ }
51
+ let self = null;
52
+ if (hasSelf) {
53
+ const selfId = reader.int53();
54
+ const selfBot = reader.boolean();
55
+ self = {
56
+ userId: selfId,
57
+ isBot: selfBot,
58
+ };
59
+ }
60
+ const key = reader.bytes();
61
+ return {
62
+ version: 1,
63
+ testMode,
64
+ primaryDcs: {
65
+ main: primaryDc,
66
+ media: primaryMediaDc,
67
+ },
68
+ self,
69
+ authKey: key,
70
+ };
71
+ }
72
+ exports.readStringSession = readStringSession;
73
+ //# sourceMappingURL=string-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-session.js","sourceRoot":"","sources":["../../../src/utils/string-session.ts"],"names":[],"mappings":";;;AACA,mDAO2B;AAG3B,gDAAmD;AAUnD,SAAgB,kBAAkB,CAAC,SAAsB,EAAE,IAAuB;IAC9E,MAAM,MAAM,GAAG,2BAAc,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAEnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAE5B,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;QAChC,MAAM,IAAI,0BAAe,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAA;KAC9E;IAED,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,IAAI,IAAI,CAAC,IAAI,EAAE;QACX,KAAK,IAAI,CAAC,CAAA;KACb;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE;QACf,KAAK,IAAI,CAAC,CAAA;KACb;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;IAEf,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAEnC,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAChE,KAAK,IAAI,CAAC,CAAA;QACV,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;KACvC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE;QACX,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAClC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE1B,OAAO,IAAA,yBAAY,EAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAA;AAC9C,CAAC;AAtCD,gDAsCC;AAED,SAAgB,iBAAiB,CAAC,SAAsB,EAAE,IAAY;IAClE,MAAM,GAAG,GAAG,IAAA,iCAAoB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAE5C,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;IAEtB,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,GAAG,CAAC,CAAA;KACnE;IAED,MAAM,MAAM,GAAG,IAAI,2BAAc,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAEpD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,CAAA;IAC1B,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAA;IACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IACnC,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAEnD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAqB,CAAA;IACpD,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAE,MAAM,CAAC,MAAM,EAAsB,CAAC,CAAC,CAAC,SAAS,CAAA;IAElF,IAAI,SAAS,CAAC,CAAC,KAAK,UAAU,EAAE;QAC5B,MAAM,IAAI,0BAAe,CAAC,kCAAkC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAA;KAC9E;IAED,IAAI,IAAI,GAAqC,IAAI,CAAA;IAEjD,IAAI,OAAO,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;QAEhC,IAAI,GAAG;YACH,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,OAAO;SACjB,CAAA;KACJ;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAA;IAE1B,OAAO;QACH,OAAO,EAAE,CAAC;QACV,QAAQ;QACR,UAAU,EAAE;YACR,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,cAAc;SACxB;QACD,IAAI;QACJ,OAAO,EAAE,GAAG;KACf,CAAA;AACL,CAAC;AA/CD,8CA+CC","sourcesContent":["import { tl } from '@mtcute/tl'\nimport {\n base64DecodeToBuffer,\n base64Encode,\n TlBinaryReader,\n TlBinaryWriter,\n TlReaderMap,\n TlWriterMap,\n} from '@mtcute/tl-runtime'\n\nimport { ITelegramStorage } from '../storage/index.js'\nimport { MtArgumentError } from '../types/index.js'\n\nexport interface StringSessionData {\n version: number\n testMode: boolean\n primaryDcs: ITelegramStorage.DcOptions\n self?: ITelegramStorage.SelfInfo | null\n authKey: Uint8Array\n}\n\nexport function writeStringSession(writerMap: TlWriterMap, data: StringSessionData): string {\n const writer = TlBinaryWriter.alloc(writerMap, 512)\n\n const version = data.version\n\n if (version !== 1 && version !== 2) {\n throw new MtArgumentError(`Unsupported string session version: ${version}`)\n }\n\n let flags = 0\n\n if (data.self) {\n flags |= 1\n }\n\n if (data.testMode) {\n flags |= 2\n }\n\n writer.uint8View[0] = version\n writer.pos += 1\n\n writer.int(flags)\n writer.object(data.primaryDcs.main)\n\n if (version >= 2 && data.primaryDcs.media !== data.primaryDcs.main) {\n flags |= 4\n writer.object(data.primaryDcs.media)\n }\n\n if (data.self) {\n writer.int53(data.self.userId)\n writer.boolean(data.self.isBot)\n }\n\n writer.bytes(data.authKey)\n\n return base64Encode(writer.result(), true)\n}\n\nexport function readStringSession(readerMap: TlReaderMap, data: string): StringSessionData {\n const buf = base64DecodeToBuffer(data, true)\n\n const version = buf[0]\n\n if (version !== 1 && version !== 2) {\n throw new Error(`Invalid session string (version = ${version})`)\n }\n\n const reader = new TlBinaryReader(readerMap, buf, 1)\n\n const flags = reader.int()\n const hasSelf = flags & 1\n const testMode = Boolean(flags & 2)\n const hasMedia = version >= 2 && Boolean(flags & 4)\n\n const primaryDc = reader.object() as tl.TypeDcOption\n const primaryMediaDc = hasMedia ? (reader.object() as tl.TypeDcOption) : primaryDc\n\n if (primaryDc._ !== 'dcOption') {\n throw new MtArgumentError(`Invalid session string (dc._ = ${primaryDc._})`)\n }\n\n let self: ITelegramStorage.SelfInfo | null = null\n\n if (hasSelf) {\n const selfId = reader.int53()\n const selfBot = reader.boolean()\n\n self = {\n userId: selfId,\n isBot: selfBot,\n }\n }\n\n const key = reader.bytes()\n\n return {\n version: 1,\n testMode,\n primaryDcs: {\n main: primaryDc,\n media: primaryMediaDc,\n },\n self,\n authKey: key,\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { tl } from '@mtcute/tl';
2
+ /**
3
+ * Convert a JS object to TL JSON
4
+ *
5
+ * @param obj Object to be converted
6
+ */
7
+ export declare function jsonToTlJson(obj: unknown): tl.TypeJSONValue;
8
+ /**
9
+ * Convert TL JSON object to plain JS object
10
+ *
11
+ * @param obj TL JSON object to convert
12
+ */
13
+ export declare function tlJsonToJson(obj: tl.TypeJSONValue): unknown;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tlJsonToJson = exports.jsonToTlJson = void 0;
4
+ const errors_js_1 = require("../types/errors.js");
5
+ /**
6
+ * Convert a JS object to TL JSON
7
+ *
8
+ * @param obj Object to be converted
9
+ */
10
+ function jsonToTlJson(obj) {
11
+ if (obj === null || obj === undefined)
12
+ return { _: 'jsonNull' };
13
+ if (typeof obj === 'boolean')
14
+ return { _: 'jsonBool', value: obj };
15
+ if (typeof obj === 'number')
16
+ return { _: 'jsonNumber', value: obj };
17
+ if (typeof obj === 'string')
18
+ return { _: 'jsonString', value: obj };
19
+ if (Array.isArray(obj)) {
20
+ return { _: 'jsonArray', value: obj.map(jsonToTlJson) };
21
+ }
22
+ if (typeof obj !== 'object') {
23
+ throw new errors_js_1.MtArgumentError(`Unsupported type: ${typeof obj}`);
24
+ }
25
+ const items = [];
26
+ Object.entries(obj).forEach(([key, value]) => {
27
+ items.push({
28
+ _: 'jsonObjectValue',
29
+ key,
30
+ value: jsonToTlJson(value),
31
+ });
32
+ });
33
+ return {
34
+ _: 'jsonObject',
35
+ value: items,
36
+ };
37
+ }
38
+ exports.jsonToTlJson = jsonToTlJson;
39
+ /**
40
+ * Convert TL JSON object to plain JS object
41
+ *
42
+ * @param obj TL JSON object to convert
43
+ */
44
+ function tlJsonToJson(obj) {
45
+ switch (obj._) {
46
+ case 'jsonNull':
47
+ return null;
48
+ case 'jsonBool':
49
+ case 'jsonNumber':
50
+ case 'jsonString':
51
+ return obj.value;
52
+ case 'jsonArray':
53
+ return obj.value.map(tlJsonToJson);
54
+ }
55
+ const ret = {};
56
+ obj.value.forEach((item) => {
57
+ ret[item.key] = tlJsonToJson(item.value);
58
+ });
59
+ return ret;
60
+ }
61
+ exports.tlJsonToJson = tlJsonToJson;
62
+ //# sourceMappingURL=tl-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tl-json.js","sourceRoot":"","sources":["../../../src/utils/tl-json.ts"],"names":[],"mappings":";;;AAEA,kDAAoD;AAEpD;;;;GAIG;AAEH,SAAgB,YAAY,CAAC,GAAY;IACrC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAA;IAC/D,IAAI,OAAO,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAClE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IACnE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAEnE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACpB,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAA;KAC1D;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QACzB,MAAM,IAAI,2BAAe,CAAC,qBAAqB,OAAO,GAAG,EAAE,CAAC,CAAA;KAC/D;IAED,MAAM,KAAK,GAA6B,EAAE,CAAA;IAE1C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACzC,KAAK,CAAC,IAAI,CAAC;YACP,CAAC,EAAE,iBAAiB;YACpB,GAAG;YACH,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;SAC7B,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,OAAO;QACH,CAAC,EAAE,YAAY;QACf,KAAK,EAAE,KAAK;KACf,CAAA;AACL,CAAC;AA5BD,oCA4BC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,GAAqB;IAC9C,QAAQ,GAAG,CAAC,CAAC,EAAE;QACX,KAAK,UAAU;YACX,OAAO,IAAI,CAAA;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YACb,OAAO,GAAG,CAAC,KAAK,CAAA;QACpB,KAAK,WAAW;YACZ,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;KACzC;IAED,MAAM,GAAG,GAA4B,EAAE,CAAA;IAEvC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACvB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACd,CAAC;AAnBD,oCAmBC","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { MtArgumentError } from '../types/errors.js'\n\n/**\n * Convert a JS object to TL JSON\n *\n * @param obj Object to be converted\n */\n\nexport function jsonToTlJson(obj: unknown): tl.TypeJSONValue {\n if (obj === null || obj === undefined) return { _: 'jsonNull' }\n if (typeof obj === 'boolean') return { _: 'jsonBool', value: obj }\n if (typeof obj === 'number') return { _: 'jsonNumber', value: obj }\n if (typeof obj === 'string') return { _: 'jsonString', value: obj }\n\n if (Array.isArray(obj)) {\n return { _: 'jsonArray', value: obj.map(jsonToTlJson) }\n }\n\n if (typeof obj !== 'object') {\n throw new MtArgumentError(`Unsupported type: ${typeof obj}`)\n }\n\n const items: tl.TypeJSONObjectValue[] = []\n\n Object.entries(obj).forEach(([key, value]) => {\n items.push({\n _: 'jsonObjectValue',\n key,\n value: jsonToTlJson(value),\n })\n })\n\n return {\n _: 'jsonObject',\n value: items,\n }\n}\n\n/**\n * Convert TL JSON object to plain JS object\n *\n * @param obj TL JSON object to convert\n */\nexport function tlJsonToJson(obj: tl.TypeJSONValue): unknown {\n switch (obj._) {\n case 'jsonNull':\n return null\n case 'jsonBool':\n case 'jsonNumber':\n case 'jsonString':\n return obj.value\n case 'jsonArray':\n return obj.value.map(tlJsonToJson)\n }\n\n const ret: Record<string, unknown> = {}\n\n obj.value.forEach((item) => {\n ret[item.key] = tlJsonToJson(item.value)\n })\n\n return ret\n}\n"]}
@@ -0,0 +1,37 @@
1
+ import { mtp, tl } from '@mtcute/tl';
2
+ export declare function isPresent<T>(t: T | undefined | null | void): t is T;
3
+ /**
4
+ * Returns a function that can be used to filter down objects
5
+ * to the ones that have a defined non-null value under the key `k`.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * const filesWithUrl = files.filter(file => file.url);
10
+ * files[0].url // In this case, TS might still treat this as undefined/null
11
+ *
12
+ * const filesWithUrl = files.filter(hasPresentKey("url"));
13
+ * files[0].url // TS will know that this is present
14
+ * ```
15
+ */
16
+ export declare function hasPresentKey<K extends string | number | symbol>(k: K): <T, V>(a: T & { [k in K]?: V | null | undefined; }) => a is T & { [k_1 in K]: V; };
17
+ /**
18
+ * Returns a function that can be used to filter down objects
19
+ * to the ones that have a specific value V under a key `k`.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * type File = { type: "image", imageUrl: string } | { type: "pdf", pdfUrl: string };
24
+ * const files: File[] = [];
25
+ *
26
+ * const imageFiles = files.filter(file => file.type === "image");
27
+ * files[0].type // In this case, TS will still treat it as `"image" | "pdf"`
28
+ *
29
+ * const filesWithUrl = files.filter(hasValueKey("type", "image" as const));
30
+ * files[0].type // TS will now know that this is "image"
31
+ * files[0].imageUrl // TS will know this is present, because already it excluded the other union members.
32
+ * ```
33
+ */
34
+ export declare function hasValueAtKey<const K extends string | number | symbol, const V>(k: K, v: V): <T>(a: T & { [k in K]: unknown; }) => a is T & { [k_1 in K]: V; };
35
+ export declare function assertTypeIs<T extends tl.TlObject, K extends T['_']>(context: string, obj: T, expected: K): asserts obj is tl.FindByName<T, K>;
36
+ export declare function assertTypeIsNot<T extends tl.TlObject, K extends T['_']>(context: string, obj: T, expectedNot: K): asserts obj is Exclude<T, tl.FindByName<T, K>>;
37
+ export declare function mtpAssertTypeIs<T extends mtp.TlObject, K extends T['_']>(context: string, obj: T, expected: K): asserts obj is mtp.FindByName<T, K>;