@honeybbq/teamspeak-client 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +1 -0
  2. package/dist/address-BR-5unVo.cjs +2 -0
  3. package/dist/address-BR-5unVo.cjs.map +1 -0
  4. package/dist/address-BfmovVpp.js +65 -0
  5. package/dist/address-BfmovVpp.js.map +1 -0
  6. package/dist/address.d.ts +9 -0
  7. package/dist/address.d.ts.map +1 -0
  8. package/dist/address.test.d.ts +2 -0
  9. package/dist/address.test.d.ts.map +1 -0
  10. package/dist/api.d.ts.map +1 -1
  11. package/dist/api.test.d.ts +2 -0
  12. package/dist/api.test.d.ts.map +1 -0
  13. package/dist/client.d.ts +2 -0
  14. package/dist/client.d.ts.map +1 -1
  15. package/dist/command/index.cjs +1 -1
  16. package/dist/command/index.mjs +2 -2
  17. package/dist/{command-caXc4h0n.js → command-BLe-C2L2.js} +2 -4
  18. package/dist/{command-caXc4h0n.js.map → command-BLe-C2L2.js.map} +1 -1
  19. package/dist/command-DAK4pUBP.cjs +4 -0
  20. package/dist/{command-Cu2v-5-K.cjs.map → command-DAK4pUBP.cjs.map} +1 -1
  21. package/dist/crypt-handshake-CQkQreLx.cjs +2 -0
  22. package/dist/{crypt-handshake-Dbj2cSBZ.cjs.map → crypt-handshake-CQkQreLx.cjs.map} +1 -1
  23. package/dist/crypt-handshake-DziOY4Lq.js +55 -0
  24. package/dist/{crypt-handshake-CHmvZ2qs.js.map → crypt-handshake-DziOY4Lq.js.map} +1 -1
  25. package/dist/{crypt-init2-DWX7Tp-_.js → crypt-init2-D70ha4LB.js} +25 -27
  26. package/dist/{crypt-init2-DWX7Tp-_.js.map → crypt-init2-D70ha4LB.js.map} +1 -1
  27. package/dist/crypt-init2-DparLekm.cjs +2 -0
  28. package/dist/{crypt-init2-C2oihZ7e.cjs.map → crypt-init2-DparLekm.cjs.map} +1 -1
  29. package/dist/crypto/identity.d.ts.map +1 -1
  30. package/dist/crypto/index.cjs +1 -1
  31. package/dist/crypto/index.mjs +2 -2
  32. package/dist/{crypto-VC7n6YJb.js → crypto-Bg02m4ZE.js} +9 -9
  33. package/dist/crypto-Bg02m4ZE.js.map +1 -0
  34. package/dist/crypto-CDlweUL3.cjs +2 -0
  35. package/dist/crypto-CDlweUL3.cjs.map +1 -0
  36. package/dist/discovery/index.cjs +1 -1
  37. package/dist/discovery/index.mjs +1 -1
  38. package/dist/discovery/resolver.d.ts.map +1 -1
  39. package/dist/{handler-C_JhqGTd.js → handler-DI_abe9c.js} +159 -131
  40. package/dist/handler-DI_abe9c.js.map +1 -0
  41. package/dist/handler-DuwoO5RC.cjs +2 -0
  42. package/dist/handler-DuwoO5RC.cjs.map +1 -0
  43. package/dist/handshake/index.cjs +1 -1
  44. package/dist/handshake/index.mjs +2 -2
  45. package/dist/helpers.d.ts.map +1 -1
  46. package/dist/index.cjs +2 -2
  47. package/dist/index.cjs.map +1 -1
  48. package/dist/index.mjs +155 -141
  49. package/dist/index.mjs.map +1 -1
  50. package/dist/{parser-DhAWj-TI.cjs → parser-CL33R9tr.cjs} +2 -2
  51. package/dist/{parser-DhAWj-TI.cjs.map → parser-CL33R9tr.cjs.map} +1 -1
  52. package/dist/{parser-CJjP3LlO.js → parser-DZMv3Jm-.js} +2 -2
  53. package/dist/{parser-CJjP3LlO.js.map → parser-DZMv3Jm-.js.map} +1 -1
  54. package/dist/primitives-cNNAeFCo.cjs +2 -0
  55. package/dist/primitives-cNNAeFCo.cjs.map +1 -0
  56. package/dist/primitives-xIr6Tjk4.js +1457 -0
  57. package/dist/primitives-xIr6Tjk4.js.map +1 -0
  58. package/dist/resolver-6B8dI9gr.js +141 -0
  59. package/dist/resolver-6B8dI9gr.js.map +1 -0
  60. package/dist/resolver-DCcmyWSK.cjs +4 -0
  61. package/dist/resolver-DCcmyWSK.cjs.map +1 -0
  62. package/dist/transport/handler.d.ts +2 -0
  63. package/dist/transport/handler.d.ts.map +1 -1
  64. package/dist/transport/index.cjs +1 -1
  65. package/dist/transport/index.mjs +1 -1
  66. package/dist/transport/whisper.test.d.ts +2 -0
  67. package/dist/transport/whisper.test.d.ts.map +1 -0
  68. package/dist/types.d.ts +2 -0
  69. package/dist/types.d.ts.map +1 -1
  70. package/package.json +5 -5
  71. package/dist/command-Cu2v-5-K.cjs +0 -4
  72. package/dist/crypt-handshake-CHmvZ2qs.js +0 -55
  73. package/dist/crypt-handshake-Dbj2cSBZ.cjs +0 -2
  74. package/dist/crypt-init2-C2oihZ7e.cjs +0 -2
  75. package/dist/crypto-2veVY1fC.cjs +0 -2
  76. package/dist/crypto-2veVY1fC.cjs.map +0 -1
  77. package/dist/crypto-VC7n6YJb.js.map +0 -1
  78. package/dist/handler-C_JhqGTd.js.map +0 -1
  79. package/dist/handler-CqCD93f0.cjs +0 -2
  80. package/dist/handler-CqCD93f0.cjs.map +0 -1
  81. package/dist/primitives-BIAYfJ2Y.js +0 -1842
  82. package/dist/primitives-BIAYfJ2Y.js.map +0 -1
  83. package/dist/primitives-bj-ml31v.cjs +0 -2
  84. package/dist/primitives-bj-ml31v.cjs.map +0 -1
  85. package/dist/resolver-Br0QefWx.js +0 -162
  86. package/dist/resolver-Br0QefWx.js.map +0 -1
  87. package/dist/resolver-DDD2FFhD.cjs +0 -4
  88. package/dist/resolver-DDD2FFhD.cjs.map +0 -1
  89. package/dist/types-CGKgXvpG.js +0 -18
  90. package/dist/types-CGKgXvpG.js.map +0 -1
  91. package/dist/types-DrnoCdSW.cjs +0 -2
  92. package/dist/types-DrnoCdSW.cjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,16 +1,16 @@
1
- import { n as e, r as t, t as n } from "./types-CGKgXvpG.js";
2
- import { C as r, S as i, _ as a, b as o, d as s, g as c, h as l, l as u, o as d, p as ee, r as f, u as p, v as m, w as h, x as g, y as _ } from "./primitives-BIAYfJ2Y.js";
3
- import { t as v } from "./crypto-VC7n6YJb.js";
4
- import { t as y } from "./resolver-Br0QefWx.js";
5
- import { a as b, t as x } from "./handler-C_JhqGTd.js";
6
- import { i as S, n as C, t as w } from "./command-caXc4h0n.js";
7
- import { n as te } from "./crypt-handshake-CHmvZ2qs.js";
8
- import { t as T } from "./crypt-init2-DWX7Tp-_.js";
9
- import { t as E } from "./parser-CJjP3LlO.js";
10
- import { createHash as D } from "node:crypto";
11
- import { createConnection as O } from "node:net";
1
+ import { a as e, i as t, o as n } from "./address-BfmovVpp.js";
2
+ import { C as r, S as i, _ as a, b as o, d as s, g as c, h as l, l as u, o as d, p as f, r as p, u as m, v as h, w as ee, x as g, y as _ } from "./primitives-xIr6Tjk4.js";
3
+ import { t as v } from "./crypto-Bg02m4ZE.js";
4
+ import { t as y } from "./resolver-6B8dI9gr.js";
5
+ import { a as b, t as x } from "./handler-DI_abe9c.js";
6
+ import { i as S, n as C, t as w } from "./command-BLe-C2L2.js";
7
+ import { n as te } from "./crypt-handshake-DziOY4Lq.js";
8
+ import { t as ne } from "./crypt-init2-D70ha4LB.js";
9
+ import { t as T } from "./parser-DZMv3Jm-.js";
10
+ import { createHash as E } from "node:crypto";
11
+ import { createConnection as D } from "node:net";
12
12
  //#region src/commands.ts
13
- var k = class {
13
+ var O = class {
14
14
  #e = /* @__PURE__ */ new Map();
15
15
  #t = 0;
16
16
  #n = [];
@@ -50,7 +50,7 @@ var k = class {
50
50
  this.#e.clear(), this.#n = [], this.#r = !1, this.#t = 0;
51
51
  }
52
52
  };
53
- function A(e) {
53
+ function k(e) {
54
54
  let t = e.id ?? "0", n = e.msg ?? "", i = e.return_code, a = null;
55
55
  t !== "0" && (a = new r(t, n));
56
56
  let o = null;
@@ -63,12 +63,12 @@ function A(e) {
63
63
  rc: o
64
64
  };
65
65
  }
66
- function j(e, t) {
66
+ function A(e, t) {
67
67
  return e.includes("return_code=") ? e : `${e} return_code=${t}`;
68
68
  }
69
69
  //#endregion
70
70
  //#region src/transfer.ts
71
- var M = class {
71
+ var j = class {
72
72
  #e = /* @__PURE__ */ new Map();
73
73
  #t = 0;
74
74
  register() {
@@ -89,9 +89,9 @@ var M = class {
89
89
  this.#e.clear(), this.#t = 0;
90
90
  }
91
91
  };
92
- function N(e, t, n) {
92
+ function M(e, t, n) {
93
93
  return new Promise((r, i) => {
94
- let a = O({
94
+ let a = D({
95
95
  host: e,
96
96
  port: t
97
97
  }, () => {
@@ -104,19 +104,19 @@ function N(e, t, n) {
104
104
  });
105
105
  });
106
106
  }
107
- async function P(e, t, n) {
108
- let r = await N(e, t.port, t.fileTransferKey);
107
+ async function N(e, t, n) {
108
+ let r = await M(e, t.port, t.fileTransferKey);
109
109
  await new Promise((e, t) => {
110
110
  n.pipe(r), r.on("finish", e), r.on("error", t);
111
111
  });
112
112
  }
113
- async function F(e, t, n) {
114
- let r = await N(e, t.port, t.fileTransferKey);
113
+ async function P(e, t, n) {
114
+ let r = await M(e, t.port, t.fileTransferKey);
115
115
  await new Promise((e, t) => {
116
116
  r.pipe(n), n.on("finish", e), r.on("error", t), n.on("error", t);
117
117
  });
118
118
  }
119
- function I(e, t, n, r, i, a) {
119
+ function F(e, t, n, r, i, a) {
120
120
  let o = t.startsWith("/") ? t : `/${t}`;
121
121
  return w("ftinitupload", {
122
122
  cid: String(e),
@@ -128,7 +128,7 @@ function I(e, t, n, r, i, a) {
128
128
  resume: "0"
129
129
  });
130
130
  }
131
- function L(e, t, n, r) {
131
+ function I(e, t, n, r) {
132
132
  let i = t.startsWith("/") ? t : `/${t}`;
133
133
  return w("ftinitdownload", {
134
134
  cid: String(e),
@@ -140,28 +140,28 @@ function L(e, t, n, r) {
140
140
  }
141
141
  //#endregion
142
142
  //#region src/events.ts
143
- function R(e, t) {
143
+ function L(e, t) {
144
144
  let n = t;
145
145
  for (let t = e.length - 1; t >= 0; t--) n = e[t](n);
146
146
  return n;
147
147
  }
148
- function z(e, t) {
148
+ function R(e, t) {
149
149
  let n = t;
150
150
  for (let t = e.length - 1; t >= 0; t--) n = e[t](n);
151
151
  return n;
152
152
  }
153
153
  //#endregion
154
154
  //#region src/handshake.ts
155
- function B(e, t) {
155
+ function z(e, t) {
156
156
  let n = t.alpha ?? "", r = t.beta ?? "", i = t.omega ?? "";
157
- e.crypt.initCrypto(n, r, i), e.logger.info("crypto initialized (P-256 path), sending clientinit"), K(e);
157
+ e.crypt.initCrypto(n, r, i), e.logger.info("crypto initialized (P-256 path), sending clientinit"), G(e);
158
158
  }
159
- function V(e, t) {
159
+ function B(e, t) {
160
160
  e.logger.info("received initivexpand2"), e.handler.receivedFinalInitAck();
161
- let n = t.l ?? "", r = t.omega ?? "", i = t.proof ?? "", a = t.beta ?? "", o = U(e, a);
162
- T(e.crypt, n, r, i, a, o), K(e);
161
+ let n = t.l ?? "", r = t.omega ?? "", i = t.proof ?? "", a = t.beta ?? "", o = H(e, a);
162
+ ne(e.crypt, n, r, i, a, o), G(e);
163
163
  }
164
- function H(e, t) {
164
+ function V(e, t) {
165
165
  let n = t.aclid ?? t.clid ?? "", r = n ? parseInt(n, 10) : 0;
166
166
  r > 0 && (e.clid = r, e.handler.setClientID(r)), e.logger.info("connected to server", { selfId: e.clid }), e._markConnected(), setImmediate(() => {
167
167
  let t = w("clientupdate", {
@@ -171,25 +171,25 @@ function H(e, t) {
171
171
  e.sendCommandNoWait(t).catch(() => {});
172
172
  });
173
173
  }
174
- function U(e, t) {
175
- let [n, r] = f(), i = Buffer.from(n).toString("base64"), a = W(e, n, t), o = C("clientek", [["ek", i], ["proof", a]]);
174
+ function H(e, t) {
175
+ let [n, r] = p(), i = Buffer.from(n).toString("base64"), a = U(e, n, t), o = C("clientek", [["ek", i], ["proof", a]]);
176
176
  return e.handler.sendPacket(b.Command, Buffer.from(o), 0), r;
177
177
  }
178
- function W(e, t, n) {
179
- let r = Buffer.from(n, "base64"), i = new Uint8Array(86);
178
+ function U(e, t, n) {
179
+ let r = Buffer.from(n, "base64"), i = /* @__PURE__ */ new Uint8Array(86);
180
180
  i.set(t.slice(0, 32)), i.set(r.slice(0, Math.min(54, r.length)), 32);
181
181
  let a = d(e.crypt.identity.privateKey, i);
182
182
  return Buffer.from(a).toString("base64");
183
183
  }
184
- function G(e) {
185
- return e === "" ? "" : D("sha1").update(e).digest().toString("base64");
184
+ function W(e) {
185
+ return e === "" ? "" : E("sha1").update(e).digest().toString("base64");
186
186
  }
187
- function K(e) {
188
- let t = q(e);
187
+ function G(e) {
188
+ let t = K(e);
189
189
  e.handler.sendPacket(b.Command, Buffer.from(t), 0);
190
190
  }
191
- function q(e) {
192
- let t = e.crypt.identity.publicKeyBase64(), n = e.getClientInitOptions(), r = G(n.defaultChannelPassword), i = G(n.serverPassword), a = D("sha1").update(t).digest().toString("base64");
191
+ function K(e) {
192
+ let t = e.crypt.identity.publicKeyBase64(), n = e.getClientInitOptions(), r = W(n.defaultChannelPassword), i = W(n.serverPassword), a = E("sha1").update(t).digest().toString("base64");
193
193
  return C("clientinit", [
194
194
  ["client_nickname", e.nickname],
195
195
  ["client_version", "3.?.? [Build: 5680278000]"],
@@ -209,7 +209,7 @@ function q(e) {
209
209
  }
210
210
  //#endregion
211
211
  //#region src/helpers.ts
212
- function J(e) {
212
+ function q(e) {
213
213
  if (e === "" || e === void 0) return 0n;
214
214
  try {
215
215
  return BigInt(e);
@@ -217,55 +217,68 @@ function J(e) {
217
217
  return 0n;
218
218
  }
219
219
  }
220
- function Y(e) {
220
+ function J(e) {
221
221
  let t = parseInt(e, 10);
222
222
  return isNaN(t) || t < 0 || t > 65535 ? 0 : t;
223
223
  }
224
- function X(e) {
224
+ function Y(e) {
225
225
  let t = parseInt(e, 10);
226
226
  return isNaN(t) ? 0 : t;
227
227
  }
228
- function Z(e, t) {
228
+ function X(e, t) {
229
229
  if (t === e) return !0;
230
230
  if (!t.startsWith(e)) return !1;
231
231
  let n = t.slice(e.length);
232
232
  return /^\d+$/.test(n);
233
233
  }
234
- function Q(e) {
234
+ function Z(e) {
235
235
  let t = e.indexOf(" ");
236
236
  if (t < 0) return [e];
237
237
  let n = e.slice(0, t), r = e.slice(t + 1);
238
238
  if (!r.includes("|")) return [e];
239
- let i = r.split("|"), a = [];
240
- for (let e of i) e !== "" && a.push(`${n} ${e}`);
239
+ let i = r.split("|"), a = [], o = /* @__PURE__ */ new Map();
240
+ for (let e of i) {
241
+ if (e === "") continue;
242
+ let t = e.split(" ").filter(Boolean), r = /* @__PURE__ */ new Set();
243
+ for (let e of t) r.add(Q(e));
244
+ let i = [];
245
+ for (let [e, t] of o) r.has(e) || i.push(t);
246
+ let s = [...i, ...t];
247
+ a.push(`${n} ${s.join(" ")}`), o = /* @__PURE__ */ new Map();
248
+ for (let e of s) o.set(Q(e), e);
249
+ }
241
250
  return a.length === 0 ? [e] : a;
242
251
  }
252
+ function Q(e) {
253
+ let t = e.indexOf("=");
254
+ return t > 0 ? e.slice(0, t) : e;
255
+ }
243
256
  //#endregion
244
257
  //#region src/notifications.ts
245
- function ne(e, t, n, r) {
258
+ function re(e, t, n, r) {
246
259
  switch (e.name) {
247
- case "notifycliententerview": return re(e, n, r);
248
- case "notifyclientleftview": return ie(e, t, n);
249
- case "notifyclientmoved": return ae(e, n);
250
- case "notifytextmessage": return oe(e, n);
251
- case "notifyclientpoke": return ue(e);
260
+ case "notifycliententerview": return ie(e, n, r);
261
+ case "notifyclientleftview": return ae(e, t, n);
262
+ case "notifyclientmoved": return oe(e, n);
263
+ case "notifytextmessage": return se(e, n);
264
+ case "notifyclientpoke": return de(e);
252
265
  case "notifystartupload": return {
253
266
  kind: "startUpload",
254
- info: se(e)
267
+ info: ce(e)
255
268
  };
256
269
  case "notifystartdownload": return {
257
270
  kind: "startDownload",
258
- info: ce(e)
271
+ info: le(e)
259
272
  };
260
273
  case "notifystatusfiletransfer": return {
261
274
  kind: "fileTransferStatus",
262
- info: le(e)
275
+ info: ue(e)
263
276
  };
264
277
  default: return { kind: "unknown" };
265
278
  }
266
279
  }
267
- function re(e, t, n) {
268
- let r = Y(e.params.clid ?? ""), i = J(e.params.cid ?? ""), a = X(e.params.client_type ?? ""), o = e.params.client_servergroups ?? "", s = {
280
+ function ie(e, t, n) {
281
+ let r = J(e.params.clid ?? ""), i = q(e.params.ctid ?? ""), a = Y(e.params.client_type ?? ""), o = e.params.client_servergroups ?? "", s = {
269
282
  id: r,
270
283
  nickname: e.params.client_nickname ?? "",
271
284
  uid: e.params.client_unique_identifier ?? "",
@@ -278,21 +291,21 @@ function re(e, t, n) {
278
291
  info: s
279
292
  };
280
293
  }
281
- function ie(e, t, n) {
282
- let r = Y(e.params.clid ?? ""), i = X(e.params.reasonid ?? ""), a = r === t;
294
+ function ae(e, t, n) {
295
+ let r = J(e.params.clid ?? ""), i = Y(e.params.reasonid ?? ""), a = r === t;
283
296
  return r !== 0 && n.delete(r), {
284
297
  kind: "clientLeave",
285
298
  event: {
286
299
  id: r,
287
300
  reasonID: i,
288
301
  reasonMsg: e.params.reasonmsg ?? "",
289
- targetID: Y(e.params.targetid ?? "")
302
+ targetID: J(e.params.targetid ?? "")
290
303
  },
291
304
  isSelf: a
292
305
  };
293
306
  }
294
- function ae(e, t) {
295
- let n = Y(e.params.clid ?? ""), r = J(e.params.ctid ?? "");
307
+ function oe(e, t) {
308
+ let n = J(e.params.clid ?? ""), r = q(e.params.ctid ?? "");
296
309
  if (n !== 0) {
297
310
  let e = t.get(n);
298
311
  e && t.set(n, {
@@ -305,20 +318,20 @@ function ae(e, t) {
305
318
  event: {
306
319
  id: n,
307
320
  targetChannelID: r,
308
- reasonID: X(e.params.reasonid ?? ""),
309
- invokerID: Y(e.params.invokerid ?? ""),
321
+ reasonID: Y(e.params.reasonid ?? ""),
322
+ invokerID: J(e.params.invokerid ?? ""),
310
323
  invokerName: e.params.invokername ?? "",
311
324
  invokerUID: e.params.invokeruid ?? ""
312
325
  }
313
326
  };
314
327
  }
315
- function oe(e, t) {
316
- let n = Y(e.params.invokerid ?? ""), r = t.get(n);
328
+ function se(e, t) {
329
+ let n = J(e.params.invokerid ?? ""), r = t.get(n);
317
330
  return {
318
331
  kind: "textMessage",
319
332
  message: {
320
- targetMode: X(e.params.targetmode ?? ""),
321
- targetID: J(e.params.target ?? ""),
333
+ targetMode: Y(e.params.targetmode ?? ""),
334
+ targetID: q(e.params.target ?? ""),
322
335
  invokerID: n,
323
336
  invokerName: e.params.invokername ?? "",
324
337
  invokerUID: e.params.invokeruid ?? r?.uid ?? "",
@@ -327,36 +340,36 @@ function oe(e, t) {
327
340
  }
328
341
  };
329
342
  }
330
- function se(e) {
343
+ function ce(e) {
331
344
  return {
332
- clientFileTransferID: Y(e.params.clientftfid ?? ""),
333
- serverFileTransferID: Y(e.params.serverftfid ?? ""),
345
+ clientFileTransferID: J(e.params.clientftfid ?? ""),
346
+ serverFileTransferID: J(e.params.serverftfid ?? ""),
334
347
  fileTransferKey: e.params.ftkey ?? "",
335
- port: Y(e.params.port ?? ""),
336
- seekPosition: J(e.params.seekpos ?? "")
348
+ port: J(e.params.port ?? ""),
349
+ seekPosition: q(e.params.seekpos ?? "")
337
350
  };
338
351
  }
339
- function ce(e) {
352
+ function le(e) {
340
353
  return {
341
- clientFileTransferID: Y(e.params.clientftfid ?? ""),
342
- serverFileTransferID: Y(e.params.serverftfid ?? ""),
354
+ clientFileTransferID: J(e.params.clientftfid ?? ""),
355
+ serverFileTransferID: J(e.params.serverftfid ?? ""),
343
356
  fileTransferKey: e.params.ftkey ?? "",
344
- port: Y(e.params.port ?? ""),
345
- size: J(e.params.size ?? "")
357
+ port: J(e.params.port ?? ""),
358
+ size: q(e.params.size ?? "")
346
359
  };
347
360
  }
348
- function le(e) {
361
+ function ue(e) {
349
362
  return {
350
- clientFileTransferID: Y(e.params.clientftfid ?? ""),
351
- status: X(e.params.status ?? ""),
363
+ clientFileTransferID: J(e.params.clientftfid ?? ""),
364
+ status: Y(e.params.status ?? ""),
352
365
  message: e.params.msg ?? ""
353
366
  };
354
367
  }
355
- function ue(e) {
368
+ function de(e) {
356
369
  return {
357
370
  kind: "poked",
358
371
  event: {
359
- invokerID: Y(e.params.invokerid ?? ""),
372
+ invokerID: J(e.params.invokerid ?? ""),
360
373
  invokerName: S(e.params.invokername ?? ""),
361
374
  invokerUID: e.params.invokeruid ?? "",
362
375
  message: S(e.params.msg ?? "")
@@ -365,7 +378,7 @@ function ue(e) {
365
378
  }
366
379
  //#endregion
367
380
  //#region src/throttle.ts
368
- var de = class e {
381
+ var fe = class e {
369
382
  static TOKEN_RATE = 4;
370
383
  static TOKEN_MAX = 8;
371
384
  #e = 5;
@@ -390,14 +403,14 @@ var de = class e {
390
403
  };
391
404
  //#endregion
392
405
  //#region src/client.ts
393
- function fe(e) {
406
+ function pe(e) {
394
407
  return {
395
408
  serverPassword: e.serverPassword ?? "",
396
409
  defaultChannel: e.defaultChannel ?? "",
397
410
  defaultChannelPassword: e.defaultChannelPassword ?? ""
398
411
  };
399
412
  }
400
- var pe = class {
413
+ var $ = class {
401
414
  crypt;
402
415
  handler;
403
416
  logger;
@@ -407,10 +420,10 @@ var pe = class {
407
420
  #t;
408
421
  #n;
409
422
  #r;
410
- #i = n.Disconnected;
411
- #a = new de();
412
- #o = new k();
413
- #s = new M();
423
+ #i = t.Disconnected;
424
+ #a = new fe();
425
+ #o = new O();
426
+ #s = new j();
414
427
  #c = /* @__PURE__ */ new Map();
415
428
  #l = [];
416
429
  #u = [];
@@ -427,7 +440,7 @@ var pe = class {
427
440
  #x;
428
441
  #S;
429
442
  constructor(t, n, r, i = {}) {
430
- this.#e = t, this.#t = n, this.nickname = r, this.logger = i.logger ?? e, this.#n = i.resolver ?? new y(this.logger), this.#r = fe(i), this.crypt = new v(t), this.handler = new x(this.crypt, this.logger), this.handler.onPacket = (e) => this.#T(e), this.handler.onClosed = (e) => this.#P(e), i.commandMiddleware && this.#y.push(...i.commandMiddleware), i.eventMiddleware && this.#b.push(...i.eventMiddleware), this.#x = this.#F(), this.#S = this.#I();
443
+ this.#e = t, this.#t = n, this.nickname = r, this.logger = i.logger ?? e, this.#n = i.resolver ?? new y(this.logger), this.#r = pe(i), this.crypt = new v(t), this.handler = new x(this.crypt, this.logger), this.handler.onPacket = (e) => this.#T(e), this.handler.onClosed = (e) => this.#P(e), i.commandMiddleware && this.#y.push(...i.commandMiddleware), i.eventMiddleware && this.#b.push(...i.eventMiddleware), this.#x = this.#F(), this.#S = this.#I();
431
444
  }
432
445
  get status() {
433
446
  return this.#i;
@@ -436,23 +449,23 @@ var pe = class {
436
449
  return this.#r;
437
450
  }
438
451
  async connect() {
439
- if (this.#i !== n.Disconnected) throw new l();
440
- this.#C(), this.#i = n.Connecting;
452
+ if (this.#i !== t.Disconnected) throw new l();
453
+ this.#C(), this.#i = t.Connecting;
441
454
  let e = await this.#w();
442
455
  this.logger.info("connecting to server", { address: e }), await this.handler.connect(e);
443
456
  }
444
457
  async disconnect() {
445
- if (this.#i === n.Disconnected) return;
446
- let e = this.#i === n.Connected;
447
- if (this.#i = n.Disconnected, this.logger.info("disconnecting from server"), e) try {
458
+ if (this.#i === t.Disconnected) return;
459
+ let e = this.#i === t.Connected;
460
+ if (this.#i = t.Disconnected, this.logger.info("disconnecting from server"), e) try {
448
461
  await this.execCommand("clientdisconnect reasonmsg=Shutdown", 1e3);
449
462
  } catch {}
450
463
  this.handler.close();
451
- let t = this.#_.slice();
452
- for (let e of t) setImmediate(() => e(void 0));
464
+ let n = this.#_.slice();
465
+ for (let e of n) setImmediate(() => e(void 0));
453
466
  }
454
467
  waitConnected(e) {
455
- return this.#i === n.Connected ? Promise.resolve() : new Promise((t, n) => {
468
+ return this.#i === t.Connected ? Promise.resolve() : new Promise((t, n) => {
456
469
  this.#l.push(t), e && e.addEventListener("abort", () => n(e.reason), { once: !0 });
457
470
  });
458
471
  }
@@ -463,7 +476,7 @@ var pe = class {
463
476
  await this.execCommandWithResponse(e, t);
464
477
  }
465
478
  async execCommandWithResponse(e, t = 1e4) {
466
- let [n, r] = this.#o.register(), i = j(e, n);
479
+ let [n, r] = this.#o.register(), i = A(e, n);
467
480
  try {
468
481
  await this.#a.wait(), await this.#x(i);
469
482
  } catch (e) {
@@ -499,9 +512,7 @@ var pe = class {
499
512
  case "disconnected":
500
513
  this.#_.push(t);
501
514
  break;
502
- case "kicked":
503
- this.#v.push(t);
504
- break;
515
+ case "kicked": this.#v.push(t);
505
516
  }
506
517
  return this;
507
518
  }
@@ -517,11 +528,14 @@ var pe = class {
517
528
  channelID() {
518
529
  return this.#c.get(this.clid)?.channelID ?? 0n;
519
530
  }
531
+ sendWhisper(e, t, n) {
532
+ this.handler.sendWhisperPacket(e, t, n);
533
+ }
520
534
  sendVoice(e, t) {
521
535
  this.handler.sendVoicePacket(e, t);
522
536
  }
523
537
  async fileTransferInitUpload(e, t, n, r, i = !1) {
524
- let [a, s] = this.#s.register(), c = I(e, t, n, r, a, i);
538
+ let [a, s] = this.#s.register(), c = F(e, t, n, r, a, i);
525
539
  try {
526
540
  await this.execCommand(c, 1e4);
527
541
  } catch (e) {
@@ -536,7 +550,7 @@ var pe = class {
536
550
  return l;
537
551
  }
538
552
  async fileTransferInitDownload(e, t, n) {
539
- let [r, i] = this.#s.register(), a = L(e, t, n, r);
553
+ let [r, i] = this.#s.register(), a = I(e, t, n, r);
540
554
  try {
541
555
  await this.execCommand(a, 1e4);
542
556
  } catch (e) {
@@ -551,13 +565,13 @@ var pe = class {
551
565
  return s;
552
566
  }
553
567
  uploadFileData(e, t, n) {
554
- return P(e, t, n);
568
+ return N(e, t, n);
555
569
  }
556
570
  downloadFileData(e, t, n) {
557
- return F(e, t, n);
571
+ return P(e, t, n);
558
572
  }
559
573
  _markConnected() {
560
- this.#i = n.Connected;
574
+ this.#i = t.Connected;
561
575
  for (let e of this.#l) e();
562
576
  this.#l = [];
563
577
  let e = this.#g.slice();
@@ -606,26 +620,26 @@ var pe = class {
606
620
  let t = e.split("\0").join("\n").split("\n");
607
621
  for (let e of t) {
608
622
  let t = e.replace(/\r$/, "");
609
- if (t) for (let e of Q(t)) this.#k(e);
623
+ if (t) for (let e of Z(t)) this.#k(e);
610
624
  }
611
625
  }
612
626
  #k(e) {
613
- let t = E(e);
614
- if (!(!t || !t.name)) {
627
+ let t = T(e);
628
+ if (t && t.name) {
615
629
  if (t.name.startsWith("notify")) {
616
- let e = ne(t, this.clid, this.#c, this.nickname);
630
+ let e = re(t, this.clid, this.#c, this.nickname);
617
631
  this.#j(e, t.params);
618
632
  return;
619
633
  }
620
634
  switch (t.name) {
621
635
  case "clientinitiv":
622
- B(this, t.params);
636
+ z(this, t.params);
623
637
  break;
624
638
  case "initivexpand2":
625
- V(this, t.params);
639
+ B(this, t.params);
626
640
  break;
627
641
  case "initserver":
628
- H(this, t.params);
642
+ V(this, t.params);
629
643
  break;
630
644
  case "error":
631
645
  this.#A(t.params);
@@ -646,14 +660,14 @@ var pe = class {
646
660
  }
647
661
  }
648
662
  #A(e) {
649
- let { err: t, rc: n } = A(e);
663
+ let { err: t, rc: n } = k(e);
650
664
  n === null ? this.#o.discardBuffer() : this.#o.resolve(n, t), (e.id ?? "0") === "3329" && setImmediate(() => this.disconnect().catch(() => {}));
651
665
  }
652
666
  #j(e, t) {
653
667
  switch (e.kind) {
654
668
  case "clientEnter": {
655
669
  let t = e.info;
656
- t.id !== 0 && Z(this.nickname, t.nickname) && (this.clid = t.id, this.handler.setClientID(t.id), this.#o.signalWelcomeComplete()), this.#M("clientEnter", t);
670
+ t.id !== 0 && X(this.nickname, t.nickname) && (this.clid = t.id, this.handler.setClientID(t.id), this.#o.signalWelcomeComplete()), this.#M("clientEnter", t);
657
671
  break;
658
672
  }
659
673
  case "clientLeave":
@@ -677,9 +691,7 @@ var pe = class {
677
691
  case "startDownload":
678
692
  this.#s.notify(e.info.clientFileTransferID, e.info);
679
693
  break;
680
- case "fileTransferStatus":
681
- this.#s.notify(e.info.clientFileTransferID, e.info);
682
- break;
694
+ case "fileTransferStatus": this.#s.notify(e.info.clientFileTransferID, e.info);
683
695
  }
684
696
  }
685
697
  #M(e, t) {
@@ -699,31 +711,29 @@ var pe = class {
699
711
  case "clientMoved":
700
712
  for (let e of this.#p) setImmediate(() => e(t));
701
713
  break;
702
- case "poked":
703
- for (let e of this.#m) setImmediate(() => e(t));
704
- break;
714
+ case "poked": for (let e of this.#m) setImmediate(() => e(t));
705
715
  }
706
716
  }
707
717
  #P(e) {
708
- if (this.#i === n.Disconnected) return;
709
- this.#i = n.Disconnected;
710
- let t = this.#_.slice();
711
- for (let n of t) setImmediate(() => n(e ?? void 0));
718
+ if (this.#i === t.Disconnected) return;
719
+ this.#i = t.Disconnected;
720
+ let n = this.#_.slice();
721
+ for (let t of n) setImmediate(() => t(e ?? void 0));
712
722
  }
713
723
  #F() {
714
- return R(this.#y, async (e) => {
724
+ return L(this.#y, async (e) => {
715
725
  this.handler.sendPacket(b.Command, Buffer.from(e), 0);
716
726
  });
717
727
  }
718
728
  #I() {
719
- return z(this.#b, (e) => {
729
+ return R(this.#b, (e) => {
720
730
  typeof e == "object" && e && "invokerName" in e && "message" in e && "targetMode" in e ? this.#N("textMessage", e) : typeof e == "object" && e && "invokerName" in e && "message" in e && !("targetMode" in e) ? this.#N("poked", e) : typeof e == "object" && e && "id" in e && "uid" in e ? this.#N("clientEnter", e) : typeof e == "object" && e && "id" in e && "reasonID" in e && "targetChannelID" in e ? this.#N("clientMoved", e) : typeof e == "object" && e && "id" in e && "reasonID" in e && this.#N("clientLeave", e);
721
731
  });
722
732
  }
723
733
  };
724
734
  //#endregion
725
735
  //#region src/api.ts
726
- async function $(e, t, n, r) {
736
+ async function me(e, t, n, r) {
727
737
  let i = C("sendtextmessage", [
728
738
  ["targetmode", String(t)],
729
739
  ["target", String(n)],
@@ -731,30 +741,34 @@ async function $(e, t, n, r) {
731
741
  ]);
732
742
  await e.sendCommandNoWait(i);
733
743
  }
734
- async function me(e, t, n, r = "") {
744
+ async function he(e, t, n, r = "") {
735
745
  let i = [["clid", String(t)], ["cid", String(n)]];
736
- r && i.push(["cpw", r]);
746
+ r && i.push(["cpw", ge(r)]);
737
747
  let a = C("clientmove", i);
738
748
  await e.execCommand(a, 1e4);
739
749
  }
740
- async function he(e, t, n) {
750
+ function ge(e) {
751
+ return E("sha1").update(e).digest("base64");
752
+ }
753
+ async function _e(e, t, n) {
741
754
  let r = C("clientpoke", [["clid", String(t)], ["msg", n]]);
742
755
  await e.execCommand(r, 1e4);
743
756
  }
744
- async function ge(e, t) {
757
+ async function ve(e, t) {
745
758
  let n = (await e.execCommandWithResponse(`clientinfo clid=${t}`, 5e3))[0];
746
759
  if (!n) throw Error(`no data returned for client ${t}`);
747
760
  return n;
748
761
  }
749
- async function _e(e) {
762
+ async function ye(e) {
750
763
  return (await e.execCommandWithResponse("channellist", 5e3)).map((e) => ({
751
764
  id: BigInt(e.cid ?? "0"),
752
- parentID: BigInt(e.pid ?? "0"),
765
+ parentID: BigInt(e.pid ?? e.cpid ?? "0"),
766
+ order: BigInt(e.channel_order ?? "0"),
753
767
  name: S(e.channel_name ?? ""),
754
768
  description: ""
755
769
  }));
756
770
  }
757
- async function ve(e) {
771
+ async function be(e) {
758
772
  return (await e.execCommandWithResponse("clientlist -uid -away -voice -groups", 5e3)).map((e) => {
759
773
  let t = e.client_servergroups ?? "";
760
774
  return {
@@ -767,7 +781,7 @@ async function ve(e) {
767
781
  };
768
782
  });
769
783
  }
770
- async function ye(e, t, n) {
784
+ async function xe(e, t, n) {
771
785
  if (n.length === 0) return;
772
786
  let r = n.join("|"), i = w("ftdeletefile", {
773
787
  cid: String(t),
@@ -777,6 +791,6 @@ async function ye(e, t, n) {
777
791
  await e.execCommand(i, 1e4);
778
792
  }
779
793
  //#endregion
780
- export { l as AlreadyConnectedError, pe as Client, n as ClientStatus, c as CommandTimeoutError, a as CryptoInitError, m as EAXTagMismatchError, _ as FakeSignatureMismatchError, o as FileTransferError, g as FileTransferTimeoutError, u as Identity, i as InvalidIdentityError, r as ServerError, h as TeamspeakError, me as clientMove, e as consoleLogger, N as dialFileTransfer, F as downloadFileData, ye as fileTransferDeleteFile, p as generateIdentity, ge as getClientInfo, s as getUidFromPublicKey, ee as identityFromString, _e as listChannels, ve as listClients, t as noopLogger, he as poke, $ as sendTextMessage, P as uploadFileData };
794
+ export { l as AlreadyConnectedError, $ as Client, t as ClientStatus, c as CommandTimeoutError, a as CryptoInitError, h as EAXTagMismatchError, _ as FakeSignatureMismatchError, o as FileTransferError, g as FileTransferTimeoutError, u as Identity, i as InvalidIdentityError, r as ServerError, ee as TeamspeakError, he as clientMove, e as consoleLogger, M as dialFileTransfer, P as downloadFileData, xe as fileTransferDeleteFile, m as generateIdentity, ve as getClientInfo, s as getUidFromPublicKey, f as identityFromString, ye as listChannels, be as listClients, n as noopLogger, _e as poke, me as sendTextMessage, N as uploadFileData };
781
795
 
782
796
  //# sourceMappingURL=index.mjs.map