kazagumo-bun 3.4.0-e β†’ 3.4.2

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.
package/README.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # Kazagumo-Bun
2
2
 
3
- [![Sponsor](https://img.shields.io/github/sponsors/LuigiColantuono?style=social)](https://github.com/sponsors/LuigiColantuono)
4
- [![PayPal](https://img.shields.io/badge/πŸ’–-Support-ff69b4)](https://paypal.me/l0g4n7)
5
- [![npm](https://img.shields.io/npm/v/kazagumo-bun?style=flat-square)](https://www.npmjs.com/package/kazagumo-bun)
6
- ![Github Stars](https://img.shields.io/github/stars/LuigiColantuono/Kazagumo-Bun?style=flat-square)
3
+ <p align="center"><a href="https://github.com/sponsors/LuigiColantuono"><img src="https://img.shields.io/github/sponsors/LuigiColantuono?style=social"></a> <a href="https://paypal.me/l0g4n7"><img src="https://img.shields.io/badge/πŸ’–-Support-ff69b4"></a> <img src="https://img.shields.io/npm/v/kazagumo-bun"> <img src="https://img.shields.io/npm/dm/kazagumo-bun?label=downloads"> <img src="https://img.shields.io/npm/l/kazagumo-bun"> <img src="https://img.shields.io/github/repo-size/LuigiColantuono/Kazagumo-Bun"> <a href="https://github.com/LuigiColantuono/Kazagumo-Bun"><img src="https://img.shields.io/badge/Bun-Networking-black?logo=bun"></a></p>
7
4
 
8
5
  #### A [Shoukaku-Bun](https://github.com/LuigiColantuono/Shoukaku-Bun) wrapper with built in queue system
9
6
 
10
- ![Kazagumo](https://i.imgur.com/jfVSvHj.png)
7
+ <p align="center">
8
+ <img width="" height="450" alt="Kazagumo Β© Azur Lane" src="https://i.imgur.com/jfVSvHj.png" />
9
+ <p>
10
+
11
11
  > Kazagumo Β© Azur Lane
12
12
 
13
13
  ## Features:
@@ -16,255 +16,53 @@
16
16
  βœ“ Easy to use
17
17
  βœ“ Plugin system
18
18
  βœ“ Uses shoukaku v4 + capable of Lavalink v4
19
- βœ“ Stable _πŸ™_
19
+ βœ“ Stable & Updated: Based on the rock-solid Shoukaku v4.2.0 logic.
20
+ βœ“ Bun-Native
21
+ βœ“ High-Performance
20
22
 
21
- ## Note
22
- ⚠️Please check [Environment](#environment) that Kazagumo 3.2.0 is verified working on. It's recommended to use the latest version of lavalink. If you encounter any problem, try using previous [version](https://www.npmjs.com/package/kazagumo/v/3.1.2). If issue still persist, please [open an issue](https://github.com/Takiyo0/Kazagumo/issues) or ask me in [Discord](https://discord.gg/nPPW2Gzqg2) (I will answer if I have time) ⚠️
23
+ ## πŸ“¦ Bundle Size Comparison
23
24
 
24
- ## Documentation
25
- Please read the docs first before asking methods
26
- > Kazagumo; https://takiyo0.github.io/Kazagumo
27
- > [Shoukaku](https://github.com/Deivu/Shoukaku) by [Deivu](https://github.com/Deivu); https://deivu.github.io/Shoukaku
28
-
29
- ## Installation
30
-
31
- ```bash
32
- bun add kazagumo-bun
33
- ```
34
-
35
- ## Environment
36
- The new lavalink system that separate YouTube plugins made configuration a bit harder. I will list all working environment that's known working.
37
-
38
- | Environment | Case 1 | Case 2 | Case 3 |
39
- |----------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------|
40
- | Lavalink Version | v4.0.7 | v4.0.7 | v4.0.7 |
41
- | Youtube Plugin Version | v1.7.2 | v1.7.2 | none |
42
- | [LavaSrc](https://google.com) Plugin Version | v4.1.1 | v4.1.1 | v4.1.1 |
43
- | Kazagumo Version | v3.2.0 | v3.2.0 | v3.2.0 |
44
- | Shoukaku Version | v4.1.0 (built-in v3.2.0) | v4.1.0 (built-in v3.2.0) | v4.1.0 (built-in v3.2.0) |
45
- | Youtube Plugin Config | youtube.oauth.enabled = true<br>youtube.oauth.accessToken = "filled"<br>youtube.oauth.clients = MUSIC,ANDROID_TESTSUITE,WEB | youtube.oauth.enabled = true<br>youtube.oauth.accessToken = "filled"<br>youtube.oauth.clients = MUSIC,ANDROID_TESTSUITE,WEB,TVHTML5EMBEDDED | none |
46
- | Lavalink Config | server.sources.youtube = false<br>server.sources.youtubeSearchEnabled = false | server.sources.youtube = false<br>server.sources.youtubeSearchEnabled = false | server.sources.youtube = true<br>server.sources.youtubeSearchEnabled = true |
47
- | LavaSrc Config | lavasrc.sources.youtube = true | lavasrc.sources.youtube = true | lavasrc.sources.youtube = true |
48
- | **Result** | | | |
49
- | YouTube Playlist Load* | βœ… | ❌ | βœ… |
50
- | YouTube Track Load | βœ… | βœ… | ❌ |
51
- | YouTube Search | βœ… | βœ… | βœ… |
52
- | LavaSrc Spotify Playlist Load | βœ… | βœ… | βœ… |
53
- | LavaSrc Spotify Track Load | βœ… | βœ… | βœ… |
54
- | LavaSrc Spotify Search (spsearch:query)** | βœ… | βœ… | βœ… |
55
- | **Summary** | βœ… works just fine | βž– cannot load youtube playlist | ❌ cannot play any track youtube related. including spotify |
56
-
57
- Note:
58
- - `*` = youtube playlist load with YouTube plugin requires oauth enabled and accessToken filled and `TVHTML5EMBEDDED` to be removed from oauth clients, since it's the default config
59
- - `**` = to do that, you need to add `source` option into `SearchOptions`. Example: `kazagumo.search(query, {source: "spsearch:"});` (⚠️you need to include `:` in the last of `spsearch` or anything to replace source)
25
+ | Package | Size | Dependencies | Total Install |
26
+ |---------|------|--------------|---------------|
27
+ | Kazagumo | 85 kB | **WS** | **~751 kB** |
28
+ | Kazagumo-Bun | 67.3 kB | **NONE** | **~140 kB** |
60
29
 
61
- ## Plugins
62
- - Official [spotify plugin](https://npmjs.com/package/kazagumo-spotify)
63
- > npm i kazagumo-spotify
64
- - Additional [apple plugin](https://www.npmjs.com/package/kazagumo-apple)
65
- > npm i kazagumo-apple
66
- - Additional [filter plugin](https://www.npmjs.com/package/kazagumo-filter)
67
- > npm i kazagumo-filter
68
- - Additional [nicovideo.jp plugin](https://www.npmjs.com/package/kazagumo-nico)
69
- > npm i kazagumo-nico
70
- - Additional [deezer plugin](https://www.npmjs.com/package/kazagumo-deezer)
71
- > npm i kazagumo-deezer
72
- - Stone-Deezer [deezer plugin](https://www.npmjs.com/package/stone-deezer)
73
- > npm i stone-deezer
30
+ **~81% smaller install size!**
74
31
 
75
- ## Lavalink installation
76
- > Basically you can follow this [Official Step](https://lavalink.dev/getting-started/index.html)
32
+ ## 🎡 The Story
77
33
 
34
+ Built out of frustration with constant WebSocket upgrade warnings that were
35
+ making my Discord music bot laggy. After migrating to Bun, I realized the
36
+ entire Shoukaku stack could be rewritten to be faster and lighter.
78
37
 
79
- ## Changes v2 -> v3
80
- ```javascript
81
- // You can get ShoukakuPlayer from here
82
- + <KazagumoPlayer>.shoukaku
83
- + this.player.players.get("69696969696969").shoukaku
38
+ **Result?** Zero warnings. Noticeably faster. Way more fun to work with.
84
39
 
85
- // Search tracks
86
- - this.player.getNode().rest.resolve("ytsearch:pretender Officialι«­η”·dism") // Shoukaku
87
- + this.player.search("pretender Officialι«­η”·dism") // Kazagumo
88
-
89
- // Create a player
90
- - this.player.getNode().joinChannel(...) // Shoukaku
91
- + this.player.createPlayer(...) // Kazagumo
92
-
93
- // Add a track to the queue. MUST BE A kazagumoTrack, you can get from <KazagumoPlayer>.search()
94
- + this.player.players.get("69696969696969").queue.add(kazagumoTrack) // Kazagumo
40
+ If this solved your problems too, [consider supporting the project](https://paypal.me/l0g4n7)!
41
+ Even a coffee helps keep the motivation high! β˜•
95
42
 
96
- // Play a track
97
- - this.player.players.get("69696969696969").playTrack(shoukakuTrack) // Shoukaku
98
- + this.player.players.get("69696969696969").play() // Kazagumo, take the first song on queue
99
- + this.player.players.get("69696969696969").play(kazagumoTrack) // Kazagumo, will unshift current song and forceplay this song
100
-
101
- // Play previous song
102
- + this.player.players.get("69696969696969").play(this.player.players.get("69696969696969").getPrevious()) // Kazagumo, make sure it's not undefined first
43
+ ## Installation
103
44
 
104
- // Pauses or resumes the player. Control from kazagumoPlayer instead of shoukakuPlayer
105
- - this.player.players.get("69696969696969").setPaused(true) // Shoukaku
106
- + this.player.players.get("69696969696969").pause(true) // Kazagumo
107
-
108
- // Set filters. Access shoukakuPlayer from <KazagumoPlayer>.player
109
- - this.player.players.get("69696969696969").setFilters({lowPass: {smoothing: 2}}) // Shoukaku
110
- + this.player.players.get("69696969696969").shoukaku.setFilters({lowPass: {smoothing: 2}}) // Kazagumo
45
+ ```bash
46
+ bun add kazagumo-bun
47
+ ```
111
48
 
112
- // Set volume, use Kazagumo's for smoother volume
113
- - this.player.players.get("69696969696969").setVolume(1) // Shoukaku 100% volume
114
- + this.player.players.get("69696969696969").setVolume(100) // Kazagumo 100% volume
49
+ ## [Official Kazagumo Documentation](https://github.com/Takiyo0/Kazagumo)
50
+ Please read the docs first before asking methods
51
+ > Kazagumo; https://takiyo0.github.io/Kazagumo
52
+ > [Shoukaku](https://github.com/Deivu/Shoukaku) by [Deivu](https://github.com/Deivu); https://deivu.github.io/Shoukaku
115
53
 
116
- // Skip the current song
117
- - this.player.players.get("69696969696969").stopTrack() // Stoptrack basically skip on shoukaku
118
- + this.player.players.get("69696969696969").skip() // skip on kazagumo. easier to find :v
119
- ```
54
+ ## Performance
55
+ <img width="380" height="" alt="B R U C I U S 🎡" src="https://i.imgur.com/zZsPzm6.png" />
120
56
 
121
57
  ## Support
122
- ⚠️ Please read the docs first before asking question ⚠️
123
58
  > Kazagumo support server: https://discord.gg/nPPW2Gzqg2 (anywhere lmao)
124
- > Shoukaku support server: https://discord.gg/FVqbtGu (#development)
125
- >
59
+ > Shoukaku support server: https://discord.gg/FVqbtGu (#development)
126
60
  > Brucius support server: https://discord.gg/XqJw52d35R
127
- >
128
- > Report if you found a bug here https://github.com/Takiyo0/Kazagumo/issues/new/choose
129
-
130
- ## Enable playerMoved event
131
- ```javascript
132
- import { Kazagumo, Payload, Plugins } from "kazagumo";
133
-
134
- const kazagumo = new Kazagumo({
135
- ...,
136
- plugins: [new Plugins.PlayerMoved(client)]
137
- }, Connector, Nodes, ShoukakuOptions)
138
- ```
139
-
140
- ## Example bot
141
- ```javascript
142
- const {Client, GatewayIntentBits} = require('discord.js');
143
- const {Guilds, GuildVoiceStates, GuildMessages, MessageContent} = GatewayIntentBits;
144
- const {Connectors} = require("shoukaku");
145
- const {Kazagumo, KazagumoTrack} = require("../dist");
146
61
 
147
- const Nodes = [{
148
- name: 'owo',
149
- url: 'localhost:2333',
150
- auth: 'youshallnotpass',
151
- secure: false
152
- }];
153
- const client = new Client({intents: [Guilds, GuildVoiceStates, GuildMessages, MessageContent]});
154
- const kazagumo = new Kazagumo({
155
- defaultSearchEngine: "youtube",
156
- // MAKE SURE YOU HAVE THIS
157
- send: (guildId, payload) => {
158
- const guild = client.guilds.cache.get(guildId);
159
- if (guild) guild.shard.send(payload);
160
- }
161
- }, new Connectors.DiscordJS(client), Nodes);
162
-
163
- client.on("ready", () => console.log(client.user.tag + " Ready!"));
164
-
165
- kazagumo.shoukaku.on('ready', (name) => console.log(`Lavalink ${name}: Ready!`));
166
- kazagumo.shoukaku.on('error', (name, error) => console.error(`Lavalink ${name}: Error Caught,`, error));
167
- kazagumo.shoukaku.on('close', (name, code, reason) => console.warn(`Lavalink ${name}: Closed, Code ${code}, Reason ${reason || 'No reason'}`));
168
- kazagumo.shoukaku.on('debug', (name, info) => console.debug(`Lavalink ${name}: Debug,`, info));
169
- kazagumo.shoukaku.on('disconnect', (name, count) => {
170
- const players = [...kazagumo.shoukaku.players.values()].filter(p => p.node.name === name);
171
- players.map(player => {
172
- kazagumo.destroyPlayer(player.guildId);
173
- player.destroy();
174
- });
175
- console.warn(`Lavalink ${name}: Disconnected`);
176
- });
177
-
178
- kazagumo.on("playerStart", (player, track) => {
179
- client.channels.cache.get(player.textId)?.send({content: `Now playing **${track.title}** by **${track.author}**`})
180
- .then(x => player.data.set("message", x));
181
- });
182
-
183
- kazagumo.on("playerEnd", (player) => {
184
- player.data.get("message")?.edit({content: `Finished playing`});
185
- });
186
-
187
- kazagumo.on("playerEmpty", player => {
188
- client.channels.cache.get(player.textId)?.send({content: `Destroyed player due to inactivity.`})
189
- .then(x => player.data.set("message", x));
190
- player.destroy();
191
- });
192
-
193
- client.on("messageCreate", async msg => {
194
- if (msg.author.bot) return;
195
-
196
- if (msg.content.startsWith("!play")) {
197
- const args = msg.content.split(" ");
198
- const query = args.slice(1).join(" ");
199
-
200
- const {channel} = msg.member.voice;
201
- if (!channel) return msg.reply("You need to be in a voice channel to use this command!");
202
-
203
- let player = await kazagumo.createPlayer({
204
- guildId: msg.guild.id,
205
- textId: msg.channel.id,
206
- voiceId: channel.id,
207
- volume: 40
208
- })
209
-
210
- let result = await kazagumo.search(query, {requester: msg.author});
211
- if (!result.tracks.length) return msg.reply("No results found!");
212
-
213
- if (result.type === "PLAYLIST") player.queue.add(result.tracks); // do this instead of using for loop if you want queueUpdate not spammy
214
- else player.queue.add(result.tracks[0]);
215
-
216
- if (!player.playing && !player.paused) player.play();
217
- return msg.reply({content: result.type === "PLAYLIST" ? `Queued ${result.tracks.length} from ${result.playlistName}` : `Queued ${result.tracks[0].title}`});
218
- }
219
-
220
- if (msg.content.startsWith("!skip")) {
221
- let player = kazagumo.players.get(msg.guild.id);
222
- if (!player) return msg.reply("No player found!");
223
- player.skip();
224
- log(msg.guild.id);
225
- return msg.reply({content: `Skipped to **${player.queue[0]?.title}** by **${player.queue[0]?.author}**`});
226
- }
227
-
228
- if (msg.content.startsWith("!forceplay")) {
229
- let player = kazagumo.players.get(msg.guild.id);
230
- if (!player) return msg.reply("No player found!");
231
- const args = msg.content.split(" ");
232
- const query = args.slice(1).join(" ");
233
- let result = await kazagumo.search(query, {requester: msg.author});
234
- if (!result.tracks.length) return msg.reply("No results found!");
235
- player.play(new KazagumoTrack(result.tracks[0].getRaw(), msg.author));
236
- return msg.reply({content: `Forced playing **${result.tracks[0].title}** by **${result.tracks[0].author}**`});
237
- }
238
-
239
- if (msg.content.startsWith("!previous")) {
240
- let player = kazagumo.players.get(msg.guild.id);
241
- if (!player) return msg.reply("No player found!");
242
- const previous = player.getPrevious(); // we get the previous track without removing it first
243
- if (!previous) return msg.reply("No previous track found!");
244
- await player.play(player.getPrevious(true)); // now we remove the previous track and play it
245
- return msg.reply("Previous!");
246
- }
247
- })
248
-
249
-
250
- client.login('');
251
- ```
252
-
253
- ## Known issue
254
- ###### This part should be in kazagumo-spotify but whatever
255
- - Force playing song from spotify module (player.play(result.tracks[0]); `result.tracks[0]` is from spotify) is currently not working. **ONLY WHEN YOU DO player.play(thing), NOT player.play() OR player.queue.add(new KazagumoTrack(...))** Please use this workaround
256
- ```js
257
- const { KazagumoTrack } = require("kazagumo"); // CommonJS
258
- import { KazagumoTrack } from "kazagumo"; // ES6; don't laugh if it's wrong
259
-
260
- let track = result.tracks[0] // the spotify track
261
- let convertedTrack = new KazagumoTrack(track.getRaw()._raw, track.author);
262
- player.play(convertedTrack);
263
- ```
264
62
 
265
63
  ## Contributors
266
64
  > - Deivu as the owner of Shoukaku
267
65
  > &nbsp;&nbsp;&nbsp;&nbsp; Github: https://github.com/Deivu
268
66
  > &nbsp;
269
- > - Takiyo as the owner of this project
270
- > &nbsp;&nbsp;&nbsp;&nbsp; Github: https://github.com/Takiyo0
67
+ > - Luigi Colantuono as the owner of this project
68
+ > &nbsp;&nbsp;&nbsp;&nbsp; Github: https://github.com/LuigiColantuono
package/bun.lock ADDED
@@ -0,0 +1,287 @@
1
+ {
2
+ "lockfileVersion": 1,
3
+ "configVersion": 1,
4
+ "workspaces": {
5
+ "": {
6
+ "name": "kazagumo-bun",
7
+ "dependencies": {
8
+ "shoukaku-bun": "latest",
9
+ },
10
+ "devDependencies": {
11
+ "@types/bun": "latest",
12
+ "discord.js": "^14.25.1",
13
+ "eslint": "^9.39.2",
14
+ "globals": "^17.2.0",
15
+ "typescript": "^5.9.3",
16
+ "typescript-eslint": "^8.54.0",
17
+ },
18
+ },
19
+ },
20
+ "packages": {
21
+ "@discordjs/builders": ["@discordjs/builders@1.13.1", "", { "dependencies": { "@discordjs/formatters": "^0.6.2", "@discordjs/util": "^1.2.0", "@sapphire/shapeshift": "^4.0.0", "discord-api-types": "^0.38.33", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.4", "tslib": "^2.6.3" } }, "sha512-cOU0UDHc3lp/5nKByDxkmRiNZBpdp0kx55aarbiAfakfKJHlxv/yFW1zmIqCAmwH5CRlrH9iMFKJMpvW4DPB+w=="],
22
+
23
+ "@discordjs/collection": ["@discordjs/collection@1.5.3", "", {}, "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ=="],
24
+
25
+ "@discordjs/formatters": ["@discordjs/formatters@0.6.2", "", { "dependencies": { "discord-api-types": "^0.38.33" } }, "sha512-y4UPwWhH6vChKRkGdMB4odasUbHOUwy7KL+OVwF86PvT6QVOwElx+TiI1/6kcmcEe+g5YRXJFiXSXUdabqZOvQ=="],
26
+
27
+ "@discordjs/rest": ["@discordjs/rest@2.6.0", "", { "dependencies": { "@discordjs/collection": "^2.1.1", "@discordjs/util": "^1.1.1", "@sapphire/async-queue": "^1.5.3", "@sapphire/snowflake": "^3.5.3", "@vladfrangu/async_event_emitter": "^2.4.6", "discord-api-types": "^0.38.16", "magic-bytes.js": "^1.10.0", "tslib": "^2.6.3", "undici": "6.21.3" } }, "sha512-RDYrhmpB7mTvmCKcpj+pc5k7POKszS4E2O9TYc+U+Y4iaCP+r910QdO43qmpOja8LRr1RJ0b3U+CqVsnPqzf4w=="],
28
+
29
+ "@discordjs/util": ["@discordjs/util@1.2.0", "", { "dependencies": { "discord-api-types": "^0.38.33" } }, "sha512-3LKP7F2+atl9vJFhaBjn4nOaSWahZ/yWjOvA4e5pnXkt2qyXRCHLxoBQy81GFtLGCq7K9lPm9R517M1U+/90Qg=="],
30
+
31
+ "@discordjs/ws": ["@discordjs/ws@1.2.3", "", { "dependencies": { "@discordjs/collection": "^2.1.0", "@discordjs/rest": "^2.5.1", "@discordjs/util": "^1.1.0", "@sapphire/async-queue": "^1.5.2", "@types/ws": "^8.5.10", "@vladfrangu/async_event_emitter": "^2.2.4", "discord-api-types": "^0.38.1", "tslib": "^2.6.2", "ws": "^8.17.0" } }, "sha512-wPlQDxEmlDg5IxhJPuxXr3Vy9AjYq5xCvFWGJyD7w7Np8ZGu+Mc+97LCoEc/+AYCo2IDpKioiH0/c/mj5ZR9Uw=="],
32
+
33
+ "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="],
34
+
35
+ "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="],
36
+
37
+ "@eslint/config-array": ["@eslint/config-array@0.21.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA=="],
38
+
39
+ "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="],
40
+
41
+ "@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="],
42
+
43
+ "@eslint/eslintrc": ["@eslint/eslintrc@3.3.3", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ=="],
44
+
45
+ "@eslint/js": ["@eslint/js@9.39.2", "", {}, "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA=="],
46
+
47
+ "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="],
48
+
49
+ "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="],
50
+
51
+ "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="],
52
+
53
+ "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="],
54
+
55
+ "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="],
56
+
57
+ "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="],
58
+
59
+ "@sapphire/async-queue": ["@sapphire/async-queue@1.5.5", "", {}, "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg=="],
60
+
61
+ "@sapphire/shapeshift": ["@sapphire/shapeshift@4.0.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "lodash": "^4.17.21" } }, "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg=="],
62
+
63
+ "@sapphire/snowflake": ["@sapphire/snowflake@3.5.3", "", {}, "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ=="],
64
+
65
+ "@types/bun": ["@types/bun@1.3.7", "", { "dependencies": { "bun-types": "1.3.7" } }, "sha512-lmNuMda+Z9b7tmhA0tohwy8ZWFSnmQm1UDWXtH5r9F7wZCfkeO3Jx7wKQ1EOiKq43yHts7ky6r8SDJQWRNupkA=="],
66
+
67
+ "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
68
+
69
+ "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
70
+
71
+ "@types/node": ["@types/node@25.0.10", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg=="],
72
+
73
+ "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="],
74
+
75
+ "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.54.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/type-utils": "8.54.0", "@typescript-eslint/utils": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.54.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ=="],
76
+
77
+ "@typescript-eslint/parser": ["@typescript-eslint/parser@8.54.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/types": "8.54.0", "@typescript-eslint/typescript-estree": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA=="],
78
+
79
+ "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.54.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.54.0", "@typescript-eslint/types": "^8.54.0", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g=="],
80
+
81
+ "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.54.0", "", { "dependencies": { "@typescript-eslint/types": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0" } }, "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg=="],
82
+
83
+ "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.54.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw=="],
84
+
85
+ "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.54.0", "", { "dependencies": { "@typescript-eslint/types": "8.54.0", "@typescript-eslint/typescript-estree": "8.54.0", "@typescript-eslint/utils": "8.54.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA=="],
86
+
87
+ "@typescript-eslint/types": ["@typescript-eslint/types@8.54.0", "", {}, "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA=="],
88
+
89
+ "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.54.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.54.0", "@typescript-eslint/tsconfig-utils": "8.54.0", "@typescript-eslint/types": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA=="],
90
+
91
+ "@typescript-eslint/utils": ["@typescript-eslint/utils@8.54.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/types": "8.54.0", "@typescript-eslint/typescript-estree": "8.54.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA=="],
92
+
93
+ "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.54.0", "", { "dependencies": { "@typescript-eslint/types": "8.54.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA=="],
94
+
95
+ "@vladfrangu/async_event_emitter": ["@vladfrangu/async_event_emitter@2.4.7", "", {}, "sha512-Xfe6rpCTxSxfbswi/W/Pz7zp1WWSNn4A0eW4mLkQUewCrXXtMj31lCg+iQyTkh/CkusZSq9eDflu7tjEDXUY6g=="],
96
+
97
+ "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
98
+
99
+ "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
100
+
101
+ "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="],
102
+
103
+ "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
104
+
105
+ "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
106
+
107
+ "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
108
+
109
+ "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="],
110
+
111
+ "bun-types": ["bun-types@1.3.7", "", { "dependencies": { "@types/node": "*" } }, "sha512-qyschsA03Qz+gou+apt6HNl6HnI+sJJLL4wLDke4iugsE6584CMupOtTY1n+2YC9nGVrEKUlTs99jjRLKgWnjQ=="],
112
+
113
+ "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
114
+
115
+ "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
116
+
117
+ "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
118
+
119
+ "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
120
+
121
+ "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
122
+
123
+ "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
124
+
125
+ "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
126
+
127
+ "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="],
128
+
129
+ "discord-api-types": ["discord-api-types@0.38.37", "", {}, "sha512-Cv47jzY1jkGkh5sv0bfHYqGgKOWO1peOrGMkDFM4UmaGMOTgOW8QSexhvixa9sVOiz8MnVOBryWYyw/CEVhj7w=="],
130
+
131
+ "discord.js": ["discord.js@14.25.1", "", { "dependencies": { "@discordjs/builders": "^1.13.0", "@discordjs/collection": "1.5.3", "@discordjs/formatters": "^0.6.2", "@discordjs/rest": "^2.6.0", "@discordjs/util": "^1.2.0", "@discordjs/ws": "^1.2.3", "@sapphire/snowflake": "3.5.3", "discord-api-types": "^0.38.33", "fast-deep-equal": "3.1.3", "lodash.snakecase": "4.1.1", "magic-bytes.js": "^1.10.0", "tslib": "^2.6.3", "undici": "6.21.3" } }, "sha512-2l0gsPOLPs5t6GFZfQZKnL1OJNYFcuC/ETWsW4VtKVD/tg4ICa9x+jb9bkPffkMdRpRpuUaO/fKkHCBeiCKh8g=="],
132
+
133
+ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
134
+
135
+ "eslint": ["eslint@9.39.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.39.2", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw=="],
136
+
137
+ "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="],
138
+
139
+ "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="],
140
+
141
+ "espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="],
142
+
143
+ "esquery": ["esquery@1.7.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="],
144
+
145
+ "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="],
146
+
147
+ "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
148
+
149
+ "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="],
150
+
151
+ "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
152
+
153
+ "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="],
154
+
155
+ "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="],
156
+
157
+ "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
158
+
159
+ "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="],
160
+
161
+ "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
162
+
163
+ "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="],
164
+
165
+ "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="],
166
+
167
+ "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
168
+
169
+ "globals": ["globals@17.2.0", "", {}, "sha512-tovnCz/fEq+Ripoq+p/gN1u7l6A7wwkoBT9pRCzTHzsD/LvADIzXZdjmRymh5Ztf0DYC3Rwg5cZRYjxzBmzbWg=="],
170
+
171
+ "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
172
+
173
+ "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="],
174
+
175
+ "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="],
176
+
177
+ "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="],
178
+
179
+ "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
180
+
181
+ "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
182
+
183
+ "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
184
+
185
+ "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="],
186
+
187
+ "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="],
188
+
189
+ "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="],
190
+
191
+ "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="],
192
+
193
+ "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
194
+
195
+ "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="],
196
+
197
+ "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
198
+
199
+ "lodash": ["lodash@4.17.23", "", {}, "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w=="],
200
+
201
+ "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
202
+
203
+ "lodash.snakecase": ["lodash.snakecase@4.1.1", "", {}, "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw=="],
204
+
205
+ "magic-bytes.js": ["magic-bytes.js@1.13.0", "", {}, "sha512-afO2mnxW7GDTXMm5/AoN1WuOcdoKhtgXjIvHmobqTD1grNplhGdv3PFOyjCVmrnOZBIT/gD/koDKpYG+0mvHcg=="],
206
+
207
+ "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
208
+
209
+ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
210
+
211
+ "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="],
212
+
213
+ "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="],
214
+
215
+ "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
216
+
217
+ "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="],
218
+
219
+ "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
220
+
221
+ "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="],
222
+
223
+ "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
224
+
225
+ "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
226
+
227
+ "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
228
+
229
+ "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
230
+
231
+ "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
232
+
233
+ "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="],
234
+
235
+ "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
236
+
237
+ "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
238
+
239
+ "shoukaku-bun": ["shoukaku-bun@4.2.0-d", "", {}, "sha512-pHeLQ2cbOjVhXMlYwyeJi1wrdZaUADdctfofmFvtY1U/wfZ5n78yrCmMzvqNxlDK0WfCuyksW99ROaIiI44LHA=="],
240
+
241
+ "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="],
242
+
243
+ "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
244
+
245
+ "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="],
246
+
247
+ "ts-api-utils": ["ts-api-utils@2.4.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA=="],
248
+
249
+ "ts-mixer": ["ts-mixer@6.0.4", "", {}, "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA=="],
250
+
251
+ "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
252
+
253
+ "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="],
254
+
255
+ "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
256
+
257
+ "typescript-eslint": ["typescript-eslint@8.54.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.54.0", "@typescript-eslint/parser": "8.54.0", "@typescript-eslint/typescript-estree": "8.54.0", "@typescript-eslint/utils": "8.54.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ=="],
258
+
259
+ "undici": ["undici@6.21.3", "", {}, "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw=="],
260
+
261
+ "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
262
+
263
+ "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="],
264
+
265
+ "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
266
+
267
+ "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="],
268
+
269
+ "ws": ["ws@8.19.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="],
270
+
271
+ "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
272
+
273
+ "@discordjs/rest/@discordjs/collection": ["@discordjs/collection@2.1.1", "", {}, "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg=="],
274
+
275
+ "@discordjs/ws/@discordjs/collection": ["@discordjs/collection@2.1.1", "", {}, "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg=="],
276
+
277
+ "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="],
278
+
279
+ "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="],
280
+
281
+ "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="],
282
+
283
+ "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
284
+
285
+ "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="],
286
+ }
287
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kazagumo-bun",
3
- "version": "3.4.0-e",
3
+ "version": "3.4.2",
4
4
  "description": "Bun-native high-performance Kazagumo fork. Node legacy purged.",
5
5
  "main": "src/Index.ts",
6
6
  "types": "src/Index.ts",
@@ -12,7 +12,7 @@
12
12
  "test": "bun test",
13
13
  "lint": "eslint ."
14
14
  },
15
- "author": "Takiyo",
15
+ "author": "Luigi Colantuono",
16
16
  "contributors": [
17
17
  {
18
18
  "name": "Luigi Colantuono",
@@ -38,7 +38,9 @@
38
38
  "devDependencies": {
39
39
  "@types/bun": "latest",
40
40
  "discord.js": "^14.25.1",
41
+ "eslint": "^9.39.2",
42
+ "globals": "^17.2.0",
41
43
  "typescript": "^5.9.3",
42
- "eslint": "^9.39.2"
44
+ "typescript-eslint": "^8.54.0"
43
45
  }
44
46
  }
package/src/Index.ts CHANGED
@@ -1,8 +1,8 @@
1
1
 
2
- import { KazagumoTrack } from './Managers/Supports/KazagumoTrack';
3
- import { KazagumoQueue } from './Managers/Supports/KazagumoQueue';
4
- import { KazagumoPlayer } from './Managers/KazagumoPlayer';
5
- import Plugins from './Modules/Plugins';
2
+ import { KazagumoTrack } from './Managers/Supports/KazagumoTrack.ts';
3
+ import { KazagumoQueue } from './Managers/Supports/KazagumoQueue.ts';
4
+ import { KazagumoPlayer } from './Managers/KazagumoPlayer.ts';
5
+ import Plugins from './Modules/Plugins.ts';
6
6
  // import KazagumoPlayer from "./Managers/KazagumoPlayer";
7
7
  // import { KazagumoOptions } from "./Modules/Interfaces";
8
8
 
package/src/Kazagumo.ts CHANGED
@@ -1,39 +1,41 @@
1
- import { EventEmitter } from './Modules/EventEmitter';
2
- import {
1
+ import { EventEmitter } from './Modules/EventEmitter.ts';
2
+ import type {
3
3
  CreatePlayerOptions,
4
- Events,
5
- KazagumoError,
6
4
  KazagumoOptions as KazagumoOptionsOwO,
7
5
  KazagumoSearchOptions,
8
6
  KazagumoSearchResult,
9
7
  PlayerMovedChannels,
10
8
  PlayerMovedState,
11
- SearchResultTypes,
9
+ SearchResultTypes} from './Modules/Interfaces';
10
+ import {
11
+ Events,
12
+ KazagumoError,
12
13
  SourceIDs,
13
14
  } from './Modules/Interfaces';
14
- import {
15
- Connection,
15
+ import type {
16
16
  Connector,
17
- LoadType,
18
17
  Node,
19
18
  NodeOption,
20
- Player,
21
19
  PlayerUpdate,
22
- Shoukaku,
23
20
  ShoukakuOptions,
24
21
  Track,
25
22
  TrackExceptionEvent,
26
23
  TrackStuckEvent,
27
24
  VoiceChannelOptions,
28
- WebSocketClosedEvent,
25
+ WebSocketClosedEvent} from 'shoukaku-bun';
26
+ import {
27
+ Connection,
28
+ LoadType,
29
+ Player,
30
+ Shoukaku,
29
31
  Constants,
30
32
  } from 'shoukaku-bun';
31
33
  const { State, VoiceState } = Constants;
32
34
  type VoiceStateType = (typeof VoiceState)[keyof typeof VoiceState];
33
35
 
34
- import { KazagumoPlayer } from './Managers/KazagumoPlayer';
35
- import { KazagumoTrack } from './Managers/Supports/KazagumoTrack';
36
- import { KazagumoQueue } from './Managers/Supports/KazagumoQueue';
36
+ import { KazagumoPlayer } from './Managers/KazagumoPlayer.ts';
37
+ import { KazagumoTrack } from './Managers/Supports/KazagumoTrack.ts';
38
+ import type { KazagumoQueue } from './Managers/Supports/KazagumoQueue.ts';
37
39
 
38
40
  export interface KazagumoEvents {
39
41
  /**
@@ -1,6 +1,6 @@
1
- import { Kazagumo } from '../Kazagumo';
2
- import { KazagumoQueue } from './Supports/KazagumoQueue';
3
- import {
1
+ import type { Kazagumo } from '../Kazagumo.ts';
2
+ import { KazagumoQueue } from './Supports/KazagumoQueue.ts';
3
+ import type {
4
4
  FilterOptions,
5
5
  Node,
6
6
  Player,
@@ -9,16 +9,17 @@ import {
9
9
  TrackStuckEvent,
10
10
  WebSocketClosedEvent,
11
11
  } from 'shoukaku-bun';
12
- import {
13
- Events,
14
- KazagumoError,
12
+ import type {
15
13
  KazagumoPlayerOptions,
16
14
  KazagumoSearchOptions,
17
15
  KazagumoSearchResult,
18
- PlayerState,
19
- PlayOptions,
16
+ PlayOptions} from '../Modules/Interfaces';
17
+ import {
18
+ Events,
19
+ KazagumoError,
20
+ PlayerState
20
21
  } from '../Modules/Interfaces';
21
- import { KazagumoTrack } from './Supports/KazagumoTrack';
22
+ import { KazagumoTrack } from './Supports/KazagumoTrack.ts';
22
23
 
23
24
  export class KazagumoPlayer {
24
25
  /**
@@ -168,7 +169,7 @@ export class KazagumoPlayer {
168
169
  this.shoukaku.on('update', (data: PlayerUpdate) => this.emit(Events.PlayerUpdate, this, data));
169
170
  this.shoukaku.on('stuck', (data: TrackStuckEvent) => this.emit(Events.PlayerStuck, this, data));
170
171
  this.shoukaku.on('resumed', () => this.emit(Events.PlayerResumed, this));
171
- // @ts-ignore
172
+ // @ts-expect-error: Shoukaku Events doesn't have QueueUpdate but it's emitted manually
172
173
  this.shoukaku.on(Events.QueueUpdate, (referencePlayer: KazagumoPlayer, queue: KazagumoQueue) =>
173
174
  this.kazagumo.emit(Events.QueueUpdate, referencePlayer, queue),
174
175
  );
@@ -319,7 +320,8 @@ export class KazagumoPlayer {
319
320
  this.emit(Events.PlayerResolveError, this, current, errorMessage);
320
321
  this.emit(Events.Debug, `Player ${this.guildId} resolve error: ${errorMessage}`);
321
322
  this.queue.current = null;
322
- this.queue.size ? await this.play() : this.emit(Events.PlayerEmpty, this);
323
+ if (this.queue.size) await this.play();
324
+ else this.emit(Events.PlayerEmpty, this);
323
325
  return this;
324
326
  }
325
327
 
@@ -1,6 +1,6 @@
1
- import { KazagumoTrack } from './KazagumoTrack';
2
- import { Events, KazagumoError } from '../../Modules/Interfaces';
3
- import { KazagumoPlayer } from '../KazagumoPlayer';
1
+ import type { KazagumoTrack } from './KazagumoTrack.ts';
2
+ import { Events, KazagumoError } from '../../Modules/Interfaces.ts';
3
+ import type { KazagumoPlayer } from '../KazagumoPlayer.ts';
4
4
 
5
5
  export class KazagumoQueue extends Array<KazagumoTrack> {
6
6
  constructor(private readonly kazagumoPlayer: KazagumoPlayer) {
@@ -1,15 +1,16 @@
1
- import { Kazagumo } from '../../Kazagumo';
1
+ import type { Kazagumo } from '../../Kazagumo.ts';
2
+ import type {
3
+ RawTrack,
4
+ ResolveOptions} from '../../Modules/Interfaces';
2
5
  import {
3
6
  escapeRegExp,
4
7
  Events,
5
8
  KazagumoError,
6
- RawTrack,
7
- ResolveOptions,
8
9
  SourceIDs,
9
10
  SupportedSources,
10
11
  } from '../../Modules/Interfaces';
11
- import { Track } from 'shoukaku-bun';
12
- import { KazagumoPlayer } from '../KazagumoPlayer';
12
+ import type { Track } from 'shoukaku-bun';
13
+ import type { KazagumoPlayer } from '../KazagumoPlayer.ts';
13
14
 
14
15
  export class KazagumoTrack {
15
16
  /**
@@ -1,8 +1,8 @@
1
- import { Kazagumo } from '../Kazagumo';
2
- import { KazagumoPlayer, KazagumoQueue } from '../Index';
3
- import { KazagumoTrack } from '../Managers/Supports/KazagumoTrack';
4
- import { Constructor } from './Utils';
5
- import { Track } from 'shoukaku-bun';
1
+ import type { Kazagumo } from '../Kazagumo.ts';
2
+ import type { KazagumoPlayer, KazagumoQueue } from '../Index.ts';
3
+ import type { KazagumoTrack } from '../Managers/Supports/KazagumoTrack.ts';
4
+ import type { Constructor } from './Utils.ts';
5
+ import type { Track } from 'shoukaku-bun';
6
6
 
7
7
  export interface KazagumoOptions {
8
8
  /** Default search engine if no engine was provided. Default to youtube. If defaultSource is provided, this will be ignored */
@@ -182,11 +182,11 @@ export enum PlayerState {
182
182
  }
183
183
 
184
184
  export class KazagumoPlugin {
185
- public load(kazagumo: Kazagumo): void {
185
+ public load(_kazagumo: Kazagumo): void {
186
186
  throw new KazagumoError(1, 'Plugin must implement load()');
187
187
  }
188
188
 
189
- public unload(kazagumo: Kazagumo): void {
189
+ public unload(_kazagumo: Kazagumo): void {
190
190
  throw new KazagumoError(1, 'Plugin must implement unload()');
191
191
  }
192
192
  }
@@ -1,4 +1,4 @@
1
- import { KazagumoPlugin as PlayerMoved } from '../Plugins/PlayerMoved';
1
+ import { KazagumoPlugin as PlayerMoved } from '../Plugins/PlayerMoved.ts';
2
2
 
3
3
  export default {
4
4
  PlayerMoved,
@@ -1,5 +1,5 @@
1
- import { Track } from 'shoukaku-bun';
2
- import { KazagumoTrack } from '../Managers/Supports/KazagumoTrack';
1
+ import type { Track } from 'shoukaku-bun';
2
+ import type { KazagumoTrack } from '../Managers/Supports/KazagumoTrack.ts';
3
3
 
4
4
  export class KazagumoUtils {
5
5
  static convertKazagumoTrackToTrack(track: KazagumoTrack | Track): Track {
@@ -1,5 +1,6 @@
1
- import { Kazagumo, Events } from '../Index';
2
- import { KazagumoPlugin as Plugin } from '../Modules/Interfaces';
1
+ import type { Kazagumo} from '../Index.ts';
2
+ import { Events } from '../Index.ts';
3
+ import { KazagumoPlugin as Plugin } from '../Modules/Interfaces.ts';
3
4
 
4
5
  export class KazagumoPlugin extends Plugin {
5
6
  /**
package/.prettierrc DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "printWidth": 120,
3
- "trailingComma": "all",
4
- "singleQuote": true
5
- }
package/LICENSE.md DELETED
@@ -1,22 +0,0 @@
1
-
2
- The MIT License (MIT)
3
-
4
- Copyright (c) 2021 Takiyo Takahashi
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining a copy
7
- of this software and associated documentation files (the "Software"), to deal
8
- in the Software without restriction, including without limitation the rights
9
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- copies of the Software, and to permit persons to whom the Software is
11
- furnished to do so, subject to the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be included in all
14
- copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- SOFTWARE.
package/appveyor.yml DELETED
@@ -1,24 +0,0 @@
1
- # Test against the latest version of this Node.js version
2
- environment:
3
- nodejs_version: "16"
4
-
5
- # Install scripts. (runs after repo cloning)
6
- install:
7
- # Get the latest stable version of Node.js or io.js
8
- - ps: Install-Product node $env:nodejs_version
9
- # install modules
10
- - npm install
11
-
12
- # Post-install test scripts.
13
- test_script:
14
- # Output useful info for debugging.
15
- - node --version
16
- - npm --version
17
- # run tests
18
- - npm run lint
19
- - npm run format
20
- - npm run build
21
- - npm run build:docs
22
-
23
- # Don't actually build.
24
- build: off
package/tslint.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "extends": ["tslint:recommended", "tslint-config-prettier"]
3
- }