@honeybbq/teamspeak 0.0.1 → 1.0.0-beta.10

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 (428) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +749 -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/avatars.d.ts +65 -0
  12. package/dist/client/api/avatars.d.ts.map +1 -0
  13. package/dist/client/api/avatars.js +118 -0
  14. package/dist/client/api/avatars.js.map +1 -0
  15. package/dist/client/api/voice.d.ts +59 -0
  16. package/dist/client/api/voice.d.ts.map +1 -0
  17. package/dist/client/api/voice.js +110 -0
  18. package/dist/client/api/voice.js.map +1 -0
  19. package/dist/client/capabilities.d.ts +68 -0
  20. package/dist/client/capabilities.d.ts.map +1 -0
  21. package/dist/client/capabilities.js +59 -0
  22. package/dist/client/capabilities.js.map +1 -0
  23. package/dist/client/client.d.ts +226 -0
  24. package/dist/client/client.d.ts.map +1 -0
  25. package/dist/client/client.js +1634 -0
  26. package/dist/client/client.js.map +1 -0
  27. package/dist/client/commands.d.ts +66 -0
  28. package/dist/client/commands.d.ts.map +1 -0
  29. package/dist/client/commands.js +168 -0
  30. package/dist/client/commands.js.map +1 -0
  31. package/dist/client/connection-info.d.ts +14 -0
  32. package/dist/client/connection-info.d.ts.map +1 -0
  33. package/dist/client/connection-info.js +47 -0
  34. package/dist/client/connection-info.js.map +1 -0
  35. package/dist/client/crypto/crypt-ops.d.ts +7 -0
  36. package/dist/client/crypto/crypt-ops.d.ts.map +1 -0
  37. package/dist/client/crypto/crypt-ops.js +2 -0
  38. package/dist/client/crypto/crypt-ops.js.map +1 -0
  39. package/dist/client/crypto/crypt.d.ts +37 -0
  40. package/dist/client/crypto/crypt.d.ts.map +1 -0
  41. package/dist/client/crypto/crypt.js +203 -0
  42. package/dist/client/crypto/crypt.js.map +1 -0
  43. package/dist/client/crypto/eax.d.ts +12 -0
  44. package/dist/client/crypto/eax.d.ts.map +1 -0
  45. package/dist/client/crypto/eax.js +118 -0
  46. package/dist/client/crypto/eax.js.map +1 -0
  47. package/dist/client/crypto/identity.d.ts +97 -0
  48. package/dist/client/crypto/identity.d.ts.map +1 -0
  49. package/dist/client/crypto/identity.js +412 -0
  50. package/dist/client/crypto/identity.js.map +1 -0
  51. package/dist/client/crypto/index.d.ts +7 -0
  52. package/dist/client/crypto/index.d.ts.map +1 -0
  53. package/dist/client/crypto/index.js +5 -0
  54. package/dist/client/crypto/index.js.map +1 -0
  55. package/dist/client/crypto/primitives.d.ts +43 -0
  56. package/dist/client/crypto/primitives.d.ts.map +1 -0
  57. package/dist/client/crypto/primitives.js +116 -0
  58. package/dist/client/crypto/primitives.js.map +1 -0
  59. package/dist/client/diagnostics.d.ts +45 -0
  60. package/dist/client/diagnostics.d.ts.map +1 -0
  61. package/dist/client/diagnostics.js +30 -0
  62. package/dist/client/diagnostics.js.map +1 -0
  63. package/dist/client/discovery/index.d.ts +2 -0
  64. package/dist/client/discovery/index.d.ts.map +1 -0
  65. package/dist/client/discovery/index.js +2 -0
  66. package/dist/client/discovery/index.js.map +1 -0
  67. package/dist/client/discovery/resolver.d.ts +26 -0
  68. package/dist/client/discovery/resolver.d.ts.map +1 -0
  69. package/dist/client/discovery/resolver.js +275 -0
  70. package/dist/client/discovery/resolver.js.map +1 -0
  71. package/dist/client/errors.d.ts +82 -0
  72. package/dist/client/errors.d.ts.map +1 -0
  73. package/dist/client/errors.js +201 -0
  74. package/dist/client/errors.js.map +1 -0
  75. package/dist/client/events.d.ts +3 -0
  76. package/dist/client/events.d.ts.map +1 -0
  77. package/dist/client/events.js +8 -0
  78. package/dist/client/events.js.map +1 -0
  79. package/dist/client/handshake/crypt-handshake.d.ts +17 -0
  80. package/dist/client/handshake/crypt-handshake.d.ts.map +1 -0
  81. package/dist/client/handshake/crypt-handshake.js +128 -0
  82. package/dist/client/handshake/crypt-handshake.js.map +1 -0
  83. package/dist/client/handshake/crypt-init2.d.ts +7 -0
  84. package/dist/client/handshake/crypt-init2.d.ts.map +1 -0
  85. package/dist/client/handshake/crypt-init2.js +37 -0
  86. package/dist/client/handshake/crypt-init2.js.map +1 -0
  87. package/dist/client/handshake/index.d.ts +4 -0
  88. package/dist/client/handshake/index.d.ts.map +1 -0
  89. package/dist/client/handshake/index.js +4 -0
  90. package/dist/client/handshake/index.js.map +1 -0
  91. package/dist/client/handshake/license.d.ts +35 -0
  92. package/dist/client/handshake/license.d.ts.map +1 -0
  93. package/dist/client/handshake/license.js +169 -0
  94. package/dist/client/handshake/license.js.map +1 -0
  95. package/dist/client/handshake.d.ts +27 -0
  96. package/dist/client/handshake.d.ts.map +1 -0
  97. package/dist/client/handshake.js +126 -0
  98. package/dist/client/handshake.js.map +1 -0
  99. package/dist/client/helpers.d.ts +6 -0
  100. package/dist/client/helpers.d.ts.map +1 -0
  101. package/dist/client/helpers.js +13 -0
  102. package/dist/client/helpers.js.map +1 -0
  103. package/dist/client/hooks.d.ts +7 -0
  104. package/dist/client/hooks.d.ts.map +1 -0
  105. package/dist/client/hooks.js +28 -0
  106. package/dist/client/hooks.js.map +1 -0
  107. package/dist/client/index.d.ts +27 -0
  108. package/dist/client/index.d.ts.map +1 -0
  109. package/dist/client/index.js +29 -0
  110. package/dist/client/index.js.map +1 -0
  111. package/dist/client/reconnect.d.ts +12 -0
  112. package/dist/client/reconnect.d.ts.map +1 -0
  113. package/dist/client/reconnect.js +44 -0
  114. package/dist/client/reconnect.js.map +1 -0
  115. package/dist/client/throttle.d.ts +20 -0
  116. package/dist/client/throttle.d.ts.map +1 -0
  117. package/dist/client/throttle.js +83 -0
  118. package/dist/client/throttle.js.map +1 -0
  119. package/dist/client/trace.d.ts +223 -0
  120. package/dist/client/trace.d.ts.map +1 -0
  121. package/dist/client/trace.js +13 -0
  122. package/dist/client/trace.js.map +1 -0
  123. package/dist/client/transfer.d.ts +111 -0
  124. package/dist/client/transfer.d.ts.map +1 -0
  125. package/dist/client/transfer.js +243 -0
  126. package/dist/client/transfer.js.map +1 -0
  127. package/dist/client/transport/generation-window.d.ts +30 -0
  128. package/dist/client/transport/generation-window.d.ts.map +1 -0
  129. package/dist/client/transport/generation-window.js +97 -0
  130. package/dist/client/transport/generation-window.js.map +1 -0
  131. package/dist/client/transport/handler.d.ts +79 -0
  132. package/dist/client/transport/handler.d.ts.map +1 -0
  133. package/dist/client/transport/handler.js +868 -0
  134. package/dist/client/transport/handler.js.map +1 -0
  135. package/dist/client/transport/index.d.ts +6 -0
  136. package/dist/client/transport/index.d.ts.map +1 -0
  137. package/dist/client/transport/index.js +5 -0
  138. package/dist/client/transport/index.js.map +1 -0
  139. package/dist/client/transport/packet.d.ts +36 -0
  140. package/dist/client/transport/packet.d.ts.map +1 -0
  141. package/dist/client/transport/packet.js +55 -0
  142. package/dist/client/transport/packet.js.map +1 -0
  143. package/dist/client/transport/quicklz.d.ts +24 -0
  144. package/dist/client/transport/quicklz.d.ts.map +1 -0
  145. package/dist/client/transport/quicklz.js +179 -0
  146. package/dist/client/transport/quicklz.js.map +1 -0
  147. package/dist/client/transport/traffic.d.ts +43 -0
  148. package/dist/client/transport/traffic.d.ts.map +1 -0
  149. package/dist/client/transport/traffic.js +90 -0
  150. package/dist/client/transport/traffic.js.map +1 -0
  151. package/dist/client/types.d.ts +382 -0
  152. package/dist/client/types.d.ts.map +1 -0
  153. package/dist/client/types.js +111 -0
  154. package/dist/client/types.js.map +1 -0
  155. package/dist/core/api/avatars.d.ts +26 -0
  156. package/dist/core/api/avatars.d.ts.map +1 -0
  157. package/dist/core/api/avatars.js +37 -0
  158. package/dist/core/api/avatars.js.map +1 -0
  159. package/dist/core/api/channels.d.ts +191 -0
  160. package/dist/core/api/channels.d.ts.map +1 -0
  161. package/dist/core/api/channels.js +174 -0
  162. package/dist/core/api/channels.js.map +1 -0
  163. package/dist/core/api/clients.d.ts +558 -0
  164. package/dist/core/api/clients.d.ts.map +1 -0
  165. package/dist/core/api/clients.js +431 -0
  166. package/dist/core/api/clients.js.map +1 -0
  167. package/dist/core/api/command.d.ts +400 -0
  168. package/dist/core/api/command.d.ts.map +1 -0
  169. package/dist/core/api/command.js +462 -0
  170. package/dist/core/api/command.js.map +1 -0
  171. package/dist/core/api/credentials.d.ts +186 -0
  172. package/dist/core/api/credentials.d.ts.map +1 -0
  173. package/dist/core/api/credentials.js +144 -0
  174. package/dist/core/api/credentials.js.map +1 -0
  175. package/dist/core/api/files.d.ts +153 -0
  176. package/dist/core/api/files.d.ts.map +1 -0
  177. package/dist/core/api/files.js +185 -0
  178. package/dist/core/api/files.js.map +1 -0
  179. package/dist/core/api/groups.d.ts +301 -0
  180. package/dist/core/api/groups.d.ts.map +1 -0
  181. package/dist/core/api/groups.js +339 -0
  182. package/dist/core/api/groups.js.map +1 -0
  183. package/dist/core/api/icons.d.ts +67 -0
  184. package/dist/core/api/icons.d.ts.map +1 -0
  185. package/dist/core/api/icons.js +125 -0
  186. package/dist/core/api/icons.js.map +1 -0
  187. package/dist/core/api/instance.d.ts +197 -0
  188. package/dist/core/api/instance.d.ts.map +1 -0
  189. package/dist/core/api/instance.js +160 -0
  190. package/dist/core/api/instance.js.map +1 -0
  191. package/dist/core/api/moderation.d.ts +266 -0
  192. package/dist/core/api/moderation.d.ts.map +1 -0
  193. package/dist/core/api/moderation.js +258 -0
  194. package/dist/core/api/moderation.js.map +1 -0
  195. package/dist/core/api/parse.d.ts +36 -0
  196. package/dist/core/api/parse.d.ts.map +1 -0
  197. package/dist/core/api/parse.js +109 -0
  198. package/dist/core/api/parse.js.map +1 -0
  199. package/dist/core/api/server.d.ts +334 -0
  200. package/dist/core/api/server.d.ts.map +1 -0
  201. package/dist/core/api/server.js +324 -0
  202. package/dist/core/api/server.js.map +1 -0
  203. package/dist/core/command/command.d.ts +20 -0
  204. package/dist/core/command/command.d.ts.map +1 -0
  205. package/dist/core/command/command.js +112 -0
  206. package/dist/core/command/command.js.map +1 -0
  207. package/dist/core/command/ids.d.ts +131 -0
  208. package/dist/core/command/ids.d.ts.map +1 -0
  209. package/dist/core/command/ids.js +87 -0
  210. package/dist/core/command/ids.js.map +1 -0
  211. package/dist/core/command/parser.d.ts +17 -0
  212. package/dist/core/command/parser.d.ts.map +1 -0
  213. package/dist/core/command/parser.js +65 -0
  214. package/dist/core/command/parser.js.map +1 -0
  215. package/dist/core/command/request.d.ts +61 -0
  216. package/dist/core/command/request.d.ts.map +1 -0
  217. package/dist/core/command/request.js +64 -0
  218. package/dist/core/command/request.js.map +1 -0
  219. package/dist/core/command/responses.d.ts +70 -0
  220. package/dist/core/command/responses.d.ts.map +1 -0
  221. package/dist/core/command/responses.js +88 -0
  222. package/dist/core/command/responses.js.map +1 -0
  223. package/dist/core/command-name.d.ts +349 -0
  224. package/dist/core/command-name.d.ts.map +1 -0
  225. package/dist/core/command-name.js +347 -0
  226. package/dist/core/command-name.js.map +1 -0
  227. package/dist/core/enums.d.ts +188 -0
  228. package/dist/core/enums.d.ts.map +1 -0
  229. package/dist/core/enums.js +172 -0
  230. package/dist/core/enums.js.map +1 -0
  231. package/dist/core/errorcode.d.ts +413 -0
  232. package/dist/core/errorcode.d.ts.map +1 -0
  233. package/dist/core/errorcode.js +410 -0
  234. package/dist/core/errorcode.js.map +1 -0
  235. package/dist/core/errors.d.ts +119 -0
  236. package/dist/core/errors.d.ts.map +1 -0
  237. package/dist/core/errors.js +241 -0
  238. package/dist/core/errors.js.map +1 -0
  239. package/dist/core/events.d.ts +391 -0
  240. package/dist/core/events.d.ts.map +1 -0
  241. package/dist/core/events.js +6 -0
  242. package/dist/core/events.js.map +1 -0
  243. package/dist/core/helpers.d.ts +42 -0
  244. package/dist/core/helpers.d.ts.map +1 -0
  245. package/dist/core/helpers.js +156 -0
  246. package/dist/core/helpers.js.map +1 -0
  247. package/dist/core/index.d.ts +40 -0
  248. package/dist/core/index.d.ts.map +1 -0
  249. package/dist/core/index.js +39 -0
  250. package/dist/core/index.js.map +1 -0
  251. package/dist/core/internal.d.ts +24 -0
  252. package/dist/core/internal.d.ts.map +1 -0
  253. package/dist/core/internal.js +21 -0
  254. package/dist/core/internal.js.map +1 -0
  255. package/dist/core/middleware.d.ts +14 -0
  256. package/dist/core/middleware.d.ts.map +1 -0
  257. package/dist/core/middleware.js +18 -0
  258. package/dist/core/middleware.js.map +1 -0
  259. package/dist/core/notification-name.d.ts +160 -0
  260. package/dist/core/notification-name.d.ts.map +1 -0
  261. package/dist/core/notification-name.js +158 -0
  262. package/dist/core/notification-name.js.map +1 -0
  263. package/dist/core/notifications.d.ts +93 -0
  264. package/dist/core/notifications.d.ts.map +1 -0
  265. package/dist/core/notifications.js +301 -0
  266. package/dist/core/notifications.js.map +1 -0
  267. package/dist/core/permission-name.d.ts +1046 -0
  268. package/dist/core/permission-name.d.ts.map +1 -0
  269. package/dist/core/permission-name.js +1045 -0
  270. package/dist/core/permission-name.js.map +1 -0
  271. package/dist/core/permission.d.ts +31 -0
  272. package/dist/core/permission.d.ts.map +1 -0
  273. package/dist/core/permission.js +20 -0
  274. package/dist/core/permission.js.map +1 -0
  275. package/dist/core/property-name.d.ts +403 -0
  276. package/dist/core/property-name.d.ts.map +1 -0
  277. package/dist/core/property-name.js +405 -0
  278. package/dist/core/property-name.js.map +1 -0
  279. package/dist/core/reason.d.ts +39 -0
  280. package/dist/core/reason.d.ts.map +1 -0
  281. package/dist/core/reason.js +36 -0
  282. package/dist/core/reason.js.map +1 -0
  283. package/dist/core/reconnect.d.ts +59 -0
  284. package/dist/core/reconnect.d.ts.map +1 -0
  285. package/dist/core/reconnect.js +55 -0
  286. package/dist/core/reconnect.js.map +1 -0
  287. package/dist/core/types.d.ts +122 -0
  288. package/dist/core/types.d.ts.map +1 -0
  289. package/dist/core/types.js +27 -0
  290. package/dist/core/types.js.map +1 -0
  291. package/dist/query/client.d.ts +244 -0
  292. package/dist/query/client.d.ts.map +1 -0
  293. package/dist/query/client.js +1093 -0
  294. package/dist/query/client.js.map +1 -0
  295. package/dist/query/errors.d.ts +61 -0
  296. package/dist/query/errors.d.ts.map +1 -0
  297. package/dist/query/errors.js +100 -0
  298. package/dist/query/errors.js.map +1 -0
  299. package/dist/query/index.d.ts +36 -0
  300. package/dist/query/index.d.ts.map +1 -0
  301. package/dist/query/index.js +34 -0
  302. package/dist/query/index.js.map +1 -0
  303. package/dist/query/knownhosts.d.ts +61 -0
  304. package/dist/query/knownhosts.d.ts.map +1 -0
  305. package/dist/query/knownhosts.js +223 -0
  306. package/dist/query/knownhosts.js.map +1 -0
  307. package/dist/query/lines.d.ts +14 -0
  308. package/dist/query/lines.d.ts.map +1 -0
  309. package/dist/query/lines.js +29 -0
  310. package/dist/query/lines.js.map +1 -0
  311. package/dist/query/options.d.ts +202 -0
  312. package/dist/query/options.d.ts.map +1 -0
  313. package/dist/query/options.js +251 -0
  314. package/dist/query/options.js.map +1 -0
  315. package/dist/query/reconnect.d.ts +29 -0
  316. package/dist/query/reconnect.d.ts.map +1 -0
  317. package/dist/query/reconnect.js +87 -0
  318. package/dist/query/reconnect.js.map +1 -0
  319. package/dist/query/ssh.d.ts +385 -0
  320. package/dist/query/ssh.d.ts.map +1 -0
  321. package/dist/query/ssh.js +257 -0
  322. package/dist/query/ssh.js.map +1 -0
  323. package/dist/query/stream.d.ts +38 -0
  324. package/dist/query/stream.d.ts.map +1 -0
  325. package/dist/query/stream.js +70 -0
  326. package/dist/query/stream.js.map +1 -0
  327. package/dist/query/tcp.d.ts +38 -0
  328. package/dist/query/tcp.d.ts.map +1 -0
  329. package/dist/query/tcp.js +53 -0
  330. package/dist/query/tcp.js.map +1 -0
  331. package/dist/query/transport.d.ts +36 -0
  332. package/dist/query/transport.d.ts.map +1 -0
  333. package/dist/query/transport.js +2 -0
  334. package/dist/query/transport.js.map +1 -0
  335. package/dist/query/web.d.ts +78 -0
  336. package/dist/query/web.d.ts.map +1 -0
  337. package/dist/query/web.js +157 -0
  338. package/dist/query/web.js.map +1 -0
  339. package/dist/versions/index.d.ts +3094 -0
  340. package/dist/versions/index.d.ts.map +1 -0
  341. package/dist/versions/index.js +9237 -0
  342. package/dist/versions/index.js.map +1 -0
  343. package/package.json +119 -4
  344. package/src/client/abort.ts +24 -0
  345. package/src/client/address.ts +74 -0
  346. package/src/client/api/avatars.ts +164 -0
  347. package/src/client/api/voice.ts +177 -0
  348. package/src/client/capabilities.ts +106 -0
  349. package/src/client/client.ts +1942 -0
  350. package/src/client/commands.ts +201 -0
  351. package/src/client/connection-info.ts +52 -0
  352. package/src/client/crypto/crypt-ops.ts +6 -0
  353. package/src/client/crypto/crypt.ts +275 -0
  354. package/src/client/crypto/eax.ts +152 -0
  355. package/src/client/crypto/identity.ts +484 -0
  356. package/src/client/crypto/index.ts +21 -0
  357. package/src/client/crypto/primitives.ts +141 -0
  358. package/src/client/diagnostics.ts +58 -0
  359. package/src/client/discovery/index.ts +1 -0
  360. package/src/client/discovery/resolver.ts +325 -0
  361. package/src/client/errors.ts +217 -0
  362. package/src/client/events.ts +12 -0
  363. package/src/client/handshake/crypt-handshake.ts +157 -0
  364. package/src/client/handshake/crypt-init2.ts +48 -0
  365. package/src/client/handshake/index.ts +3 -0
  366. package/src/client/handshake/license.ts +208 -0
  367. package/src/client/handshake.ts +150 -0
  368. package/src/client/helpers.ts +10 -0
  369. package/src/client/hooks.ts +30 -0
  370. package/src/client/index.ts +95 -0
  371. package/src/client/reconnect.ts +43 -0
  372. package/src/client/throttle.ts +92 -0
  373. package/src/client/trace.ts +237 -0
  374. package/src/client/transfer.ts +436 -0
  375. package/src/client/transport/generation-window.ts +108 -0
  376. package/src/client/transport/handler.ts +1021 -0
  377. package/src/client/transport/index.ts +14 -0
  378. package/src/client/transport/packet.ts +69 -0
  379. package/src/client/transport/quicklz.ts +209 -0
  380. package/src/client/transport/traffic.ts +116 -0
  381. package/src/client/types.ts +458 -0
  382. package/src/core/api/avatars.ts +40 -0
  383. package/src/core/api/channels.ts +420 -0
  384. package/src/core/api/clients.ts +1094 -0
  385. package/src/core/api/command.ts +737 -0
  386. package/src/core/api/credentials.ts +335 -0
  387. package/src/core/api/files.ts +411 -0
  388. package/src/core/api/groups.ts +730 -0
  389. package/src/core/api/icons.ts +175 -0
  390. package/src/core/api/instance.ts +369 -0
  391. package/src/core/api/moderation.ts +632 -0
  392. package/src/core/api/parse.ts +139 -0
  393. package/src/core/api/server.ts +769 -0
  394. package/src/core/command/command.ts +125 -0
  395. package/src/core/command/ids.ts +153 -0
  396. package/src/core/command/parser.ts +68 -0
  397. package/src/core/command/request.ts +119 -0
  398. package/src/core/command/responses.ts +140 -0
  399. package/src/core/command-name.ts +350 -0
  400. package/src/core/enums.ts +215 -0
  401. package/src/core/errorcode.ts +412 -0
  402. package/src/core/errors.ts +266 -0
  403. package/src/core/events.ts +418 -0
  404. package/src/core/helpers.ts +161 -0
  405. package/src/core/index.ts +152 -0
  406. package/src/core/internal.ts +24 -0
  407. package/src/core/middleware.ts +24 -0
  408. package/src/core/notification-name.ts +161 -0
  409. package/src/core/notifications.ts +404 -0
  410. package/src/core/permission-name.ts +1162 -0
  411. package/src/core/permission.ts +34 -0
  412. package/src/core/property-name.ts +411 -0
  413. package/src/core/reason.ts +38 -0
  414. package/src/core/reconnect.ts +98 -0
  415. package/src/core/types.ts +150 -0
  416. package/src/query/client.ts +1274 -0
  417. package/src/query/errors.ts +108 -0
  418. package/src/query/index.ts +66 -0
  419. package/src/query/knownhosts.ts +257 -0
  420. package/src/query/lines.ts +28 -0
  421. package/src/query/options.ts +448 -0
  422. package/src/query/reconnect.ts +84 -0
  423. package/src/query/ssh.ts +674 -0
  424. package/src/query/stream.ts +91 -0
  425. package/src/query/tcp.ts +85 -0
  426. package/src/query/transport.ts +35 -0
  427. package/src/query/web.ts +234 -0
  428. package/src/versions/index.ts +10774 -0
@@ -0,0 +1,59 @@
1
+ /**
2
+ * What the connected server is, and what that means for the caller.
3
+ *
4
+ * TS3 and TS6 differ in ways that stay invisible until something breaks. The
5
+ * clearest: the server hashes a client's public key with SHA-1 on TS3 and
6
+ * SHA-256 on TS6, so a client that assumes either one computes a
7
+ * `client_unique_identifier` the other server never sends.
8
+ *
9
+ * Everything below comes from the handshake — `initserver` carries
10
+ * `virtualserver_version`, the one place the server names itself, along with
11
+ * its name, icon, banner and welcome message — so reading it costs no extra
12
+ * round trip.
13
+ */
14
+ import { asServerID } from "@honeybbq/teamspeak";
15
+ import { parseIconID, parseUint64 } from "../core/internal.js";
16
+ import { uidAlgorithmForVersion } from "./crypto/identity.js";
17
+ /**
18
+ * Read what a server says about itself in `initserver`, or a version string
19
+ * alone, such as "6.0.0-beta13.1 [Build: 1]".
20
+ */
21
+ export function parseServerCapabilities(initserver) {
22
+ const params = typeof initserver === "string" ? { virtualserver_version: initserver } : initserver;
23
+ const version = params["virtualserver_version"] ?? "";
24
+ const parsed = Number.parseInt(version, 10);
25
+ const major = Number.isNaN(parsed) ? 0 : parsed;
26
+ let family = "unknown";
27
+ if (major === 3)
28
+ family = "ts3";
29
+ else if (major >= 6)
30
+ family = "ts6";
31
+ return {
32
+ version,
33
+ major,
34
+ family,
35
+ uidAlgorithm: uidAlgorithmForVersion(version),
36
+ name: params["virtualserver_name"] ?? "",
37
+ iconID: parseIconID(params["virtualserver_icon_id"]),
38
+ hostBannerImageURL: params["virtualserver_hostbanner_gfx_url"]?.trim() || undefined,
39
+ welcomeMessage: params["virtualserver_welcomemessage"] ?? "",
40
+ serverID: asServerID(parseUint64(params["virtualserver_id"] ?? "")),
41
+ serverUID: params["virtualserver_unique_identifier"] ?? "",
42
+ hostMessage: params["virtualserver_hostmessage"] ?? "",
43
+ hostMessageMode: hostMessageMode(params["virtualserver_hostmessage_mode"]),
44
+ };
45
+ }
46
+ /**
47
+ * Capabilities of a server that has not been connected to yet.
48
+ *
49
+ * The family is `unknown` — nothing has said which server this is — and
50
+ * `uidAlgorithm` is SHA-1, the TS3 hash.
51
+ */
52
+ export function unknownServerCapabilities() {
53
+ return parseServerCapabilities("");
54
+ }
55
+ function hostMessageMode(value) {
56
+ const parsed = Number.parseInt(value ?? "", 10);
57
+ return Number.isNaN(parsed) ? 0 : parsed;
58
+ }
59
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/client/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAiD,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAqB,MAAM,sBAAsB,CAAC;AA2CjF;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAqD;IAErD,MAAM,MAAM,GACV,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IACtF,MAAM,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhD,IAAI,MAAM,GAAiB,SAAS,CAAC;IACrC,IAAI,KAAK,KAAK,CAAC;QAAE,MAAM,GAAG,KAAK,CAAC;SAC3B,IAAI,KAAK,IAAI,CAAC;QAAE,MAAM,GAAG,KAAK,CAAC;IAEpC,OAAO;QACL,OAAO;QACP,KAAK;QACL,MAAM;QACN,YAAY,EAAE,sBAAsB,CAAC,OAAO,CAAC;QAC7C,IAAI,EAAE,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE;QACxC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACpD,kBAAkB,EAAE,MAAM,CAAC,kCAAkC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS;QACnF,cAAc,EAAE,MAAM,CAAC,8BAA8B,CAAC,IAAI,EAAE;QAC5D,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,SAAS,EAAE,MAAM,CAAC,iCAAiC,CAAC,IAAI,EAAE;QAC1D,WAAW,EAAE,MAAM,CAAC,2BAA2B,CAAC,IAAI,EAAE;QACtD,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,uBAAuB,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,226 @@
1
+ import { type EventMap, type VoiceOptions, type WhisperTargets, type GroupWhisperTarget, type ClientOptions } from "./types.js";
2
+ import { type ChannelID, type ClientID, type Codec, type CommandOptions, type UID, type Listener, type Unsubscribe, ClientStatus } from "@honeybbq/teamspeak";
3
+ import type { Identity } from "./crypto/index.js";
4
+ import { type FileTransferOptions } from "./transfer.js";
5
+ import type { ClientVersion, CommandExecutor, CommandRequest } from "@honeybbq/teamspeak";
6
+ import type { FileUploadInfo, FileDownloadInfo } from "@honeybbq/teamspeak";
7
+ import type { Readable, Writable } from "node:stream";
8
+ import { type ServerCapabilities } from "./capabilities.js";
9
+ /**
10
+ * What clientinit sends about the connection, with the passwords already in
11
+ * their wire form, `base64(sha1(password))`: hashed once, when the client is
12
+ * made, so the plain text is never held.
13
+ */
14
+ export interface ClientInitOptions {
15
+ readonly serverPasswordHash: string;
16
+ readonly defaultChannel: string;
17
+ readonly defaultChannelPasswordHash: string;
18
+ /** The privilege key (`client_default_token`), or `""`; dropped once a connection succeeds. */
19
+ readonly privilegeKey: string;
20
+ /** The meta data (`client_meta_data`), or `""`. */
21
+ readonly metaData: string;
22
+ /** The platform, version and signature, copied so later changes to the option have no effect. */
23
+ readonly version: ClientVersion;
24
+ }
25
+ /**
26
+ * A TeamSpeak client over the voice protocol.
27
+ *
28
+ * Listeners run one at a time, in the order their events arrived, after the
29
+ * packet that carried them has been handled, so a listener may call the client
30
+ * and await an answer.
31
+ */
32
+ export declare class Client implements CommandExecutor, AsyncDisposable {
33
+ #private;
34
+ constructor(identity: Identity, addr: string, nickname: string, options?: ClientOptions);
35
+ /** Where the client is in its connection's life. */
36
+ get status(): ClientStatus;
37
+ /**
38
+ * Connect to the server. Resolves once the handshake completes.
39
+ *
40
+ * An address that cannot be one — no host, a port outside 1–65535 — rejects
41
+ * with an InvalidAddressError at once, before anything starts. A host name
42
+ * that does not resolve fails the attempt with a TeamspeakError whose
43
+ * `cause` is the lookup's error.
44
+ *
45
+ * A failed attempt rejects with its cause, such as the server's error for a
46
+ * rejected password. Aborting `signal` abandons the attempt and rejects with
47
+ * the signal's reason. The signal bounds only the connecting: once this
48
+ * resolves, the connection lasts until `disconnect()` or a drop.
49
+ * `connect()` does not retry; the `reconnect` option only retries a
50
+ * connection that drops after it was established.
51
+ *
52
+ * Called while a `disconnect()` is still saying goodbye, or while an earlier
53
+ * session's `disconnected` is still waiting to be delivered, this waits for
54
+ * that first, so the old session is closed, and its `disconnected`
55
+ * delivered, before the new one starts: no listener or `events()` iterator
56
+ * of the new session hears the old one end. A `disconnect()` called during
57
+ * that wait wins: this then rejects with a NotConnectedError.
58
+ *
59
+ * `connected` is delivered after this resolves, so a listener added right
60
+ * after `await client.connect()` still hears it.
61
+ */
62
+ connect(options?: {
63
+ readonly signal?: AbortSignal | undefined;
64
+ }): Promise<void>;
65
+ /**
66
+ * Leave the server and close the connection.
67
+ *
68
+ * Says goodbye first, waiting for the server's acknowledgement for a second
69
+ * at most, or less if `signal` aborts sooner. The connection is closed
70
+ * either way. A `connect()` still waiting for its handshake rejects with a
71
+ * NotConnectedError, and so do the commands still waiting for an answer.
72
+ * Resolves once `disconnected` has been delivered to the listeners, so one
73
+ * added after `await client.disconnect()` does not hear it. Does nothing on
74
+ * a client that is not connected; called again while an earlier call is
75
+ * still saying goodbye, it waits for that one (and its message is the first
76
+ * call's).
77
+ *
78
+ * `reasonMessage` is what the server tells the other clients who see this
79
+ * one leave, in `clientLeave`'s `reasonMessage` (`reasonmsg` of
80
+ * `clientdisconnect`, sent with `reasonid=8`, `Reason.Disconnect`: measured
81
+ * on TeamSpeak 3 and 6, the server drops the message without it);
82
+ * default `"Shutdown"`.
83
+ */
84
+ disconnect(options?: {
85
+ readonly signal?: AbortSignal | undefined;
86
+ readonly reasonMessage?: string | undefined;
87
+ }): Promise<void>;
88
+ /** `await using client = …` disconnects when the scope ends. */
89
+ [Symbol.asyncDispose](): Promise<void>;
90
+ /**
91
+ * Send a raw command line and return the rows that answer it: the escape
92
+ * hatch for a command the typed functions do not cover. The line is sent as
93
+ * given, so its values must already be escaped and any channel password
94
+ * already hashed. `CommandName` lists the command names.
95
+ *
96
+ * Rejects with a NotConnectedError unless the client is connected: while it
97
+ * is still connecting, the session's keys may not exist yet.
98
+ */
99
+ exec(command: string, options?: CommandOptions): Promise<Record<string, string>[]>;
100
+ /**
101
+ * Send a raw command line without waiting for an answer, for the few
102
+ * commands the server answers with nothing at all. `CommandName` lists
103
+ * the command names.
104
+ *
105
+ * Commands are paced by a flood throttle; aborting `signal` while this waits
106
+ * for its turn rejects with the signal's reason and sends nothing. Rejects
107
+ * with a NotConnectedError unless the client is connected.
108
+ */
109
+ execNoWait(command: string, options?: {
110
+ readonly signal?: AbortSignal | undefined;
111
+ }): Promise<void>;
112
+ /**
113
+ * Send a typed command; this is the CommandExecutor the typed commands run on.
114
+ *
115
+ * The request passes through the `commandMiddleware` first. Channel
116
+ * passwords are then hashed, because that is this protocol's rule: the voice
117
+ * protocol expects `base64(sha1(password))`, where ServerQuery takes the
118
+ * password itself.
119
+ */
120
+ send(request: CommandRequest, options?: CommandOptions): Promise<Record<string, string>[]>;
121
+ /**
122
+ * Listen for an event. Returns a function that removes the listener.
123
+ *
124
+ * The event is named by an {@link EventName} constant or by its string, and
125
+ * the listener's payload type follows from it:
126
+ *
127
+ * ```ts
128
+ * client.on(EventName.TextMessage, (message) => console.log(message.message));
129
+ * ```
130
+ *
131
+ * A listener that throws does not stop the others: the rest of the event's
132
+ * listeners, and the events after it, are still delivered, and the exception
133
+ * is rethrown on its own, from a microtask, so it surfaces as an
134
+ * `uncaughtException` just as an EventEmitter listener's would. An async
135
+ * listener's rejection is not caught, and surfaces as an unhandled
136
+ * rejection.
137
+ */
138
+ on<K extends keyof EventMap>(event: K, listener: Listener<EventMap, K>): Unsubscribe;
139
+ /** Listen for the next occurrence of an event only. */
140
+ once<K extends keyof EventMap>(event: K, listener: Listener<EventMap, K>): Unsubscribe;
141
+ /**
142
+ * An event as an async iterator, for `for await`:
143
+ *
144
+ * ```ts
145
+ * for await (const message of client.events("textMessage", { signal })) { … }
146
+ * ```
147
+ *
148
+ * Events that arrive while the loop body runs are buffered, so none is
149
+ * missed. The buffer is unbounded: an iterator that is not consumed as fast
150
+ * as events arrive holds every one of them in memory until it is read, so
151
+ * stop iterating (or abort `signal`) when you stop reading. Voice is the
152
+ * exception: at most 256 `voiceData` frames are buffered, and the rest are
153
+ * dropped, as for a listener that falls behind.
154
+ *
155
+ * Iteration ends when the loop exits early (`break`, `return`, a throw), and
156
+ * — for every event but `disconnected` — when the client disconnects. When
157
+ * `signal` aborts, listening stops at once, whatever is buffered is
158
+ * discarded, and the pending and every later `next()` reject with the
159
+ * signal's reason, as `events.on` in Node does.
160
+ *
161
+ * `next()` may be called again before an earlier call has settled; the calls
162
+ * are answered in order.
163
+ */
164
+ events<K extends keyof EventMap>(event: K, options?: {
165
+ readonly signal?: AbortSignal | undefined;
166
+ }): AsyncIterableIterator<EventMap[K]>;
167
+ /** This client's id on the server, assigned in the handshake; 0 before it. */
168
+ get clientID(): ClientID;
169
+ /**
170
+ * What the connected server is: version, generation, and the uid hash it
171
+ * uses. Read from `initserver`; before connecting the family is `unknown`
172
+ * and the uid hash SHA-1.
173
+ */
174
+ get serverCapabilities(): ServerCapabilities;
175
+ /**
176
+ * Our own `client_unique_identifier`, hashed with the algorithm the connected
177
+ * server uses.
178
+ *
179
+ * TS3 uses SHA-1 and TS6 SHA-256, so this reads the algorithm learned during
180
+ * initserver rather than assuming one. Comparing a hard-coded SHA-1 UID to a
181
+ * TS6 server silently never matches.
182
+ */
183
+ get uid(): UID;
184
+ /**
185
+ * The host this client connects to, as it was given, without the port: where
186
+ * the file transfer port is, for `uploadFileData` and the avatar and icon
187
+ * helpers.
188
+ */
189
+ get host(): string;
190
+ /** The channel this client is in, as it last learned; 0 before connecting. */
191
+ get channelID(): ChannelID;
192
+ /**
193
+ * Send Opus voice directly to clients, to channels, or to both: the
194
+ * packet's direct form. Throws a NotConnectedError unless the client is
195
+ * connected, and a RangeError for no target at all, more than 32 clients,
196
+ * more than 255 channels, or an id the packet cannot hold. Whether a target
197
+ * hears it is the server's decision, from `i_client_whisper_power` against
198
+ * the target's `i_client_needed_whisper_power`.
199
+ */
200
+ sendWhisper(data: Uint8Array, targets: WhisperTargets, codec: Codec): void;
201
+ /**
202
+ * Send Opus voice to a group of clients: a server group, a channel group,
203
+ * the channel commanders or everyone, within the channels the target's
204
+ * `scope` picks. The packet's group form; `sendWhisper` is the direct one.
205
+ * Throws a NotConnectedError unless the client is connected, and a
206
+ * RangeError for a type, scope or group id the packet cannot hold. Whether
207
+ * a client hears it is the server's decision, as for `sendWhisper`.
208
+ */
209
+ sendGroupWhisper(data: Uint8Array, target: GroupWhisperTarget, codec: Codec): void;
210
+ /**
211
+ * Send one encoded audio frame to the channel this client is in. Throws a
212
+ * NotConnectedError unless the client is connected.
213
+ */
214
+ sendVoice(data: Uint8Array, codec: Codec, options?: VoiceOptions): void;
215
+ /**
216
+ * Upload `data` over a negotiated transfer, through the client's
217
+ * `fileTransferSocketFactory` if it has one.
218
+ */
219
+ uploadFileData(host: string, info: FileUploadInfo, data: Readable, options?: Pick<FileTransferOptions, "signal" | "trace">): Promise<void>;
220
+ /**
221
+ * Download a negotiated transfer into `dest`, through the client's
222
+ * `fileTransferSocketFactory` if it has one.
223
+ */
224
+ downloadFileData(host: string, info: FileDownloadInfo, dest: Writable, options?: Pick<FileTransferOptions, "signal" | "trace">): Promise<void>;
225
+ }
226
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}