@honeybbq/teamspeak 0.0.1 → 1.0.0-beta.7

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 (393) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +726 -2
  3. package/dist/client/abort.d.ts +5 -0
  4. package/dist/client/abort.d.ts.map +1 -0
  5. package/dist/client/abort.js +23 -0
  6. package/dist/client/abort.js.map +1 -0
  7. package/dist/client/address.d.ts +17 -0
  8. package/dist/client/address.d.ts.map +1 -0
  9. package/dist/client/address.js +66 -0
  10. package/dist/client/address.js.map +1 -0
  11. package/dist/client/api/voice.d.ts +24 -0
  12. package/dist/client/api/voice.d.ts.map +1 -0
  13. package/dist/client/api/voice.js +33 -0
  14. package/dist/client/api/voice.js.map +1 -0
  15. package/dist/client/capabilities.d.ts +68 -0
  16. package/dist/client/capabilities.d.ts.map +1 -0
  17. package/dist/client/capabilities.js +59 -0
  18. package/dist/client/capabilities.js.map +1 -0
  19. package/dist/client/client.d.ts +196 -0
  20. package/dist/client/client.d.ts.map +1 -0
  21. package/dist/client/client.js +1523 -0
  22. package/dist/client/client.js.map +1 -0
  23. package/dist/client/commands.d.ts +66 -0
  24. package/dist/client/commands.d.ts.map +1 -0
  25. package/dist/client/commands.js +162 -0
  26. package/dist/client/commands.js.map +1 -0
  27. package/dist/client/crypto/crypt-ops.d.ts +7 -0
  28. package/dist/client/crypto/crypt-ops.d.ts.map +1 -0
  29. package/dist/client/crypto/crypt-ops.js +2 -0
  30. package/dist/client/crypto/crypt-ops.js.map +1 -0
  31. package/dist/client/crypto/crypt.d.ts +37 -0
  32. package/dist/client/crypto/crypt.d.ts.map +1 -0
  33. package/dist/client/crypto/crypt.js +203 -0
  34. package/dist/client/crypto/crypt.js.map +1 -0
  35. package/dist/client/crypto/eax.d.ts +12 -0
  36. package/dist/client/crypto/eax.d.ts.map +1 -0
  37. package/dist/client/crypto/eax.js +118 -0
  38. package/dist/client/crypto/eax.js.map +1 -0
  39. package/dist/client/crypto/identity.d.ts +97 -0
  40. package/dist/client/crypto/identity.d.ts.map +1 -0
  41. package/dist/client/crypto/identity.js +412 -0
  42. package/dist/client/crypto/identity.js.map +1 -0
  43. package/dist/client/crypto/index.d.ts +7 -0
  44. package/dist/client/crypto/index.d.ts.map +1 -0
  45. package/dist/client/crypto/index.js +5 -0
  46. package/dist/client/crypto/index.js.map +1 -0
  47. package/dist/client/crypto/primitives.d.ts +43 -0
  48. package/dist/client/crypto/primitives.d.ts.map +1 -0
  49. package/dist/client/crypto/primitives.js +116 -0
  50. package/dist/client/crypto/primitives.js.map +1 -0
  51. package/dist/client/diagnostics.d.ts +45 -0
  52. package/dist/client/diagnostics.d.ts.map +1 -0
  53. package/dist/client/diagnostics.js +30 -0
  54. package/dist/client/diagnostics.js.map +1 -0
  55. package/dist/client/discovery/index.d.ts +2 -0
  56. package/dist/client/discovery/index.d.ts.map +1 -0
  57. package/dist/client/discovery/index.js +2 -0
  58. package/dist/client/discovery/index.js.map +1 -0
  59. package/dist/client/discovery/resolver.d.ts +26 -0
  60. package/dist/client/discovery/resolver.d.ts.map +1 -0
  61. package/dist/client/discovery/resolver.js +275 -0
  62. package/dist/client/discovery/resolver.js.map +1 -0
  63. package/dist/client/errors.d.ts +82 -0
  64. package/dist/client/errors.d.ts.map +1 -0
  65. package/dist/client/errors.js +201 -0
  66. package/dist/client/errors.js.map +1 -0
  67. package/dist/client/events.d.ts +3 -0
  68. package/dist/client/events.d.ts.map +1 -0
  69. package/dist/client/events.js +8 -0
  70. package/dist/client/events.js.map +1 -0
  71. package/dist/client/handshake/crypt-handshake.d.ts +17 -0
  72. package/dist/client/handshake/crypt-handshake.d.ts.map +1 -0
  73. package/dist/client/handshake/crypt-handshake.js +128 -0
  74. package/dist/client/handshake/crypt-handshake.js.map +1 -0
  75. package/dist/client/handshake/crypt-init2.d.ts +7 -0
  76. package/dist/client/handshake/crypt-init2.d.ts.map +1 -0
  77. package/dist/client/handshake/crypt-init2.js +37 -0
  78. package/dist/client/handshake/crypt-init2.js.map +1 -0
  79. package/dist/client/handshake/index.d.ts +4 -0
  80. package/dist/client/handshake/index.d.ts.map +1 -0
  81. package/dist/client/handshake/index.js +4 -0
  82. package/dist/client/handshake/index.js.map +1 -0
  83. package/dist/client/handshake/license.d.ts +35 -0
  84. package/dist/client/handshake/license.d.ts.map +1 -0
  85. package/dist/client/handshake/license.js +169 -0
  86. package/dist/client/handshake/license.js.map +1 -0
  87. package/dist/client/handshake.d.ts +27 -0
  88. package/dist/client/handshake.d.ts.map +1 -0
  89. package/dist/client/handshake.js +126 -0
  90. package/dist/client/handshake.js.map +1 -0
  91. package/dist/client/helpers.d.ts +6 -0
  92. package/dist/client/helpers.d.ts.map +1 -0
  93. package/dist/client/helpers.js +13 -0
  94. package/dist/client/helpers.js.map +1 -0
  95. package/dist/client/hooks.d.ts +7 -0
  96. package/dist/client/hooks.d.ts.map +1 -0
  97. package/dist/client/hooks.js +28 -0
  98. package/dist/client/hooks.js.map +1 -0
  99. package/dist/client/index.d.ts +26 -0
  100. package/dist/client/index.d.ts.map +1 -0
  101. package/dist/client/index.js +28 -0
  102. package/dist/client/index.js.map +1 -0
  103. package/dist/client/reconnect.d.ts +12 -0
  104. package/dist/client/reconnect.d.ts.map +1 -0
  105. package/dist/client/reconnect.js +44 -0
  106. package/dist/client/reconnect.js.map +1 -0
  107. package/dist/client/throttle.d.ts +20 -0
  108. package/dist/client/throttle.d.ts.map +1 -0
  109. package/dist/client/throttle.js +83 -0
  110. package/dist/client/throttle.js.map +1 -0
  111. package/dist/client/trace.d.ts +223 -0
  112. package/dist/client/trace.d.ts.map +1 -0
  113. package/dist/client/trace.js +13 -0
  114. package/dist/client/trace.js.map +1 -0
  115. package/dist/client/transfer.d.ts +111 -0
  116. package/dist/client/transfer.d.ts.map +1 -0
  117. package/dist/client/transfer.js +243 -0
  118. package/dist/client/transfer.js.map +1 -0
  119. package/dist/client/transport/generation-window.d.ts +30 -0
  120. package/dist/client/transport/generation-window.d.ts.map +1 -0
  121. package/dist/client/transport/generation-window.js +97 -0
  122. package/dist/client/transport/generation-window.js.map +1 -0
  123. package/dist/client/transport/handler.d.ts +61 -0
  124. package/dist/client/transport/handler.d.ts.map +1 -0
  125. package/dist/client/transport/handler.js +793 -0
  126. package/dist/client/transport/handler.js.map +1 -0
  127. package/dist/client/transport/index.d.ts +6 -0
  128. package/dist/client/transport/index.d.ts.map +1 -0
  129. package/dist/client/transport/index.js +5 -0
  130. package/dist/client/transport/index.js.map +1 -0
  131. package/dist/client/transport/packet.d.ts +36 -0
  132. package/dist/client/transport/packet.d.ts.map +1 -0
  133. package/dist/client/transport/packet.js +55 -0
  134. package/dist/client/transport/packet.js.map +1 -0
  135. package/dist/client/transport/quicklz.d.ts +24 -0
  136. package/dist/client/transport/quicklz.d.ts.map +1 -0
  137. package/dist/client/transport/quicklz.js +179 -0
  138. package/dist/client/transport/quicklz.js.map +1 -0
  139. package/dist/client/types.d.ts +226 -0
  140. package/dist/client/types.d.ts.map +1 -0
  141. package/dist/client/types.js +39 -0
  142. package/dist/client/types.js.map +1 -0
  143. package/dist/core/api/channels.d.ts +182 -0
  144. package/dist/core/api/channels.d.ts.map +1 -0
  145. package/dist/core/api/channels.js +155 -0
  146. package/dist/core/api/channels.js.map +1 -0
  147. package/dist/core/api/clients.d.ts +304 -0
  148. package/dist/core/api/clients.d.ts.map +1 -0
  149. package/dist/core/api/clients.js +260 -0
  150. package/dist/core/api/clients.js.map +1 -0
  151. package/dist/core/api/command.d.ts +305 -0
  152. package/dist/core/api/command.d.ts.map +1 -0
  153. package/dist/core/api/command.js +363 -0
  154. package/dist/core/api/command.js.map +1 -0
  155. package/dist/core/api/files.d.ts +153 -0
  156. package/dist/core/api/files.d.ts.map +1 -0
  157. package/dist/core/api/files.js +181 -0
  158. package/dist/core/api/files.js.map +1 -0
  159. package/dist/core/api/groups.d.ts +248 -0
  160. package/dist/core/api/groups.d.ts.map +1 -0
  161. package/dist/core/api/groups.js +271 -0
  162. package/dist/core/api/groups.js.map +1 -0
  163. package/dist/core/api/moderation.d.ts +205 -0
  164. package/dist/core/api/moderation.d.ts.map +1 -0
  165. package/dist/core/api/moderation.js +209 -0
  166. package/dist/core/api/moderation.js.map +1 -0
  167. package/dist/core/api/parse.d.ts +16 -0
  168. package/dist/core/api/parse.d.ts.map +1 -0
  169. package/dist/core/api/parse.js +40 -0
  170. package/dist/core/api/parse.js.map +1 -0
  171. package/dist/core/api/server.d.ts +310 -0
  172. package/dist/core/api/server.d.ts.map +1 -0
  173. package/dist/core/api/server.js +290 -0
  174. package/dist/core/api/server.js.map +1 -0
  175. package/dist/core/command/command.d.ts +20 -0
  176. package/dist/core/command/command.d.ts.map +1 -0
  177. package/dist/core/command/command.js +112 -0
  178. package/dist/core/command/command.js.map +1 -0
  179. package/dist/core/command/ids.d.ts +125 -0
  180. package/dist/core/command/ids.d.ts.map +1 -0
  181. package/dist/core/command/ids.js +85 -0
  182. package/dist/core/command/ids.js.map +1 -0
  183. package/dist/core/command/parser.d.ts +17 -0
  184. package/dist/core/command/parser.d.ts.map +1 -0
  185. package/dist/core/command/parser.js +65 -0
  186. package/dist/core/command/parser.js.map +1 -0
  187. package/dist/core/command/request.d.ts +61 -0
  188. package/dist/core/command/request.d.ts.map +1 -0
  189. package/dist/core/command/request.js +64 -0
  190. package/dist/core/command/request.js.map +1 -0
  191. package/dist/core/command/responses.d.ts +59 -0
  192. package/dist/core/command/responses.d.ts.map +1 -0
  193. package/dist/core/command/responses.js +74 -0
  194. package/dist/core/command/responses.js.map +1 -0
  195. package/dist/core/command-name.d.ts +333 -0
  196. package/dist/core/command-name.d.ts.map +1 -0
  197. package/dist/core/command-name.js +331 -0
  198. package/dist/core/command-name.js.map +1 -0
  199. package/dist/core/enums.d.ts +146 -0
  200. package/dist/core/enums.d.ts.map +1 -0
  201. package/dist/core/enums.js +132 -0
  202. package/dist/core/enums.js.map +1 -0
  203. package/dist/core/errorcode.d.ts +413 -0
  204. package/dist/core/errorcode.d.ts.map +1 -0
  205. package/dist/core/errorcode.js +410 -0
  206. package/dist/core/errorcode.js.map +1 -0
  207. package/dist/core/errors.d.ts +111 -0
  208. package/dist/core/errors.d.ts.map +1 -0
  209. package/dist/core/errors.js +233 -0
  210. package/dist/core/errors.js.map +1 -0
  211. package/dist/core/events.d.ts +207 -0
  212. package/dist/core/events.d.ts.map +1 -0
  213. package/dist/core/events.js +6 -0
  214. package/dist/core/events.js.map +1 -0
  215. package/dist/core/helpers.d.ts +42 -0
  216. package/dist/core/helpers.d.ts.map +1 -0
  217. package/dist/core/helpers.js +156 -0
  218. package/dist/core/helpers.js.map +1 -0
  219. package/dist/core/index.d.ts +35 -0
  220. package/dist/core/index.d.ts.map +1 -0
  221. package/dist/core/index.js +34 -0
  222. package/dist/core/index.js.map +1 -0
  223. package/dist/core/internal.d.ts +23 -0
  224. package/dist/core/internal.d.ts.map +1 -0
  225. package/dist/core/internal.js +20 -0
  226. package/dist/core/internal.js.map +1 -0
  227. package/dist/core/middleware.d.ts +14 -0
  228. package/dist/core/middleware.d.ts.map +1 -0
  229. package/dist/core/middleware.js +18 -0
  230. package/dist/core/middleware.js.map +1 -0
  231. package/dist/core/notification-name.d.ts +154 -0
  232. package/dist/core/notification-name.d.ts.map +1 -0
  233. package/dist/core/notification-name.js +152 -0
  234. package/dist/core/notification-name.js.map +1 -0
  235. package/dist/core/notifications.d.ts +43 -0
  236. package/dist/core/notifications.d.ts.map +1 -0
  237. package/dist/core/notifications.js +116 -0
  238. package/dist/core/notifications.js.map +1 -0
  239. package/dist/core/permission-name.d.ts +533 -0
  240. package/dist/core/permission-name.d.ts.map +1 -0
  241. package/dist/core/permission-name.js +531 -0
  242. package/dist/core/permission-name.js.map +1 -0
  243. package/dist/core/permission.d.ts +31 -0
  244. package/dist/core/permission.d.ts.map +1 -0
  245. package/dist/core/permission.js +20 -0
  246. package/dist/core/permission.js.map +1 -0
  247. package/dist/core/property-name.d.ts +403 -0
  248. package/dist/core/property-name.d.ts.map +1 -0
  249. package/dist/core/property-name.js +405 -0
  250. package/dist/core/property-name.js.map +1 -0
  251. package/dist/core/reason.d.ts +39 -0
  252. package/dist/core/reason.d.ts.map +1 -0
  253. package/dist/core/reason.js +36 -0
  254. package/dist/core/reason.js.map +1 -0
  255. package/dist/core/reconnect.d.ts +59 -0
  256. package/dist/core/reconnect.d.ts.map +1 -0
  257. package/dist/core/reconnect.js +55 -0
  258. package/dist/core/reconnect.js.map +1 -0
  259. package/dist/core/types.d.ts +110 -0
  260. package/dist/core/types.d.ts.map +1 -0
  261. package/dist/core/types.js +27 -0
  262. package/dist/core/types.js.map +1 -0
  263. package/dist/query/client.d.ts +194 -0
  264. package/dist/query/client.d.ts.map +1 -0
  265. package/dist/query/client.js +967 -0
  266. package/dist/query/client.js.map +1 -0
  267. package/dist/query/errors.d.ts +61 -0
  268. package/dist/query/errors.d.ts.map +1 -0
  269. package/dist/query/errors.js +100 -0
  270. package/dist/query/errors.js.map +1 -0
  271. package/dist/query/index.d.ts +36 -0
  272. package/dist/query/index.d.ts.map +1 -0
  273. package/dist/query/index.js +34 -0
  274. package/dist/query/index.js.map +1 -0
  275. package/dist/query/knownhosts.d.ts +61 -0
  276. package/dist/query/knownhosts.d.ts.map +1 -0
  277. package/dist/query/knownhosts.js +223 -0
  278. package/dist/query/knownhosts.js.map +1 -0
  279. package/dist/query/lines.d.ts +14 -0
  280. package/dist/query/lines.d.ts.map +1 -0
  281. package/dist/query/lines.js +29 -0
  282. package/dist/query/lines.js.map +1 -0
  283. package/dist/query/options.d.ts +187 -0
  284. package/dist/query/options.d.ts.map +1 -0
  285. package/dist/query/options.js +213 -0
  286. package/dist/query/options.js.map +1 -0
  287. package/dist/query/reconnect.d.ts +29 -0
  288. package/dist/query/reconnect.d.ts.map +1 -0
  289. package/dist/query/reconnect.js +87 -0
  290. package/dist/query/reconnect.js.map +1 -0
  291. package/dist/query/ssh.d.ts +345 -0
  292. package/dist/query/ssh.d.ts.map +1 -0
  293. package/dist/query/ssh.js +241 -0
  294. package/dist/query/ssh.js.map +1 -0
  295. package/dist/query/stream.d.ts +38 -0
  296. package/dist/query/stream.d.ts.map +1 -0
  297. package/dist/query/stream.js +70 -0
  298. package/dist/query/stream.js.map +1 -0
  299. package/dist/query/tcp.d.ts +38 -0
  300. package/dist/query/tcp.d.ts.map +1 -0
  301. package/dist/query/tcp.js +53 -0
  302. package/dist/query/tcp.js.map +1 -0
  303. package/dist/query/transport.d.ts +36 -0
  304. package/dist/query/transport.d.ts.map +1 -0
  305. package/dist/query/transport.js +2 -0
  306. package/dist/query/transport.js.map +1 -0
  307. package/dist/query/web.d.ts +54 -0
  308. package/dist/query/web.d.ts.map +1 -0
  309. package/dist/query/web.js +146 -0
  310. package/dist/query/web.js.map +1 -0
  311. package/dist/versions/index.d.ts +3094 -0
  312. package/dist/versions/index.d.ts.map +1 -0
  313. package/dist/versions/index.js +9237 -0
  314. package/dist/versions/index.js.map +1 -0
  315. package/package.json +118 -4
  316. package/src/client/abort.ts +24 -0
  317. package/src/client/address.ts +74 -0
  318. package/src/client/api/voice.ts +61 -0
  319. package/src/client/capabilities.ts +106 -0
  320. package/src/client/client.ts +1809 -0
  321. package/src/client/commands.ts +193 -0
  322. package/src/client/crypto/crypt-ops.ts +6 -0
  323. package/src/client/crypto/crypt.ts +275 -0
  324. package/src/client/crypto/eax.ts +152 -0
  325. package/src/client/crypto/identity.ts +484 -0
  326. package/src/client/crypto/index.ts +21 -0
  327. package/src/client/crypto/primitives.ts +141 -0
  328. package/src/client/diagnostics.ts +58 -0
  329. package/src/client/discovery/index.ts +1 -0
  330. package/src/client/discovery/resolver.ts +325 -0
  331. package/src/client/errors.ts +217 -0
  332. package/src/client/events.ts +12 -0
  333. package/src/client/handshake/crypt-handshake.ts +157 -0
  334. package/src/client/handshake/crypt-init2.ts +48 -0
  335. package/src/client/handshake/index.ts +3 -0
  336. package/src/client/handshake/license.ts +208 -0
  337. package/src/client/handshake.ts +150 -0
  338. package/src/client/helpers.ts +10 -0
  339. package/src/client/hooks.ts +30 -0
  340. package/src/client/index.ts +93 -0
  341. package/src/client/reconnect.ts +43 -0
  342. package/src/client/throttle.ts +92 -0
  343. package/src/client/trace.ts +237 -0
  344. package/src/client/transfer.ts +436 -0
  345. package/src/client/transport/generation-window.ts +108 -0
  346. package/src/client/transport/handler.ts +926 -0
  347. package/src/client/transport/index.ts +14 -0
  348. package/src/client/transport/packet.ts +69 -0
  349. package/src/client/transport/quicklz.ts +209 -0
  350. package/src/client/types.ts +268 -0
  351. package/src/core/api/channels.ts +396 -0
  352. package/src/core/api/clients.ts +654 -0
  353. package/src/core/api/command.ts +563 -0
  354. package/src/core/api/files.ts +405 -0
  355. package/src/core/api/groups.ts +622 -0
  356. package/src/core/api/moderation.ts +525 -0
  357. package/src/core/api/parse.ts +52 -0
  358. package/src/core/api/server.ts +709 -0
  359. package/src/core/command/command.ts +125 -0
  360. package/src/core/command/ids.ts +149 -0
  361. package/src/core/command/parser.ts +68 -0
  362. package/src/core/command/request.ts +119 -0
  363. package/src/core/command/responses.ts +114 -0
  364. package/src/core/command-name.ts +334 -0
  365. package/src/core/enums.ts +167 -0
  366. package/src/core/errorcode.ts +412 -0
  367. package/src/core/errors.ts +258 -0
  368. package/src/core/events.ts +219 -0
  369. package/src/core/helpers.ts +161 -0
  370. package/src/core/index.ts +126 -0
  371. package/src/core/internal.ts +23 -0
  372. package/src/core/middleware.ts +24 -0
  373. package/src/core/notification-name.ts +155 -0
  374. package/src/core/notifications.ts +157 -0
  375. package/src/core/permission-name.ts +538 -0
  376. package/src/core/permission.ts +34 -0
  377. package/src/core/property-name.ts +411 -0
  378. package/src/core/reason.ts +38 -0
  379. package/src/core/reconnect.ts +98 -0
  380. package/src/core/types.ts +138 -0
  381. package/src/query/client.ts +1132 -0
  382. package/src/query/errors.ts +108 -0
  383. package/src/query/index.ts +65 -0
  384. package/src/query/knownhosts.ts +257 -0
  385. package/src/query/lines.ts +28 -0
  386. package/src/query/options.ts +388 -0
  387. package/src/query/reconnect.ts +84 -0
  388. package/src/query/ssh.ts +614 -0
  389. package/src/query/stream.ts +91 -0
  390. package/src/query/tcp.ts +85 -0
  391. package/src/query/transport.ts +35 -0
  392. package/src/query/web.ts +195 -0
  393. package/src/versions/index.ts +10774 -0
@@ -0,0 +1,82 @@
1
+ import { TeamspeakError } from "@honeybbq/teamspeak";
2
+ /**
3
+ * The address a client was given cannot be connected to: no host, a host with
4
+ * characters no host name or IP address has, or a port outside 1–65535.
5
+ * `connect()` rejects with it before it starts, and the client stays
6
+ * disconnected. A name that does not resolve is not this: that fails with a
7
+ * TeamspeakError whose `cause` is the lookup's error, since DNS failures are
8
+ * often transient.
9
+ */
10
+ export declare class InvalidAddressError extends TeamspeakError {
11
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
12
+ static readonly kind: string;
13
+ /** The address as given. */
14
+ readonly address: string;
15
+ constructor(address: string, reason: string);
16
+ }
17
+ /**
18
+ * A packet failed authentication: it was corrupted, or not from the server.
19
+ * Internal: the packet is dropped, and this never reaches a caller.
20
+ */
21
+ export declare class EAXTagMismatchError extends TeamspeakError {
22
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
23
+ static readonly kind: string;
24
+ constructor();
25
+ }
26
+ /**
27
+ * An unencrypted packet failed its integrity check. Internal: the packet is
28
+ * dropped, and this never reaches a caller.
29
+ */
30
+ export declare class FakeSignatureMismatchError extends TeamspeakError {
31
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
32
+ static readonly kind: string;
33
+ constructor();
34
+ }
35
+ /** A file transfer connection failed: it could not be opened, or broke during the transfer. */
36
+ export declare class FileTransferError extends TeamspeakError {
37
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
38
+ static readonly kind: string;
39
+ constructor(message: string, options?: ErrorOptions);
40
+ }
41
+ /**
42
+ * The handshake failed on what the server sent: a malformed or out-of-range
43
+ * Init1 step, public key, license or proof. `connect()` rejects with it, the
44
+ * underlying failure as its `cause`.
45
+ */
46
+ export declare class HandshakeError extends TeamspeakError {
47
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
48
+ static readonly kind: string;
49
+ constructor(message: string, options?: ErrorOptions);
50
+ }
51
+ /** An identity string `parseIdentity()` cannot read. */
52
+ export declare class InvalidIdentityError extends TeamspeakError {
53
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
54
+ static readonly kind: string;
55
+ constructor(message?: string, options?: ErrorOptions);
56
+ }
57
+ /**
58
+ * The server stopped answering: nothing arrived, or a packet went
59
+ * unacknowledged, for a minute.
60
+ */
61
+ export declare class ConnectionTimeoutError extends TeamspeakError {
62
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
63
+ static readonly kind: string;
64
+ constructor();
65
+ }
66
+ /**
67
+ * The server ended this client's session: a kick, a ban, or the server
68
+ * stopping. The default reconnect policy retries a server that stopped, but
69
+ * not a kick or a ban.
70
+ */
71
+ export declare class RemovedError extends TeamspeakError {
72
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
73
+ static readonly kind: string;
74
+ /** Why: `Reason.KickServer`, `KickServerBan`, `ServerStop` or `ServerShutdown`. */
75
+ readonly reason: number;
76
+ /** The reason the server or the invoker gave, if any. */
77
+ readonly reasonMessage: string;
78
+ /** Who removed the client, for a kick or a ban. */
79
+ readonly invokerName: string;
80
+ constructor(reason: number, reasonMessage: string, invokerName: string);
81
+ }
82
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/client/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,4DAA4D;IAC5D,gBAAyB,IAAI,EAAE,MAAM,CAAyB;IAY9D,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAG1C;CACF;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,4DAA4D;IAC5D,gBAAyB,IAAI,EAAE,MAAM,CAAyB;IAY9D,cAEC;CACF;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,cAAc;IAC5D,4DAA4D;IAC5D,gBAAyB,IAAI,EAAE,MAAM,CAAgC;IAYrE,cAEC;CACF;AAED,+FAA+F;AAC/F,qBAAa,iBAAkB,SAAQ,cAAc;IACnD,4DAA4D;IAC5D,gBAAyB,IAAI,EAAE,MAAM,CAAuB;IAY5D,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAElD;CACF;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,4DAA4D;IAC5D,gBAAyB,IAAI,EAAE,MAAM,CAAoB;IAYzD,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAElD;CACF;AAED,wDAAwD;AACxD,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,4DAA4D;IAC5D,gBAAyB,IAAI,EAAE,MAAM,CAA0B;IAY/D,YAAY,OAAO,SAA4B,EAAE,OAAO,CAAC,EAAE,YAAY,EAEtE;CACF;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,cAAc;IACxD,4DAA4D;IAC5D,gBAAyB,IAAI,EAAE,MAAM,CAA4B;IAYjE,cAEC;CACF;AAED;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,cAAc;IAC9C,4DAA4D;IAC5D,gBAAyB,IAAI,EAAE,MAAM,CAAkB;IAYvD,mFAAmF;IACnF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,YAAY,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAQrE;CACF"}
@@ -0,0 +1,201 @@
1
+ import { Reason, TeamspeakError } from "@honeybbq/teamspeak";
2
+ /**
3
+ * The address a client was given cannot be connected to: no host, a host with
4
+ * characters no host name or IP address has, or a port outside 1–65535.
5
+ * `connect()` rejects with it before it starts, and the client stays
6
+ * disconnected. A name that does not resolve is not this: that fails with a
7
+ * TeamspeakError whose `cause` is the lookup's error, since DNS failures are
8
+ * often transient.
9
+ */
10
+ export class InvalidAddressError extends TeamspeakError {
11
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
12
+ static kind = "InvalidAddressError";
13
+ static {
14
+ // On the prototype, not the instance, as built-in errors do: an own `name`
15
+ // would be enumerable and show up in JSON.stringify and object spread.
16
+ Object.defineProperty(this.prototype, "name", {
17
+ value: "InvalidAddressError",
18
+ writable: true,
19
+ configurable: true,
20
+ enumerable: false,
21
+ });
22
+ }
23
+ /** The address as given. */
24
+ address;
25
+ constructor(address, reason) {
26
+ super(`invalid address ${JSON.stringify(address)}: ${reason}`);
27
+ this.address = address;
28
+ }
29
+ }
30
+ /**
31
+ * A packet failed authentication: it was corrupted, or not from the server.
32
+ * Internal: the packet is dropped, and this never reaches a caller.
33
+ */
34
+ export class EAXTagMismatchError extends TeamspeakError {
35
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
36
+ static kind = "EAXTagMismatchError";
37
+ static {
38
+ // On the prototype, not the instance, as built-in errors do: an own `name`
39
+ // would be enumerable and show up in JSON.stringify and object spread.
40
+ Object.defineProperty(this.prototype, "name", {
41
+ value: "EAXTagMismatchError",
42
+ writable: true,
43
+ configurable: true,
44
+ enumerable: false,
45
+ });
46
+ }
47
+ constructor() {
48
+ super("EAX tag mismatch");
49
+ }
50
+ }
51
+ /**
52
+ * An unencrypted packet failed its integrity check. Internal: the packet is
53
+ * dropped, and this never reaches a caller.
54
+ */
55
+ export class FakeSignatureMismatchError extends TeamspeakError {
56
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
57
+ static kind = "FakeSignatureMismatchError";
58
+ static {
59
+ // On the prototype, not the instance, as built-in errors do: an own `name`
60
+ // would be enumerable and show up in JSON.stringify and object spread.
61
+ Object.defineProperty(this.prototype, "name", {
62
+ value: "FakeSignatureMismatchError",
63
+ writable: true,
64
+ configurable: true,
65
+ enumerable: false,
66
+ });
67
+ }
68
+ constructor() {
69
+ super("fake signature mismatch");
70
+ }
71
+ }
72
+ /** A file transfer connection failed: it could not be opened, or broke during the transfer. */
73
+ export class FileTransferError extends TeamspeakError {
74
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
75
+ static kind = "FileTransferError";
76
+ static {
77
+ // On the prototype, not the instance, as built-in errors do: an own `name`
78
+ // would be enumerable and show up in JSON.stringify and object spread.
79
+ Object.defineProperty(this.prototype, "name", {
80
+ value: "FileTransferError",
81
+ writable: true,
82
+ configurable: true,
83
+ enumerable: false,
84
+ });
85
+ }
86
+ constructor(message, options) {
87
+ super(message, options);
88
+ }
89
+ }
90
+ /**
91
+ * The handshake failed on what the server sent: a malformed or out-of-range
92
+ * Init1 step, public key, license or proof. `connect()` rejects with it, the
93
+ * underlying failure as its `cause`.
94
+ */
95
+ export class HandshakeError extends TeamspeakError {
96
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
97
+ static kind = "HandshakeError";
98
+ static {
99
+ // On the prototype, not the instance, as built-in errors do: an own `name`
100
+ // would be enumerable and show up in JSON.stringify and object spread.
101
+ Object.defineProperty(this.prototype, "name", {
102
+ value: "HandshakeError",
103
+ writable: true,
104
+ configurable: true,
105
+ enumerable: false,
106
+ });
107
+ }
108
+ constructor(message, options) {
109
+ super(message, options);
110
+ }
111
+ }
112
+ /** An identity string `parseIdentity()` cannot read. */
113
+ export class InvalidIdentityError extends TeamspeakError {
114
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
115
+ static kind = "InvalidIdentityError";
116
+ static {
117
+ // On the prototype, not the instance, as built-in errors do: an own `name`
118
+ // would be enumerable and show up in JSON.stringify and object spread.
119
+ Object.defineProperty(this.prototype, "name", {
120
+ value: "InvalidIdentityError",
121
+ writable: true,
122
+ configurable: true,
123
+ enumerable: false,
124
+ });
125
+ }
126
+ constructor(message = "invalid identity format", options) {
127
+ super(message, options);
128
+ }
129
+ }
130
+ /**
131
+ * The server stopped answering: nothing arrived, or a packet went
132
+ * unacknowledged, for a minute.
133
+ */
134
+ export class ConnectionTimeoutError extends TeamspeakError {
135
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
136
+ static kind = "ConnectionTimeoutError";
137
+ static {
138
+ // On the prototype, not the instance, as built-in errors do: an own `name`
139
+ // would be enumerable and show up in JSON.stringify and object spread.
140
+ Object.defineProperty(this.prototype, "name", {
141
+ value: "ConnectionTimeoutError",
142
+ writable: true,
143
+ configurable: true,
144
+ enumerable: false,
145
+ });
146
+ }
147
+ constructor() {
148
+ super("connection timed out: the server stopped answering");
149
+ }
150
+ }
151
+ /**
152
+ * The server ended this client's session: a kick, a ban, or the server
153
+ * stopping. The default reconnect policy retries a server that stopped, but
154
+ * not a kick or a ban.
155
+ */
156
+ export class RemovedError extends TeamspeakError {
157
+ /** {@inheritDoc @honeybbq/teamspeak!TeamspeakError.kind} */
158
+ static kind = "RemovedError";
159
+ static {
160
+ // On the prototype, not the instance, as built-in errors do: an own `name`
161
+ // would be enumerable and show up in JSON.stringify and object spread.
162
+ Object.defineProperty(this.prototype, "name", {
163
+ value: "RemovedError",
164
+ writable: true,
165
+ configurable: true,
166
+ enumerable: false,
167
+ });
168
+ }
169
+ /** Why: `Reason.KickServer`, `KickServerBan`, `ServerStop` or `ServerShutdown`. */
170
+ reason;
171
+ /** The reason the server or the invoker gave, if any. */
172
+ reasonMessage;
173
+ /** Who removed the client, for a kick or a ban. */
174
+ invokerName;
175
+ constructor(reason, reasonMessage, invokerName) {
176
+ let message = `removed from the server: ${reasonName(reason)}`;
177
+ if (invokerName)
178
+ message += ` by ${invokerName}`;
179
+ if (reasonMessage)
180
+ message += `: ${reasonMessage}`;
181
+ super(message);
182
+ this.reason = reason;
183
+ this.reasonMessage = reasonMessage;
184
+ this.invokerName = invokerName;
185
+ }
186
+ }
187
+ function reasonName(reason) {
188
+ switch (reason) {
189
+ case Reason.KickServer:
190
+ return "kicked from server";
191
+ case Reason.KickServerBan:
192
+ return "banned from server";
193
+ case Reason.ServerStop:
194
+ return "server stopped";
195
+ case Reason.ServerShutdown:
196
+ return "server shut down";
197
+ default:
198
+ return `reason ${reason}`;
199
+ }
200
+ }
201
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/client/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IACrD,4DAA4D;IAC5D,MAAM,CAAmB,IAAI,GAAW,qBAAqB,CAAC;IAC9D;QACE,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;YAC5C,KAAK,EAAE,qBAAqB;YAC5B,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,4BAA4B;IACnB,OAAO,CAAS;IAEzB,YAAY,OAAe,EAAE,MAAc;QACzC,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IACrD,4DAA4D;IAC5D,MAAM,CAAmB,IAAI,GAAW,qBAAqB,CAAC;IAC9D;QACE,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;YAC5C,KAAK,EAAE,qBAAqB;YAC5B,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED;QACE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,0BAA2B,SAAQ,cAAc;IAC5D,4DAA4D;IAC5D,MAAM,CAAmB,IAAI,GAAW,4BAA4B,CAAC;IACrE;QACE,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;YAC5C,KAAK,EAAE,4BAA4B;YACnC,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED;QACE,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACnC,CAAC;CACF;AAED,+FAA+F;AAC/F,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IACnD,4DAA4D;IAC5D,MAAM,CAAmB,IAAI,GAAW,mBAAmB,CAAC;IAC5D;QACE,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;YAC5C,KAAK,EAAE,mBAAmB;YAC1B,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,cAAe,SAAQ,cAAc;IAChD,4DAA4D;IAC5D,MAAM,CAAmB,IAAI,GAAW,gBAAgB,CAAC;IACzD;QACE,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;YAC5C,KAAK,EAAE,gBAAgB;YACvB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,wDAAwD;AACxD,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IACtD,4DAA4D;IAC5D,MAAM,CAAmB,IAAI,GAAW,sBAAsB,CAAC;IAC/D;QACE,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;YAC5C,KAAK,EAAE,sBAAsB;YAC7B,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,YAAY,OAAO,GAAG,yBAAyB,EAAE,OAAsB;QACrE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACxD,4DAA4D;IAC5D,MAAM,CAAmB,IAAI,GAAW,wBAAwB,CAAC;IACjE;QACE,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;YAC5C,KAAK,EAAE,wBAAwB;YAC/B,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED;QACE,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC9D,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,cAAc;IAC9C,4DAA4D;IAC5D,MAAM,CAAmB,IAAI,GAAW,cAAc,CAAC;IACvD;QACE,2EAA2E;QAC3E,uEAAuE;QACvE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;YAC5C,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,mFAAmF;IAC1E,MAAM,CAAS;IACxB,yDAAyD;IAChD,aAAa,CAAS;IAC/B,mDAAmD;IAC1C,WAAW,CAAS;IAE7B,YAAY,MAAc,EAAE,aAAqB,EAAE,WAAmB;QACpE,IAAI,OAAO,GAAG,4BAA4B,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,IAAI,WAAW;YAAE,OAAO,IAAI,OAAO,WAAW,EAAE,CAAC;QACjD,IAAI,aAAa;YAAE,OAAO,IAAI,KAAK,aAAa,EAAE,CAAC;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,UAAU;YACpB,OAAO,oBAAoB,CAAC;QAC9B,KAAK,MAAM,CAAC,aAAa;YACvB,OAAO,oBAAoB,CAAC;QAC9B,KAAK,MAAM,CAAC,UAAU;YACpB,OAAO,gBAAgB,CAAC;QAC1B,KAAK,MAAM,CAAC,cAAc;YACxB,OAAO,kBAAkB,CAAC;QAC5B;YACE,OAAO,UAAU,MAAM,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { EventMiddleware, ServerEvent } from "./types.js";
2
+ export declare function buildEventChain(middlewares: EventMiddleware[], base: (event: ServerEvent) => void): (event: ServerEvent) => void;
3
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/client/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE/D,wBAAgB,eAAe,CAC7B,WAAW,EAAE,eAAe,EAAE,EAC9B,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GACjC,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAM9B"}
@@ -0,0 +1,8 @@
1
+ export function buildEventChain(middlewares, base) {
2
+ let handler = base;
3
+ for (let i = middlewares.length - 1; i >= 0; i--) {
4
+ handler = middlewares[i](handler);
5
+ }
6
+ return handler;
7
+ }
8
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/client/events.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAC7B,WAA8B,EAC9B,IAAkC;IAElC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,OAAO,GAAG,WAAW,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Crypt } from "../crypto/crypt.js";
2
+ export declare const INIT_VERSION = 1566914096;
3
+ /**
4
+ * The RSA puzzle `crypt`'s attempt solved: the level the server demanded and
5
+ * the milliseconds spent on it. Level 0 and no time when the server sent none.
6
+ */
7
+ export declare function puzzleOf(crypt: Crypt): {
8
+ readonly level: number;
9
+ readonly durationMs: number;
10
+ };
11
+ /**
12
+ * Handle the TS3INIT1 handshake steps.
13
+ * Returns the response bytes to send, or null if nothing should be sent.
14
+ * Throws a HandshakeError for a step that cannot be answered.
15
+ */
16
+ export declare function processInit1(crypt: Crypt, data: Uint8Array | null): Uint8Array | null;
17
+ //# sourceMappingURL=crypt-handshake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypt-handshake.d.ts","sourceRoot":"","sources":["../../../src/client/handshake/crypt-handshake.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGhD,eAAO,MAAM,YAAY,aAAa,CAAC;AAiBvC;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAG9F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,CAmBrF"}
@@ -0,0 +1,128 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { buildCommandOrdered } from "../../core/internal.js";
3
+ import { HandshakeError } from "../errors.js";
4
+ export const INIT_VERSION = 1566914096; // 3.5.0 [Stable]
5
+ const INIT_VERSION_LEN = 4;
6
+ const INIT_TYPE_LEN = 1;
7
+ const INIT_STEP_LEN = 21;
8
+ /** The RSA challenge each connection attempt, by its Crypt, has answered. */
9
+ const answeredChallenges = new WeakMap();
10
+ /**
11
+ * The RSA puzzle `crypt`'s attempt solved: the level the server demanded and
12
+ * the milliseconds spent on it. Level 0 and no time when the server sent none.
13
+ */
14
+ export function puzzleOf(crypt) {
15
+ const answered = answeredChallenges.get(crypt);
16
+ return { level: answered?.level ?? 0, durationMs: answered?.durationMs ?? 0 };
17
+ }
18
+ /**
19
+ * Handle the TS3INIT1 handshake steps.
20
+ * Returns the response bytes to send, or null if nothing should be sent.
21
+ * Throws a HandshakeError for a step that cannot be answered.
22
+ */
23
+ export function processInit1(crypt, data) {
24
+ if (data === null || (data.length >= 1 && data[0] === 0x7f)) {
25
+ return buildInit1StartPacket();
26
+ }
27
+ if (data.length === 0)
28
+ throw new HandshakeError("empty Init1 packet");
29
+ switch (data[0]) {
30
+ case 0:
31
+ return buildInit1Step1Packet(data);
32
+ case 1:
33
+ return buildInit1Step2Packet(data);
34
+ case 2:
35
+ return buildInit1Step3Packet(data);
36
+ case 3:
37
+ return buildInit1Step4Packet(crypt, data);
38
+ case undefined:
39
+ default:
40
+ return null;
41
+ }
42
+ }
43
+ function buildInit1StartPacket() {
44
+ const sendData = new Uint8Array(INIT_VERSION_LEN + INIT_TYPE_LEN + 4 + 4 + 8);
45
+ const view = new DataView(sendData.buffer);
46
+ view.setUint32(0, INIT_VERSION, false);
47
+ sendData[4] = 0x00;
48
+ const nowSec = Math.floor(Date.now() / 1000);
49
+ const clampedNow = Math.max(0, Math.min(nowSec, 0xffff_ffff));
50
+ view.setUint32(5, clampedNow, false);
51
+ const rng = randomBytes(4);
52
+ sendData.set(rng, 9);
53
+ return sendData;
54
+ }
55
+ function buildInit1Step1Packet(data) {
56
+ if (data.length !== INIT_STEP_LEN)
57
+ return null;
58
+ const sendData = new Uint8Array(INIT_TYPE_LEN + 16 + 4);
59
+ sendData[0] = 0x01;
60
+ // TS rand: little-endian uint32 at offset [INIT_VERSION_LEN + INIT_TYPE_LEN + 4]
61
+ const tsRandOffset = INIT_VERSION_LEN + INIT_TYPE_LEN + 4;
62
+ const tsRand = data[tsRandOffset] |
63
+ (data[tsRandOffset + 1] << 8) |
64
+ (data[tsRandOffset + 2] << 16) |
65
+ (data[tsRandOffset + 3] << 24);
66
+ new DataView(sendData.buffer).setUint32(INIT_TYPE_LEN + 16, tsRand >>> 0, false);
67
+ return sendData;
68
+ }
69
+ function buildInit1Step2Packet(data) {
70
+ if (data.length !== INIT_STEP_LEN)
71
+ return null;
72
+ const sendData = new Uint8Array(INIT_VERSION_LEN + INIT_TYPE_LEN + 16 + 4);
73
+ new DataView(sendData.buffer).setUint32(0, INIT_VERSION, false);
74
+ sendData[4] = 0x02;
75
+ sendData.set(data.slice(1, 21), 5);
76
+ return sendData;
77
+ }
78
+ function buildInit1Step3Packet(data) {
79
+ if (data.length !== INIT_VERSION_LEN + INIT_TYPE_LEN + 16 + 4)
80
+ return null;
81
+ const sendData = new Uint8Array(INIT_TYPE_LEN + 64 + 64 + 4 + 100);
82
+ sendData[0] = 0x03;
83
+ sendData[INIT_TYPE_LEN + 64 - 1] = 1;
84
+ sendData[INIT_TYPE_LEN + 64 + 64 - 1] = 1;
85
+ new DataView(sendData.buffer).setUint32(INIT_TYPE_LEN + 64 + 64, 1, false);
86
+ return sendData;
87
+ }
88
+ function buildInit1Step4Packet(crypt, data) {
89
+ if (data.length !== INIT_TYPE_LEN + 64 + 64 + 4 + 100)
90
+ return null;
91
+ // One challenge per connection attempt, whose Crypt is its own. Each answer
92
+ // costs up to a second of synchronous squarings, and a second would choose a
93
+ // new alpha behind the clientinitiv already sent. The same challenge again
94
+ // means the server did not get our answer, so it gets the same answer,
95
+ // without solving anything; a different one gets none.
96
+ const answered = answeredChallenges.get(crypt);
97
+ if (answered !== undefined) {
98
+ return Buffer.from(answered.challenge).equals(Buffer.from(data)) ? answered.answer : null;
99
+ }
100
+ const level = new DataView(data.buffer, data.byteOffset).getUint32(1 + 128, false);
101
+ const solveStarted = performance.now();
102
+ const y = crypt.solveRsaChallenge(data, 1, level);
103
+ const durationMs = performance.now() - solveStarted;
104
+ const alphaB64 = Buffer.from(crypt.newAlpha()).toString("base64");
105
+ const omegaB64 = crypt.identity.publicKey();
106
+ const cmd = buildCommandOrdered("clientinitiv", [
107
+ ["alpha", alphaB64],
108
+ ["omega", omegaB64],
109
+ ["ot", "1"],
110
+ ["ip", ""],
111
+ ]);
112
+ const cmdBytes = Buffer.from(cmd);
113
+ const sendData = new Uint8Array(INIT_VERSION_LEN + INIT_TYPE_LEN + 232 + 64 + cmdBytes.length);
114
+ const view = new DataView(sendData.buffer);
115
+ view.setUint32(0, INIT_VERSION, false);
116
+ sendData[4] = 0x04;
117
+ sendData.set(data.slice(1, 233), 5);
118
+ sendData.set(y.slice(0, 64), 5 + 232);
119
+ sendData.set(cmdBytes, 5 + 232 + 64);
120
+ answeredChallenges.set(crypt, {
121
+ challenge: Uint8Array.from(data),
122
+ answer: sendData,
123
+ level,
124
+ durationMs,
125
+ });
126
+ return sendData;
127
+ }
128
+ //# sourceMappingURL=crypt-handshake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypt-handshake.js","sourceRoot":"","sources":["../../../src/client/handshake/crypt-handshake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,iBAAiB;AAEzD,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,6EAA6E;AAC7E,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAQnC,CAAC;AAEJ;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAY;IACnC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,IAAuB;IAChE,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5D,OAAO,qBAAqB,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,oBAAoB,CAAC,CAAC;IAEtE,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,KAAK,CAAC;YACJ,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,CAAC;YACJ,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,CAAC;YACJ,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,CAAC;YACJ,OAAO,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,KAAK,SAAS,CAAC;QACf;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB;IAC5B,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,gBAAgB,GAAG,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3C,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IACvC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAErC,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAErB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAgB;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,aAAa,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEnB,iFAAiF;IACjF,MAAM,YAAY,GAAG,gBAAgB,GAAG,aAAa,GAAG,CAAC,CAAC;IAC1D,MAAM,MAAM,GACV,IAAI,CAAC,YAAY,CAAE;QACnB,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC;QAC9B,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAE,IAAI,EAAE,CAAC;QAC/B,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAE,IAAI,EAAE,CAAC,CAAC;IAElC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,GAAG,EAAE,EAAE,MAAM,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IACjF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAgB;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,gBAAgB,GAAG,aAAa,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAChE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAgB;IAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,GAAG,aAAa,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3E,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACnE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,aAAa,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACrC,QAAQ,CAAC,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3E,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAY,EAAE,IAAgB;IAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IACnE,4EAA4E;IAC5E,6EAA6E;IAC7E,2EAA2E;IAC3E,uEAAuE;IACvE,uDAAuD;IACvD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5F,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;IAEpD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IAE5C,MAAM,GAAG,GAAG,mBAAmB,CAAC,cAAc,EAAE;QAC9C,CAAC,OAAO,EAAE,QAAQ,CAAC;QACnB,CAAC,OAAO,EAAE,QAAQ,CAAC;QACnB,CAAC,IAAI,EAAE,GAAG,CAAC;QACX,CAAC,IAAI,EAAE,EAAE,CAAC;KACX,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,gBAAgB,GAAG,aAAa,GAAG,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/F,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IACvC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;IAErC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE;QAC5B,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,MAAM,EAAE,QAAQ;QAChB,KAAK;QACL,UAAU;KACX,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Crypt } from "../crypto/crypt.js";
2
+ /**
3
+ * CryptoInit2 performs the second stage of crypto initialization (Ed25519 ECDH).
4
+ * Mirrors Go's handshake.CryptoInit2.
5
+ */
6
+ export declare function cryptoInit2(crypt: Crypt, license: string, omega: string, proof: string, beta: string, privateKey: Uint8Array): void;
7
+ //# sourceMappingURL=crypt-init2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypt-init2.d.ts","sourceRoot":"","sources":["../../../src/client/handshake/crypt-init2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAMhD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,GACrB,IAAI,CA6BN"}
@@ -0,0 +1,37 @@
1
+ import { importPublicKey } from "../crypto/identity.js";
2
+ import { verifySign, getSharedSecret2 } from "../crypto/primitives.js";
3
+ import { parseLicenses } from "./license.js";
4
+ import { HandshakeError } from "../errors.js";
5
+ /**
6
+ * CryptoInit2 performs the second stage of crypto initialization (Ed25519 ECDH).
7
+ * Mirrors Go's handshake.CryptoInit2.
8
+ */
9
+ export function cryptoInit2(crypt, license, omega, proof, beta, privateKey) {
10
+ if (crypt.alpha.length === 0) {
11
+ throw new HandshakeError("initivexpand2 arrived before clientinitiv was sent");
12
+ }
13
+ const licenseBytes = Buffer.from(license, "base64");
14
+ const omegaBytes = Buffer.from(omega, "base64");
15
+ const proofBytes = Buffer.from(proof, "base64");
16
+ const betaBytes = Buffer.from(beta, "base64");
17
+ let serverPubKey;
18
+ try {
19
+ serverPubKey = importPublicKey(omegaBytes);
20
+ }
21
+ catch (error) {
22
+ throw new HandshakeError("the server's public key is invalid", { cause: error });
23
+ }
24
+ if (!verifySign(serverPubKey, licenseBytes, proofBytes)) {
25
+ throw new HandshakeError("the server's license proof is not valid");
26
+ }
27
+ let sharedSecret;
28
+ try {
29
+ const key = parseLicenses(licenseBytes).deriveKey();
30
+ sharedSecret = getSharedSecret2(key, privateKey);
31
+ }
32
+ catch (error) {
33
+ throw new HandshakeError("the server's license is invalid", { cause: error });
34
+ }
35
+ crypt.setSharedSecret(crypt.alpha, betaBytes, sharedSecret);
36
+ }
37
+ //# sourceMappingURL=crypt-init2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypt-init2.js","sourceRoot":"","sources":["../../../src/client/handshake/crypt-init2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,KAAY,EACZ,OAAe,EACf,KAAa,EACb,KAAa,EACb,IAAY,EACZ,UAAsB;IAEtB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,cAAc,CAAC,oDAAoD,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE9C,IAAI,YAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,cAAc,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,cAAc,CAAC,yCAAyC,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,YAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;QACpD,YAAY,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,cAAc,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { processInit1, INIT_VERSION } from "./crypt-handshake.js";
2
+ export { cryptoInit2 } from "./crypt-init2.js";
3
+ export { LicenseChain, parseLicenses } from "./license.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/handshake/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { processInit1, INIT_VERSION } from "./crypt-handshake.js";
2
+ export { cryptoInit2 } from "./crypt-init2.js";
3
+ export { LicenseChain, parseLicenses } from "./license.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/handshake/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,35 @@
1
+ declare const enum LicenseBlockType {
2
+ Intermediate = 0,
3
+ Server = 2,
4
+ Ts5Server = 8,
5
+ Ephemeral = 32
6
+ }
7
+ interface LicenseBlock {
8
+ readonly key: Uint8Array;
9
+ readonly hash: Uint8Array;
10
+ properties: Uint8Array[];
11
+ issuer: string;
12
+ notValidBefore: Date;
13
+ notValidAfter: Date;
14
+ blockType: LicenseBlockType;
15
+ serverType: number;
16
+ }
17
+ export declare class LicenseChain {
18
+ readonly blocks: LicenseBlock[];
19
+ constructor(blocks: LicenseBlock[]);
20
+ /**
21
+ * Derive the session key by chaining Ed25519 point arithmetic starting from
22
+ * the root key through each license block.
23
+ */
24
+ deriveKey(): Uint8Array<ArrayBuffer>;
25
+ }
26
+ /**
27
+ * The most blocks a license chain may have. Real chains have two or three —
28
+ * root-issued intermediate, server, ephemeral — and every block costs a
29
+ * point multiplication to derive, so a server's chain of thousands would hold
30
+ * the event loop for seconds.
31
+ */
32
+ export declare const MAX_LICENSE_BLOCKS = 8;
33
+ export declare function parseLicenses(data: Uint8Array): LicenseChain;
34
+ export {};
35
+ //# sourceMappingURL=license.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../../src/client/handshake/license.ts"],"names":[],"mappings":"AAUA,mBAAW,gBAAgB;IACzB,YAAY,IAAI;IAChB,MAAM,IAAI;IACV,SAAS,IAAI;IACb,SAAS,KAAK;CACf;AAED,UAAU,YAAY;IACpB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,IAAI,CAAC;IACrB,aAAa,EAAE,IAAI,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,YAAY;IACvB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;IAEhC,YAAY,MAAM,EAAE,YAAY,EAAE,EAEjC;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,CAAC,WAAW,CAAC,CAMnC;CACF;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CAiB5D"}