@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":"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,68 @@
1
+ import { base64DecodeToBuffer, base64Encode, TlBinaryReader, TlBinaryWriter, } from '@mtcute/tl-runtime';
2
+ import { MtArgumentError } from '../types/index.js';
3
+ export function writeStringSession(writerMap, data) {
4
+ const writer = TlBinaryWriter.alloc(writerMap, 512);
5
+ const version = data.version;
6
+ if (version !== 1 && version !== 2) {
7
+ throw new MtArgumentError(`Unsupported string session version: ${version}`);
8
+ }
9
+ let flags = 0;
10
+ if (data.self) {
11
+ flags |= 1;
12
+ }
13
+ if (data.testMode) {
14
+ flags |= 2;
15
+ }
16
+ writer.uint8View[0] = version;
17
+ writer.pos += 1;
18
+ writer.int(flags);
19
+ writer.object(data.primaryDcs.main);
20
+ if (version >= 2 && data.primaryDcs.media !== data.primaryDcs.main) {
21
+ flags |= 4;
22
+ writer.object(data.primaryDcs.media);
23
+ }
24
+ if (data.self) {
25
+ writer.int53(data.self.userId);
26
+ writer.boolean(data.self.isBot);
27
+ }
28
+ writer.bytes(data.authKey);
29
+ return base64Encode(writer.result(), true);
30
+ }
31
+ export function readStringSession(readerMap, data) {
32
+ const buf = base64DecodeToBuffer(data, true);
33
+ const version = buf[0];
34
+ if (version !== 1 && version !== 2) {
35
+ throw new Error(`Invalid session string (version = ${version})`);
36
+ }
37
+ const reader = new TlBinaryReader(readerMap, buf, 1);
38
+ const flags = reader.int();
39
+ const hasSelf = flags & 1;
40
+ const testMode = Boolean(flags & 2);
41
+ const hasMedia = version >= 2 && Boolean(flags & 4);
42
+ const primaryDc = reader.object();
43
+ const primaryMediaDc = hasMedia ? reader.object() : primaryDc;
44
+ if (primaryDc._ !== 'dcOption') {
45
+ throw new MtArgumentError(`Invalid session string (dc._ = ${primaryDc._})`);
46
+ }
47
+ let self = null;
48
+ if (hasSelf) {
49
+ const selfId = reader.int53();
50
+ const selfBot = reader.boolean();
51
+ self = {
52
+ userId: selfId,
53
+ isBot: selfBot,
54
+ };
55
+ }
56
+ const key = reader.bytes();
57
+ return {
58
+ version: 1,
59
+ testMode,
60
+ primaryDcs: {
61
+ main: primaryDc,
62
+ media: primaryMediaDc,
63
+ },
64
+ self,
65
+ authKey: key,
66
+ };
67
+ }
68
+ //# sourceMappingURL=string-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-session.js","sourceRoot":"","sources":["../../../src/utils/string-session.ts"],"names":[],"mappings":"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","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,57 @@
1
+ import { MtArgumentError } from '../types/errors.js';
2
+ /**
3
+ * Convert a JS object to TL JSON
4
+ *
5
+ * @param obj Object to be converted
6
+ */
7
+ export function jsonToTlJson(obj) {
8
+ if (obj === null || obj === undefined)
9
+ return { _: 'jsonNull' };
10
+ if (typeof obj === 'boolean')
11
+ return { _: 'jsonBool', value: obj };
12
+ if (typeof obj === 'number')
13
+ return { _: 'jsonNumber', value: obj };
14
+ if (typeof obj === 'string')
15
+ return { _: 'jsonString', value: obj };
16
+ if (Array.isArray(obj)) {
17
+ return { _: 'jsonArray', value: obj.map(jsonToTlJson) };
18
+ }
19
+ if (typeof obj !== 'object') {
20
+ throw new MtArgumentError(`Unsupported type: ${typeof obj}`);
21
+ }
22
+ const items = [];
23
+ Object.entries(obj).forEach(([key, value]) => {
24
+ items.push({
25
+ _: 'jsonObjectValue',
26
+ key,
27
+ value: jsonToTlJson(value),
28
+ });
29
+ });
30
+ return {
31
+ _: 'jsonObject',
32
+ value: items,
33
+ };
34
+ }
35
+ /**
36
+ * Convert TL JSON object to plain JS object
37
+ *
38
+ * @param obj TL JSON object to convert
39
+ */
40
+ export function tlJsonToJson(obj) {
41
+ switch (obj._) {
42
+ case 'jsonNull':
43
+ return null;
44
+ case 'jsonBool':
45
+ case 'jsonNumber':
46
+ case 'jsonString':
47
+ return obj.value;
48
+ case 'jsonArray':
49
+ return obj.value.map(tlJsonToJson);
50
+ }
51
+ const ret = {};
52
+ obj.value.forEach((item) => {
53
+ ret[item.key] = tlJsonToJson(item.value);
54
+ });
55
+ return ret;
56
+ }
57
+ //# 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,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD;;;;GAIG;AAEH,MAAM,UAAU,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,eAAe,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;AAED;;;;GAIG;AACH,MAAM,UAAU,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","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>;
@@ -0,0 +1,61 @@
1
+ import { MtTypeAssertionError } from '../types/errors.js';
2
+ // mostly taken from https://github.com/robertmassaioli/ts-is-present
3
+ export function isPresent(t) {
4
+ return t !== undefined && t !== null;
5
+ }
6
+ /**
7
+ * Returns a function that can be used to filter down objects
8
+ * to the ones that have a defined non-null value under the key `k`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const filesWithUrl = files.filter(file => file.url);
13
+ * files[0].url // In this case, TS might still treat this as undefined/null
14
+ *
15
+ * const filesWithUrl = files.filter(hasPresentKey("url"));
16
+ * files[0].url // TS will know that this is present
17
+ * ```
18
+ */
19
+ export function hasPresentKey(k) {
20
+ return function (a) {
21
+ return a[k] !== undefined && a[k] !== null;
22
+ };
23
+ }
24
+ /**
25
+ * Returns a function that can be used to filter down objects
26
+ * to the ones that have a specific value V under a key `k`.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * type File = { type: "image", imageUrl: string } | { type: "pdf", pdfUrl: string };
31
+ * const files: File[] = [];
32
+ *
33
+ * const imageFiles = files.filter(file => file.type === "image");
34
+ * files[0].type // In this case, TS will still treat it as `"image" | "pdf"`
35
+ *
36
+ * const filesWithUrl = files.filter(hasValueKey("type", "image" as const));
37
+ * files[0].type // TS will now know that this is "image"
38
+ * files[0].imageUrl // TS will know this is present, because already it excluded the other union members.
39
+ * ```
40
+ */
41
+ export function hasValueAtKey(k, v) {
42
+ return function (a) {
43
+ return a[k] === v;
44
+ };
45
+ }
46
+ export function assertTypeIs(context, obj, expected) {
47
+ if (obj._ !== expected) {
48
+ throw new MtTypeAssertionError(context, expected, obj._);
49
+ }
50
+ }
51
+ export function assertTypeIsNot(context, obj, expectedNot) {
52
+ if (obj._ === expectedNot) {
53
+ throw new MtTypeAssertionError(context, 'not ' + expectedNot, obj._);
54
+ }
55
+ }
56
+ export function mtpAssertTypeIs(context, obj, expected) {
57
+ if (obj._ !== expected) {
58
+ throw new MtTypeAssertionError(context, expected, obj._);
59
+ }
60
+ }
61
+ //# sourceMappingURL=type-assertions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-assertions.js","sourceRoot":"","sources":["../../../src/utils/type-assertions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzD,qEAAqE;AAErE,MAAM,UAAU,SAAS,CAAI,CAA8B;IACvD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAA;AACxC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAqC,CAAI;IAClE,OAAO,UAAiB,CAA8B;QAClD,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC9C,CAAC,CAAA;AACL,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa,CAAoD,CAAI,EAAE,CAAI;IACvF,OAAO,UAAc,CAA4B;QAC7C,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CACxB,OAAe,EACf,GAAM,EACN,QAAW;IAEX,IAAI,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;QACpB,MAAM,IAAI,oBAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;KAC3D;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAC3B,OAAe,EACf,GAAM,EACN,WAAc;IAEd,IAAI,GAAG,CAAC,CAAC,KAAK,WAAW,EAAE;QACvB,MAAM,IAAI,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;KACvE;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAC3B,OAAe,EACf,GAAM,EACN,QAAW;IAEX,IAAI,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;QACpB,MAAM,IAAI,oBAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;KAC3D;AACL,CAAC","sourcesContent":["import { mtp, tl } from '@mtcute/tl'\n\nimport { MtTypeAssertionError } from '../types/errors.js'\n\n// mostly taken from https://github.com/robertmassaioli/ts-is-present\n\nexport function isPresent<T>(t: T | undefined | null | void): t is T {\n return t !== undefined && t !== null\n}\n\n/**\n * Returns a function that can be used to filter down objects\n * to the ones that have a defined non-null value under the key `k`.\n *\n * @example\n * ```ts\n * const filesWithUrl = files.filter(file => file.url);\n * files[0].url // In this case, TS might still treat this as undefined/null\n *\n * const filesWithUrl = files.filter(hasPresentKey(\"url\"));\n * files[0].url // TS will know that this is present\n * ```\n */\nexport function hasPresentKey<K extends string | number | symbol>(k: K) {\n return function <T, V> (a: T & { [k in K]?: V | null }): a is T & { [k in K]: V } {\n return a[k] !== undefined && a[k] !== null\n }\n}\n\n/**\n * Returns a function that can be used to filter down objects\n * to the ones that have a specific value V under a key `k`.\n *\n * @example\n * ```ts\n * type File = { type: \"image\", imageUrl: string } | { type: \"pdf\", pdfUrl: string };\n * const files: File[] = [];\n *\n * const imageFiles = files.filter(file => file.type === \"image\");\n * files[0].type // In this case, TS will still treat it as `\"image\" | \"pdf\"`\n *\n * const filesWithUrl = files.filter(hasValueKey(\"type\", \"image\" as const));\n * files[0].type // TS will now know that this is \"image\"\n * files[0].imageUrl // TS will know this is present, because already it excluded the other union members.\n * ```\n */\nexport function hasValueAtKey<const K extends string | number | symbol, const V>(k: K, v: V) {\n return function <T> (a: T & { [k in K]: unknown }): a is T & { [k in K]: V } {\n return a[k] === v\n }\n}\n\nexport function assertTypeIs<T extends tl.TlObject, K extends T['_']>(\n context: string,\n obj: T,\n expected: K,\n): asserts obj is tl.FindByName<T, K> {\n if (obj._ !== expected) {\n throw new MtTypeAssertionError(context, expected, obj._)\n }\n}\n\nexport function assertTypeIsNot<T extends tl.TlObject, K extends T['_']>(\n context: string,\n obj: T,\n expectedNot: K,\n): asserts obj is Exclude<T, tl.FindByName<T, K>> {\n if (obj._ === expectedNot) {\n throw new MtTypeAssertionError(context, 'not ' + expectedNot, obj._)\n }\n}\n\nexport function mtpAssertTypeIs<T extends mtp.TlObject, K extends T['_']>(\n context: string,\n obj: T,\n expected: K,\n): asserts obj is mtp.FindByName<T, K> {\n if (obj._ !== expected) {\n throw new MtTypeAssertionError(context, expected, obj._)\n }\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@mtcute/core",
3
+ "version": "0.1.0",
4
+ "description": "Core functions and base MTProto client",
5
+ "author": "Alina Sireneva <alina@tei.su>",
6
+ "license": "MIT",
7
+ "main": "cjs/index.js",
8
+ "type": "module",
9
+ "scripts": {},
10
+ "browser": {
11
+ "./cjs/utils/platform/crypto.js": "./cjs/utils/platform/crypto.web.js",
12
+ "./esm/utils/platform/crypto.js": "./esm/utils/platform/crypto.web.js",
13
+ "./cjs/utils/platform/transport.js": "./cjs/utils/platform/transport.web.js",
14
+ "./esm/utils/platform/transport.js": "./esm/utils/platform/transport.web.js",
15
+ "./cjs/utils/platform/logging.js": "./cjs/utils/platform/logging.web.js",
16
+ "./esm/utils/platform/logging.js": "./esm/utils/platform/logging.web.js",
17
+ "./cjs/utils/platform/random.js": "./cjs/utils/platform/random.web.js",
18
+ "./esm/utils/platform/random.js": "./esm/utils/platform/random.web.js",
19
+ "./cjs/storage/json-file.js": false,
20
+ "./esm/storage/json-file.js": false
21
+ },
22
+ "dependencies": {
23
+ "@mtcute/tl": "^0.1.0",
24
+ "@mtcute/tl-runtime": "^0.1.0",
25
+ "@types/events": "3.0.0",
26
+ "@types/node": "18.16.0",
27
+ "big-integer": "1.6.51",
28
+ "events": "3.2.0",
29
+ "long": "5.2.3"
30
+ },
31
+ "module": "esm/index.js",
32
+ "exports": {
33
+ ".": {
34
+ "import": "./esm/index.js",
35
+ "require": "./cjs/index.js"
36
+ },
37
+ "./utils.js": {
38
+ "import": "./esm/utils/index.js",
39
+ "require": "./cjs/utils/index.js"
40
+ },
41
+ "./utils/crypto/*.js": {
42
+ "import": "./esm/utils/crypto/*.js",
43
+ "require": "./cjs/utils/crypto/*.js"
44
+ },
45
+ "./network/transports/*.js": {
46
+ "import": "./esm/network/transports/*.js",
47
+ "require": "./cjs/network/transports/*.js"
48
+ }
49
+ }
50
+ }