@mtcute/core 0.1.1 → 0.1.2

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 (253) hide show
  1. package/cjs/network/auth-key.test.d.ts +1 -0
  2. package/cjs/network/auth-key.test.js +111 -0
  3. package/cjs/network/auth-key.test.js.map +1 -0
  4. package/cjs/network/config-manager.js +2 -1
  5. package/cjs/network/config-manager.js.map +1 -1
  6. package/cjs/network/config-manager.test.d.ts +1 -0
  7. package/cjs/network/config-manager.test.js +170 -0
  8. package/cjs/network/config-manager.test.js.map +1 -0
  9. package/cjs/network/network-manager.js +1 -1
  10. package/cjs/network/persistent-connection.test.d.ts +1 -0
  11. package/cjs/network/persistent-connection.test.js +157 -0
  12. package/cjs/network/persistent-connection.test.js.map +1 -0
  13. package/cjs/network/session-connection.js +3 -2
  14. package/cjs/network/session-connection.js.map +1 -1
  15. package/cjs/network/transports/intermediate.test.d.ts +1 -0
  16. package/cjs/network/transports/intermediate.test.js +86 -0
  17. package/cjs/network/transports/intermediate.test.js.map +1 -0
  18. package/cjs/network/transports/obfuscated.js +1 -1
  19. package/cjs/network/transports/obfuscated.js.map +1 -1
  20. package/cjs/network/transports/obfuscated.test.d.ts +1 -0
  21. package/cjs/network/transports/obfuscated.test.js +131 -0
  22. package/cjs/network/transports/obfuscated.test.js.map +1 -0
  23. package/cjs/network/transports/tcp.js +1 -1
  24. package/cjs/network/transports/tcp.js.map +1 -1
  25. package/cjs/network/transports/tcp.test.d.ts +1 -0
  26. package/cjs/network/transports/tcp.test.js +97 -0
  27. package/cjs/network/transports/tcp.test.js.map +1 -0
  28. package/cjs/network/transports/websocket.test.d.ts +1 -0
  29. package/cjs/network/transports/websocket.test.js +91 -0
  30. package/cjs/network/transports/websocket.test.js.map +1 -0
  31. package/cjs/storage/json.test.d.ts +1 -0
  32. package/cjs/storage/json.test.js +37 -0
  33. package/cjs/storage/json.test.js.map +1 -0
  34. package/cjs/storage/localstorage.test.d.ts +1 -0
  35. package/cjs/storage/localstorage.test.js +23 -0
  36. package/cjs/storage/localstorage.test.js.map +1 -0
  37. package/cjs/storage/memory.test.d.ts +1 -0
  38. package/cjs/storage/memory.test.js +47 -0
  39. package/cjs/storage/memory.test.js.map +1 -0
  40. package/cjs/utils/async-lock.test.d.ts +1 -0
  41. package/cjs/utils/async-lock.test.js +25 -0
  42. package/cjs/utils/async-lock.test.js.map +1 -0
  43. package/cjs/utils/bigint-utils.test.d.ts +1 -0
  44. package/cjs/utils/bigint-utils.test.js +150 -0
  45. package/cjs/utils/bigint-utils.test.js.map +1 -0
  46. package/cjs/utils/buffer-utils.test.d.ts +1 -0
  47. package/cjs/utils/buffer-utils.test.js +69 -0
  48. package/cjs/utils/buffer-utils.test.js.map +1 -0
  49. package/cjs/utils/condition-variable.test.d.ts +1 -0
  50. package/cjs/utils/condition-variable.test.js +27 -0
  51. package/cjs/utils/condition-variable.test.js.map +1 -0
  52. package/cjs/utils/controllable-promise.test.d.ts +1 -0
  53. package/cjs/utils/controllable-promise.test.js +17 -0
  54. package/cjs/utils/controllable-promise.test.js.map +1 -0
  55. package/cjs/utils/crypto/keys.test.d.ts +1 -0
  56. package/cjs/utils/crypto/keys.test.js +40 -0
  57. package/cjs/utils/crypto/keys.test.js.map +1 -0
  58. package/cjs/utils/crypto/miller-rabin.test.d.ts +1 -0
  59. package/cjs/utils/crypto/miller-rabin.test.js +60 -0
  60. package/cjs/utils/crypto/miller-rabin.test.js.map +1 -0
  61. package/cjs/utils/crypto/mtproto.test.d.ts +1 -0
  62. package/cjs/utils/crypto/mtproto.test.js +47 -0
  63. package/cjs/utils/crypto/mtproto.test.js.map +1 -0
  64. package/cjs/utils/crypto/node.test.d.ts +1 -0
  65. package/cjs/utils/crypto/node.test.js +13 -0
  66. package/cjs/utils/crypto/node.test.js.map +1 -0
  67. package/cjs/utils/crypto/password.test.d.ts +1 -0
  68. package/cjs/utils/crypto/password.test.js +95 -0
  69. package/cjs/utils/crypto/password.test.js.map +1 -0
  70. package/cjs/utils/crypto/utils.test.d.ts +1 -0
  71. package/cjs/utils/crypto/utils.test.js +49 -0
  72. package/cjs/utils/crypto/utils.test.js.map +1 -0
  73. package/cjs/utils/crypto/web.test.d.ts +1 -0
  74. package/cjs/utils/crypto/web.test.js +17 -0
  75. package/cjs/utils/crypto/web.test.js.map +1 -0
  76. package/cjs/utils/deque.test.d.ts +1 -0
  77. package/cjs/utils/deque.test.js +128 -0
  78. package/cjs/utils/deque.test.js.map +1 -0
  79. package/cjs/utils/function-utils.test.d.ts +1 -0
  80. package/cjs/utils/function-utils.test.js +23 -0
  81. package/cjs/utils/function-utils.test.js.map +1 -0
  82. package/cjs/utils/linked-list.test.d.ts +1 -0
  83. package/cjs/utils/linked-list.test.js +36 -0
  84. package/cjs/utils/linked-list.test.js.map +1 -0
  85. package/cjs/utils/links/bots.test.d.ts +1 -0
  86. package/cjs/utils/links/bots.test.js +152 -0
  87. package/cjs/utils/links/bots.test.js.map +1 -0
  88. package/cjs/utils/links/chat.test.d.ts +1 -0
  89. package/cjs/utils/links/chat.test.js +84 -0
  90. package/cjs/utils/links/chat.test.js.map +1 -0
  91. package/cjs/utils/links/misc.test.d.ts +1 -0
  92. package/cjs/utils/links/misc.test.js +153 -0
  93. package/cjs/utils/links/misc.test.js.map +1 -0
  94. package/cjs/utils/links/proxy.test.d.ts +1 -0
  95. package/cjs/utils/links/proxy.test.js +74 -0
  96. package/cjs/utils/links/proxy.test.js.map +1 -0
  97. package/cjs/utils/links/user.test.d.ts +1 -0
  98. package/cjs/utils/links/user.test.js +63 -0
  99. package/cjs/utils/links/user.test.js.map +1 -0
  100. package/cjs/utils/logger.test.d.ts +1 -0
  101. package/cjs/utils/logger.test.js +125 -0
  102. package/cjs/utils/logger.test.js.map +1 -0
  103. package/cjs/utils/long-utils.test.d.ts +1 -0
  104. package/cjs/utils/long-utils.test.js +158 -0
  105. package/cjs/utils/long-utils.test.js.map +1 -0
  106. package/cjs/utils/lru-map.test.d.ts +1 -0
  107. package/cjs/utils/lru-map.test.js +96 -0
  108. package/cjs/utils/lru-map.test.js.map +1 -0
  109. package/cjs/utils/lru-set.test.d.ts +1 -0
  110. package/cjs/utils/lru-set.test.js +77 -0
  111. package/cjs/utils/lru-set.test.js.map +1 -0
  112. package/cjs/utils/peer-utils.test.d.ts +1 -0
  113. package/cjs/utils/peer-utils.test.js +122 -0
  114. package/cjs/utils/peer-utils.test.js.map +1 -0
  115. package/cjs/utils/sorted-array.test.d.ts +1 -0
  116. package/cjs/utils/sorted-array.test.js +66 -0
  117. package/cjs/utils/sorted-array.test.js.map +1 -0
  118. package/cjs/utils/string-session.test.d.ts +1 -0
  119. package/cjs/utils/string-session.test.js +106 -0
  120. package/cjs/utils/string-session.test.js.map +1 -0
  121. package/cjs/utils/tl-json.test.d.ts +1 -0
  122. package/cjs/utils/tl-json.test.js +83 -0
  123. package/cjs/utils/tl-json.test.js.map +1 -0
  124. package/cjs/utils/type-assertions.test.d.ts +1 -0
  125. package/cjs/utils/type-assertions.test.js +67 -0
  126. package/cjs/utils/type-assertions.test.js.map +1 -0
  127. package/esm/network/auth-key.test.d.ts +1 -0
  128. package/esm/network/auth-key.test.js +106 -0
  129. package/esm/network/auth-key.test.js.map +1 -0
  130. package/esm/network/config-manager.js +2 -1
  131. package/esm/network/config-manager.js.map +1 -1
  132. package/esm/network/config-manager.test.d.ts +1 -0
  133. package/esm/network/config-manager.test.js +168 -0
  134. package/esm/network/config-manager.test.js.map +1 -0
  135. package/esm/network/network-manager.js +1 -1
  136. package/esm/network/persistent-connection.test.d.ts +1 -0
  137. package/esm/network/persistent-connection.test.js +155 -0
  138. package/esm/network/persistent-connection.test.js.map +1 -0
  139. package/esm/network/session-connection.js +3 -2
  140. package/esm/network/session-connection.js.map +1 -1
  141. package/esm/network/transports/intermediate.test.d.ts +1 -0
  142. package/esm/network/transports/intermediate.test.js +84 -0
  143. package/esm/network/transports/intermediate.test.js.map +1 -0
  144. package/esm/network/transports/obfuscated.js +1 -1
  145. package/esm/network/transports/obfuscated.js.map +1 -1
  146. package/esm/network/transports/obfuscated.test.d.ts +1 -0
  147. package/esm/network/transports/obfuscated.test.js +129 -0
  148. package/esm/network/transports/obfuscated.test.js.map +1 -0
  149. package/esm/network/transports/tcp.js +1 -1
  150. package/esm/network/transports/tcp.js.map +1 -1
  151. package/esm/network/transports/tcp.test.d.ts +1 -0
  152. package/esm/network/transports/tcp.test.js +95 -0
  153. package/esm/network/transports/tcp.test.js.map +1 -0
  154. package/esm/network/transports/websocket.test.d.ts +1 -0
  155. package/esm/network/transports/websocket.test.js +89 -0
  156. package/esm/network/transports/websocket.test.js.map +1 -0
  157. package/esm/storage/json.test.d.ts +1 -0
  158. package/esm/storage/json.test.js +35 -0
  159. package/esm/storage/json.test.js.map +1 -0
  160. package/esm/storage/localstorage.test.d.ts +1 -0
  161. package/esm/storage/localstorage.test.js +21 -0
  162. package/esm/storage/localstorage.test.js.map +1 -0
  163. package/esm/storage/memory.test.d.ts +1 -0
  164. package/esm/storage/memory.test.js +45 -0
  165. package/esm/storage/memory.test.js.map +1 -0
  166. package/esm/utils/async-lock.test.d.ts +1 -0
  167. package/esm/utils/async-lock.test.js +23 -0
  168. package/esm/utils/async-lock.test.js.map +1 -0
  169. package/esm/utils/bigint-utils.test.d.ts +1 -0
  170. package/esm/utils/bigint-utils.test.js +148 -0
  171. package/esm/utils/bigint-utils.test.js.map +1 -0
  172. package/esm/utils/buffer-utils.test.d.ts +1 -0
  173. package/esm/utils/buffer-utils.test.js +67 -0
  174. package/esm/utils/buffer-utils.test.js.map +1 -0
  175. package/esm/utils/condition-variable.test.d.ts +1 -0
  176. package/esm/utils/condition-variable.test.js +25 -0
  177. package/esm/utils/condition-variable.test.js.map +1 -0
  178. package/esm/utils/controllable-promise.test.d.ts +1 -0
  179. package/esm/utils/controllable-promise.test.js +15 -0
  180. package/esm/utils/controllable-promise.test.js.map +1 -0
  181. package/esm/utils/crypto/keys.test.d.ts +1 -0
  182. package/esm/utils/crypto/keys.test.js +38 -0
  183. package/esm/utils/crypto/keys.test.js.map +1 -0
  184. package/esm/utils/crypto/miller-rabin.test.d.ts +1 -0
  185. package/esm/utils/crypto/miller-rabin.test.js +58 -0
  186. package/esm/utils/crypto/miller-rabin.test.js.map +1 -0
  187. package/esm/utils/crypto/mtproto.test.d.ts +1 -0
  188. package/esm/utils/crypto/mtproto.test.js +45 -0
  189. package/esm/utils/crypto/mtproto.test.js.map +1 -0
  190. package/esm/utils/crypto/node.test.d.ts +1 -0
  191. package/esm/utils/crypto/node.test.js +11 -0
  192. package/esm/utils/crypto/node.test.js.map +1 -0
  193. package/esm/utils/crypto/password.test.d.ts +1 -0
  194. package/esm/utils/crypto/password.test.js +90 -0
  195. package/esm/utils/crypto/password.test.js.map +1 -0
  196. package/esm/utils/crypto/utils.test.d.ts +1 -0
  197. package/esm/utils/crypto/utils.test.js +47 -0
  198. package/esm/utils/crypto/utils.test.js.map +1 -0
  199. package/esm/utils/crypto/web.test.d.ts +1 -0
  200. package/esm/utils/crypto/web.test.js +15 -0
  201. package/esm/utils/crypto/web.test.js.map +1 -0
  202. package/esm/utils/deque.test.d.ts +1 -0
  203. package/esm/utils/deque.test.js +126 -0
  204. package/esm/utils/deque.test.js.map +1 -0
  205. package/esm/utils/function-utils.test.d.ts +1 -0
  206. package/esm/utils/function-utils.test.js +21 -0
  207. package/esm/utils/function-utils.test.js.map +1 -0
  208. package/esm/utils/linked-list.test.d.ts +1 -0
  209. package/esm/utils/linked-list.test.js +34 -0
  210. package/esm/utils/linked-list.test.js.map +1 -0
  211. package/esm/utils/links/bots.test.d.ts +1 -0
  212. package/esm/utils/links/bots.test.js +150 -0
  213. package/esm/utils/links/bots.test.js.map +1 -0
  214. package/esm/utils/links/chat.test.d.ts +1 -0
  215. package/esm/utils/links/chat.test.js +82 -0
  216. package/esm/utils/links/chat.test.js.map +1 -0
  217. package/esm/utils/links/misc.test.d.ts +1 -0
  218. package/esm/utils/links/misc.test.js +151 -0
  219. package/esm/utils/links/misc.test.js.map +1 -0
  220. package/esm/utils/links/proxy.test.d.ts +1 -0
  221. package/esm/utils/links/proxy.test.js +72 -0
  222. package/esm/utils/links/proxy.test.js.map +1 -0
  223. package/esm/utils/links/user.test.d.ts +1 -0
  224. package/esm/utils/links/user.test.js +61 -0
  225. package/esm/utils/links/user.test.js.map +1 -0
  226. package/esm/utils/logger.test.d.ts +1 -0
  227. package/esm/utils/logger.test.js +120 -0
  228. package/esm/utils/logger.test.js.map +1 -0
  229. package/esm/utils/long-utils.test.d.ts +1 -0
  230. package/esm/utils/long-utils.test.js +153 -0
  231. package/esm/utils/long-utils.test.js.map +1 -0
  232. package/esm/utils/lru-map.test.d.ts +1 -0
  233. package/esm/utils/lru-map.test.js +94 -0
  234. package/esm/utils/lru-map.test.js.map +1 -0
  235. package/esm/utils/lru-set.test.d.ts +1 -0
  236. package/esm/utils/lru-set.test.js +72 -0
  237. package/esm/utils/lru-set.test.js.map +1 -0
  238. package/esm/utils/peer-utils.test.d.ts +1 -0
  239. package/esm/utils/peer-utils.test.js +117 -0
  240. package/esm/utils/peer-utils.test.js.map +1 -0
  241. package/esm/utils/sorted-array.test.d.ts +1 -0
  242. package/esm/utils/sorted-array.test.js +64 -0
  243. package/esm/utils/sorted-array.test.js.map +1 -0
  244. package/esm/utils/string-session.test.d.ts +1 -0
  245. package/esm/utils/string-session.test.js +104 -0
  246. package/esm/utils/string-session.test.js.map +1 -0
  247. package/esm/utils/tl-json.test.d.ts +1 -0
  248. package/esm/utils/tl-json.test.js +81 -0
  249. package/esm/utils/tl-json.test.js.map +1 -0
  250. package/esm/utils/type-assertions.test.d.ts +1 -0
  251. package/esm/utils/type-assertions.test.js +65 -0
  252. package/esm/utils/type-assertions.test.js.map +1 -0
  253. package/package.json +2 -2
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const linked_list_js_1 = require("./linked-list.js");
5
+ (0, vitest_1.describe)('SortedLinkedList', () => {
6
+ const ascendingComparator = (a, b) => a - b;
7
+ (0, vitest_1.it)('should add items in the correct order', () => {
8
+ const list = new linked_list_js_1.SortedLinkedList(ascendingComparator);
9
+ list.add(3);
10
+ list.add(1);
11
+ list.add(2);
12
+ (0, vitest_1.expect)(list.popFront()).eq(1);
13
+ (0, vitest_1.expect)(list.popFront()).eq(2);
14
+ (0, vitest_1.expect)(list.popFront()).eq(3);
15
+ });
16
+ (0, vitest_1.it)('should allow deleting nodes using _remove', () => {
17
+ const list = new linked_list_js_1.SortedLinkedList(ascendingComparator);
18
+ list.add(3);
19
+ list.add(1);
20
+ list.add(2);
21
+ const node = list._first.n;
22
+ list._remove(node);
23
+ (0, vitest_1.expect)(list.popFront()).eq(1);
24
+ (0, vitest_1.expect)(list.popFront()).eq(3);
25
+ });
26
+ (0, vitest_1.it)('should clear', () => {
27
+ const list = new linked_list_js_1.SortedLinkedList(ascendingComparator);
28
+ list.add(3);
29
+ list.add(1);
30
+ list.add(2);
31
+ list.clear();
32
+ (0, vitest_1.expect)(list.length).eq(0);
33
+ (0, vitest_1.expect)(list.popFront()).eq(undefined);
34
+ });
35
+ });
36
+ //# sourceMappingURL=linked-list.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linked-list.test.js","sourceRoot":"","sources":["../../../src/utils/linked-list.test.ts"],"names":[],"mappings":";;AAAA,mCAA6C;AAE7C,qDAAmD;AAEnD,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,MAAM,mBAAmB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;IAE3D,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,MAAM,IAAI,GAAG,IAAI,iCAAgB,CAAC,mBAAmB,CAAC,CAAA;QAEtD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAEX,IAAA,eAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAA,eAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAA,eAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,IAAI,iCAAgB,CAAC,mBAAmB,CAAC,CAAA;QAEtD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAEX,MAAM,IAAI,GAAG,IAAI,CAAC,MAAO,CAAC,CAAE,CAAA;QAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAElB,IAAA,eAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAA,eAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,IAAA,WAAE,EAAC,cAAc,EAAE,GAAG,EAAE;QACpB,MAAM,IAAI,GAAG,IAAI,iCAAgB,CAAC,mBAAmB,CAAC,CAAA;QAEtD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAEX,IAAI,CAAC,KAAK,EAAE,CAAA;QAEZ,IAAA,eAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACzB,IAAA,eAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA","sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { SortedLinkedList } from './linked-list.js'\n\ndescribe('SortedLinkedList', () => {\n const ascendingComparator = (a: number, b: number) => a - b\n\n it('should add items in the correct order', () => {\n const list = new SortedLinkedList(ascendingComparator)\n\n list.add(3)\n list.add(1)\n list.add(2)\n\n expect(list.popFront()).eq(1)\n expect(list.popFront()).eq(2)\n expect(list.popFront()).eq(3)\n })\n\n it('should allow deleting nodes using _remove', () => {\n const list = new SortedLinkedList(ascendingComparator)\n\n list.add(3)\n list.add(1)\n list.add(2)\n\n const node = list._first!.n!\n\n list._remove(node)\n\n expect(list.popFront()).eq(1)\n expect(list.popFront()).eq(3)\n })\n\n it('should clear', () => {\n const list = new SortedLinkedList(ascendingComparator)\n\n list.add(3)\n list.add(1)\n list.add(2)\n\n list.clear()\n\n expect(list.length).eq(0)\n expect(list.popFront()).eq(undefined)\n })\n})\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
4
+ const vitest_1 = require("vitest");
5
+ const index_js_1 = require("./index.js");
6
+ (0, vitest_1.describe)('Deep links', function () {
7
+ (0, vitest_1.describe)('Bot start links', () => {
8
+ (0, vitest_1.it)('should generate t.me/username?start=parameter links', () => {
9
+ (0, vitest_1.expect)(index_js_1.links.botStart({ username: 'username', parameter: 'parameter' })).eq('https://t.me/username?start=parameter');
10
+ });
11
+ (0, vitest_1.it)('should generate tg://resolve?domain=username&start=parameter links', () => {
12
+ (0, vitest_1.expect)(index_js_1.links.botStart({ username: 'username', parameter: 'parameter', protocol: 'tg' })).eq('tg://resolve?domain=username&start=parameter');
13
+ });
14
+ (0, vitest_1.it)('should parse t.me/username?start=parameter links', () => {
15
+ (0, vitest_1.expect)(index_js_1.links.botStart.parse('https://t.me/username?start=parameter')).eql({
16
+ username: 'username',
17
+ parameter: 'parameter',
18
+ });
19
+ });
20
+ (0, vitest_1.it)('should parse tg://resolve?domain=username&start=parameter links', () => {
21
+ (0, vitest_1.expect)(index_js_1.links.botStart.parse('tg://resolve?domain=username&start=parameter')).eql({
22
+ username: 'username',
23
+ parameter: 'parameter',
24
+ });
25
+ });
26
+ });
27
+ (0, vitest_1.describe)('Bot add to group links', () => {
28
+ (0, vitest_1.it)('should generate t.me links', () => {
29
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup({ bot: 'bot_username' })).eq('https://t.me/bot_username?startgroup');
30
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup({ bot: 'bot_username', parameter: '' })).eq('https://t.me/bot_username?startgroup=');
31
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup({ bot: 'bot_username', parameter: 'parameter' })).eq('https://t.me/bot_username?startgroup=parameter');
32
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup({ bot: 'bot_username', admin: ['postStories'] })).eq('https://t.me/bot_username?startgroup&admin=post_stories');
33
+ });
34
+ (0, vitest_1.it)('should generate tg://resolve links', () => {
35
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup({ bot: 'bot_username', protocol: 'tg' })).eq('tg://resolve?domain=bot_username&startgroup');
36
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup({ bot: 'bot_username', parameter: 'parameter', protocol: 'tg' })).eq('tg://resolve?domain=bot_username&startgroup=parameter');
37
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup({ bot: 'bot_username', admin: ['postStories'], protocol: 'tg' })).eq('tg://resolve?domain=bot_username&startgroup&admin=post_stories');
38
+ });
39
+ (0, vitest_1.it)('should parse t.me links', () => {
40
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup.parse('https://t.me/bot_username?startgroup')).eql({
41
+ bot: 'bot_username',
42
+ parameter: undefined,
43
+ admin: undefined,
44
+ });
45
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup.parse('https://t.me/bot_username?startgroup=parameter')).eql({
46
+ bot: 'bot_username',
47
+ parameter: 'parameter',
48
+ admin: undefined,
49
+ });
50
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup.parse('https://t.me/bot_username?startgroup&admin=post_stories')).eql({
51
+ bot: 'bot_username',
52
+ parameter: undefined,
53
+ admin: ['postStories'],
54
+ });
55
+ });
56
+ (0, vitest_1.it)('should parse tg://resolve links', () => {
57
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup.parse('tg://resolve?domain=bot_username&startgroup')).eql({
58
+ bot: 'bot_username',
59
+ parameter: undefined,
60
+ admin: undefined,
61
+ });
62
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup.parse('tg://resolve?domain=bot_username&startgroup=parameter')).eql({
63
+ bot: 'bot_username',
64
+ parameter: 'parameter',
65
+ admin: undefined,
66
+ });
67
+ (0, vitest_1.expect)(index_js_1.links.botAddToGroup.parse('tg://resolve?domain=bot_username&startgroup&admin=post_stories')).eql({
68
+ bot: 'bot_username',
69
+ parameter: undefined,
70
+ admin: ['postStories'],
71
+ });
72
+ });
73
+ });
74
+ (0, vitest_1.describe)('Bot add to channel links', () => {
75
+ (0, vitest_1.it)('should generate t.me links', () => {
76
+ (0, vitest_1.expect)(index_js_1.links.botAddToChannel({ bot: 'bot_username' })).eq('https://t.me/bot_username?startchannel');
77
+ (0, vitest_1.expect)(index_js_1.links.botAddToChannel({ bot: 'bot_username', admin: ['postStories'] })).eq('https://t.me/bot_username?startchannel&admin=post_stories');
78
+ });
79
+ (0, vitest_1.it)('should generate tg://resolve links', () => {
80
+ (0, vitest_1.expect)(index_js_1.links.botAddToChannel({ bot: 'bot_username', protocol: 'tg' })).eq('tg://resolve?domain=bot_username&startchannel');
81
+ (0, vitest_1.expect)(index_js_1.links.botAddToChannel({ bot: 'bot_username', admin: ['postStories'], protocol: 'tg' })).eq('tg://resolve?domain=bot_username&startchannel&admin=post_stories');
82
+ });
83
+ (0, vitest_1.it)('should parse t.me links', () => {
84
+ (0, vitest_1.expect)(index_js_1.links.botAddToChannel.parse('https://t.me/bot_username?startchannel')).eql({
85
+ bot: 'bot_username',
86
+ admin: undefined,
87
+ });
88
+ (0, vitest_1.expect)(index_js_1.links.botAddToChannel.parse('https://t.me/bot_username?startchannel&admin=post_stories')).eql({
89
+ bot: 'bot_username',
90
+ admin: ['postStories'],
91
+ });
92
+ });
93
+ (0, vitest_1.it)('should parse tg://resolve links', () => {
94
+ (0, vitest_1.expect)(index_js_1.links.botAddToChannel.parse('tg://resolve?domain=bot_username&startchannel')).eql({
95
+ bot: 'bot_username',
96
+ admin: undefined,
97
+ });
98
+ (0, vitest_1.expect)(index_js_1.links.botAddToChannel.parse('tg://resolve?domain=bot_username&startchannel&admin=post_stories')).eql({ bot: 'bot_username', admin: ['postStories'] });
99
+ });
100
+ });
101
+ (0, vitest_1.describe)('Game links', () => {
102
+ (0, vitest_1.it)('should generate t.me links', () => {
103
+ (0, vitest_1.expect)(index_js_1.links.botGame({ bot: 'bot_username', game: 'short_name' })).eq('https://t.me/bot_username?game=short_name');
104
+ });
105
+ (0, vitest_1.it)('should generate tg://resolve links', () => {
106
+ (0, vitest_1.expect)(index_js_1.links.botGame({ bot: 'bot_username', game: 'short_name', protocol: 'tg' })).eq('tg://resolve?domain=bot_username&game=short_name');
107
+ });
108
+ (0, vitest_1.it)('should parse t.me links', () => {
109
+ (0, vitest_1.expect)(index_js_1.links.botGame.parse('https://t.me/bot_username?game=short_name')).eql({
110
+ bot: 'bot_username',
111
+ game: 'short_name',
112
+ });
113
+ });
114
+ (0, vitest_1.it)('should parse tg://resolve links', () => {
115
+ (0, vitest_1.expect)(index_js_1.links.botGame.parse('tg://resolve?domain=bot_username&game=short_name')).eql({
116
+ bot: 'bot_username',
117
+ game: 'short_name',
118
+ });
119
+ });
120
+ });
121
+ (0, vitest_1.describe)('Named web apps', () => {
122
+ (0, vitest_1.it)('should generate t.me links', () => {
123
+ (0, vitest_1.expect)(index_js_1.links.botWebApp({ bot: 'bot_username', app: 'short_name' })).eq('https://t.me/bot_username/short_name');
124
+ (0, vitest_1.expect)(index_js_1.links.botWebApp({ bot: 'bot_username', app: 'short_name', parameter: 'parameter' })).eq('https://t.me/bot_username/short_name?startapp=parameter');
125
+ });
126
+ (0, vitest_1.it)('should generate tg://resolve links', () => {
127
+ (0, vitest_1.expect)(index_js_1.links.botWebApp({ bot: 'bot_username', app: 'short_name', protocol: 'tg' })).eq('tg://resolve?domain=bot_username&appname=short_name');
128
+ (0, vitest_1.expect)(index_js_1.links.botWebApp({ bot: 'bot_username', app: 'short_name', parameter: 'parameter', protocol: 'tg' })).eq('tg://resolve?domain=bot_username&appname=short_name&startapp=parameter');
129
+ });
130
+ (0, vitest_1.it)('should parse t.me links', () => {
131
+ (0, vitest_1.expect)(index_js_1.links.botWebApp.parse('https://t.me/bot_username/short_name')).eql({
132
+ bot: 'bot_username',
133
+ app: 'short_name',
134
+ parameter: undefined,
135
+ });
136
+ (0, vitest_1.expect)(index_js_1.links.botWebApp.parse('https://t.me/bot_username/short_name?startapp=parameter')).eql({
137
+ bot: 'bot_username',
138
+ app: 'short_name',
139
+ parameter: 'parameter',
140
+ });
141
+ });
142
+ (0, vitest_1.it)('should parse tg://resolve links', () => {
143
+ (0, vitest_1.expect)(index_js_1.links.botWebApp.parse('tg://resolve?domain=bot_username&appname=short_name')).eql({
144
+ bot: 'bot_username',
145
+ app: 'short_name',
146
+ parameter: undefined,
147
+ });
148
+ (0, vitest_1.expect)(index_js_1.links.botWebApp.parse('tg://resolve?domain=bot_username&appname=short_name&startapp=parameter')).eql({ bot: 'bot_username', app: 'short_name', parameter: 'parameter' });
149
+ });
150
+ });
151
+ });
152
+ //# sourceMappingURL=bots.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bots.test.js","sourceRoot":"","sources":["../../../../src/utils/links/bots.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { describe, expect, it } from 'vitest'\n\nimport { links } from './index.js'\n\ndescribe('Deep links', function () {\n describe('Bot start links', () => {\n it('should generate t.me/username?start=parameter links', () => {\n expect(links.botStart({ username: 'username', parameter: 'parameter' })).eq(\n 'https://t.me/username?start=parameter',\n )\n })\n\n it('should generate tg://resolve?domain=username&start=parameter links', () => {\n expect(links.botStart({ username: 'username', parameter: 'parameter', protocol: 'tg' })).eq(\n 'tg://resolve?domain=username&start=parameter',\n )\n })\n\n it('should parse t.me/username?start=parameter links', () => {\n expect(links.botStart.parse('https://t.me/username?start=parameter')).eql({\n username: 'username',\n parameter: 'parameter',\n })\n })\n\n it('should parse tg://resolve?domain=username&start=parameter links', () => {\n expect(links.botStart.parse('tg://resolve?domain=username&start=parameter')).eql({\n username: 'username',\n parameter: 'parameter',\n })\n })\n })\n\n describe('Bot add to group links', () => {\n it('should generate t.me links', () => {\n expect(links.botAddToGroup({ bot: 'bot_username' })).eq('https://t.me/bot_username?startgroup')\n expect(links.botAddToGroup({ bot: 'bot_username', parameter: '' })).eq(\n 'https://t.me/bot_username?startgroup=',\n )\n expect(links.botAddToGroup({ bot: 'bot_username', parameter: 'parameter' })).eq(\n 'https://t.me/bot_username?startgroup=parameter',\n )\n expect(links.botAddToGroup({ bot: 'bot_username', admin: ['postStories'] })).eq(\n 'https://t.me/bot_username?startgroup&admin=post_stories',\n )\n })\n\n it('should generate tg://resolve links', () => {\n expect(links.botAddToGroup({ bot: 'bot_username', protocol: 'tg' })).eq(\n 'tg://resolve?domain=bot_username&startgroup',\n )\n expect(links.botAddToGroup({ bot: 'bot_username', parameter: 'parameter', protocol: 'tg' })).eq(\n 'tg://resolve?domain=bot_username&startgroup=parameter',\n )\n expect(links.botAddToGroup({ bot: 'bot_username', admin: ['postStories'], protocol: 'tg' })).eq(\n 'tg://resolve?domain=bot_username&startgroup&admin=post_stories',\n )\n })\n\n it('should parse t.me links', () => {\n expect(links.botAddToGroup.parse('https://t.me/bot_username?startgroup')).eql({\n bot: 'bot_username',\n parameter: undefined,\n admin: undefined,\n })\n expect(links.botAddToGroup.parse('https://t.me/bot_username?startgroup=parameter')).eql({\n bot: 'bot_username',\n parameter: 'parameter',\n admin: undefined,\n })\n expect(links.botAddToGroup.parse('https://t.me/bot_username?startgroup&admin=post_stories')).eql({\n bot: 'bot_username',\n parameter: undefined,\n admin: ['postStories'],\n })\n })\n\n it('should parse tg://resolve links', () => {\n expect(links.botAddToGroup.parse('tg://resolve?domain=bot_username&startgroup')).eql({\n bot: 'bot_username',\n parameter: undefined,\n admin: undefined,\n })\n expect(links.botAddToGroup.parse('tg://resolve?domain=bot_username&startgroup=parameter')).eql({\n bot: 'bot_username',\n parameter: 'parameter',\n admin: undefined,\n })\n expect(links.botAddToGroup.parse('tg://resolve?domain=bot_username&startgroup&admin=post_stories')).eql({\n bot: 'bot_username',\n parameter: undefined,\n admin: ['postStories'],\n })\n })\n })\n\n describe('Bot add to channel links', () => {\n it('should generate t.me links', () => {\n expect(links.botAddToChannel({ bot: 'bot_username' })).eq('https://t.me/bot_username?startchannel')\n expect(links.botAddToChannel({ bot: 'bot_username', admin: ['postStories'] })).eq(\n 'https://t.me/bot_username?startchannel&admin=post_stories',\n )\n })\n\n it('should generate tg://resolve links', () => {\n expect(links.botAddToChannel({ bot: 'bot_username', protocol: 'tg' })).eq(\n 'tg://resolve?domain=bot_username&startchannel',\n )\n expect(links.botAddToChannel({ bot: 'bot_username', admin: ['postStories'], protocol: 'tg' })).eq(\n 'tg://resolve?domain=bot_username&startchannel&admin=post_stories',\n )\n })\n\n it('should parse t.me links', () => {\n expect(links.botAddToChannel.parse('https://t.me/bot_username?startchannel')).eql({\n bot: 'bot_username',\n admin: undefined,\n })\n expect(links.botAddToChannel.parse('https://t.me/bot_username?startchannel&admin=post_stories')).eql({\n bot: 'bot_username',\n admin: ['postStories'],\n })\n })\n\n it('should parse tg://resolve links', () => {\n expect(links.botAddToChannel.parse('tg://resolve?domain=bot_username&startchannel')).eql({\n bot: 'bot_username',\n admin: undefined,\n })\n expect(links.botAddToChannel.parse('tg://resolve?domain=bot_username&startchannel&admin=post_stories')).eql(\n { bot: 'bot_username', admin: ['postStories'] },\n )\n })\n })\n\n describe('Game links', () => {\n it('should generate t.me links', () => {\n expect(links.botGame({ bot: 'bot_username', game: 'short_name' })).eq(\n 'https://t.me/bot_username?game=short_name',\n )\n })\n\n it('should generate tg://resolve links', () => {\n expect(links.botGame({ bot: 'bot_username', game: 'short_name', protocol: 'tg' })).eq(\n 'tg://resolve?domain=bot_username&game=short_name',\n )\n })\n\n it('should parse t.me links', () => {\n expect(links.botGame.parse('https://t.me/bot_username?game=short_name')).eql({\n bot: 'bot_username',\n game: 'short_name',\n })\n })\n\n it('should parse tg://resolve links', () => {\n expect(links.botGame.parse('tg://resolve?domain=bot_username&game=short_name')).eql({\n bot: 'bot_username',\n game: 'short_name',\n })\n })\n })\n\n describe('Named web apps', () => {\n it('should generate t.me links', () => {\n expect(links.botWebApp({ bot: 'bot_username', app: 'short_name' })).eq(\n 'https://t.me/bot_username/short_name',\n )\n expect(links.botWebApp({ bot: 'bot_username', app: 'short_name', parameter: 'parameter' })).eq(\n 'https://t.me/bot_username/short_name?startapp=parameter',\n )\n })\n\n it('should generate tg://resolve links', () => {\n expect(links.botWebApp({ bot: 'bot_username', app: 'short_name', protocol: 'tg' })).eq(\n 'tg://resolve?domain=bot_username&appname=short_name',\n )\n expect(\n links.botWebApp({ bot: 'bot_username', app: 'short_name', parameter: 'parameter', protocol: 'tg' }),\n ).eq('tg://resolve?domain=bot_username&appname=short_name&startapp=parameter')\n })\n\n it('should parse t.me links', () => {\n expect(links.botWebApp.parse('https://t.me/bot_username/short_name')).eql({\n bot: 'bot_username',\n app: 'short_name',\n parameter: undefined,\n })\n expect(links.botWebApp.parse('https://t.me/bot_username/short_name?startapp=parameter')).eql({\n bot: 'bot_username',\n app: 'short_name',\n parameter: 'parameter',\n })\n })\n\n it('should parse tg://resolve links', () => {\n expect(links.botWebApp.parse('tg://resolve?domain=bot_username&appname=short_name')).eql({\n bot: 'bot_username',\n app: 'short_name',\n parameter: undefined,\n })\n expect(links.botWebApp.parse('tg://resolve?domain=bot_username&appname=short_name&startapp=parameter')).eql(\n { bot: 'bot_username', app: 'short_name', parameter: 'parameter' },\n )\n })\n })\n})\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
4
+ const vitest_1 = require("vitest");
5
+ const index_js_1 = require("./index.js");
6
+ (0, vitest_1.describe)('Deep links', function () {
7
+ (0, vitest_1.describe)('Chat invite links', () => {
8
+ (0, vitest_1.it)('should generate t.me/+hash links', () => {
9
+ (0, vitest_1.expect)(index_js_1.links.chatInvite({ hash: 'hash' })).eq('https://t.me/+hash');
10
+ });
11
+ (0, vitest_1.it)('should generate tg://join?invite=hash links', () => {
12
+ (0, vitest_1.expect)(index_js_1.links.chatInvite({ hash: 'hash', protocol: 'tg' })).eq('tg://join?invite=hash');
13
+ });
14
+ (0, vitest_1.it)('should parse t.me/joinchat/hash links', () => {
15
+ (0, vitest_1.expect)(index_js_1.links.chatInvite.parse('https://t.me/joinchat/hash')).eql({ hash: 'hash' });
16
+ });
17
+ (0, vitest_1.it)('should parse t.me/+hash links', () => {
18
+ (0, vitest_1.expect)(index_js_1.links.chatInvite.parse('https://t.me/+hash')).eql({ hash: 'hash' });
19
+ });
20
+ (0, vitest_1.it)('should parse tg://join?invite=hash links', () => {
21
+ (0, vitest_1.expect)(index_js_1.links.chatInvite.parse('tg://join?invite=hash')).eql({ hash: 'hash' });
22
+ });
23
+ });
24
+ (0, vitest_1.describe)('Chat folder links', () => {
25
+ (0, vitest_1.it)('should generate t.me/addlist/slug links', () => {
26
+ (0, vitest_1.expect)(index_js_1.links.chatFolder({ slug: 'slug' })).eq('https://t.me/addlist/slug');
27
+ });
28
+ (0, vitest_1.it)('should generate tg://addlist?slug=slug links', () => {
29
+ (0, vitest_1.expect)(index_js_1.links.chatFolder({ slug: 'slug', protocol: 'tg' })).eq('tg://addlist?slug=slug');
30
+ });
31
+ (0, vitest_1.it)('should parse t.me/addlist/slug links', () => {
32
+ (0, vitest_1.expect)(index_js_1.links.chatFolder.parse('https://t.me/addlist/slug')).eql({ slug: 'slug' });
33
+ });
34
+ (0, vitest_1.it)('should parse tg://addlist?slug=slug links', () => {
35
+ (0, vitest_1.expect)(index_js_1.links.chatFolder.parse('tg://addlist?slug=slug')).eql({ slug: 'slug' });
36
+ });
37
+ });
38
+ (0, vitest_1.describe)('Message links', () => {
39
+ const result = (it) => {
40
+ return {
41
+ threadId: undefined,
42
+ commentId: undefined,
43
+ mediaTimestamp: undefined,
44
+ single: false,
45
+ ...it,
46
+ };
47
+ };
48
+ (0, vitest_1.it)('should generate t.me/username/id links', () => {
49
+ (0, vitest_1.expect)(index_js_1.links.message({ username: 'username', id: 123 })).eq('https://t.me/username/123');
50
+ (0, vitest_1.expect)(index_js_1.links.message({ username: 'username', threadId: 123, id: 456 })).eq('https://t.me/username/123/456');
51
+ });
52
+ (0, vitest_1.it)('should generate tg:// links', () => {
53
+ (0, vitest_1.expect)(index_js_1.links.message({ username: 'username', id: 123, protocol: 'tg' })).eq('tg://resolve?domain=username&post=123');
54
+ (0, vitest_1.expect)(index_js_1.links.message({ username: 'username', threadId: 123, id: 456, protocol: 'tg' })).eq('tg://resolve?domain=username&post=456&thread=123');
55
+ });
56
+ (0, vitest_1.it)('should generate t.me/c/channel/id links', () => {
57
+ (0, vitest_1.expect)(index_js_1.links.message({ channelId: 321, id: 123 })).eq('https://t.me/c/321/123');
58
+ (0, vitest_1.expect)(index_js_1.links.message({ channelId: 321, threadId: 123, id: 456 })).eq('https://t.me/c/321/123/456');
59
+ });
60
+ (0, vitest_1.it)('should generate tg://privatepost links', () => {
61
+ (0, vitest_1.expect)(index_js_1.links.message({ channelId: 321, id: 123, protocol: 'tg' })).eq('tg://privatepost?channel=321&post=123');
62
+ (0, vitest_1.expect)(index_js_1.links.message({ channelId: 321, threadId: 123, id: 456, protocol: 'tg' })).eq('tg://privatepost?channel=321&post=456&thread=123');
63
+ });
64
+ (0, vitest_1.it)('should parse t.me/username/id links', () => {
65
+ (0, vitest_1.expect)(index_js_1.links.message.parse('https://t.me/username/123')).eql(result({ username: 'username', id: 123 }));
66
+ });
67
+ (0, vitest_1.it)('should parse t.me/username/thread/id links', () => {
68
+ (0, vitest_1.expect)(index_js_1.links.message.parse('https://t.me/username/123/456')).eql(result({ username: 'username', threadId: 123, id: 456 }));
69
+ });
70
+ (0, vitest_1.it)('should parse tg://resolve links', () => {
71
+ (0, vitest_1.expect)(index_js_1.links.message.parse('tg://resolve?domain=username&post=123')).eql(result({ username: 'username', id: 123 }));
72
+ });
73
+ (0, vitest_1.it)('should parse t.me/c/channel/id links', () => {
74
+ (0, vitest_1.expect)(index_js_1.links.message.parse('https://t.me/c/666/123')).eql(result({ channelId: 666, id: 123 }));
75
+ });
76
+ (0, vitest_1.it)('should parse t.me/c/channel/thread/id links', () => {
77
+ (0, vitest_1.expect)(index_js_1.links.message.parse('https://t.me/c/666/123/456')).eql(result({ channelId: 666, threadId: 123, id: 456 }));
78
+ });
79
+ (0, vitest_1.it)('should parse tg://privatepost links', () => {
80
+ (0, vitest_1.expect)(index_js_1.links.message.parse('tg://privatepost?channel=666&post=123')).eql(result({ channelId: 666, id: 123 }));
81
+ });
82
+ });
83
+ });
84
+ //# sourceMappingURL=chat.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.test.js","sourceRoot":"","sources":["../../../../src/utils/links/chat.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { describe, expect, it } from 'vitest'\n\nimport { links } from './index.js'\n\ndescribe('Deep links', function () {\n describe('Chat invite links', () => {\n it('should generate t.me/+hash links', () => {\n expect(links.chatInvite({ hash: 'hash' })).eq('https://t.me/+hash')\n })\n\n it('should generate tg://join?invite=hash links', () => {\n expect(links.chatInvite({ hash: 'hash', protocol: 'tg' })).eq('tg://join?invite=hash')\n })\n\n it('should parse t.me/joinchat/hash links', () => {\n expect(links.chatInvite.parse('https://t.me/joinchat/hash')).eql({ hash: 'hash' })\n })\n\n it('should parse t.me/+hash links', () => {\n expect(links.chatInvite.parse('https://t.me/+hash')).eql({ hash: 'hash' })\n })\n\n it('should parse tg://join?invite=hash links', () => {\n expect(links.chatInvite.parse('tg://join?invite=hash')).eql({ hash: 'hash' })\n })\n })\n\n describe('Chat folder links', () => {\n it('should generate t.me/addlist/slug links', () => {\n expect(links.chatFolder({ slug: 'slug' })).eq('https://t.me/addlist/slug')\n })\n\n it('should generate tg://addlist?slug=slug links', () => {\n expect(links.chatFolder({ slug: 'slug', protocol: 'tg' })).eq('tg://addlist?slug=slug')\n })\n\n it('should parse t.me/addlist/slug links', () => {\n expect(links.chatFolder.parse('https://t.me/addlist/slug')).eql({ slug: 'slug' })\n })\n\n it('should parse tg://addlist?slug=slug links', () => {\n expect(links.chatFolder.parse('tg://addlist?slug=slug')).eql({ slug: 'slug' })\n })\n })\n\n describe('Message links', () => {\n const result = (it: object) => {\n return {\n threadId: undefined,\n commentId: undefined,\n mediaTimestamp: undefined,\n single: false,\n ...it,\n }\n }\n\n it('should generate t.me/username/id links', () => {\n expect(links.message({ username: 'username', id: 123 })).eq('https://t.me/username/123')\n expect(links.message({ username: 'username', threadId: 123, id: 456 })).eq('https://t.me/username/123/456')\n })\n\n it('should generate tg:// links', () => {\n expect(links.message({ username: 'username', id: 123, protocol: 'tg' })).eq(\n 'tg://resolve?domain=username&post=123',\n )\n expect(links.message({ username: 'username', threadId: 123, id: 456, protocol: 'tg' })).eq(\n 'tg://resolve?domain=username&post=456&thread=123',\n )\n })\n\n it('should generate t.me/c/channel/id links', () => {\n expect(links.message({ channelId: 321, id: 123 })).eq('https://t.me/c/321/123')\n expect(links.message({ channelId: 321, threadId: 123, id: 456 })).eq('https://t.me/c/321/123/456')\n })\n\n it('should generate tg://privatepost links', () => {\n expect(links.message({ channelId: 321, id: 123, protocol: 'tg' })).eq(\n 'tg://privatepost?channel=321&post=123',\n )\n expect(links.message({ channelId: 321, threadId: 123, id: 456, protocol: 'tg' })).eq(\n 'tg://privatepost?channel=321&post=456&thread=123',\n )\n })\n\n it('should parse t.me/username/id links', () => {\n expect(links.message.parse('https://t.me/username/123')).eql(result({ username: 'username', id: 123 }))\n })\n\n it('should parse t.me/username/thread/id links', () => {\n expect(links.message.parse('https://t.me/username/123/456')).eql(\n result({ username: 'username', threadId: 123, id: 456 }),\n )\n })\n\n it('should parse tg://resolve links', () => {\n expect(links.message.parse('tg://resolve?domain=username&post=123')).eql(\n result({ username: 'username', id: 123 }),\n )\n })\n\n it('should parse t.me/c/channel/id links', () => {\n expect(links.message.parse('https://t.me/c/666/123')).eql(result({ channelId: 666, id: 123 }))\n })\n\n it('should parse t.me/c/channel/thread/id links', () => {\n expect(links.message.parse('https://t.me/c/666/123/456')).eql(\n result({ channelId: 666, threadId: 123, id: 456 }),\n )\n })\n\n it('should parse tg://privatepost links', () => {\n expect(links.message.parse('tg://privatepost?channel=666&post=123')).eql(\n result({ channelId: 666, id: 123 }),\n )\n })\n })\n})\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
4
+ const vitest_1 = require("vitest");
5
+ const index_js_1 = require("./index.js");
6
+ (0, vitest_1.describe)('Deep links', function () {
7
+ (0, vitest_1.describe)('Video chat links', () => {
8
+ (0, vitest_1.it)('should generate t.me/username?videochat links', () => {
9
+ (0, vitest_1.expect)(index_js_1.links.videoChat({ username: 'username' })).eq('https://t.me/username?videochat');
10
+ (0, vitest_1.expect)(index_js_1.links.videoChat({ username: 'username', inviteHash: 'invite_hash' })).eq('https://t.me/username?videochat=invite_hash');
11
+ });
12
+ (0, vitest_1.it)('should generate t.me/username?livestream links', () => {
13
+ (0, vitest_1.expect)(index_js_1.links.videoChat({ username: 'username', isLivestream: true })).eq('https://t.me/username?livestream');
14
+ (0, vitest_1.expect)(index_js_1.links.videoChat({ username: 'username', inviteHash: 'invite_hash', isLivestream: true })).eq('https://t.me/username?livestream=invite_hash');
15
+ });
16
+ (0, vitest_1.it)('should generate tg://resolve?domain=username&videochat links', () => {
17
+ (0, vitest_1.expect)(index_js_1.links.videoChat({ username: 'username', protocol: 'tg' })).eq('tg://resolve?domain=username&videochat');
18
+ (0, vitest_1.expect)(index_js_1.links.videoChat({ username: 'username', inviteHash: 'invite_hash', protocol: 'tg' })).eq('tg://resolve?domain=username&videochat=invite_hash');
19
+ });
20
+ (0, vitest_1.it)('should generate tg://resolve?domain=username&livestream links', () => {
21
+ (0, vitest_1.expect)(index_js_1.links.videoChat({ username: 'username', isLivestream: true, protocol: 'tg' })).eq('tg://resolve?domain=username&livestream');
22
+ (0, vitest_1.expect)(index_js_1.links.videoChat({
23
+ username: 'username',
24
+ inviteHash: 'invite_hash',
25
+ isLivestream: true,
26
+ protocol: 'tg',
27
+ })).eq('tg://resolve?domain=username&livestream=invite_hash');
28
+ });
29
+ (0, vitest_1.it)('should parse t.me/username?videochat links', () => {
30
+ (0, vitest_1.expect)(index_js_1.links.videoChat.parse('https://t.me/username?videochat')).eql({
31
+ username: 'username',
32
+ inviteHash: undefined,
33
+ isLivestream: false,
34
+ });
35
+ (0, vitest_1.expect)(index_js_1.links.videoChat.parse('https://t.me/username?videochat=invite_hash')).eql({
36
+ username: 'username',
37
+ inviteHash: 'invite_hash',
38
+ isLivestream: false,
39
+ });
40
+ });
41
+ (0, vitest_1.it)('should parse t.me/username?livestream links', () => {
42
+ (0, vitest_1.expect)(index_js_1.links.videoChat.parse('https://t.me/username?livestream')).eql({
43
+ username: 'username',
44
+ inviteHash: undefined,
45
+ isLivestream: true,
46
+ });
47
+ (0, vitest_1.expect)(index_js_1.links.videoChat.parse('https://t.me/username?livestream=invite_hash')).eql({
48
+ username: 'username',
49
+ inviteHash: 'invite_hash',
50
+ isLivestream: true,
51
+ });
52
+ });
53
+ (0, vitest_1.it)('should parse tg://resolve?domain=username&videochat links', () => {
54
+ (0, vitest_1.expect)(index_js_1.links.videoChat.parse('tg://resolve?domain=username&videochat')).eql({
55
+ username: 'username',
56
+ inviteHash: undefined,
57
+ isLivestream: false,
58
+ });
59
+ (0, vitest_1.expect)(index_js_1.links.videoChat.parse('tg://resolve?domain=username&videochat=invite_hash')).eql({
60
+ username: 'username',
61
+ inviteHash: 'invite_hash',
62
+ isLivestream: false,
63
+ });
64
+ });
65
+ (0, vitest_1.it)('should parse tg://resolve?domain=username&livestream links', () => {
66
+ (0, vitest_1.expect)(index_js_1.links.videoChat.parse('tg://resolve?domain=username&livestream')).eql({
67
+ username: 'username',
68
+ inviteHash: undefined,
69
+ isLivestream: true,
70
+ });
71
+ (0, vitest_1.expect)(index_js_1.links.videoChat.parse('tg://resolve?domain=username&livestream=invite_hash')).eql({
72
+ username: 'username',
73
+ inviteHash: 'invite_hash',
74
+ isLivestream: true,
75
+ });
76
+ });
77
+ (0, vitest_1.it)('should parse tg://resolve?domain=username&voicechat links', () => {
78
+ (0, vitest_1.expect)(index_js_1.links.videoChat.parse('tg://resolve?domain=username&voicechat')).eql({
79
+ username: 'username',
80
+ inviteHash: undefined,
81
+ isLivestream: false,
82
+ });
83
+ (0, vitest_1.expect)(index_js_1.links.videoChat.parse('tg://resolve?domain=username&voicechat=invite_hash')).eql({
84
+ username: 'username',
85
+ inviteHash: 'invite_hash',
86
+ isLivestream: false,
87
+ });
88
+ });
89
+ });
90
+ (0, vitest_1.describe)('Share links', () => {
91
+ (0, vitest_1.it)('should generate t.me/share?url=link links', () => {
92
+ (0, vitest_1.expect)(index_js_1.links.share({ url: 'link' })).eq('https://t.me/share?url=link');
93
+ (0, vitest_1.expect)(index_js_1.links.share({ url: 'link', text: 'text' })).eq('https://t.me/share?url=link&text=text');
94
+ });
95
+ (0, vitest_1.it)('should generate tg://msg_url?url=link links', () => {
96
+ (0, vitest_1.expect)(index_js_1.links.share({ url: 'link', protocol: 'tg' })).eq('tg://msg_url?url=link');
97
+ (0, vitest_1.expect)(index_js_1.links.share({ url: 'link', text: 'text', protocol: 'tg' })).eq('tg://msg_url?url=link&text=text');
98
+ });
99
+ (0, vitest_1.it)('should parse t.me/share?url=link links', () => {
100
+ (0, vitest_1.expect)(index_js_1.links.share.parse('https://t.me/share?url=link')).eql({ url: 'link', text: undefined });
101
+ (0, vitest_1.expect)(index_js_1.links.share.parse('https://t.me/share?url=link&text=text')).eql({ url: 'link', text: 'text' });
102
+ });
103
+ (0, vitest_1.it)('should parse tg://msg_url?url=link links', () => {
104
+ (0, vitest_1.expect)(index_js_1.links.share.parse('tg://msg_url?url=link')).eql({ url: 'link', text: undefined });
105
+ (0, vitest_1.expect)(index_js_1.links.share.parse('tg://msg_url?url=link&text=text')).eql({ url: 'link', text: 'text' });
106
+ });
107
+ });
108
+ (0, vitest_1.describe)('Stickerset links', () => {
109
+ (0, vitest_1.it)('should generate t.me/addstickers/<slug> links', () => {
110
+ (0, vitest_1.expect)(index_js_1.links.stickerset({ slug: 'slug' })).eq('https://t.me/addstickers/slug');
111
+ (0, vitest_1.expect)(index_js_1.links.stickerset({ slug: 'slug', emoji: true })).eq('https://t.me/addemoji/slug');
112
+ });
113
+ (0, vitest_1.it)('should generate tg://addstickers?set=<slug> links', () => {
114
+ (0, vitest_1.expect)(index_js_1.links.stickerset({ slug: 'slug', protocol: 'tg' })).eq('tg://addstickers?set=slug');
115
+ (0, vitest_1.expect)(index_js_1.links.stickerset({ slug: 'slug', emoji: true, protocol: 'tg' })).eq('tg://addemoji?set=slug');
116
+ });
117
+ (0, vitest_1.it)('should parse t.me/addstickers/<slug> links', () => {
118
+ (0, vitest_1.expect)(index_js_1.links.stickerset.parse('https://t.me/addstickers/slug')).eql({ slug: 'slug', emoji: false });
119
+ (0, vitest_1.expect)(index_js_1.links.stickerset.parse('https://t.me/addemoji/slug')).eql({ slug: 'slug', emoji: true });
120
+ });
121
+ (0, vitest_1.it)('should parse tg://addstickers?set=<slug> links', () => {
122
+ (0, vitest_1.expect)(index_js_1.links.stickerset.parse('tg://addstickers?set=slug')).eql({ slug: 'slug', emoji: false });
123
+ (0, vitest_1.expect)(index_js_1.links.stickerset.parse('tg://addemoji?set=slug')).eql({ slug: 'slug', emoji: true });
124
+ });
125
+ });
126
+ (0, vitest_1.describe)('Boost links', () => {
127
+ (0, vitest_1.it)('should generate t.me/username?boost links', () => {
128
+ (0, vitest_1.expect)(index_js_1.links.boost({ username: 'username' })).eq('https://t.me/username?boost');
129
+ });
130
+ (0, vitest_1.it)('should generate t.me/c/id?boost links', () => {
131
+ (0, vitest_1.expect)(index_js_1.links.boost({ channelId: 123 })).eq('https://t.me/c/123?boost');
132
+ });
133
+ (0, vitest_1.it)('should generate tg://boost?domain=username links', () => {
134
+ (0, vitest_1.expect)(index_js_1.links.boost({ username: 'username', protocol: 'tg' })).eq('tg://boost?domain=username');
135
+ });
136
+ (0, vitest_1.it)('should generate tg://boost?channel=id links', () => {
137
+ (0, vitest_1.expect)(index_js_1.links.boost({ channelId: 123, protocol: 'tg' })).eq('tg://boost?channel=123');
138
+ });
139
+ (0, vitest_1.it)('should parse t.me/username?boost links', () => {
140
+ (0, vitest_1.expect)(index_js_1.links.boost.parse('https://t.me/username?boost')).eql({ username: 'username' });
141
+ });
142
+ (0, vitest_1.it)('should parse t.me/c/id?boost links', () => {
143
+ (0, vitest_1.expect)(index_js_1.links.boost.parse('https://t.me/c/123?boost')).eql({ channelId: 123 });
144
+ });
145
+ (0, vitest_1.it)('should parse tg://boost?domain=username links', () => {
146
+ (0, vitest_1.expect)(index_js_1.links.boost.parse('tg://boost?domain=username')).eql({ username: 'username' });
147
+ });
148
+ (0, vitest_1.it)('should parse tg://boost?channel=id links', () => {
149
+ (0, vitest_1.expect)(index_js_1.links.boost.parse('tg://boost?channel=123')).eql({ channelId: 123 });
150
+ });
151
+ });
152
+ });
153
+ //# sourceMappingURL=misc.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.test.js","sourceRoot":"","sources":["../../../../src/utils/links/misc.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { describe, expect, it } from 'vitest'\n\nimport { links } from './index.js'\n\ndescribe('Deep links', function () {\n describe('Video chat links', () => {\n it('should generate t.me/username?videochat links', () => {\n expect(links.videoChat({ username: 'username' })).eq('https://t.me/username?videochat')\n expect(links.videoChat({ username: 'username', inviteHash: 'invite_hash' })).eq(\n 'https://t.me/username?videochat=invite_hash',\n )\n })\n\n it('should generate t.me/username?livestream links', () => {\n expect(links.videoChat({ username: 'username', isLivestream: true })).eq('https://t.me/username?livestream')\n expect(links.videoChat({ username: 'username', inviteHash: 'invite_hash', isLivestream: true })).eq(\n 'https://t.me/username?livestream=invite_hash',\n )\n })\n\n it('should generate tg://resolve?domain=username&videochat links', () => {\n expect(links.videoChat({ username: 'username', protocol: 'tg' })).eq(\n 'tg://resolve?domain=username&videochat',\n )\n expect(links.videoChat({ username: 'username', inviteHash: 'invite_hash', protocol: 'tg' })).eq(\n 'tg://resolve?domain=username&videochat=invite_hash',\n )\n })\n\n it('should generate tg://resolve?domain=username&livestream links', () => {\n expect(links.videoChat({ username: 'username', isLivestream: true, protocol: 'tg' })).eq(\n 'tg://resolve?domain=username&livestream',\n )\n expect(\n links.videoChat({\n username: 'username',\n inviteHash: 'invite_hash',\n isLivestream: true,\n protocol: 'tg',\n }),\n ).eq('tg://resolve?domain=username&livestream=invite_hash')\n })\n\n it('should parse t.me/username?videochat links', () => {\n expect(links.videoChat.parse('https://t.me/username?videochat')).eql({\n username: 'username',\n inviteHash: undefined,\n isLivestream: false,\n })\n expect(links.videoChat.parse('https://t.me/username?videochat=invite_hash')).eql({\n username: 'username',\n inviteHash: 'invite_hash',\n isLivestream: false,\n })\n })\n\n it('should parse t.me/username?livestream links', () => {\n expect(links.videoChat.parse('https://t.me/username?livestream')).eql({\n username: 'username',\n inviteHash: undefined,\n isLivestream: true,\n })\n expect(links.videoChat.parse('https://t.me/username?livestream=invite_hash')).eql({\n username: 'username',\n inviteHash: 'invite_hash',\n isLivestream: true,\n })\n })\n\n it('should parse tg://resolve?domain=username&videochat links', () => {\n expect(links.videoChat.parse('tg://resolve?domain=username&videochat')).eql({\n username: 'username',\n inviteHash: undefined,\n isLivestream: false,\n })\n expect(links.videoChat.parse('tg://resolve?domain=username&videochat=invite_hash')).eql({\n username: 'username',\n inviteHash: 'invite_hash',\n isLivestream: false,\n })\n })\n\n it('should parse tg://resolve?domain=username&livestream links', () => {\n expect(links.videoChat.parse('tg://resolve?domain=username&livestream')).eql({\n username: 'username',\n inviteHash: undefined,\n isLivestream: true,\n })\n expect(links.videoChat.parse('tg://resolve?domain=username&livestream=invite_hash')).eql({\n username: 'username',\n inviteHash: 'invite_hash',\n isLivestream: true,\n })\n })\n\n it('should parse tg://resolve?domain=username&voicechat links', () => {\n expect(links.videoChat.parse('tg://resolve?domain=username&voicechat')).eql({\n username: 'username',\n inviteHash: undefined,\n isLivestream: false,\n })\n expect(links.videoChat.parse('tg://resolve?domain=username&voicechat=invite_hash')).eql({\n username: 'username',\n inviteHash: 'invite_hash',\n isLivestream: false,\n })\n })\n })\n\n describe('Share links', () => {\n it('should generate t.me/share?url=link links', () => {\n expect(links.share({ url: 'link' })).eq('https://t.me/share?url=link')\n expect(links.share({ url: 'link', text: 'text' })).eq('https://t.me/share?url=link&text=text')\n })\n\n it('should generate tg://msg_url?url=link links', () => {\n expect(links.share({ url: 'link', protocol: 'tg' })).eq('tg://msg_url?url=link')\n expect(links.share({ url: 'link', text: 'text', protocol: 'tg' })).eq('tg://msg_url?url=link&text=text')\n })\n\n it('should parse t.me/share?url=link links', () => {\n expect(links.share.parse('https://t.me/share?url=link')).eql({ url: 'link', text: undefined })\n expect(links.share.parse('https://t.me/share?url=link&text=text')).eql({ url: 'link', text: 'text' })\n })\n\n it('should parse tg://msg_url?url=link links', () => {\n expect(links.share.parse('tg://msg_url?url=link')).eql({ url: 'link', text: undefined })\n expect(links.share.parse('tg://msg_url?url=link&text=text')).eql({ url: 'link', text: 'text' })\n })\n })\n\n describe('Stickerset links', () => {\n it('should generate t.me/addstickers/<slug> links', () => {\n expect(links.stickerset({ slug: 'slug' })).eq('https://t.me/addstickers/slug')\n expect(links.stickerset({ slug: 'slug', emoji: true })).eq('https://t.me/addemoji/slug')\n })\n\n it('should generate tg://addstickers?set=<slug> links', () => {\n expect(links.stickerset({ slug: 'slug', protocol: 'tg' })).eq('tg://addstickers?set=slug')\n expect(links.stickerset({ slug: 'slug', emoji: true, protocol: 'tg' })).eq('tg://addemoji?set=slug')\n })\n\n it('should parse t.me/addstickers/<slug> links', () => {\n expect(links.stickerset.parse('https://t.me/addstickers/slug')).eql({ slug: 'slug', emoji: false })\n expect(links.stickerset.parse('https://t.me/addemoji/slug')).eql({ slug: 'slug', emoji: true })\n })\n\n it('should parse tg://addstickers?set=<slug> links', () => {\n expect(links.stickerset.parse('tg://addstickers?set=slug')).eql({ slug: 'slug', emoji: false })\n expect(links.stickerset.parse('tg://addemoji?set=slug')).eql({ slug: 'slug', emoji: true })\n })\n })\n\n describe('Boost links', () => {\n it('should generate t.me/username?boost links', () => {\n expect(links.boost({ username: 'username' })).eq('https://t.me/username?boost')\n })\n\n it('should generate t.me/c/id?boost links', () => {\n expect(links.boost({ channelId: 123 })).eq('https://t.me/c/123?boost')\n })\n\n it('should generate tg://boost?domain=username links', () => {\n expect(links.boost({ username: 'username', protocol: 'tg' })).eq('tg://boost?domain=username')\n })\n\n it('should generate tg://boost?channel=id links', () => {\n expect(links.boost({ channelId: 123, protocol: 'tg' })).eq('tg://boost?channel=123')\n })\n\n it('should parse t.me/username?boost links', () => {\n expect(links.boost.parse('https://t.me/username?boost')).eql({ username: 'username' })\n })\n\n it('should parse t.me/c/id?boost links', () => {\n expect(links.boost.parse('https://t.me/c/123?boost')).eql({ channelId: 123 })\n })\n\n it('should parse tg://boost?domain=username links', () => {\n expect(links.boost.parse('tg://boost?domain=username')).eql({ username: 'username' })\n })\n\n it('should parse tg://boost?channel=id links', () => {\n expect(links.boost.parse('tg://boost?channel=123')).eql({ channelId: 123 })\n })\n })\n})\n"]}
@@ -0,0 +1 @@
1
+ export {};