yukimu 1.2.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 -2
  6. package/dist/ConnectionPool.d.ts.map +1 -1
  7. package/dist/ConnectionPool.js +123 -44
  8. package/dist/ConnectionPool.js.map +1 -1
  9. package/dist/Constants.d.ts +26 -47
  10. package/dist/Constants.d.ts.map +1 -1
  11. package/dist/Constants.js +134 -67
  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 +217 -79
  20. package/dist/Node.js.map +1 -1
  21. package/dist/Player.d.ts +77 -6
  22. package/dist/Player.d.ts.map +1 -1
  23. package/dist/Player.js +319 -75
  24. package/dist/Player.js.map +1 -1
  25. package/dist/Plugin.d.ts +16 -12
  26. package/dist/Plugin.d.ts.map +1 -1
  27. package/dist/Plugin.js +5 -9
  28. package/dist/Plugin.js.map +1 -1
  29. package/dist/Queue.d.ts +69 -3
  30. package/dist/Queue.d.ts.map +1 -1
  31. package/dist/Queue.js +123 -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 +233 -27
  36. package/dist/Resolver.js.map +1 -1
  37. package/dist/Rest.d.ts +25 -3
  38. package/dist/Rest.d.ts.map +1 -1
  39. package/dist/Rest.js +165 -23
  40. package/dist/Rest.js.map +1 -1
  41. package/dist/TrackCache.d.ts +28 -8
  42. package/dist/TrackCache.d.ts.map +1 -1
  43. package/dist/TrackCache.js +111 -24
  44. package/dist/TrackCache.js.map +1 -1
  45. package/dist/WsQueue.d.ts +30 -9
  46. package/dist/WsQueue.d.ts.map +1 -1
  47. package/dist/WsQueue.js +66 -24
  48. package/dist/WsQueue.js.map +1 -1
  49. package/dist/Yukimu.d.ts +37 -13
  50. package/dist/Yukimu.d.ts.map +1 -1
  51. package/dist/Yukimu.js +146 -59
  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 +21 -19
  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 +13 -17
  62. package/dist/connector/Eris.d.ts.map +1 -1
  63. package/dist/connector/Eris.js +36 -4
  64. package/dist/connector/Eris.js.map +1 -1
  65. package/dist/connector/Oceanic.d.ts +13 -14
  66. package/dist/connector/Oceanic.d.ts.map +1 -1
  67. package/dist/connector/Oceanic.js +35 -2
  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 -9
  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 -21
  76. package/dist/index.js.map +1 -1
  77. package/dist/plugins/AutoResume.d.ts +18 -14
  78. package/dist/plugins/AutoResume.d.ts.map +1 -1
  79. package/dist/plugins/AutoResume.js +101 -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 +196 -78
  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 -131
  116. package/src/Constants.ts +0 -101
  117. package/src/Node.ts +0 -309
  118. package/src/Player.ts +0 -337
  119. package/src/Plugin.ts +0 -23
  120. package/src/Queue.ts +0 -91
  121. package/src/Resolver.ts +0 -79
  122. package/src/Rest.ts +0 -121
  123. package/src/TrackCache.ts +0 -69
  124. package/src/WsQueue.ts +0 -78
  125. package/src/Yukimu.ts +0 -248
  126. package/src/connector/Connector.ts +0 -13
  127. package/src/connector/DiscordJS.ts +0 -33
  128. package/src/connector/Eris.ts +0 -35
  129. package/src/connector/Oceanic.ts +0 -32
  130. package/src/errors/YukimuError.ts +0 -33
  131. package/src/index.ts +0 -46
  132. package/src/plugins/AutoResume.ts +0 -61
  133. package/src/plugins/PlayerMoved.ts +0 -26
  134. package/src/types.ts +0 -145
  135. package/tsconfig.json +0 -20
package/dist/Yukimu.js CHANGED
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ /** Yukimu v2.0.0 — Main Manager Class */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Yukimu = void 0;
4
5
  const events_1 = require("events");
@@ -7,53 +8,88 @@ const Player_1 = require("./Player");
7
8
  const Resolver_1 = require("./Resolver");
8
9
  const ConnectionPool_1 = require("./ConnectionPool");
9
10
  const TrackCache_1 = require("./TrackCache");
11
+ const Logger_1 = require("./Logger");
10
12
  const Constants_1 = require("./Constants");
11
13
  const YukimuError_1 = require("./errors/YukimuError");
14
+ /**
15
+ * Main manager class — the entry point for Yukimu.
16
+ *
17
+ * Fixes from v1:
18
+ * 1. destroy() — properly destroys all players, cleans pool, removes listeners
19
+ * 2. handleVoiceStateUpdate — null-safe for partial updates (missing session_id)
20
+ * 3. Uses logger system instead of bare console calls
21
+ * 4. Graceful shutdown with timeout
22
+ * 5. isReady getter
23
+ * 6. Aggregated node stats
24
+ */
12
25
  class Yukimu extends events_1.EventEmitter {
26
+ options;
27
+ nodes = new Map();
28
+ players = new Map();
29
+ connector;
30
+ resolver;
31
+ pool;
32
+ trackCache;
33
+ logger;
34
+ plugins = new Map();
35
+ nodeResolver;
13
36
  constructor(options, connector, nodes, plugins = []) {
14
37
  super();
15
- this.nodes = new Map();
16
- this.players = new Map();
17
- this.plugins = new Map();
18
38
  this.options = {
19
39
  moveOnDisconnect: true,
20
- voiceConnectionTimeout: 15000,
40
+ voiceConnectionTimeout: Constants_1.DEFAULTS.VOICE_CONNECTION_TIMEOUT,
21
41
  ...options,
22
42
  };
43
+ // Initialize logger
44
+ this.logger = new Logger_1.Logger(options.logLevel ?? "info", options.logger);
45
+ // Initialize subsystems
23
46
  this.connector = connector.set(this);
24
47
  this.resolver = new Resolver_1.Resolver(this);
25
48
  this.pool = new ConnectionPool_1.ConnectionPool(this);
26
- this.trackCache = new TrackCache_1.TrackCache();
49
+ this.trackCache = new TrackCache_1.TrackCache(options.cacheTTL ?? Constants_1.DEFAULTS.CACHE_TTL, options.maxCacheSize ?? Constants_1.DEFAULTS.MAX_CACHE_SIZE);
50
+ // Load plugins
27
51
  for (const plugin of plugins)
28
52
  this.use(plugin);
53
+ // Start listening for voice events
29
54
  this.connector.listen();
55
+ // Connect to all nodes
30
56
  for (const node of nodes)
31
57
  this.addNode(node);
58
+ this.logger.info(`Yukimu v2.0.0 initialized with ${nodes.length} node(s) and ${plugins.length} plugin(s)`);
32
59
  }
33
- // ─── Plugin System ────────────────────────────────────────────────
60
+ // ─── State ──────────────────────────────────────────────────────────────
61
+ /** Whether at least one node is connected and ready */
62
+ get isReady() {
63
+ return [...this.nodes.values()].some((n) => n.connected);
64
+ }
65
+ // ─── Plugin System ────────────────────────────────────────────────────
34
66
  use(plugin) {
35
- if (this.plugins.has(plugin.name))
36
- throw new YukimuError_1.YukimuError(`Plugin "${plugin.name}" already loaded`);
67
+ if (this.plugins.has(plugin.name)) {
68
+ throw new YukimuError_1.YukimuError(`Plugin "${plugin.name}" already loaded`, YukimuError_1.ErrorCode.PLUGIN_ALREADY_LOADED);
69
+ }
37
70
  plugin.load(this);
38
71
  this.plugins.set(plugin.name, plugin);
39
- console.log(`[Yukimu] 🧩 Plugin "${plugin.name}" loaded`);
72
+ this.logger.info(`Plugin "${plugin.name}" loaded`);
40
73
  return this;
41
74
  }
42
75
  unuse(name) {
43
76
  const plugin = this.plugins.get(name);
44
- if (!plugin)
45
- throw new YukimuError_1.YukimuError(`Plugin "${name}" not found`);
77
+ if (!plugin) {
78
+ throw new YukimuError_1.YukimuError(`Plugin "${name}" not found`, YukimuError_1.ErrorCode.PLUGIN_NOT_FOUND);
79
+ }
46
80
  plugin.unload?.(this);
47
81
  this.plugins.delete(name);
82
+ this.logger.info(`Plugin "${name}" unloaded`);
48
83
  return this;
49
84
  }
50
85
  getPlugin(name) {
51
86
  return this.plugins.get(name);
52
87
  }
53
- // ─── Node Management ──────────────────────────────────────────────
88
+ // ─── Node Management ──────────────────────────────────────────────────
54
89
  addNode(options) {
55
- if (this.nodes.has(options.name))
56
- throw new YukimuError_1.YukimuError(`Node "${options.name}" already exists`);
90
+ if (this.nodes.has(options.name)) {
91
+ throw new YukimuError_1.YukimuError(`Node "${options.name}" already exists`, YukimuError_1.ErrorCode.NODE_ALREADY_EXISTS);
92
+ }
57
93
  const node = new Node_1.Node(this, options);
58
94
  this.nodes.set(options.name, node);
59
95
  node.connect();
@@ -61,32 +97,37 @@ class Yukimu extends events_1.EventEmitter {
61
97
  }
62
98
  removeNode(name) {
63
99
  const node = this.nodes.get(name);
64
- if (!node)
65
- throw new YukimuError_1.YukimuError(`Node "${name}" not found`);
100
+ if (!node) {
101
+ throw new YukimuError_1.YukimuError(`Node "${name}" not found`, YukimuError_1.ErrorCode.NODE_NOT_FOUND);
102
+ }
66
103
  node.destroy();
67
104
  this.nodes.delete(name);
105
+ this.logger.info(`Node "${name}" removed`);
68
106
  }
69
107
  getNode(name) {
70
108
  if (name) {
71
109
  const node = this.nodes.get(name);
72
110
  if (!node)
73
- throw new YukimuError_1.YukimuError(`Node "${name}" not found`);
111
+ throw new YukimuError_1.YukimuError(`Node "${name}" not found`, YukimuError_1.ErrorCode.NODE_NOT_FOUND);
74
112
  return node;
75
113
  }
76
114
  return this.getBestNode();
77
115
  }
78
116
  getBestNode() {
79
- const connected = [...this.nodes.values()].filter(n => n.connected);
80
- if (!connected.length)
81
- throw new YukimuError_1.YukimuError("No connected Lavalink nodes available");
117
+ const connected = [...this.nodes.values()].filter((n) => n.connected);
118
+ if (!connected.length) {
119
+ throw new YukimuError_1.YukimuError("No connected Lavalink nodes available", YukimuError_1.ErrorCode.NODE_DISCONNECTED);
120
+ }
121
+ // Try custom resolver first
82
122
  if (this.nodeResolver) {
83
123
  const resolved = this.nodeResolver(this.nodes);
84
124
  if (resolved?.connected)
85
125
  return resolved;
86
126
  }
127
+ // Sort by penalties (lowest = best)
87
128
  return connected.sort((a, b) => a.calculatePenalties() - b.calculatePenalties())[0];
88
129
  }
89
- // ─── Player Management ────────────────────────────────────────────
130
+ // ─── Player Management ────────────────────────────────────────────────
90
131
  createPlayer(options) {
91
132
  const existing = this.players.get(options.guildId);
92
133
  if (existing)
@@ -110,59 +151,73 @@ class Yukimu extends events_1.EventEmitter {
110
151
  this.pool.remove(guildId);
111
152
  this.emit("playerDestroy", player);
112
153
  }
113
- // ─── Search ───────────────────────────────────────────────────────
154
+ // ─── Search ───────────────────────────────────────────────────────────
114
155
  async search(query, options) {
115
- return this.resolver.resolve(query, options?.source ?? this.options.defaultSource ?? "youtube", options?.requester);
156
+ return this.resolver.resolve(query, options?.source ?? this.options.defaultSource ?? "youtube", options?.requester, options?.node);
116
157
  }
117
- // ─── Voice Gateway ────────────────────────────────────────────────
158
+ // ─── Voice Gateway ────────────────────────────────────────────────────
118
159
  handleVoiceStateUpdate(data) {
119
- if (data.user_id !== this.options.clientId)
160
+ const userId = data["user_id"];
161
+ const guildId = data["guild_id"];
162
+ if (userId !== this.options.clientId)
120
163
  return;
121
- if (!data.guild_id)
164
+ if (!guildId)
122
165
  return;
123
- const player = this.players.get(data.guild_id);
124
- if (!data.channel_id) {
125
- this.pool.remove(data.guild_id);
166
+ const player = this.players.get(guildId);
167
+ const channelId = data["channel_id"];
168
+ // Bot left the voice channel
169
+ if (!channelId) {
170
+ this.pool.remove(guildId);
126
171
  if (player && this.options.moveOnDisconnect) {
127
- this.destroyPlayer(data.guild_id).catch(() => { });
172
+ this.destroyPlayer(guildId).catch(() => { });
128
173
  }
129
174
  return;
130
175
  }
131
- this.pool.updateSession(data.guild_id, data.session_id, data.channel_id);
176
+ // Update session — null-safe for partial updates
177
+ const sessionId = data["session_id"];
178
+ this.pool.updateSession(guildId, sessionId, channelId);
132
179
  if (player) {
133
180
  const oldChannel = player.voiceChannelId;
134
- player.voiceChannelId = data.channel_id;
135
- player.sessionId = data.session_id;
136
- if (oldChannel && oldChannel !== data.channel_id) {
137
- this.emit("playerMove", player, oldChannel, data.channel_id);
181
+ player.voiceChannelId = channelId;
182
+ if (sessionId)
183
+ player.sessionId = sessionId;
184
+ // Detect channel move
185
+ if (oldChannel && oldChannel !== channelId) {
186
+ this.emit("playerMove", player, oldChannel, channelId);
138
187
  }
139
- if (this.pool.isReady(data.guild_id)) {
140
- const vs = this.pool.getVoiceState(data.guild_id);
141
- player.voiceToken = vs.token;
142
- player.voiceEndpoint = vs.endpoint;
143
- player.checkVoiceReady();
144
- this.pool.markConnected(data.guild_id);
188
+ // Check if voice connection is fully ready
189
+ if (this.pool.isReady(guildId)) {
190
+ const vs = this.pool.getVoiceState(guildId);
191
+ if (vs) {
192
+ player.voiceToken = vs.token;
193
+ player.voiceEndpoint = vs.endpoint;
194
+ player.checkVoiceReady();
195
+ this.pool.markConnected(guildId);
196
+ }
145
197
  }
146
198
  }
147
199
  }
148
200
  handleVoiceServerUpdate(data) {
149
- if (!data.endpoint)
201
+ const endpoint = data["endpoint"];
202
+ const guildId = data["guild_id"];
203
+ const token = data["token"];
204
+ if (!endpoint || !guildId || !token)
150
205
  return;
151
- this.pool.updateServer(data.guild_id, data.token, data.endpoint);
152
- const player = this.players.get(data.guild_id);
206
+ this.pool.updateServer(guildId, token, endpoint);
207
+ const player = this.players.get(guildId);
153
208
  if (!player)
154
209
  return;
155
- player.voiceToken = data.token;
156
- player.voiceEndpoint = data.endpoint;
157
- if (this.pool.isReady(data.guild_id)) {
210
+ player.voiceToken = token;
211
+ player.voiceEndpoint = endpoint;
212
+ if (this.pool.isReady(guildId)) {
158
213
  player.checkVoiceReady();
159
- this.pool.markConnected(data.guild_id);
214
+ this.pool.markConnected(guildId);
160
215
  }
161
216
  }
162
- // ─── Utility ─────────────────────────────────────────────────────
217
+ // ─── Utility ─────────────────────────────────────────────────────────
163
218
  detectSource(url) {
164
219
  for (const [source, patterns] of Object.entries(Constants_1.URL_PATTERNS)) {
165
- if (patterns.some(p => p.test(url)))
220
+ if (patterns.some((p) => p.test(url)))
166
221
  return source;
167
222
  }
168
223
  return null;
@@ -171,21 +226,53 @@ class Yukimu extends events_1.EventEmitter {
171
226
  const nodes = [...this.nodes.values()];
172
227
  return {
173
228
  nodes: nodes.length,
174
- connectedNodes: nodes.filter(n => n.connected).length,
229
+ connectedNodes: nodes.filter((n) => n.connected).length,
175
230
  players: this.players.size,
176
- playingPlayers: [...this.players.values()].filter(p => p.playing).length,
177
- cachedTracks: this.trackCache.size,
231
+ playingPlayers: [...this.players.values()].filter((p) => p.playing).length,
232
+ cache: this.trackCache.stats,
178
233
  };
179
234
  }
180
- destroy() {
181
- for (const node of this.nodes.values())
235
+ /**
236
+ * Gracefully destroy the manager and all its resources.
237
+ * Unlike v1, this properly:
238
+ * - Destroys all players (leave voice, clean up on Lavalink)
239
+ * - Destroys all nodes (close WebSockets, clear timers)
240
+ * - Cleans up the connection pool
241
+ * - Clears the track cache
242
+ * - Unloads all plugins
243
+ * - Removes all event listeners
244
+ */
245
+ async destroy() {
246
+ this.logger.info("Destroying Yukimu instance...");
247
+ // Destroy all players first
248
+ const destroyPromises = [];
249
+ for (const guildId of this.players.keys()) {
250
+ destroyPromises.push(this.destroyPlayer(guildId).catch(() => { }));
251
+ }
252
+ await Promise.allSettled(destroyPromises);
253
+ // Unload all plugins
254
+ for (const [name, plugin] of this.plugins) {
255
+ try {
256
+ plugin.unload?.(this);
257
+ }
258
+ catch (err) {
259
+ this.logger.warn(`Error unloading plugin "${name}": ${err}`);
260
+ }
261
+ }
262
+ this.plugins.clear();
263
+ // Destroy all nodes
264
+ for (const node of this.nodes.values()) {
182
265
  node.destroy();
183
- for (const guildId of this.players.keys())
184
- this.destroyPlayer(guildId).catch(() => { });
185
- this.trackCache.destroy();
266
+ }
186
267
  this.nodes.clear();
268
+ // Clean up pool and cache
269
+ this.pool.destroy();
270
+ this.trackCache.destroy();
271
+ // Remove all event listeners
272
+ this.removeAllListeners();
273
+ this.logger.info("Yukimu destroyed");
187
274
  }
188
- // ─── Typed EventEmitter ───────────────────────────────────────────
275
+ // ─── Typed EventEmitter ───────────────────────────────────────────────
189
276
  on(event, listener) {
190
277
  return super.on(event, listener);
191
278
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Yukimu.js","sourceRoot":"","sources":["../src/Yukimu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Yukimu.js","sourceRoot":"","sources":["../src/Yukimu.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,34 @@
1
+ /** Yukimu v2.0.0 — Base Connector */
1
2
  import type { Yukimu } from "../Yukimu";
3
+ import type { BoostTier } from "../types";
4
+ /**
5
+ * Abstract base class for Discord library connectors.
6
+ *
7
+ * Connectors bridge Yukimu to a specific Discord library (discord.js, Eris, Oceanic)
8
+ * by forwarding voice gateway events and sending voice payloads.
9
+ *
10
+ * v2 additions:
11
+ * - getGuildBoostTier(): Get the boost level for bitrate optimization
12
+ * - getChannelBitrate(): Get the current voice channel bitrate
13
+ */
2
14
  export declare abstract class Connector {
3
15
  protected manager: Yukimu;
4
16
  set(manager: Yukimu): this;
17
+ /** Start listening for voice gateway events (VOICE_STATE_UPDATE, VOICE_SERVER_UPDATE) */
5
18
  abstract listen(): void;
19
+ /** Send a voice gateway payload to Discord */
6
20
  abstract sendPayload(guildId: string, payload: unknown): void;
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: string): BoostTier;
27
+ /**
28
+ * Get the current bitrate of a voice channel in kbps.
29
+ * Override in subclass for accurate bitrate information.
30
+ * @returns Bitrate in kbps, or null if unavailable
31
+ */
32
+ getChannelBitrate(_guildId: string, _channelId: string): number | null;
7
33
  }
8
34
  //# sourceMappingURL=Connector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Connector.d.ts","sourceRoot":"","sources":["../../src/connector/Connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,8BAAsB,SAAS;IAC7B,SAAS,CAAC,OAAO,EAAG,MAAM,CAAC;IAEpB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;aAKjB,MAAM,IAAI,IAAI;aACd,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CACrE"}
1
+ {"version":3,"file":"Connector.d.ts","sourceRoot":"","sources":["../../src/connector/Connector.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;;;;GASG;AACH,8BAAsB,SAAS;IAC7B,SAAS,CAAC,OAAO,EAAG,MAAM,CAAC;IAEpB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKjC,yFAAyF;aACzE,MAAM,IAAI,IAAI;IAE9B,8CAA8C;aAC9B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAEpE;;;;OAIG;IACI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS;IAIrD;;;;OAIG;IACI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAG9E"}
@@ -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,25 +1,27 @@
1
+ /** Yukimu v2.0.0 — Discord.js Connector */
1
2
  import { Connector } from "./Connector";
2
- interface DiscordJSClient {
3
- user: {
4
- id: string;
5
- } | null;
6
- guilds: {
7
- cache: Map<string, {
8
- shard: {
9
- send(payload: unknown): void;
10
- };
11
- }>;
12
- };
13
- on(event: "raw", listener: (packet: {
14
- t: string;
15
- d: unknown;
16
- }) => void): this;
17
- }
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
+ */
18
12
  export declare class DiscordJS extends Connector {
19
- private client;
20
- constructor(client: DiscordJSClient);
13
+ private readonly client;
14
+ constructor(client: any);
21
15
  listen(): void;
22
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;
23
26
  }
24
- export {};
25
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;AAGxC,UAAU,eAAe;IACvB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE;gBAAE,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;aAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAC5E,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CAC/E;AAED,qBAAa,SAAU,SAAQ,SAAS;IACtC,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,eAAe;IAK5B,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;AASxC,MAAa,SAAU,SAAQ,qBAAS;IAGtC,YAAY,MAAuB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAiC,EAAE,EAAE;YAC1D,IAAI,MAAM,CAAC,CAAC,KAAK,oBAAoB,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAoD,CAAC,CAAC;YACnG,CAAC;YACD,IAAI,MAAM,CAAC,CAAC,KAAK,qBAAqB,EAAE,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAqD,CAAC,CAAC;YACrG,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,23 +1,19 @@
1
+ /** Yukimu v2.0.0 — Eris Connector */
1
2
  import { Connector } from "./Connector";
2
- interface ErisClient {
3
- guilds: Map<string, {
4
- shard: {
5
- id: number;
6
- };
7
- }>;
8
- shards: Map<number, {
9
- sendWS(op: number, data: unknown): void;
10
- }>;
11
- on(event: "rawWS", listener: (packet: {
12
- t: string;
13
- d: unknown;
14
- }) => void): this;
15
- }
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
+ */
16
11
  export declare class Eris extends Connector {
17
- private client;
18
- constructor(client: ErisClient);
12
+ private readonly client;
13
+ constructor(client: any);
19
14
  listen(): void;
20
15
  sendPayload(guildId: string, payload: unknown): void;
16
+ getGuildBoostTier(guildId: string): BoostTier;
17
+ getChannelBitrate(_guildId: string, channelId: string): number | null;
21
18
  }
22
- export {};
23
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;AAGxC,UAAU,UAAU;IAClB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACjE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CACjF;AAED,qBAAa,IAAK,SAAQ,SAAS;IACjC,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU;IAKvB,MAAM,IAAI,IAAI;IAWd,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"}