@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,21 @@
1
+ interface LinkedListItem<T> {
2
+ v: T;
3
+ n?: LinkedListItem<T>;
4
+ p?: LinkedListItem<T>;
5
+ }
6
+ /**
7
+ * A sorted linked list.
8
+ */
9
+ export declare class SortedLinkedList<T> {
10
+ private comparator;
11
+ _first?: LinkedListItem<T>;
12
+ _last?: LinkedListItem<T>;
13
+ _size: number;
14
+ constructor(comparator: (a: T, b: T) => number);
15
+ get length(): number;
16
+ _remove(item: LinkedListItem<T>): void;
17
+ popFront(): T | undefined;
18
+ add(item: T): void;
19
+ clear(): void;
20
+ }
21
+ export {};
@@ -0,0 +1,69 @@
1
+ /**
2
+ * A sorted linked list.
3
+ */
4
+ export class SortedLinkedList {
5
+ constructor(comparator) {
6
+ this.comparator = comparator;
7
+ this._size = 0;
8
+ }
9
+ get length() {
10
+ return this._size;
11
+ }
12
+ _remove(item) {
13
+ if (this._first === item) {
14
+ this._first = item.n;
15
+ }
16
+ if (this._last === item) {
17
+ this._last = item.p;
18
+ }
19
+ if (item.p)
20
+ item.p.n = item.n;
21
+ if (item.n)
22
+ item.n.p = item.p;
23
+ this._size -= 1;
24
+ }
25
+ popFront() {
26
+ if (!this._first)
27
+ return undefined;
28
+ const it = this._first;
29
+ this._first = this._first.n;
30
+ if (!this._first)
31
+ this._last = undefined;
32
+ this._size -= 1;
33
+ return it.v;
34
+ }
35
+ add(item) {
36
+ const it = { v: item };
37
+ if (!this._first) {
38
+ this._first = this._last = it;
39
+ }
40
+ else {
41
+ let cur = this._first;
42
+ while (cur && this.comparator(cur.v, it.v) < 0) {
43
+ cur = cur.n;
44
+ }
45
+ if (!cur) {
46
+ // reached end, the item should be new last
47
+ this._last.n = it;
48
+ it.p = this._last;
49
+ this._last = it;
50
+ }
51
+ else {
52
+ // `cur` is the first item greater or equal than the given
53
+ it.n = cur;
54
+ it.p = cur.p;
55
+ if (cur.p)
56
+ cur.p.n = it;
57
+ cur.p = it;
58
+ if (cur === this._first)
59
+ this._first = it;
60
+ }
61
+ }
62
+ this._size += 1;
63
+ }
64
+ clear() {
65
+ this._first = this._last = undefined;
66
+ this._size = 0;
67
+ }
68
+ }
69
+ //# sourceMappingURL=linked-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linked-list.js","sourceRoot":"","sources":["../../../src/utils/linked-list.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAKzB,YAAoB,UAAkC;QAAlC,eAAU,GAAV,UAAU,CAAwB;QAFtD,UAAK,GAAG,CAAC,CAAA;IAEgD,CAAC;IAE1D,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,OAAO,CAAC,IAAuB;QAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;SACvB;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;YACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAA;SACtB;QAED,IAAI,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAC7B,IAAI,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAE7B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAA;QAElC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAExC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAEf,OAAO,EAAE,CAAC,CAAC,CAAA;IACf,CAAC;IAED,GAAG,CAAC,IAAO;QACP,MAAM,EAAE,GAAsB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAA;QAEzC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;SAChC;aAAM;YACH,IAAI,GAAG,GAAkC,IAAI,CAAC,MAAM,CAAA;YAEpD,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBAC5C,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA;aACd;YAED,IAAI,CAAC,GAAG,EAAE;gBACN,2CAA2C;gBAE3C,IAAI,CAAC,KAAM,CAAC,CAAC,GAAG,EAAE,CAAA;gBAClB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;gBACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;aAClB;iBAAM;gBACH,0DAA0D;gBAC1D,EAAE,CAAC,CAAC,GAAG,GAAG,CAAA;gBACV,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;gBACZ,IAAI,GAAG,CAAC,CAAC;oBAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;gBACvB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;gBAEV,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;aAC5C;SACJ;QAED,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IAClB,CAAC;CACJ","sourcesContent":["interface LinkedListItem<T> {\n v: T\n n?: LinkedListItem<T>\n p?: LinkedListItem<T>\n}\n\n/**\n * A sorted linked list.\n */\nexport class SortedLinkedList<T> {\n _first?: LinkedListItem<T>\n _last?: LinkedListItem<T>\n _size = 0\n\n constructor(private comparator: (a: T, b: T) => number) {}\n\n get length(): number {\n return this._size\n }\n\n _remove(item: LinkedListItem<T>): void {\n if (this._first === item) {\n this._first = item.n\n }\n\n if (this._last === item) {\n this._last = item.p\n }\n\n if (item.p) item.p.n = item.n\n if (item.n) item.n.p = item.p\n\n this._size -= 1\n }\n\n popFront(): T | undefined {\n if (!this._first) return undefined\n\n const it = this._first\n this._first = this._first.n\n if (!this._first) this._last = undefined\n\n this._size -= 1\n\n return it.v\n }\n\n add(item: T): void {\n const it: LinkedListItem<T> = { v: item }\n\n if (!this._first) {\n this._first = this._last = it\n } else {\n let cur: LinkedListItem<T> | undefined = this._first\n\n while (cur && this.comparator(cur.v, it.v) < 0) {\n cur = cur.n\n }\n\n if (!cur) {\n // reached end, the item should be new last\n\n this._last!.n = it\n it.p = this._last\n this._last = it\n } else {\n // `cur` is the first item greater or equal than the given\n it.n = cur\n it.p = cur.p\n if (cur.p) cur.p.n = it\n cur.p = it\n\n if (cur === this._first) this._first = it\n }\n }\n\n this._size += 1\n }\n\n clear(): void {\n this._first = this._last = undefined\n this._size = 0\n }\n}\n"]}
@@ -0,0 +1,71 @@
1
+ import { tl } from '@mtcute/tl';
2
+ /**
3
+ * Bot deeplinks
4
+ *
5
+ * Used to link to bots with a start parameter
6
+ */
7
+ export declare const botStart: import("./common.js").Deeplink<{
8
+ /** Bot username */
9
+ username: string;
10
+ /** Start parameter */
11
+ parameter: string;
12
+ }>;
13
+ type BotAdminRight = Exclude<keyof tl.RawChatAdminRights, '_'>;
14
+ /**
15
+ * Bot add to group links
16
+ *
17
+ * Used to ask the user to add a bot to a group, optionally asking for admin rights.
18
+ * Note that the user is still free to choose which rights to grant, and
19
+ * whether to grant them at all.
20
+ */
21
+ export declare const botAddToGroup: import("./common.js").Deeplink<{
22
+ /** Bot username */
23
+ bot: string;
24
+ /** If specified, the client will call `/start parameter` on the bot once the bot has been added */
25
+ parameter?: string | undefined;
26
+ /** Admin rights to request */
27
+ admin?: BotAdminRight[] | undefined;
28
+ }>;
29
+ /**
30
+ * Bot add to channel links
31
+ *
32
+ * Used to ask the user to add a bot to a channel, optionally with admin rights.
33
+ * Note that the user is still free to choose which rights to grant, and
34
+ * whether to grant them at all.
35
+ */
36
+ export declare const botAddToChannel: import("./common.js").Deeplink<{
37
+ /** Bot username */
38
+ bot: string;
39
+ /** Admin rights to request */
40
+ admin?: BotAdminRight[] | undefined;
41
+ }>;
42
+ /**
43
+ * Game links
44
+ *
45
+ * Used to share games.
46
+ */
47
+ export declare const botGame: import("./common.js").Deeplink<{
48
+ /** Bot username */
49
+ bot: string;
50
+ /** Game short name */
51
+ game: string;
52
+ }>;
53
+ /**
54
+ * Named bot web app links
55
+ *
56
+ * Used to share named bot web apps.
57
+ *
58
+ * These links are different from bot attachment menu deep links,
59
+ * because they don't require the user to install an attachment menu,
60
+ * and a single bot can offer multiple named web apps, distinguished by
61
+ * their `short_name`.
62
+ */
63
+ export declare const botWebApp: import("./common.js").Deeplink<{
64
+ /** Bot username */
65
+ bot: string;
66
+ /** App short name */
67
+ app: string;
68
+ /** Parameter to be passed by the client to messages.requestAppWebView as `start_param` */
69
+ parameter?: string | undefined;
70
+ }>;
71
+ export {};
@@ -0,0 +1,256 @@
1
+ import { isPresent } from '../type-assertions.js';
2
+ import { deeplinkBuilder } from './common.js';
3
+ /**
4
+ * Bot deeplinks
5
+ *
6
+ * Used to link to bots with a start parameter
7
+ */
8
+ export const botStart = deeplinkBuilder({
9
+ internalBuild: ({ username, parameter }) => ['resolve', { domain: username, start: parameter }],
10
+ internalParse: (path, query) => {
11
+ if (path !== 'resolve')
12
+ return null;
13
+ const username = query.get('domain');
14
+ const parameter = query.get('start');
15
+ if (!username || !parameter)
16
+ return null;
17
+ return { username, parameter };
18
+ },
19
+ externalBuild: ({ username, parameter }) => [username, { start: parameter }],
20
+ externalParse: (path, query) => {
21
+ if (path.includes('/') || path[0] === '+' || path.length <= 2)
22
+ return null;
23
+ const username = path;
24
+ const parameter = query.get('start');
25
+ if (!parameter)
26
+ return null;
27
+ return { username, parameter };
28
+ },
29
+ });
30
+ function normalizeBotAdmin(rights) {
31
+ if (!rights?.length)
32
+ return;
33
+ return rights
34
+ .map((it) => {
35
+ switch (it) {
36
+ case 'changeInfo':
37
+ return 'change_info';
38
+ case 'postMessages':
39
+ return 'post_messages';
40
+ case 'editMessages':
41
+ return 'edit_messages';
42
+ case 'deleteMessages':
43
+ return 'delete_messages';
44
+ case 'banUsers':
45
+ return 'restrict_members';
46
+ case 'inviteUsers':
47
+ return 'invite_users';
48
+ case 'pinMessages':
49
+ return 'pin_messages';
50
+ case 'manageTopics':
51
+ return 'manage_topics';
52
+ case 'addAdmins':
53
+ return 'promote_members';
54
+ case 'manageCall':
55
+ return 'manage_video_chats';
56
+ case 'anonymous':
57
+ return 'anonymous';
58
+ case 'other':
59
+ return 'manage_chat';
60
+ case 'postStories':
61
+ return 'post_stories';
62
+ case 'editStories':
63
+ return 'edit_stories';
64
+ case 'deleteStories':
65
+ return 'delete_stories';
66
+ }
67
+ })
68
+ .join('+');
69
+ }
70
+ function parseBotAdmin(rights) {
71
+ if (!rights)
72
+ return;
73
+ return rights
74
+ .split('+')
75
+ .map((it) => {
76
+ switch (it) {
77
+ case 'change_info':
78
+ return 'changeInfo';
79
+ case 'post_messages':
80
+ return 'postMessages';
81
+ case 'edit_messages':
82
+ return 'editMessages';
83
+ case 'delete_messages':
84
+ return 'deleteMessages';
85
+ case 'restrict_members':
86
+ return 'banUsers';
87
+ case 'invite_users':
88
+ return 'inviteUsers';
89
+ case 'pin_messages':
90
+ return 'pinMessages';
91
+ case 'manage_topics':
92
+ return 'manageTopics';
93
+ case 'promote_members':
94
+ return 'addAdmins';
95
+ case 'manage_video_chats':
96
+ return 'manageCall';
97
+ case 'anonymous':
98
+ return 'anonymous';
99
+ case 'manage_chat':
100
+ return 'other';
101
+ case 'post_stories':
102
+ return 'postStories';
103
+ case 'edit_stories':
104
+ return 'editStories';
105
+ case 'delete_stories':
106
+ return 'deleteStories';
107
+ default:
108
+ return null;
109
+ }
110
+ })
111
+ .filter(isPresent);
112
+ }
113
+ /**
114
+ * Bot add to group links
115
+ *
116
+ * Used to ask the user to add a bot to a group, optionally asking for admin rights.
117
+ * Note that the user is still free to choose which rights to grant, and
118
+ * whether to grant them at all.
119
+ */
120
+ export const botAddToGroup = deeplinkBuilder({
121
+ internalBuild: ({ bot, parameter, admin }) => [
122
+ 'resolve',
123
+ { domain: bot, startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },
124
+ ],
125
+ internalParse: (path, query) => {
126
+ if (path !== 'resolve')
127
+ return null;
128
+ const bot = query.get('domain');
129
+ const parameter = query.get('startgroup');
130
+ const admin = query.get('admin');
131
+ if (!bot || parameter === null)
132
+ return null;
133
+ return {
134
+ bot,
135
+ parameter: parameter === '' ? undefined : parameter,
136
+ admin: parseBotAdmin(admin),
137
+ };
138
+ },
139
+ externalBuild: ({ bot, parameter, admin }) => [
140
+ bot,
141
+ { startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },
142
+ ],
143
+ externalParse: (path, query) => {
144
+ if (path.includes('/') || path[0] === '+' || path.length <= 2)
145
+ return null;
146
+ const bot = path;
147
+ const parameter = query.get('startgroup');
148
+ const admin = query.get('admin');
149
+ if (parameter === null)
150
+ return null;
151
+ return {
152
+ bot,
153
+ parameter: parameter === '' ? undefined : parameter,
154
+ admin: parseBotAdmin(admin),
155
+ };
156
+ },
157
+ });
158
+ /**
159
+ * Bot add to channel links
160
+ *
161
+ * Used to ask the user to add a bot to a channel, optionally with admin rights.
162
+ * Note that the user is still free to choose which rights to grant, and
163
+ * whether to grant them at all.
164
+ */
165
+ export const botAddToChannel = deeplinkBuilder({
166
+ internalBuild: ({ bot, admin }) => [
167
+ 'resolve',
168
+ { domain: bot, startchannel: true, admin: normalizeBotAdmin(admin) },
169
+ ],
170
+ internalParse: (path, query) => {
171
+ if (path !== 'resolve')
172
+ return null;
173
+ const bot = query.get('domain');
174
+ const parameter = query.get('startchannel');
175
+ const admin = query.get('admin');
176
+ if (!bot || parameter === null)
177
+ return null;
178
+ return {
179
+ bot,
180
+ admin: parseBotAdmin(admin),
181
+ };
182
+ },
183
+ externalBuild: ({ bot, admin }) => [bot, { startchannel: true, admin: normalizeBotAdmin(admin) }],
184
+ externalParse: (path, query) => {
185
+ if (path.includes('/') || path[0] === '+' || path.length <= 2)
186
+ return null;
187
+ const bot = path;
188
+ const parameter = query.get('startchannel');
189
+ const admin = query.get('admin');
190
+ if (parameter === null)
191
+ return null;
192
+ return {
193
+ bot,
194
+ admin: parseBotAdmin(admin),
195
+ };
196
+ },
197
+ });
198
+ /**
199
+ * Game links
200
+ *
201
+ * Used to share games.
202
+ */
203
+ export const botGame = deeplinkBuilder({
204
+ internalBuild: ({ bot, game }) => ['resolve', { domain: bot, game }],
205
+ internalParse: (path, query) => {
206
+ if (path !== 'resolve')
207
+ return null;
208
+ const bot = query.get('domain');
209
+ const game = query.get('game');
210
+ if (!bot || !game)
211
+ return null;
212
+ return { bot, game };
213
+ },
214
+ externalBuild: ({ bot, game }) => [bot, { game }],
215
+ externalParse: (path, query) => {
216
+ if (path.includes('/') || path[0] === '+' || path.length <= 2)
217
+ return null;
218
+ const bot = path;
219
+ const game = query.get('game');
220
+ if (!game)
221
+ return null;
222
+ return { bot, game };
223
+ },
224
+ });
225
+ /**
226
+ * Named bot web app links
227
+ *
228
+ * Used to share named bot web apps.
229
+ *
230
+ * These links are different from bot attachment menu deep links,
231
+ * because they don't require the user to install an attachment menu,
232
+ * and a single bot can offer multiple named web apps, distinguished by
233
+ * their `short_name`.
234
+ */
235
+ export const botWebApp = deeplinkBuilder({
236
+ internalBuild: ({ bot, app, parameter }) => ['resolve', { domain: bot, appname: app, startapp: parameter }],
237
+ internalParse: (path, query) => {
238
+ if (path !== 'resolve')
239
+ return null;
240
+ const bot = query.get('domain');
241
+ const app = query.get('appname');
242
+ const parameter = query.get('startapp');
243
+ if (!bot || !app)
244
+ return null;
245
+ return { bot, app, parameter: parameter || undefined };
246
+ },
247
+ externalBuild: ({ bot, app, parameter }) => [`${bot}/${app}`, { startapp: parameter }],
248
+ externalParse: (path, query) => {
249
+ const [bot, app, rest] = path.split('/');
250
+ if (!app || rest)
251
+ return null;
252
+ const parameter = query.get('startapp');
253
+ return { bot, app, parameter: parameter || undefined };
254
+ },
255
+ });
256
+ //# sourceMappingURL=bots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bots.js","sourceRoot":"","sources":["../../../../src/utils/links/bots.ts"],"names":[],"mappings":"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","sourcesContent":["import { tl } from '@mtcute/tl'\n\nimport { isPresent } from '../type-assertions.js'\nimport { deeplinkBuilder } from './common.js'\n\n/**\n * Bot deeplinks\n *\n * Used to link to bots with a start parameter\n */\nexport const botStart = deeplinkBuilder<{\n /** Bot username */\n username: string\n /** Start parameter */\n parameter: string\n}>({\n internalBuild: ({ username, parameter }) => ['resolve', { domain: username, start: parameter }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const username = query.get('domain')\n const parameter = query.get('start')\n\n if (!username || !parameter) return null\n\n return { username, parameter }\n },\n externalBuild: ({ username, parameter }) => [username, { start: parameter }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const username = path\n const parameter = query.get('start')\n\n if (!parameter) return null\n\n return { username, parameter }\n },\n})\n\ntype BotAdminRight = Exclude<keyof tl.RawChatAdminRights, '_'>\n\nfunction normalizeBotAdmin(rights?: BotAdminRight[]): string | undefined {\n if (!rights?.length) return\n\n return rights\n .map((it) => {\n switch (it) {\n case 'changeInfo':\n return 'change_info'\n case 'postMessages':\n return 'post_messages'\n case 'editMessages':\n return 'edit_messages'\n case 'deleteMessages':\n return 'delete_messages'\n case 'banUsers':\n return 'restrict_members'\n case 'inviteUsers':\n return 'invite_users'\n case 'pinMessages':\n return 'pin_messages'\n case 'manageTopics':\n return 'manage_topics'\n case 'addAdmins':\n return 'promote_members'\n case 'manageCall':\n return 'manage_video_chats'\n case 'anonymous':\n return 'anonymous'\n case 'other':\n return 'manage_chat'\n case 'postStories':\n return 'post_stories'\n case 'editStories':\n return 'edit_stories'\n case 'deleteStories':\n return 'delete_stories'\n }\n })\n .join('+')\n}\n\nfunction parseBotAdmin(rights: string | null): BotAdminRight[] | undefined {\n if (!rights) return\n\n return rights\n .split('+')\n .map((it) => {\n switch (it) {\n case 'change_info':\n return 'changeInfo'\n case 'post_messages':\n return 'postMessages'\n case 'edit_messages':\n return 'editMessages'\n case 'delete_messages':\n return 'deleteMessages'\n case 'restrict_members':\n return 'banUsers'\n case 'invite_users':\n return 'inviteUsers'\n case 'pin_messages':\n return 'pinMessages'\n case 'manage_topics':\n return 'manageTopics'\n case 'promote_members':\n return 'addAdmins'\n case 'manage_video_chats':\n return 'manageCall'\n case 'anonymous':\n return 'anonymous'\n case 'manage_chat':\n return 'other'\n case 'post_stories':\n return 'postStories'\n case 'edit_stories':\n return 'editStories'\n case 'delete_stories':\n return 'deleteStories'\n default:\n return null\n }\n })\n .filter(isPresent)\n}\n\n/**\n * Bot add to group links\n *\n * Used to ask the user to add a bot to a group, optionally asking for admin rights.\n * Note that the user is still free to choose which rights to grant, and\n * whether to grant them at all.\n */\nexport const botAddToGroup = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** If specified, the client will call `/start parameter` on the bot once the bot has been added */\n parameter?: string\n /** Admin rights to request */\n admin?: BotAdminRight[]\n}>({\n internalBuild: ({ bot, parameter, admin }) => [\n 'resolve',\n { domain: bot, startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },\n ],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const parameter = query.get('startgroup')\n const admin = query.get('admin')\n\n if (!bot || parameter === null) return null\n\n return {\n bot,\n parameter: parameter === '' ? undefined : parameter,\n admin: parseBotAdmin(admin),\n }\n },\n\n externalBuild: ({ bot, parameter, admin }) => [\n bot,\n { startgroup: parameter ?? true, admin: normalizeBotAdmin(admin) },\n ],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const parameter = query.get('startgroup')\n const admin = query.get('admin')\n\n if (parameter === null) return null\n\n return {\n bot,\n parameter: parameter === '' ? undefined : parameter,\n admin: parseBotAdmin(admin),\n }\n },\n})\n\n/**\n * Bot add to channel links\n *\n * Used to ask the user to add a bot to a channel, optionally with admin rights.\n * Note that the user is still free to choose which rights to grant, and\n * whether to grant them at all.\n */\nexport const botAddToChannel = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** Admin rights to request */\n admin?: BotAdminRight[]\n}>({\n internalBuild: ({ bot, admin }) => [\n 'resolve',\n { domain: bot, startchannel: true, admin: normalizeBotAdmin(admin) },\n ],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const parameter = query.get('startchannel')\n const admin = query.get('admin')\n\n if (!bot || parameter === null) return null\n\n return {\n bot,\n admin: parseBotAdmin(admin),\n }\n },\n\n externalBuild: ({ bot, admin }) => [bot, { startchannel: true, admin: normalizeBotAdmin(admin) }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const parameter = query.get('startchannel')\n const admin = query.get('admin')\n\n if (parameter === null) return null\n\n return {\n bot,\n admin: parseBotAdmin(admin),\n }\n },\n})\n\n/**\n * Game links\n *\n * Used to share games.\n */\nexport const botGame = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** Game short name */\n game: string\n}>({\n internalBuild: ({ bot, game }) => ['resolve', { domain: bot, game }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const game = query.get('game')\n\n if (!bot || !game) return null\n\n return { bot, game }\n },\n externalBuild: ({ bot, game }) => [bot, { game }],\n externalParse: (path, query) => {\n if (path.includes('/') || path[0] === '+' || path.length <= 2) return null\n\n const bot = path\n const game = query.get('game')\n\n if (!game) return null\n\n return { bot, game }\n },\n})\n\n/**\n * Named bot web app links\n *\n * Used to share named bot web apps.\n *\n * These links are different from bot attachment menu deep links,\n * because they don't require the user to install an attachment menu,\n * and a single bot can offer multiple named web apps, distinguished by\n * their `short_name`.\n */\nexport const botWebApp = deeplinkBuilder<{\n /** Bot username */\n bot: string\n /** App short name */\n app: string\n /** Parameter to be passed by the client to messages.requestAppWebView as `start_param` */\n parameter?: string\n}>({\n internalBuild: ({ bot, app, parameter }) => ['resolve', { domain: bot, appname: app, startapp: parameter }],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const bot = query.get('domain')\n const app = query.get('appname')\n const parameter = query.get('startapp')\n\n if (!bot || !app) return null\n\n return { bot, app, parameter: parameter || undefined }\n },\n\n externalBuild: ({ bot, app, parameter }) => [`${bot}/${app}`, { startapp: parameter }],\n externalParse: (path, query) => {\n const [bot, app, rest] = path.split('/')\n\n if (!app || rest) return null\n\n const parameter = query.get('startapp')\n\n return { bot, app, parameter: parameter || undefined }\n },\n})\n"]}
@@ -0,0 +1,7 @@
1
+ export * from './bots.js';
2
+ export * from './calls.js';
3
+ export * from './chat.js';
4
+ export * from './misc.js';
5
+ export * from './proxy.js';
6
+ export * from './stickers.js';
7
+ export * from './user.js';
@@ -0,0 +1,8 @@
1
+ export * from './bots.js';
2
+ export * from './calls.js';
3
+ export * from './chat.js';
4
+ export * from './misc.js';
5
+ export * from './proxy.js';
6
+ export * from './stickers.js';
7
+ export * from './user.js';
8
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../src/utils/links/bundle.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA","sourcesContent":["export * from './bots.js'\nexport * from './calls.js'\nexport * from './chat.js'\nexport * from './misc.js'\nexport * from './proxy.js'\nexport * from './stickers.js'\nexport * from './user.js'\n"]}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Video chat/Livestream links
3
+ *
4
+ * Used to join video/voice chats in groups, and livestreams in channels.
5
+ * Such links are generated using phone.exportGroupCallInvite.
6
+ */
7
+ export declare const videoChat: import("./common.js").Deeplink<{
8
+ username: string;
9
+ /**
10
+ * Invite hash exported if the `can_self_unmute` flag is set when calling `phone.exportGroupCallInvite`:
11
+ * should be passed to `phone.joinGroupCall`, allows the user to speak in livestreams
12
+ * or muted group chats.
13
+ */
14
+ inviteHash?: string | undefined;
15
+ isLivestream?: boolean | undefined;
16
+ }>;
@@ -0,0 +1,56 @@
1
+ import { deeplinkBuilder } from './common.js';
2
+ /**
3
+ * Video chat/Livestream links
4
+ *
5
+ * Used to join video/voice chats in groups, and livestreams in channels.
6
+ * Such links are generated using phone.exportGroupCallInvite.
7
+ */
8
+ export const videoChat = deeplinkBuilder({
9
+ internalBuild: ({ username, inviteHash, isLivestream }) => [
10
+ 'resolve',
11
+ {
12
+ domain: username,
13
+ [isLivestream ? 'livestream' : 'videochat']: inviteHash || true,
14
+ },
15
+ ],
16
+ externalBuild: ({ username, inviteHash, isLivestream }) => [
17
+ username,
18
+ {
19
+ [isLivestream ? 'livestream' : 'videochat']: inviteHash || true,
20
+ },
21
+ ],
22
+ internalParse: (path, query) => {
23
+ if (path !== 'resolve')
24
+ return null;
25
+ const domain = query.get('domain');
26
+ if (!domain)
27
+ return null;
28
+ const livestream = query.get('livestream');
29
+ const videochat = query.get('videochat');
30
+ const voicechat = query.get('voicechat');
31
+ if (livestream === null && videochat === null && voicechat === null)
32
+ return null;
33
+ const inviteHash = livestream || videochat || voicechat;
34
+ return {
35
+ username: domain,
36
+ inviteHash: inviteHash || undefined,
37
+ isLivestream: livestream !== null,
38
+ };
39
+ },
40
+ externalParse: (path, query) => {
41
+ if (path.length <= 1 || path.includes('/') || path[0] === '+')
42
+ return null;
43
+ const livestream = query.get('livestream');
44
+ const videochat = query.get('videochat');
45
+ const voicechat = query.get('voicechat');
46
+ if (livestream === null && videochat === null && voicechat === null)
47
+ return null;
48
+ const inviteHash = livestream || videochat || voicechat;
49
+ return {
50
+ username: path,
51
+ inviteHash: inviteHash || undefined,
52
+ isLivestream: livestream !== null,
53
+ };
54
+ },
55
+ });
56
+ //# sourceMappingURL=calls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../../src/utils/links/calls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CASrC;IACC,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QACvD,SAAS;QACT;YACI,MAAM,EAAE,QAAQ;YAChB,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,UAAU,IAAI,IAAI;SAClE;KACJ;IACD,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QACvD,QAAQ;QACR;YACI,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,UAAU,IAAI,IAAI;SAClE;KACJ;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAEnC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAClC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QAExB,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAExC,IAAI,UAAU,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAEhF,MAAM,UAAU,GAAG,UAAU,IAAI,SAAS,IAAI,SAAS,CAAA;QAEvD,OAAO;YACH,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,UAAU,IAAI,SAAS;YACnC,YAAY,EAAE,UAAU,KAAK,IAAI;SACpC,CAAA;IACL,CAAC;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAA;QAE1E,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAExC,IAAI,UAAU,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAEhF,MAAM,UAAU,GAAG,UAAU,IAAI,SAAS,IAAI,SAAS,CAAA;QAEvD,OAAO;YACH,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,UAAU,IAAI,SAAS;YACnC,YAAY,EAAE,UAAU,KAAK,IAAI;SACpC,CAAA;IACL,CAAC;CACJ,CAAC,CAAA","sourcesContent":["import { deeplinkBuilder } from './common.js'\n\n/**\n * Video chat/Livestream links\n *\n * Used to join video/voice chats in groups, and livestreams in channels.\n * Such links are generated using phone.exportGroupCallInvite.\n */\nexport const videoChat = deeplinkBuilder<{\n username: string\n /**\n * Invite hash exported if the `can_self_unmute` flag is set when calling `phone.exportGroupCallInvite`:\n * should be passed to `phone.joinGroupCall`, allows the user to speak in livestreams\n * or muted group chats.\n */\n inviteHash?: string\n isLivestream?: boolean\n}>({\n internalBuild: ({ username, inviteHash, isLivestream }) => [\n 'resolve',\n {\n domain: username,\n [isLivestream ? 'livestream' : 'videochat']: inviteHash || true,\n },\n ],\n externalBuild: ({ username, inviteHash, isLivestream }) => [\n username,\n {\n [isLivestream ? 'livestream' : 'videochat']: inviteHash || true,\n },\n ],\n internalParse: (path, query) => {\n if (path !== 'resolve') return null\n\n const domain = query.get('domain')\n if (!domain) return null\n\n const livestream = query.get('livestream')\n const videochat = query.get('videochat')\n const voicechat = query.get('voicechat')\n\n if (livestream === null && videochat === null && voicechat === null) return null\n\n const inviteHash = livestream || videochat || voicechat\n\n return {\n username: domain,\n inviteHash: inviteHash || undefined,\n isLivestream: livestream !== null,\n }\n },\n externalParse: (path, query) => {\n if (path.length <= 1 || path.includes('/') || path[0] === '+') return null\n\n const livestream = query.get('livestream')\n const videochat = query.get('videochat')\n const voicechat = query.get('voicechat')\n\n if (livestream === null && videochat === null && voicechat === null) return null\n\n const inviteHash = livestream || videochat || voicechat\n\n return {\n username: path,\n inviteHash: inviteHash || undefined,\n isLivestream: livestream !== null,\n }\n },\n})\n"]}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Chat invite links
3
+ *
4
+ * Used to invite users to private groups and channels
5
+ */
6
+ export declare const chatInvite: import("./common.js").Deeplink<{
7
+ hash: string;
8
+ }>;
9
+ /**
10
+ * Chat folder links
11
+ */
12
+ export declare const chatFolder: import("./common.js").Deeplink<{
13
+ slug: string;
14
+ }>;
15
+ /**
16
+ * Message links
17
+ *
18
+ * Used to link to specific messages in public or private groups and channels.
19
+ *
20
+ * Note: `channelId` is a non-marked channel ID
21
+ */
22
+ export declare const message: import("./common.js").Deeplink<({
23
+ username: string;
24
+ } | {
25
+ channelId: number;
26
+ }) & {
27
+ /** Message ID */
28
+ id: number;
29
+ /** Thread ID */
30
+ threadId?: number | undefined;
31
+ /**
32
+ * For comments, `id` will contain the message ID of the channel message that started
33
+ * the comment section and this field will contain the message ID of the comment in
34
+ * the discussion group.
35
+ */
36
+ commentId?: number | undefined;
37
+ /**
38
+ * Timestamp at which to start playing the media file present
39
+ * in the body or in the webpage preview of the message
40
+ */
41
+ mediaTimestamp?: number | undefined;
42
+ /**
43
+ * Whether this is a link to a specific message in the album or to the entire album
44
+ */
45
+ single?: boolean | undefined;
46
+ }>;