yukimu 1.3.0 → 2.0.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 (135) hide show
  1. package/dist/BitrateOptimizer.d.ts +52 -0
  2. package/dist/BitrateOptimizer.d.ts.map +1 -0
  3. package/dist/BitrateOptimizer.js +115 -0
  4. package/dist/BitrateOptimizer.js.map +1 -0
  5. package/dist/ConnectionPool.d.ts +52 -3
  6. package/dist/ConnectionPool.d.ts.map +1 -1
  7. package/dist/ConnectionPool.js +124 -32
  8. package/dist/ConnectionPool.js.map +1 -1
  9. package/dist/Constants.d.ts +27 -2
  10. package/dist/Constants.d.ts.map +1 -1
  11. package/dist/Constants.js +133 -11
  12. package/dist/Constants.js.map +1 -1
  13. package/dist/Logger.d.ts +22 -0
  14. package/dist/Logger.d.ts.map +1 -0
  15. package/dist/Logger.js +74 -0
  16. package/dist/Logger.js.map +1 -0
  17. package/dist/Node.d.ts +17 -4
  18. package/dist/Node.d.ts.map +1 -1
  19. package/dist/Node.js +226 -88
  20. package/dist/Node.js.map +1 -1
  21. package/dist/Player.d.ts +74 -7
  22. package/dist/Player.d.ts.map +1 -1
  23. package/dist/Player.js +317 -92
  24. package/dist/Player.js.map +1 -1
  25. package/dist/Plugin.d.ts +19 -1
  26. package/dist/Plugin.d.ts.map +1 -1
  27. package/dist/Plugin.js +8 -0
  28. package/dist/Plugin.js.map +1 -1
  29. package/dist/Queue.d.ts +69 -2
  30. package/dist/Queue.d.ts.map +1 -1
  31. package/dist/Queue.js +138 -17
  32. package/dist/Queue.js.map +1 -1
  33. package/dist/Resolver.d.ts +33 -2
  34. package/dist/Resolver.d.ts.map +1 -1
  35. package/dist/Resolver.js +225 -33
  36. package/dist/Resolver.js.map +1 -1
  37. package/dist/Rest.d.ts +27 -4
  38. package/dist/Rest.d.ts.map +1 -1
  39. package/dist/Rest.js +157 -25
  40. package/dist/Rest.js.map +1 -1
  41. package/dist/TrackCache.d.ts +30 -5
  42. package/dist/TrackCache.d.ts.map +1 -1
  43. package/dist/TrackCache.js +119 -15
  44. package/dist/TrackCache.js.map +1 -1
  45. package/dist/WsQueue.d.ts +31 -1
  46. package/dist/WsQueue.d.ts.map +1 -1
  47. package/dist/WsQueue.js +70 -12
  48. package/dist/WsQueue.js.map +1 -1
  49. package/dist/Yukimu.d.ts +38 -5
  50. package/dist/Yukimu.d.ts.map +1 -1
  51. package/dist/Yukimu.js +150 -57
  52. package/dist/Yukimu.js.map +1 -1
  53. package/dist/connector/Connector.d.ts +26 -0
  54. package/dist/connector/Connector.d.ts.map +1 -1
  55. package/dist/connector/Connector.js +28 -0
  56. package/dist/connector/Connector.js.map +1 -1
  57. package/dist/connector/DiscordJS.d.ts +20 -1
  58. package/dist/connector/DiscordJS.d.ts.map +1 -1
  59. package/dist/connector/DiscordJS.js +44 -2
  60. package/dist/connector/DiscordJS.js.map +1 -1
  61. package/dist/connector/Eris.d.ts +12 -1
  62. package/dist/connector/Eris.d.ts.map +1 -1
  63. package/dist/connector/Eris.js +40 -6
  64. package/dist/connector/Eris.js.map +1 -1
  65. package/dist/connector/Oceanic.d.ts +12 -1
  66. package/dist/connector/Oceanic.d.ts.map +1 -1
  67. package/dist/connector/Oceanic.js +39 -4
  68. package/dist/connector/Oceanic.js.map +1 -1
  69. package/dist/errors/YukimuError.d.ts +40 -4
  70. package/dist/errors/YukimuError.d.ts.map +1 -1
  71. package/dist/errors/YukimuError.js +79 -8
  72. package/dist/errors/YukimuError.js.map +1 -1
  73. package/dist/index.d.ts +13 -4
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +30 -16
  76. package/dist/index.js.map +1 -1
  77. package/dist/plugins/AutoResume.d.ts +18 -1
  78. package/dist/plugins/AutoResume.d.ts.map +1 -1
  79. package/dist/plugins/AutoResume.js +109 -21
  80. package/dist/plugins/AutoResume.js.map +1 -1
  81. package/dist/plugins/AutoplayPlugin.d.ts +35 -0
  82. package/dist/plugins/AutoplayPlugin.d.ts.map +1 -0
  83. package/dist/plugins/AutoplayPlugin.js +111 -0
  84. package/dist/plugins/AutoplayPlugin.js.map +1 -0
  85. package/dist/plugins/InactivityPlugin.d.ts +30 -0
  86. package/dist/plugins/InactivityPlugin.d.ts.map +1 -0
  87. package/dist/plugins/InactivityPlugin.js +86 -0
  88. package/dist/plugins/InactivityPlugin.js.map +1 -0
  89. package/dist/plugins/PlayerMoved.d.ts +23 -1
  90. package/dist/plugins/PlayerMoved.d.ts.map +1 -1
  91. package/dist/plugins/PlayerMoved.js +57 -12
  92. package/dist/plugins/PlayerMoved.js.map +1 -1
  93. package/dist/types.d.ts +198 -71
  94. package/dist/types.d.ts.map +1 -1
  95. package/dist/types.js +1 -0
  96. package/dist/types.js.map +1 -1
  97. package/package.json +49 -5
  98. package/.cache/replit/env/latest +0 -88
  99. package/.cache/replit/env/latest.json +0 -1
  100. package/.cache/replit/modules/nodejs-20.res +0 -1
  101. package/.cache/replit/modules/python-3.11.res +0 -1
  102. package/.cache/replit/modules/replit.res +0 -1
  103. package/.cache/replit/modules.stamp +0 -0
  104. package/.cache/replit/nix/dotreplitenv.json +0 -1
  105. package/.cache/replit/toolchain.json +0 -1
  106. package/.local/state/workflow-logs/7zVU0iVo-fBL1ccMCmELy/configure_your_app.packager.installForAll.0 +0 -9
  107. package/.local/state/workflow-logs/7zVU0iVo-fBL1ccMCmELy/configure_your_app.shell.exec.1 +0 -1
  108. package/.local/state/workflow-logs/KRgHXizaECjWI5nWtS7Dj/configure_your_app.packager.installForAll.0 +0 -1
  109. package/.local/state/workflow-logs/KRgHXizaECjWI5nWtS7Dj/configure_your_app.shell.exec.1 +0 -1
  110. package/.local/state/workflow-logs/U0AinJQVHonnwGjj0RXLn/configure_your_app.packager.installForAll.0 +0 -2
  111. package/.local/state/workflow-logs/jVavLOnv1MqxUvxhMmqER/configure_your_app.packager.installForAll.0 +0 -1
  112. package/.local/state/workflow-logs/jVavLOnv1MqxUvxhMmqER/configure_your_app.shell.exec.1 +0 -1
  113. package/.replit +0 -7
  114. package/.upm/store.json +0 -1
  115. package/src/ConnectionPool.ts +0 -114
  116. package/src/Constants.ts +0 -45
  117. package/src/Node.ts +0 -302
  118. package/src/Player.ts +0 -332
  119. package/src/Plugin.ts +0 -7
  120. package/src/Queue.ts +0 -66
  121. package/src/Resolver.ts +0 -90
  122. package/src/Rest.ts +0 -127
  123. package/src/TrackCache.ts +0 -46
  124. package/src/WsQueue.ts +0 -58
  125. package/src/Yukimu.ts +0 -213
  126. package/src/connector/Connector.ts +0 -13
  127. package/src/connector/DiscordJS.ts +0 -26
  128. package/src/connector/Eris.ts +0 -24
  129. package/src/connector/Oceanic.ts +0 -22
  130. package/src/errors/YukimuError.ts +0 -31
  131. package/src/index.ts +0 -24
  132. package/src/plugins/AutoResume.ts +0 -37
  133. package/src/plugins/PlayerMoved.ts +0 -26
  134. package/src/types.ts +0 -145
  135. package/tsconfig.json +0 -22
@@ -1,11 +1,39 @@
1
1
  "use strict";
2
+ /** Yukimu v2.0.0 — Base Connector */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Connector = void 0;
5
+ /**
6
+ * Abstract base class for Discord library connectors.
7
+ *
8
+ * Connectors bridge Yukimu to a specific Discord library (discord.js, Eris, Oceanic)
9
+ * by forwarding voice gateway events and sending voice payloads.
10
+ *
11
+ * v2 additions:
12
+ * - getGuildBoostTier(): Get the boost level for bitrate optimization
13
+ * - getChannelBitrate(): Get the current voice channel bitrate
14
+ */
4
15
  class Connector {
16
+ manager;
5
17
  set(manager) {
6
18
  this.manager = manager;
7
19
  return this;
8
20
  }
21
+ /**
22
+ * Get the Discord server's boost tier.
23
+ * Override in subclass for boost-tier-aware bitrate optimization.
24
+ * @returns 0 | 1 | 2 | 3
25
+ */
26
+ getGuildBoostTier(_guildId) {
27
+ return 0;
28
+ }
29
+ /**
30
+ * Get the current bitrate of a voice channel in kbps.
31
+ * Override in subclass for accurate bitrate information.
32
+ * @returns Bitrate in kbps, or null if unavailable
33
+ */
34
+ getChannelBitrate(_guildId, _channelId) {
35
+ return null;
36
+ }
9
37
  }
10
38
  exports.Connector = Connector;
11
39
  //# sourceMappingURL=Connector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Connector.js","sourceRoot":"","sources":["../../src/connector/Connector.ts"],"names":[],"mappings":";;;AAEA,MAAsB,SAAS;IAGtB,GAAG,CAAC,OAAe;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;CAIF;AAVD,8BAUC"}
1
+ {"version":3,"file":"Connector.js","sourceRoot":"","sources":["../../src/connector/Connector.ts"],"names":[],"mappings":";AAAA,qCAAqC;;;AAKrC;;;;;;;;;GASG;AACH,MAAsB,SAAS;IACnB,OAAO,CAAU;IAEpB,GAAG,CAAC,OAAe;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAQD;;;;OAIG;IACI,iBAAiB,CAAC,QAAgB;QACvC,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;OAIG;IACI,iBAAiB,CAAC,QAAgB,EAAE,UAAkB;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA/BD,8BA+BC"}
@@ -1,8 +1,27 @@
1
+ /** Yukimu v2.0.0 — Discord.js Connector */
1
2
  import { Connector } from "./Connector";
3
+ import type { BoostTier } from "../types";
4
+ /**
5
+ * Connector for discord.js v14+.
6
+ *
7
+ * Improvements from v1:
8
+ * - Safe shard access (handles undefined guild/shard)
9
+ * - Boost tier detection for adaptive bitrate
10
+ * - Channel bitrate detection
11
+ */
2
12
  export declare class DiscordJS extends Connector {
3
- private client;
13
+ private readonly client;
4
14
  constructor(client: any);
5
15
  listen(): void;
6
16
  sendPayload(guildId: string, payload: unknown): void;
17
+ /**
18
+ * Get the Discord server boost tier (0–3).
19
+ * Uses discord.js Guild.premiumTier.
20
+ */
21
+ getGuildBoostTier(guildId: string): BoostTier;
22
+ /**
23
+ * Get the current bitrate of a voice channel in kbps.
24
+ */
25
+ getChannelBitrate(guildId: string, channelId: string): number | null;
7
26
  }
8
27
  //# sourceMappingURL=DiscordJS.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DiscordJS.d.ts","sourceRoot":"","sources":["../../src/connector/DiscordJS.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,SAAU,SAAQ,SAAS;IACtC,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,GAAG;IAKhB,MAAM,IAAI,IAAI;IAWd,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAI5D"}
1
+ {"version":3,"file":"DiscordJS.d.ts","sourceRoot":"","sources":["../../src/connector/DiscordJS.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;;GAOG;AACH,qBAAa,SAAU,SAAQ,SAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAM;gBAEjB,MAAM,EAAE,GAAG;IAKhB,MAAM,IAAI,IAAI;IAWd,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAa3D;;;OAGG;IACa,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAO7D;;OAEG;IACa,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAQrF"}
@@ -1,8 +1,18 @@
1
1
  "use strict";
2
+ /** Yukimu v2.0.0 — Discord.js Connector */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.DiscordJS = void 0;
4
5
  const Connector_1 = require("./Connector");
6
+ /**
7
+ * Connector for discord.js v14+.
8
+ *
9
+ * Improvements from v1:
10
+ * - Safe shard access (handles undefined guild/shard)
11
+ * - Boost tier detection for adaptive bitrate
12
+ * - Channel bitrate detection
13
+ */
5
14
  class DiscordJS extends Connector_1.Connector {
15
+ client; // discord.js Client
6
16
  constructor(client) {
7
17
  super();
8
18
  this.client = client;
@@ -18,9 +28,41 @@ class DiscordJS extends Connector_1.Connector {
18
28
  });
19
29
  }
20
30
  sendPayload(guildId, payload) {
21
- const guild = this.client.guilds.cache.get(guildId);
22
- if (guild)
31
+ const guild = this.client.guilds?.cache?.get(guildId);
32
+ if (!guild?.shard) {
33
+ this.manager.logger.warn(`Cannot send payload — guild ${guildId} not found or shard unavailable`);
34
+ return;
35
+ }
36
+ try {
23
37
  guild.shard.send(payload);
38
+ }
39
+ catch (err) {
40
+ this.manager.logger.error(`Failed to send payload to guild ${guildId}:`, err);
41
+ }
42
+ }
43
+ /**
44
+ * Get the Discord server boost tier (0–3).
45
+ * Uses discord.js Guild.premiumTier.
46
+ */
47
+ getGuildBoostTier(guildId) {
48
+ const guild = this.client.guilds?.cache?.get(guildId);
49
+ if (!guild)
50
+ return 0;
51
+ const tier = guild.premiumTier ?? 0;
52
+ return (Math.min(Math.max(tier, 0), 3));
53
+ }
54
+ /**
55
+ * Get the current bitrate of a voice channel in kbps.
56
+ */
57
+ getChannelBitrate(guildId, channelId) {
58
+ const guild = this.client.guilds?.cache?.get(guildId);
59
+ if (!guild)
60
+ return null;
61
+ const channel = guild.channels?.cache?.get(channelId);
62
+ if (!channel || !channel.bitrate)
63
+ return null;
64
+ // discord.js returns bitrate in bps, convert to kbps
65
+ return Math.floor(channel.bitrate / 1000);
24
66
  }
25
67
  }
26
68
  exports.DiscordJS = DiscordJS;
@@ -1 +1 @@
1
- {"version":3,"file":"DiscordJS.js","sourceRoot":"","sources":["../../src/connector/DiscordJS.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,MAAa,SAAU,SAAQ,qBAAS;IAGtC,YAAY,MAAW;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAW,EAAE,EAAE;YACpC,IAAI,MAAM,CAAC,CAAC,KAAK,oBAAoB,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,MAAM,CAAC,CAAC,KAAK,qBAAqB,EAAE,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW,CAAC,OAAe,EAAE,OAAgB;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,KAAK;YAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF;AAvBD,8BAuBC"}
1
+ {"version":3,"file":"DiscordJS.js","sourceRoot":"","sources":["../../src/connector/DiscordJS.ts"],"names":[],"mappings":";AAAA,2CAA2C;;;AAE3C,2CAAwC;AAGxC;;;;;;;GAOG;AACH,MAAa,SAAU,SAAQ,qBAAS;IACrB,MAAM,CAAM,CAAC,oBAAoB;IAElD,YAAY,MAAW;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAW,EAAE,EAAE;YACpC,IAAI,MAAM,CAAC,CAAC,KAAK,oBAAoB,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,MAAM,CAAC,CAAC,KAAK,qBAAqB,EAAE,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW,CAAC,OAAe,EAAE,OAAgB;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,OAAO,iCAAiC,CAAC,CAAC;YAClG,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED;;;OAGG;IACa,iBAAiB,CAAC,OAAe;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAc,CAAC;IACvD,CAAC;IAED;;OAEG;IACa,iBAAiB,CAAC,OAAe,EAAE,SAAiB;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9C,qDAAqD;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF;AAtDD,8BAsDC"}
@@ -1,8 +1,19 @@
1
+ /** Yukimu v2.0.0 — Eris Connector */
1
2
  import { Connector } from "./Connector";
3
+ import type { BoostTier } from "../types";
4
+ /**
5
+ * Connector for Eris.
6
+ *
7
+ * Improvements from v1:
8
+ * - Safe shard access
9
+ * - Boost tier detection
10
+ */
2
11
  export declare class Eris extends Connector {
3
- private client;
12
+ private readonly client;
4
13
  constructor(client: any);
5
14
  listen(): void;
6
15
  sendPayload(guildId: string, payload: unknown): void;
16
+ getGuildBoostTier(guildId: string): BoostTier;
17
+ getChannelBitrate(_guildId: string, channelId: string): number | null;
7
18
  }
8
19
  //# sourceMappingURL=Eris.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Eris.d.ts","sourceRoot":"","sources":["../../src/connector/Eris.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,IAAK,SAAQ,SAAS;IACjC,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,GAAG;IAKhB,MAAM,IAAI,IAAI;IAOd,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAM5D"}
1
+ {"version":3,"file":"Eris.d.ts","sourceRoot":"","sources":["../../src/connector/Eris.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;GAMG;AACH,qBAAa,IAAK,SAAQ,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAM;gBAEjB,MAAM,EAAE,GAAG;IAKhB,MAAM,IAAI,IAAI;IAWd,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAkB3C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAO7C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAKtF"}
@@ -1,27 +1,61 @@
1
1
  "use strict";
2
+ /** Yukimu v2.0.0 — Eris Connector */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Eris = void 0;
4
5
  const Connector_1 = require("./Connector");
6
+ /**
7
+ * Connector for Eris.
8
+ *
9
+ * Improvements from v1:
10
+ * - Safe shard access
11
+ * - Boost tier detection
12
+ */
5
13
  class Eris extends Connector_1.Connector {
14
+ client; // Eris Client
6
15
  constructor(client) {
7
16
  super();
8
17
  this.client = client;
9
18
  }
10
19
  listen() {
11
20
  this.client.on("rawWS", (packet) => {
12
- if (packet.t === "VOICE_STATE_UPDATE")
21
+ if (packet.t === "VOICE_STATE_UPDATE") {
13
22
  this.manager.handleVoiceStateUpdate(packet.d);
14
- if (packet.t === "VOICE_SERVER_UPDATE")
23
+ }
24
+ if (packet.t === "VOICE_SERVER_UPDATE") {
15
25
  this.manager.handleVoiceServerUpdate(packet.d);
26
+ }
16
27
  });
17
28
  }
18
29
  sendPayload(guildId, payload) {
19
- const guild = this.client.guilds.get(guildId);
20
- if (!guild)
30
+ const guild = this.client.guilds?.get(guildId);
31
+ if (!guild) {
32
+ this.manager.logger.warn(`Cannot send payload — guild ${guildId} not found`);
33
+ return;
34
+ }
35
+ const shard = this.client.shards?.get(guild.shard?.id);
36
+ if (!shard) {
37
+ this.manager.logger.warn(`Cannot send payload — shard for guild ${guildId} not found`);
21
38
  return;
22
- const shard = this.client.shards.get(guild.shard.id);
23
- if (shard)
39
+ }
40
+ try {
24
41
  shard.sendWS(4, payload.d);
42
+ }
43
+ catch (err) {
44
+ this.manager.logger.error(`Failed to send payload to guild ${guildId}:`, err);
45
+ }
46
+ }
47
+ getGuildBoostTier(guildId) {
48
+ const guild = this.client.guilds?.get(guildId);
49
+ if (!guild)
50
+ return 0;
51
+ const tier = guild.premiumTier ?? 0;
52
+ return (Math.min(Math.max(tier, 0), 3));
53
+ }
54
+ getChannelBitrate(_guildId, channelId) {
55
+ const channel = this.client.getChannel?.(channelId);
56
+ if (!channel || !channel.bitrate)
57
+ return null;
58
+ return Math.floor(channel.bitrate / 1000);
25
59
  }
26
60
  }
27
61
  exports.Eris = Eris;
@@ -1 +1 @@
1
- {"version":3,"file":"Eris.js","sourceRoot":"","sources":["../../src/connector/Eris.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,MAAa,IAAK,SAAQ,qBAAS;IAGjC,YAAY,MAAW;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAW,EAAE,EAAE;YACtC,IAAI,MAAM,CAAC,CAAC,KAAK,oBAAoB;gBAAE,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrF,IAAI,MAAM,CAAC,CAAC,KAAK,qBAAqB;gBAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW,CAAC,OAAe,EAAE,OAAgB;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,KAAK;YAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAG,OAAe,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;CACF;AArBD,oBAqBC"}
1
+ {"version":3,"file":"Eris.js","sourceRoot":"","sources":["../../src/connector/Eris.ts"],"names":[],"mappings":";AAAA,qCAAqC;;;AAErC,2CAAwC;AAGxC;;;;;;GAMG;AACH,MAAa,IAAK,SAAQ,qBAAS;IAChB,MAAM,CAAM,CAAC,cAAc;IAE5C,YAAY,MAAW;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAW,EAAE,EAAE;YACtC,IAAI,MAAM,CAAC,CAAC,KAAK,oBAAoB,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,MAAM,CAAC,CAAC,KAAK,qBAAqB,EAAE,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW,CAAC,OAAe,EAAE,OAAgB;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,OAAO,YAAY,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,OAAO,YAAY,CAAC,CAAC;YACvF,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,KAAK,CAAC,MAAM,CAAC,CAAC,EAAG,OAAe,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAEe,iBAAiB,CAAC,OAAe;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAc,CAAC;IACvD,CAAC;IAEe,iBAAiB,CAAC,QAAgB,EAAE,SAAiB;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF;AAjDD,oBAiDC"}
@@ -1,8 +1,19 @@
1
+ /** Yukimu v2.0.0 — Oceanic.js Connector */
1
2
  import { Connector } from "./Connector";
3
+ import type { BoostTier } from "../types";
4
+ /**
5
+ * Connector for Oceanic.js.
6
+ *
7
+ * Improvements from v1:
8
+ * - Safe guild/shard access
9
+ * - Boost tier detection
10
+ */
2
11
  export declare class Oceanic extends Connector {
3
- private client;
12
+ private readonly client;
4
13
  constructor(client: any);
5
14
  listen(): void;
6
15
  sendPayload(guildId: string, payload: unknown): void;
16
+ getGuildBoostTier(guildId: string): BoostTier;
17
+ getChannelBitrate(guildId: string, channelId: string): number | null;
7
18
  }
8
19
  //# sourceMappingURL=Oceanic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Oceanic.d.ts","sourceRoot":"","sources":["../../src/connector/Oceanic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,OAAQ,SAAQ,SAAS;IACpC,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,GAAG;IAKhB,MAAM,IAAI,IAAI;IAOd,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAI5D"}
1
+ {"version":3,"file":"Oceanic.d.ts","sourceRoot":"","sources":["../../src/connector/Oceanic.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;GAMG;AACH,qBAAa,OAAQ,SAAQ,SAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAM;gBAEjB,MAAM,EAAE,GAAG;IAKhB,MAAM,IAAI,IAAI;IAWd,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAa3C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAO7C,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAOrF"}
@@ -1,24 +1,59 @@
1
1
  "use strict";
2
+ /** Yukimu v2.0.0 — Oceanic.js Connector */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Oceanic = void 0;
4
5
  const Connector_1 = require("./Connector");
6
+ /**
7
+ * Connector for Oceanic.js.
8
+ *
9
+ * Improvements from v1:
10
+ * - Safe guild/shard access
11
+ * - Boost tier detection
12
+ */
5
13
  class Oceanic extends Connector_1.Connector {
14
+ client; // Oceanic Client
6
15
  constructor(client) {
7
16
  super();
8
17
  this.client = client;
9
18
  }
10
19
  listen() {
11
20
  this.client.on("packet", (packet) => {
12
- if (packet.t === "VOICE_STATE_UPDATE")
21
+ if (packet.t === "VOICE_STATE_UPDATE") {
13
22
  this.manager.handleVoiceStateUpdate(packet.d);
14
- if (packet.t === "VOICE_SERVER_UPDATE")
23
+ }
24
+ if (packet.t === "VOICE_SERVER_UPDATE") {
15
25
  this.manager.handleVoiceServerUpdate(packet.d);
26
+ }
16
27
  });
17
28
  }
18
29
  sendPayload(guildId, payload) {
19
- const guild = this.client.guilds.get(guildId);
20
- if (guild)
30
+ const guild = this.client.guilds?.get(guildId);
31
+ if (!guild?.shard) {
32
+ this.manager.logger.warn(`Cannot send payload — guild ${guildId} or shard not found`);
33
+ return;
34
+ }
35
+ try {
21
36
  guild.shard.send(payload);
37
+ }
38
+ catch (err) {
39
+ this.manager.logger.error(`Failed to send payload to guild ${guildId}:`, err);
40
+ }
41
+ }
42
+ getGuildBoostTier(guildId) {
43
+ const guild = this.client.guilds?.get(guildId);
44
+ if (!guild)
45
+ return 0;
46
+ const tier = guild.premiumTier ?? 0;
47
+ return (Math.min(Math.max(tier, 0), 3));
48
+ }
49
+ getChannelBitrate(guildId, channelId) {
50
+ const guild = this.client.guilds?.get(guildId);
51
+ if (!guild)
52
+ return null;
53
+ const channel = guild.channels?.get(channelId);
54
+ if (!channel || !channel.bitrate)
55
+ return null;
56
+ return Math.floor(channel.bitrate / 1000);
22
57
  }
23
58
  }
24
59
  exports.Oceanic = Oceanic;
@@ -1 +1 @@
1
- {"version":3,"file":"Oceanic.js","sourceRoot":"","sources":["../../src/connector/Oceanic.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,MAAa,OAAQ,SAAQ,qBAAS;IAGpC,YAAY,MAAW;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAW,EAAE,EAAE;YACvC,IAAI,MAAM,CAAC,CAAC,KAAK,oBAAoB;gBAAE,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrF,IAAI,MAAM,CAAC,CAAC,KAAK,qBAAqB;gBAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW,CAAC,OAAe,EAAE,OAAgB;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,KAAK;YAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF;AAnBD,0BAmBC"}
1
+ {"version":3,"file":"Oceanic.js","sourceRoot":"","sources":["../../src/connector/Oceanic.ts"],"names":[],"mappings":";AAAA,2CAA2C;;;AAE3C,2CAAwC;AAGxC;;;;;;GAMG;AACH,MAAa,OAAQ,SAAQ,qBAAS;IACnB,MAAM,CAAM,CAAC,iBAAiB;IAE/C,YAAY,MAAW;QACrB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAW,EAAE,EAAE;YACvC,IAAI,MAAM,CAAC,CAAC,KAAK,oBAAoB,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,MAAM,CAAC,CAAC,KAAK,qBAAqB,EAAE,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW,CAAC,OAAe,EAAE,OAAgB;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,OAAO,qBAAqB,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAEe,iBAAiB,CAAC,OAAe;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAc,CAAC;IACvD,CAAC;IAEe,iBAAiB,CAAC,OAAe,EAAE,SAAiB;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF;AA9CD,0BA8CC"}
@@ -1,15 +1,51 @@
1
+ /** Yukimu v2.0.0 — Error System with Error Codes */
2
+ export declare enum ErrorCode {
3
+ UNKNOWN = "UNKNOWN",
4
+ INVALID_ARGUMENT = "INVALID_ARGUMENT",
5
+ NODE_NOT_FOUND = "NODE_NOT_FOUND",
6
+ NODE_ALREADY_EXISTS = "NODE_ALREADY_EXISTS",
7
+ NODE_DISCONNECTED = "NODE_DISCONNECTED",
8
+ NODE_MAX_RETRIES = "NODE_MAX_RETRIES",
9
+ NODE_CONNECTION_TIMEOUT = "NODE_CONNECTION_TIMEOUT",
10
+ PLAYER_NOT_FOUND = "PLAYER_NOT_FOUND",
11
+ PLAYER_ALREADY_EXISTS = "PLAYER_ALREADY_EXISTS",
12
+ PLAYER_NO_TRACK = "PLAYER_NO_TRACK",
13
+ PLAYER_NOT_SEEKABLE = "PLAYER_NOT_SEEKABLE",
14
+ PLAYER_INVALID_VOLUME = "PLAYER_INVALID_VOLUME",
15
+ PLAYER_INVALID_FILTER = "PLAYER_INVALID_FILTER",
16
+ VOICE_CONNECTION_TIMEOUT = "VOICE_CONNECTION_TIMEOUT",
17
+ VOICE_CONNECTION_FAILED = "VOICE_CONNECTION_FAILED",
18
+ REST_ERROR = "REST_ERROR",
19
+ REST_TIMEOUT = "REST_TIMEOUT",
20
+ REST_RATE_LIMITED = "REST_RATE_LIMITED",
21
+ RESOLVER_NO_NODE = "RESOLVER_NO_NODE",
22
+ RESOLVER_LOAD_FAILED = "RESOLVER_LOAD_FAILED",
23
+ RESOLVER_SPOTIFY_ERROR = "RESOLVER_SPOTIFY_ERROR",
24
+ PLUGIN_ALREADY_LOADED = "PLUGIN_ALREADY_LOADED",
25
+ PLUGIN_NOT_FOUND = "PLUGIN_NOT_FOUND"
26
+ }
1
27
  export declare class YukimuError extends Error {
2
- constructor(message: string);
28
+ readonly code: ErrorCode;
29
+ constructor(message: string, code?: ErrorCode);
3
30
  }
4
31
  export declare class NodeError extends YukimuError {
5
- constructor(message: string);
32
+ constructor(message: string, code?: ErrorCode);
6
33
  }
7
34
  export declare class PlayerError extends YukimuError {
8
- constructor(message: string);
35
+ constructor(message: string, code?: ErrorCode);
9
36
  }
10
37
  export declare class RestError extends YukimuError {
11
38
  readonly status: number;
12
39
  readonly path: string;
13
- constructor(message: string, status: number, path: string);
40
+ readonly retryAfter?: number;
41
+ constructor(message: string, status: number, path: string, retryAfter?: number);
42
+ }
43
+ export declare class VoiceConnectionError extends YukimuError {
44
+ readonly guildId: string;
45
+ constructor(message: string, guildId: string, code?: ErrorCode);
46
+ }
47
+ export declare class ResolverError extends YukimuError {
48
+ readonly query: string;
49
+ constructor(message: string, query: string, code?: ErrorCode);
14
50
  }
15
51
  //# sourceMappingURL=YukimuError.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"YukimuError.d.ts","sourceRoot":"","sources":["../../src/errors/YukimuError.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,SAAU,SAAQ,WAAW;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,WAAY,SAAQ,WAAW;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,SAAU,SAAQ,WAAW;IACxC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,EAAE,MAAM,CAAC;gBACjB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAM1D"}
1
+ {"version":3,"file":"YukimuError.d.ts","sourceRoot":"","sources":["../../src/errors/YukimuError.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAIpD,oBAAY,SAAS;IAEnB,OAAO,YAAY;IACnB,gBAAgB,qBAAqB;IAGrC,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,uBAAuB,4BAA4B;IAGnD,gBAAgB,qBAAqB;IACrC,qBAAqB,0BAA0B;IAC/C,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;IAC3C,qBAAqB,0BAA0B;IAC/C,qBAAqB,0BAA0B;IAG/C,wBAAwB,6BAA6B;IACrD,uBAAuB,4BAA4B;IAGnD,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IAGvC,gBAAgB,qBAAqB;IACrC,oBAAoB,yBAAyB;IAC7C,sBAAsB,2BAA2B;IAGjD,qBAAqB,0BAA0B;IAC/C,gBAAgB,qBAAqB;CACtC;AAID,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAgB,IAAI,EAAE,SAAS,CAAC;gBAEpB,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,SAA6B;CASjE;AAID,qBAAa,SAAU,SAAQ,WAAW;gBAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,SAAuC;CAI3E;AAID,qBAAa,WAAY,SAAQ,WAAW;gBAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,SAAqC;CAIzE;AAID,qBAAa,SAAU,SAAQ,WAAW;IACxC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAExB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAY/E;AAID,qBAAa,oBAAqB,SAAQ,WAAW;IACnD,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,SAA6C;CAKlG;AAID,qBAAa,aAAc,SAAQ,WAAW;IAC5C,SAAgB,KAAK,EAAE,MAAM,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,SAA0C;CAK7F"}
@@ -1,34 +1,105 @@
1
1
  "use strict";
2
+ /** Yukimu v2.0.0 — Error System with Error Codes */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RestError = exports.PlayerError = exports.NodeError = exports.YukimuError = void 0;
4
+ exports.ResolverError = exports.VoiceConnectionError = exports.RestError = exports.PlayerError = exports.NodeError = exports.YukimuError = exports.ErrorCode = void 0;
5
+ // ─── Error Codes ────────────────────────────────────────────────────────────
6
+ var ErrorCode;
7
+ (function (ErrorCode) {
8
+ // General
9
+ ErrorCode["UNKNOWN"] = "UNKNOWN";
10
+ ErrorCode["INVALID_ARGUMENT"] = "INVALID_ARGUMENT";
11
+ // Node errors
12
+ ErrorCode["NODE_NOT_FOUND"] = "NODE_NOT_FOUND";
13
+ ErrorCode["NODE_ALREADY_EXISTS"] = "NODE_ALREADY_EXISTS";
14
+ ErrorCode["NODE_DISCONNECTED"] = "NODE_DISCONNECTED";
15
+ ErrorCode["NODE_MAX_RETRIES"] = "NODE_MAX_RETRIES";
16
+ ErrorCode["NODE_CONNECTION_TIMEOUT"] = "NODE_CONNECTION_TIMEOUT";
17
+ // Player errors
18
+ ErrorCode["PLAYER_NOT_FOUND"] = "PLAYER_NOT_FOUND";
19
+ ErrorCode["PLAYER_ALREADY_EXISTS"] = "PLAYER_ALREADY_EXISTS";
20
+ ErrorCode["PLAYER_NO_TRACK"] = "PLAYER_NO_TRACK";
21
+ ErrorCode["PLAYER_NOT_SEEKABLE"] = "PLAYER_NOT_SEEKABLE";
22
+ ErrorCode["PLAYER_INVALID_VOLUME"] = "PLAYER_INVALID_VOLUME";
23
+ ErrorCode["PLAYER_INVALID_FILTER"] = "PLAYER_INVALID_FILTER";
24
+ // Voice errors
25
+ ErrorCode["VOICE_CONNECTION_TIMEOUT"] = "VOICE_CONNECTION_TIMEOUT";
26
+ ErrorCode["VOICE_CONNECTION_FAILED"] = "VOICE_CONNECTION_FAILED";
27
+ // REST errors
28
+ ErrorCode["REST_ERROR"] = "REST_ERROR";
29
+ ErrorCode["REST_TIMEOUT"] = "REST_TIMEOUT";
30
+ ErrorCode["REST_RATE_LIMITED"] = "REST_RATE_LIMITED";
31
+ // Resolver errors
32
+ ErrorCode["RESOLVER_NO_NODE"] = "RESOLVER_NO_NODE";
33
+ ErrorCode["RESOLVER_LOAD_FAILED"] = "RESOLVER_LOAD_FAILED";
34
+ ErrorCode["RESOLVER_SPOTIFY_ERROR"] = "RESOLVER_SPOTIFY_ERROR";
35
+ // Plugin errors
36
+ ErrorCode["PLUGIN_ALREADY_LOADED"] = "PLUGIN_ALREADY_LOADED";
37
+ ErrorCode["PLUGIN_NOT_FOUND"] = "PLUGIN_NOT_FOUND";
38
+ })(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
39
+ // ─── Base Error ─────────────────────────────────────────────────────────────
4
40
  class YukimuError extends Error {
5
- constructor(message) {
41
+ code;
42
+ constructor(message, code = ErrorCode.UNKNOWN) {
6
43
  super(message);
7
44
  this.name = "YukimuError";
45
+ this.code = code;
46
+ // Maintain proper stack trace in V8
47
+ if (Error.captureStackTrace) {
48
+ Error.captureStackTrace(this, this.constructor);
49
+ }
8
50
  }
9
51
  }
10
52
  exports.YukimuError = YukimuError;
53
+ // ─── Node Error ─────────────────────────────────────────────────────────────
11
54
  class NodeError extends YukimuError {
12
- constructor(message) {
13
- super(message);
55
+ constructor(message, code = ErrorCode.NODE_DISCONNECTED) {
56
+ super(message, code);
14
57
  this.name = "NodeError";
15
58
  }
16
59
  }
17
60
  exports.NodeError = NodeError;
61
+ // ─── Player Error ───────────────────────────────────────────────────────────
18
62
  class PlayerError extends YukimuError {
19
- constructor(message) {
20
- super(message);
63
+ constructor(message, code = ErrorCode.PLAYER_NO_TRACK) {
64
+ super(message, code);
21
65
  this.name = "PlayerError";
22
66
  }
23
67
  }
24
68
  exports.PlayerError = PlayerError;
69
+ // ─── REST Error ─────────────────────────────────────────────────────────────
25
70
  class RestError extends YukimuError {
26
- constructor(message, status, path) {
27
- super(message);
71
+ status;
72
+ path;
73
+ retryAfter;
74
+ constructor(message, status, path, retryAfter) {
75
+ super(message, status === 408 ? ErrorCode.REST_TIMEOUT
76
+ : status === 429 ? ErrorCode.REST_RATE_LIMITED
77
+ : ErrorCode.REST_ERROR);
28
78
  this.name = "RestError";
29
79
  this.status = status;
30
80
  this.path = path;
81
+ this.retryAfter = retryAfter;
31
82
  }
32
83
  }
33
84
  exports.RestError = RestError;
85
+ // ─── Voice Connection Error ─────────────────────────────────────────────────
86
+ class VoiceConnectionError extends YukimuError {
87
+ guildId;
88
+ constructor(message, guildId, code = ErrorCode.VOICE_CONNECTION_FAILED) {
89
+ super(message, code);
90
+ this.name = "VoiceConnectionError";
91
+ this.guildId = guildId;
92
+ }
93
+ }
94
+ exports.VoiceConnectionError = VoiceConnectionError;
95
+ // ─── Resolver Error ─────────────────────────────────────────────────────────
96
+ class ResolverError extends YukimuError {
97
+ query;
98
+ constructor(message, query, code = ErrorCode.RESOLVER_LOAD_FAILED) {
99
+ super(message, code);
100
+ this.name = "ResolverError";
101
+ this.query = query;
102
+ }
103
+ }
104
+ exports.ResolverError = ResolverError;
34
105
  //# sourceMappingURL=YukimuError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"YukimuError.js","sourceRoot":"","sources":["../../src/errors/YukimuError.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,kCAKC;AAED,MAAa,SAAU,SAAQ,WAAW;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AALD,8BAKC;AAED,MAAa,WAAY,SAAQ,WAAW;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,kCAKC;AAED,MAAa,SAAU,SAAQ,WAAW;IAGxC,YAAY,OAAe,EAAE,MAAc,EAAE,IAAY;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AATD,8BASC"}
1
+ {"version":3,"file":"YukimuError.js","sourceRoot":"","sources":["../../src/errors/YukimuError.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,20 +1,29 @@
1
+ /** Yukimu v2.0.0 — Public API Exports */
1
2
  export { Yukimu } from "./Yukimu";
2
3
  export { Node } from "./Node";
3
4
  export { Player } from "./Player";
4
5
  export { Queue } from "./Queue";
5
6
  export { Rest } from "./Rest";
6
7
  export { Resolver } from "./Resolver";
7
- export { ConnectionPool } from "./ConnectionPool";
8
+ export { ConnectionPool, VoiceConnectionState } from "./ConnectionPool";
9
+ export type { VoiceConnection } from "./ConnectionPool";
8
10
  export { TrackCache } from "./TrackCache";
9
11
  export { WsQueue } from "./WsQueue";
10
12
  export { Plugin } from "./Plugin";
13
+ export { Logger } from "./Logger";
14
+ export { BitrateOptimizer } from "./BitrateOptimizer";
11
15
  export { Connector } from "./connector/Connector";
12
16
  export { DiscordJS } from "./connector/DiscordJS";
13
17
  export { Eris } from "./connector/Eris";
14
18
  export { Oceanic } from "./connector/Oceanic";
15
19
  export { PlayerMoved } from "./plugins/PlayerMoved";
20
+ export type { PlayerMovedOptions } from "./plugins/PlayerMoved";
16
21
  export { AutoResume } from "./plugins/AutoResume";
17
- export { YukimuError, NodeError, PlayerError, RestError } from "./errors/YukimuError";
18
- export * from "./Constants";
19
- export type { YukimuOptions, NodeOptions, NodeStats, NodeInfo, PlayerOptions, SpotifyOptions, SearchSource, Track, TrackInfo, SearchResult, PlaylistInfo, LavalinkException, VoiceState, FilterOptions, YukimuEvents, } from "./types";
22
+ export { AutoplayPlugin } from "./plugins/AutoplayPlugin";
23
+ export type { AutoplayStrategy, AutoplayOptions } from "./plugins/AutoplayPlugin";
24
+ export { InactivityPlugin } from "./plugins/InactivityPlugin";
25
+ export type { InactivityOptions } from "./plugins/InactivityPlugin";
26
+ export { YukimuError, NodeError, PlayerError, RestError, VoiceConnectionError, ResolverError, ErrorCode, } from "./errors/YukimuError";
27
+ export { VERSION, CLIENT_NAME, State, PlayerState, SOURCE_PREFIXES, URL_PATTERNS, STOPPED_REASONS, WS_CLOSE_CODES, BITRATE_BY_BOOST_TIER, DEFAULTS, } from "./Constants";
28
+ export type { YukimuOptions, NodeOptions, NodeStats, NodeInfo, PlayerOptions, SpotifyOptions, SearchSource, Track, TrackInfo, SearchResult, LoadType, PlaylistInfo, LavalinkException, VoiceState, FilterOptions, EqualizerBand, KaraokeSettings, TimescaleSettings, TremoloSettings, VibratoSettings, RotationSettings, DistortionSettings, ChannelMixSettings, LowPassSettings, BoostTier, BitrateConfig, LogLevel, YukimuLogger, LoopMode, YukimuEvents, RetryOptions, } from "./types";
20
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtF,cAAc,aAAa,CAAC;AAC5B,YAAY,EACV,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAC/C,aAAa,EAAE,cAAc,EAAE,YAAY,EAC3C,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAC5C,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,GAC3D,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAGzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,SAAS,GACV,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,OAAO,EACP,WAAW,EACX,KAAK,EACL,WAAW,EACX,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,QAAQ,GACT,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,aAAa,EACb,WAAW,EACX,SAAS,EACT,QAAQ,EACR,aAAa,EACb,cAAc,EACd,YAAY,EACZ,KAAK,EACL,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,MAAM,SAAS,CAAC"}