@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,209 @@
1
+ /**
2
+ * Bans, complaints, offline messages, text messages and the server log.
3
+ *
4
+ * All administrative: expect a permission error, not an empty list, when the
5
+ * client lacks the rights.
6
+ */
7
+ import { nonZero, firstRow, exec, query, list, encodeFields, nonEmpty, toWireDuration, str, big, num, bool, date, durationMs, SECOND, } from "./command.js";
8
+ import { asBanID, asClientDBID, asMessageID, asUID } from "../command/ids.js";
9
+ import { TextMessageTarget } from "../enums.js";
10
+ const parseBan = (row) => ({
11
+ id: asBanID(big(row, "banid")),
12
+ ip: str(row, "ip"),
13
+ name: str(row, "name"),
14
+ uid: asUID(str(row, "uid")),
15
+ lastNickname: str(row, "lastnickname"),
16
+ createdAt: date(row, "created"),
17
+ durationMs: durationMs(row, "duration", SECOND),
18
+ invokerDatabaseID: asClientDBID(big(row, "invokercldbid")),
19
+ invokerName: str(row, "invokername"),
20
+ invokerUID: asUID(str(row, "invokeruid")),
21
+ reason: str(row, "reason"),
22
+ enforcements: num(row, "enforcements"),
23
+ });
24
+ /** Every active ban. A server with none answers an empty list. */
25
+ export async function listBans(client, options) {
26
+ return (await list(client, "banlist", [], options)).map(parseBan);
27
+ }
28
+ /**
29
+ * A ban's duration on the wire. A permanent ban (0) omits it: the server's
30
+ * default is permanent, which is also what `time=0` means. A positive duration
31
+ * never rounds down to 0, which would make it permanent.
32
+ */
33
+ const banTime = (ms) => (ms === 0 ? undefined : toWireDuration(ms, SECOND));
34
+ const banNames = {
35
+ ip: ["ip", nonEmpty],
36
+ name: ["name", nonEmpty],
37
+ uid: ["uid", nonEmpty],
38
+ reason: ["banreason", nonEmpty],
39
+ durationMs: ["time", banTime],
40
+ };
41
+ const banClientNames = {
42
+ durationMs: ["time", banTime],
43
+ reason: ["banreason", nonEmpty],
44
+ };
45
+ /**
46
+ * Add a ban and return its id — over ServerQuery. The voice protocol reports
47
+ * no id, so there this resolves to undefined.
48
+ *
49
+ * `ban` is what to ban; the command's `signal` and `timeoutMs` go in `options`,
50
+ * a separate last argument — set among the fields, they are not read.
51
+ */
52
+ export async function addBan(client, ban, options) {
53
+ if (!ban.ip && !ban.name && !ban.uid) {
54
+ throw new TypeError("a ban needs an ip, a name or a uid to match");
55
+ }
56
+ const rows = await query(client, "banadd", encodeFields(ban, banNames), options);
57
+ return rows[0]?.["banid"] === undefined ? undefined : asBanID(big(rows[0], "banid"));
58
+ }
59
+ /**
60
+ * Ban a connected client by clid, and return the id of every ban that made.
61
+ *
62
+ * The server bans the client on several counts at once — its address, its
63
+ * uid, and on TS6 its myTeamSpeak id — and over ServerQuery answers one
64
+ * `banid` row for each; returning the first left the others to be found by
65
+ * hand. The voice protocol reports no ids, so there this resolves to `[]`.
66
+ */
67
+ export async function banClient(client, clid, options = {}) {
68
+ const rows = await query(client, "banclient", [["clid", clid], ...encodeFields(options, banClientNames)], options);
69
+ return rows.flatMap((row) => (str(row, "banid") === "" ? [] : [asBanID(big(row, "banid"))]));
70
+ }
71
+ /** Remove a ban. */
72
+ export async function deleteBan(client, banID, options) {
73
+ await exec(client, "bandel", [["banid", banID]], options);
74
+ }
75
+ /** Remove every ban. */
76
+ export async function deleteAllBans(client, options) {
77
+ await exec(client, "bandelall", [], options);
78
+ }
79
+ const parseComplaint = (row) => ({
80
+ targetDatabaseID: asClientDBID(big(row, "tcldbid")),
81
+ targetName: str(row, "tname"),
82
+ fromDatabaseID: asClientDBID(big(row, "fcldbid")),
83
+ fromName: str(row, "fname"),
84
+ message: str(row, "message"),
85
+ createdAt: date(row, "timestamp"),
86
+ });
87
+ /** Complaints, optionally only those against one client. */
88
+ export async function listComplaints(client, options = {}) {
89
+ // 0 names no client, so it lists every complaint, as unset does.
90
+ const target = options.targetDatabaseID;
91
+ const params = [["tcldbid", target === undefined ? undefined : nonZero(target)]];
92
+ return (await list(client, "complainlist", params, options)).map(parseComplaint);
93
+ }
94
+ /** File a complaint against a client. */
95
+ export async function addComplaint(client, targetDatabaseID, message, options) {
96
+ await exec(client, "complainadd", [
97
+ ["tcldbid", targetDatabaseID],
98
+ ["message", message],
99
+ ], options);
100
+ }
101
+ /** Withdraw one complaint. */
102
+ export async function deleteComplaint(client, targetDatabaseID, fromDatabaseID, options) {
103
+ await exec(client, "complaindel", [
104
+ ["tcldbid", targetDatabaseID],
105
+ ["fcldbid", fromDatabaseID],
106
+ ], options);
107
+ }
108
+ /** Withdraw every complaint against a client. */
109
+ export async function deleteAllComplaints(client, targetDatabaseID, options) {
110
+ await exec(client, "complaindelall", [["tcldbid", targetDatabaseID]], options);
111
+ }
112
+ const parseMessage = (row) => ({
113
+ id: asMessageID(big(row, "msgid")),
114
+ uid: asUID(str(row, "cluid")),
115
+ subject: str(row, "subject"),
116
+ message: str(row, "message"),
117
+ sentAt: date(row, "timestamp"),
118
+ isRead: bool(row, "flag_read"),
119
+ });
120
+ /** Offline messages for this client. None is an empty list. */
121
+ export async function listMessages(client, options) {
122
+ return (await list(client, "messagelist", [], options)).map(parseMessage);
123
+ }
124
+ /** One offline message, with its text. */
125
+ export async function getMessage(client, messageID, options) {
126
+ const rows = await query(client, "messageget", [["msgid", messageID]], options);
127
+ return { ...parseMessage(firstRow(rows, "messageget")), id: messageID };
128
+ }
129
+ /** Delete an offline message. */
130
+ export async function deleteMessage(client, messageID, options) {
131
+ await exec(client, "messagedel", [["msgid", messageID]], options);
132
+ }
133
+ /** Mark a message read or unread. */
134
+ export async function updateMessageFlag(client, messageID, flags, options) {
135
+ await exec(client, "messageupdateflag", [
136
+ ["msgid", messageID],
137
+ ["flag", flags.read],
138
+ ], options);
139
+ }
140
+ // ---- Text messages ----------------------------------------------------------
141
+ //
142
+ // Three functions rather than one taking a mode and an id, because the id meant
143
+ // a different thing in each mode — a clid, a cid, or nothing — and an untyped
144
+ // one let a channel id reach an unrelated client.
145
+ //
146
+ // Each waits for the server's answer, so a refusal — no permission to message
147
+ // that target — is thrown rather than lost.
148
+ /** Send a text message to one client. */
149
+ export async function sendPrivateMessage(client, clid, message, options) {
150
+ await exec(client, "sendtextmessage", [
151
+ ["targetmode", TextMessageTarget.Client],
152
+ ["target", clid],
153
+ ["msg", message],
154
+ ], options);
155
+ }
156
+ /**
157
+ * Send a text message to the channel this connection is in.
158
+ *
159
+ * It takes no channel because the server takes none: measured on TS3 and TS6,
160
+ * a channel message naming another channel still arrives in the sender's own.
161
+ * To write to another channel, move there first.
162
+ */
163
+ export async function sendChannelMessage(client, message, options) {
164
+ await exec(client, "sendtextmessage", [
165
+ ["targetmode", TextMessageTarget.Channel],
166
+ ["msg", message],
167
+ ], options);
168
+ }
169
+ /** Send a text message to everyone on the virtual server. */
170
+ export async function sendServerMessage(client, message, options) {
171
+ await exec(client, "sendtextmessage", [
172
+ ["targetmode", TextMessageTarget.Server],
173
+ ["msg", message],
174
+ ], options);
175
+ }
176
+ const logViewNames = {
177
+ lines: ["lines", (lines) => (lines === 0 ? undefined : lines)],
178
+ reverse: "reverse",
179
+ instance: "instance",
180
+ beginPosition: "begin_pos",
181
+ };
182
+ /** Read a page of the server log. */
183
+ export async function viewLog(client, options = {}) {
184
+ const fields = {
185
+ ...options,
186
+ reverse: options.reverse ?? false,
187
+ instance: options.instance ?? false,
188
+ };
189
+ const rows = await query(client, "logview", encodeFields(fields, logViewNames), options);
190
+ const first = firstRow(rows, "logview");
191
+ // One line per row, under the key `l`. This used to read only a `log` field
192
+ // from the first row, which the server does not send; it is still read,
193
+ // should a server send the lines that way.
194
+ const lines = rows.flatMap((row) => (row["l"] === undefined ? [] : [row["l"]]));
195
+ const joined = str(first, "log");
196
+ return {
197
+ lines: lines.length === 0 && joined !== "" ? joined.split("\n") : lines,
198
+ lastPosition: num(first, "last_pos"),
199
+ fileSize: num(first, "file_size"),
200
+ };
201
+ }
202
+ /** Write an entry to the server log. */
203
+ export async function addLog(client, level, message, options) {
204
+ await exec(client, "logadd", [
205
+ ["loglevel", level],
206
+ ["logmsg", message],
207
+ ], options);
208
+ }
209
+ //# sourceMappingURL=moderation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moderation.js","sourceRoot":"","sources":["../../../src/core/api/moderation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Row parsers shared with the client and query modules, kept out of the public index:
3
+ * they read wire rows, which is plumbing, not API. They reach them through
4
+ * `./internal`.
5
+ */
6
+ import type { ServerGroupID } from "../command/ids.js";
7
+ import type { ClientEntry } from "./clients.js";
8
+ /** A comma-separated list of server group ids; anything that is not one is skipped. */
9
+ export declare function parseServerGroups(raw: string): ServerGroupID[];
10
+ /**
11
+ * Read a client from a `clientlist` row, or from a `notifycliententerview`,
12
+ * which names its channel `ctid` where the list says `cid`. Reached by the
13
+ * client module through `./internal`.
14
+ */
15
+ export declare function parseClient(row: Record<string, string>): ClientEntry;
16
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/core/api/parse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAQvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,CAO9D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAmBpE"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Row parsers shared with the client and query modules, kept out of the public index:
3
+ * they read wire rows, which is plumbing, not API. They reach them through
4
+ * `./internal`.
5
+ */
6
+ import { str, big, num, uint, U16, bool, date, durationMs, MILLISECOND } from "./command.js";
7
+ import { asChannelID, asChannelGroupID, asClientID, asServerGroupID, asUID, } from "../command/ids.js";
8
+ /** A comma-separated list of server group ids; anything that is not one is skipped. */
9
+ export function parseServerGroups(raw) {
10
+ if (raw === "")
11
+ return [];
12
+ return raw
13
+ .split(",")
14
+ .flatMap((id) => /^\d{1,20}$/.test(id) && BigInt(id) < 1n << 64n ? [asServerGroupID(BigInt(id))] : []);
15
+ }
16
+ /**
17
+ * Read a client from a `clientlist` row, or from a `notifycliententerview`,
18
+ * which names its channel `ctid` where the list says `cid`. Reached by the
19
+ * client module through `./internal`.
20
+ */
21
+ export function parseClient(row) {
22
+ return {
23
+ id: asClientID(uint(row, "clid", U16)),
24
+ nickname: str(row, "client_nickname"),
25
+ uid: asUID(str(row, "client_unique_identifier")),
26
+ channelID: asChannelID(big(row, row["cid"] === undefined ? "ctid" : "cid")),
27
+ type: num(row, "client_type"),
28
+ serverGroups: parseServerGroups(row["client_servergroups"] ?? ""),
29
+ isAway: bool(row, "client_away"),
30
+ isRecording: bool(row, "client_is_recording"),
31
+ isTalker: bool(row, "client_is_talker"),
32
+ channelGroupID: asChannelGroupID(big(row, "client_channel_group_id")),
33
+ createdAt: date(row, "client_created"),
34
+ lastConnectedAt: date(row, "client_lastconnected"),
35
+ idleTimeMs: row["client_idle_time"] === undefined
36
+ ? undefined
37
+ : durationMs(row, "client_idle_time", MILLISECOND),
38
+ };
39
+ }
40
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/core/api/parse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE7F,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,KAAK,GACN,MAAM,mBAAmB,CAAC;AAG3B,uFAAuF;AACvF,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CACd,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CACrF,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAA2B;IACrD,OAAO;QACL,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACtC,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC;QACrC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;QAChD,SAAS,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3E,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC;QAC7B,YAAY,EAAE,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;QACjE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;QAChC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC;QAC7C,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC;QACvC,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QACrE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC;QACtC,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC;QAClD,UAAU,EACR,GAAG,CAAC,kBAAkB,CAAC,KAAK,SAAS;YACnC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,kBAAkB,EAAE,WAAW,CAAC;KACvD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,310 @@
1
+ /**
2
+ * Server and instance commands.
3
+ *
4
+ * "Server" here means the virtual server a client is connected to; "instance"
5
+ * means the process hosting it. The distinction matters because the setting
6
+ * names differ (`virtualserver_*` versus `serverinstance_*`) and the two are
7
+ * easy to mix up.
8
+ */
9
+ import type { PermissionEntry } from "./command.js";
10
+ import type { CommandExecutor, CommandOptions } from "../command/request.js";
11
+ import type { ChannelID, ClientDBID, ClientID, IconID, ServerGroupID, ServerID, UID } from "../command/ids.js";
12
+ import type { GroupType } from "../enums.js";
13
+ import type { GroupDeleteOptions } from "./groups.js";
14
+ import type { Permission } from "../permission.js";
15
+ /** A server group as `servergrouplist` reports it. */
16
+ export interface ServerGroup {
17
+ /** The group's id. */
18
+ readonly id: ServerGroupID;
19
+ /** The group's name. */
20
+ readonly name: string;
21
+ /** What kind of group this is, one of {@link GroupType}. */
22
+ readonly type: number;
23
+ /** The group's icon, or undefined for none. */
24
+ readonly iconID: IconID | undefined;
25
+ /** Whether membership is stored, rather than lost when the server restarts. */
26
+ readonly savedInDatabase: boolean;
27
+ /** Where the group sorts among the others; a 32-bit value. */
28
+ readonly sortID: number;
29
+ /** Where the group's name shows beside a member's nickname, one of {@link GroupNameMode}. */
30
+ readonly nameMode: number;
31
+ /** The power needed to modify the group. */
32
+ readonly modifyPower: number;
33
+ /** The power needed to add a member. */
34
+ readonly memberAddPower: number;
35
+ /** The power needed to remove a member. */
36
+ readonly memberRemovePower: number;
37
+ }
38
+ /** Every server group. */
39
+ export declare function listServerGroups(client: CommandExecutor, options?: CommandOptions): Promise<ServerGroup[]>;
40
+ /**
41
+ * The virtual server's settings, as `serverinfo` reports them.
42
+ *
43
+ * Raw rather than parsed: `serverinfo` carries well over a hundred
44
+ * `virtualserver_*` fields, which ones appear depends on the server version and
45
+ * on the caller's permissions, and a typed subset would drop the rest. The
46
+ * keys are named in `PropertyName`.
47
+ */
48
+ export declare function getServerInfo(client: CommandExecutor, options?: CommandOptions): Promise<Readonly<Record<string, string>>>;
49
+ /**
50
+ * Change the virtual server's settings. Only the properties you pass are sent.
51
+ *
52
+ * Unlike every other options object, these are the raw `virtualserver_*`
53
+ * wire properties from `serverinfo`, passed through as given rather than
54
+ * enumerated: there are well over a hundred, they are version-dependent, and a
55
+ * value read back from {@link getServerInfo} should be writable straight back.
56
+ * The values are strings, as `getServerInfo` returns them. The editable keys
57
+ * are marked in `PropertyName`.
58
+ */
59
+ export declare function editServer(client: CommandExecutor, settings: Readonly<Record<string, string>>, options?: CommandOptions): Promise<void>;
60
+ /**
61
+ * The host process's settings, as `hostinfo` reports them, raw.
62
+ *
63
+ * Needs an instance-level permission (`b_serverinstance_*`), which not even the
64
+ * Server Admin group holds by default — expect error 2568 until it is granted.
65
+ * Granted, it works over the voice protocol like any other query. The keys are
66
+ * named in `PropertyName`.
67
+ */
68
+ export declare function getHostInfo(client: CommandExecutor, options?: CommandOptions): Promise<Readonly<Record<string, string>>>;
69
+ /**
70
+ * The server instance's settings, as `instanceinfo` reports them, raw.
71
+ *
72
+ * Needs an instance-level permission (`b_serverinstance_*`), which not even the
73
+ * Server Admin group holds by default — expect error 2568 until it is granted.
74
+ * Granted, it works over the voice protocol like any other query. The keys are
75
+ * named in `PropertyName`.
76
+ */
77
+ export declare function getInstanceInfo(client: CommandExecutor, options?: CommandOptions): Promise<Readonly<Record<string, string>>>;
78
+ /**
79
+ * Change the server instance's settings: raw `serverinstance_*` properties,
80
+ * passed through as given, for the same reasons as {@link editServer}. The
81
+ * editable keys are marked in `PropertyName`.
82
+ */
83
+ export declare function editInstance(client: CommandExecutor, settings: Readonly<Record<string, string>>, options?: CommandOptions): Promise<void>;
84
+ /** An address the instance listens on. */
85
+ export interface Binding {
86
+ /**
87
+ * What listens there: `voice`, `query` or `filetransfer`. The server does not
88
+ * name it in each row, so it is the subsystem asked for, or `voice` when none
89
+ * was.
90
+ */
91
+ readonly subsystem: string;
92
+ /** The address. */
93
+ readonly ip: string;
94
+ /** The port; undefined when the server does not report one. */
95
+ readonly port: number | undefined;
96
+ }
97
+ /** Which bindings {@link listBindings} reports. */
98
+ export interface BindingListOptions extends CommandOptions {
99
+ /** Only this subsystem's: `voice`, `query` or `filetransfer`; unset for all (`subsystem`). */
100
+ readonly subsystem?: string | undefined;
101
+ }
102
+ /**
103
+ * Active IP bindings, when the instance is multi-homed.
104
+ *
105
+ * Needs an instance-level permission (`b_serverinstance_*`), which not even the
106
+ * Server Admin group holds by default — expect error 2568 until it is granted.
107
+ * Granted, it works over the voice protocol like any other query.
108
+ */
109
+ export declare function listBindings(client: CommandExecutor, options?: BindingListOptions): Promise<Binding[]>;
110
+ /** The server's build, as `version` reports it. */
111
+ export interface ServerVersion {
112
+ /** The version, such as "3.13.7". */
113
+ readonly version: string;
114
+ /** The build number. */
115
+ readonly build: number;
116
+ /** The platform the server runs on, such as "Linux". */
117
+ readonly platform: string;
118
+ }
119
+ /** The server's build version. */
120
+ export declare function getVersion(client: CommandExecutor, options?: CommandOptions): Promise<ServerVersion>;
121
+ /** Which server and client a connection is, as `whoami` reports it. */
122
+ export interface WhoAmI {
123
+ /** The virtual server's state, such as "online" (`virtualserver_status`). */
124
+ readonly serverStatus: string;
125
+ /** The virtual server's id, 0 when none is selected (`virtualserver_id`). */
126
+ readonly serverID: ServerID;
127
+ /** The virtual server's unique identifier (`virtualserver_unique_identifier`). */
128
+ readonly serverUID: string;
129
+ /** The virtual server's voice port (`virtualserver_port`). */
130
+ readonly serverPort: number;
131
+ /** This connection's client id (`client_id`). */
132
+ readonly clientID: ClientID;
133
+ /** The channel this connection is in (`client_channel_id`). */
134
+ readonly channelID: ChannelID;
135
+ /** This connection's nickname (`client_nickname`). */
136
+ readonly nickname: string;
137
+ /** This connection's database id (`client_database_id`). */
138
+ readonly databaseID: ClientDBID;
139
+ /** The ServerQuery login name, "" for a voice client (`client_login_name`). */
140
+ readonly loginName: string;
141
+ /**
142
+ * This connection's unique identifier (`client_unique_identifier`). The voice
143
+ * protocol sends the field empty; the voice client's `uid` has
144
+ * it.
145
+ */
146
+ readonly uid: UID;
147
+ }
148
+ /** Which server and client this connection is, as the server sees it. */
149
+ export declare function whoAmI(client: CommandExecutor, options?: CommandOptions): Promise<WhoAmI>;
150
+ /**
151
+ * The virtual server's traffic, as `serverrequestconnectioninfo` reports it.
152
+ * Byte counts are bytes; bandwidths are bytes per second.
153
+ */
154
+ export interface ServerConnectionInfo {
155
+ /** File transfer bandwidth out (`connection_filetransfer_bandwidth_sent`). */
156
+ readonly fileTransferBandwidthSent: number;
157
+ /** File transfer bandwidth in (`connection_filetransfer_bandwidth_received`). */
158
+ readonly fileTransferBandwidthReceived: number;
159
+ /** File transfer bytes sent (`connection_filetransfer_bytes_sent_total`). */
160
+ readonly fileTransferBytesSent: number;
161
+ /** File transfer bytes received (`connection_filetransfer_bytes_received_total`). */
162
+ readonly fileTransferBytesReceived: number;
163
+ /** Packets sent (`connection_packets_sent_total`). */
164
+ readonly packetsSent: number;
165
+ /** Bytes sent (`connection_bytes_sent_total`). */
166
+ readonly bytesSent: number;
167
+ /** Packets received (`connection_packets_received_total`). */
168
+ readonly packetsReceived: number;
169
+ /** Bytes received (`connection_bytes_received_total`). */
170
+ readonly bytesReceived: number;
171
+ /** Bandwidth out over the last second (`connection_bandwidth_sent_last_second_total`). */
172
+ readonly bandwidthSentLastSecond: number;
173
+ /** Bandwidth out over the last minute (`connection_bandwidth_sent_last_minute_total`). */
174
+ readonly bandwidthSentLastMinute: number;
175
+ /** Bandwidth in over the last second (`connection_bandwidth_received_last_second_total`). */
176
+ readonly bandwidthReceivedLastSecond: number;
177
+ /** Bandwidth in over the last minute (`connection_bandwidth_received_last_minute_total`). */
178
+ readonly bandwidthReceivedLastMinute: number;
179
+ /**
180
+ * How long the virtual server has been running, in milliseconds
181
+ * (`connection_connected_time`). Sent in seconds here — unlike the field of
182
+ * the same name in `clientinfo`, which is in milliseconds.
183
+ */
184
+ readonly connectedTimeMs: number;
185
+ /** The share of packets lost, 0 to 1 (`connection_packetloss_total`). */
186
+ readonly packetLoss: number;
187
+ /** The average ping, in milliseconds (`connection_ping`). */
188
+ readonly pingMs: number;
189
+ }
190
+ /**
191
+ * The virtual server's traffic statistics — not this connection's, as the
192
+ * command's name suggests.
193
+ */
194
+ export declare function getConnectionInfo(client: CommandExecutor, options?: CommandOptions): Promise<ServerConnectionInfo>;
195
+ /**
196
+ * The numeric id of the virtual server listening on `port`.
197
+ *
198
+ * Needs an instance-level permission (`b_serverinstance_*`), which not even the
199
+ * Server Admin group holds by default — expect error 2568 until it is granted.
200
+ * Granted, it works over the voice protocol like any other query.
201
+ */
202
+ export declare function getServerIDByPort(client: CommandExecutor, port: number, options?: CommandOptions): Promise<ServerID>;
203
+ /**
204
+ * Create a server group.
205
+ *
206
+ * `type` is required, and always sent: the server's own default is
207
+ * `GroupType.Regular`, while the type's first value is `Template`, so leaving
208
+ * it to a default on either side is a trap.
209
+ */
210
+ export declare function createServerGroup(client: CommandExecutor, name: string, type: GroupType, options?: CommandOptions): Promise<ServerGroupID>;
211
+ /** Delete a server group. */
212
+ export declare function deleteServerGroup(client: CommandExecutor, sgid: ServerGroupID, options?: GroupDeleteOptions): Promise<void>;
213
+ /** Rename a server group. */
214
+ export declare function renameServerGroup(client: CommandExecutor, sgid: ServerGroupID, name: string, options?: CommandOptions): Promise<void>;
215
+ /**
216
+ * Copy a server group's permissions onto another; a `targetGroupID` of 0 makes
217
+ * the server create a new group named `name`, of `type`.
218
+ */
219
+ export declare function copyServerGroup(client: CommandExecutor, sourceGroupID: ServerGroupID, targetGroupID: ServerGroupID, name: string, type: GroupType, options?: CommandOptions): Promise<ServerGroupID>;
220
+ /** Add a client to a server group. */
221
+ export declare function addClientToServerGroup(client: CommandExecutor, sgid: ServerGroupID, cldbid: ClientDBID, options?: CommandOptions): Promise<void>;
222
+ /** Remove a client from a server group. */
223
+ export declare function removeClientFromServerGroup(client: CommandExecutor, sgid: ServerGroupID, cldbid: ClientDBID, options?: CommandOptions): Promise<void>;
224
+ /** Which optional fields `servergroupclientlist` should include. */
225
+ export interface ServerGroupClientListOptions extends CommandOptions {
226
+ /** Each member's nickname (`-names`). */
227
+ readonly names?: boolean | undefined;
228
+ /** Each member's unique identifier (`-uid`). */
229
+ readonly uids?: boolean | undefined;
230
+ }
231
+ /** A member of a server group. */
232
+ export interface ServerGroupMember {
233
+ /** The member's database id. */
234
+ readonly databaseID: ClientDBID;
235
+ /** The member's nickname, with `names`; "" otherwise. */
236
+ readonly nickname: string;
237
+ /** The member's unique identifier, with `uids`; "" otherwise. */
238
+ readonly uid: UID;
239
+ }
240
+ /** Members of a server group, optionally with their nicknames and uids. */
241
+ export declare function listServerGroupClients(client: CommandExecutor, sgid: ServerGroupID, options?: ServerGroupClientListOptions): Promise<ServerGroupMember[]>;
242
+ /** A server group a client belongs to. */
243
+ export interface ServerGroupRef {
244
+ /** The group's id. */
245
+ readonly id: ServerGroupID;
246
+ /** The group's name. */
247
+ readonly name: string;
248
+ }
249
+ /** Server groups a client belongs to. */
250
+ export declare function getServerGroupsByClient(client: CommandExecutor, cldbid: ClientDBID, options?: CommandOptions): Promise<ServerGroupRef[]>;
251
+ /** Permissions set on a server group. */
252
+ export declare function listServerGroupPermissions(client: CommandExecutor, sgid: ServerGroupID, options?: CommandOptions): Promise<PermissionEntry[]>;
253
+ /** How {@link addServerGroupPermission} sets the permission. */
254
+ export interface ServerGroupPermissionOptions extends CommandOptions {
255
+ /** Whether the value is negated, so the lowest wins; false by default (`permnegated`). */
256
+ readonly negated?: boolean | undefined;
257
+ /** Whether it skips channel and client overrides; false by default (`permskip`). */
258
+ readonly skip?: boolean | undefined;
259
+ }
260
+ /** Set a permission on a server group. */
261
+ export declare function addServerGroupPermission(client: CommandExecutor, sgid: ServerGroupID, permission: Permission, value: number, options?: ServerGroupPermissionOptions): Promise<void>;
262
+ /** Remove a permission from a server group. */
263
+ export declare function deleteServerGroupPermission(client: CommandExecutor, sgid: ServerGroupID, permission: Permission, options?: CommandOptions): Promise<void>;
264
+ /** A temporary server password. */
265
+ export interface TempPassword {
266
+ /** The password itself (`pw_clear`). */
267
+ readonly password: string;
268
+ /** What it is for (`desc`). */
269
+ readonly description: string;
270
+ /** Who created it (`nickname`). */
271
+ readonly creatorNickname: string;
272
+ /** The creator's unique identifier (`uid`). */
273
+ readonly creatorUID: UID;
274
+ /** When it became valid (`start`). */
275
+ readonly startsAt: Date | undefined;
276
+ /** When it stops being valid (`end`). */
277
+ readonly endsAt: Date | undefined;
278
+ /** The channel a client joining with it lands in, or 0 for the default channel. */
279
+ readonly targetChannelID: ChannelID;
280
+ }
281
+ /** The server's temporary passwords. */
282
+ export declare function listTempPasswords(client: CommandExecutor, options?: CommandOptions): Promise<TempPassword[]>;
283
+ /** A temporary password to create. */
284
+ export interface TempPasswordOptions {
285
+ /**
286
+ * The password (`pw`). The caller chooses it; the server does not generate
287
+ * one, and an empty one is refused here rather than created.
288
+ */
289
+ readonly password: string;
290
+ /** What it is for, shown in the list (`desc`). */
291
+ readonly description: string;
292
+ /**
293
+ * How long it stays valid, in milliseconds (`duration`). Sent in whole
294
+ * seconds; a positive duration under a second is sent as one.
295
+ */
296
+ readonly durationMs: number;
297
+ /** The channel a client joining with it lands in; unset or 0 is the default channel (`tcid`). */
298
+ readonly targetChannelID?: ChannelID | undefined;
299
+ /** That channel's password, in cleartext; unset or "" for none (`tcpw`). */
300
+ readonly targetChannelPassword?: string | undefined;
301
+ }
302
+ /**
303
+ * Create a temporary server password.
304
+ *
305
+ * The server reports nothing back — the password is the one passed in.
306
+ */
307
+ export declare function addTempPassword(client: CommandExecutor, temp: TempPasswordOptions, options?: CommandOptions): Promise<void>;
308
+ /** Delete a temporary password. */
309
+ export declare function deleteTempPassword(client: CommandExecutor, password: string, options?: CommandOptions): Promise<void>;
310
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/core/api/server.ts"],"names":[],"mappings":"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"}