From d6c530c355bcf8eb547333b2e0c2ae509071296d Mon Sep 17 00:00:00 2001 From: Izan Gil <66965250+SrIzan10@users.noreply.github.com> Date: Mon, 5 Aug 2024 20:26:07 +0200 Subject: [PATCH] feat: update sern and distube, move from genius to lrclib --- .gitignore | 3 +- .sern/command-data-remote.json | 208 ++++ .sern/tsconfig.json | 17 + commands/music/todo_queue.ts | 21 - package.json | 31 +- sern.config.json | 2 +- {commands => src/commands}/misc/eval.ts | 2 +- {commands => src/commands}/music/loop.ts | 13 +- {commands => src/commands}/music/lyrics.ts | 39 +- {commands => src/commands}/music/pause.ts | 2 +- {commands => src/commands}/music/play.ts | 8 +- {commands => src/commands}/music/resume.ts | 8 +- {commands => src/commands}/music/shuffle.ts | 8 +- {commands => src/commands}/music/skip.ts | 8 +- {commands => src/commands}/music/stop.ts | 8 +- {commands => src/commands}/music/volume.ts | 8 +- src/dependencies.d.ts | 10 + {events => src/events}/distube/addSong.ts | 0 {events => src/events}/distube/playSong.ts | 12 +- .../events}/distube/searchNoResult.ts | 0 {events => src/events}/djs/ready.ts | 0 {events => src/events}/sern/error.ts | 0 index.ts => src/index.ts | 49 +- {plugins => src/plugins}/publish.ts | 0 {schemas => src/schemas}/distubeError.ts | 0 {schemas => src/schemas}/songsPlayed.ts | 0 tsconfig.json | 106 +- yarn.lock | 1016 +++++++---------- 28 files changed, 759 insertions(+), 820 deletions(-) create mode 100644 .sern/command-data-remote.json create mode 100644 .sern/tsconfig.json delete mode 100644 commands/music/todo_queue.ts rename {commands => src/commands}/misc/eval.ts (96%) rename {commands => src/commands}/music/loop.ts (74%) rename {commands => src/commands}/music/lyrics.ts (50%) rename {commands => src/commands}/music/pause.ts (94%) rename {commands => src/commands}/music/play.ts (86%) rename {commands => src/commands}/music/resume.ts (58%) rename {commands => src/commands}/music/shuffle.ts (58%) rename {commands => src/commands}/music/skip.ts (65%) rename {commands => src/commands}/music/stop.ts (58%) rename {commands => src/commands}/music/volume.ts (76%) create mode 100644 src/dependencies.d.ts rename {events => src/events}/distube/addSong.ts (100%) rename {events => src/events}/distube/playSong.ts (92%) rename {events => src/events}/distube/searchNoResult.ts (100%) rename {events => src/events}/djs/ready.ts (100%) rename {events => src/events}/sern/error.ts (100%) rename index.ts => src/index.ts (59%) rename {plugins => src/plugins}/publish.ts (100%) rename {schemas => src/schemas}/distubeError.ts (100%) rename {schemas => src/schemas}/songsPlayed.ts (100%) diff --git a/.gitignore b/.gitignore index 9e9948e..72eec71 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /node_modules .env /dist -lavalink/ \ No newline at end of file +lavalink/ +.sern/ambient.d.ts \ No newline at end of file diff --git a/.sern/command-data-remote.json b/.sern/command-data-remote.json new file mode 100644 index 0000000..5d53c21 --- /dev/null +++ b/.sern/command-data-remote.json @@ -0,0 +1,208 @@ +{ + "global": [ + { + "id": "1270071328065454223", + "application_id": "842030808114266193", + "version": "1270071614733549591", + "default_member_permissions": null, + "type": 1, + "name": "volume", + "name_localizations": null, + "description": "Set the volume of the queue", + "description_localizations": null, + "dm_permission": true, + "contexts": null, + "integration_types": [ + 0 + ], + "options": [ + { + "type": 10, + "name": "volume", + "name_localizations": null, + "description": "Set the volume", + "description_localizations": null, + "required": true, + "min_value": 0, + "max_value": 100 + } + ], + "nsfw": false + }, + { + "id": "1270071614733549590", + "application_id": "842030808114266193", + "version": "1270071614733549592", + "default_member_permissions": null, + "type": 1, + "name": "todo_queue", + "name_localizations": null, + "description": "See the current queue", + "description_localizations": null, + "dm_permission": true, + "contexts": null, + "integration_types": [ + 0 + ], + "nsfw": false + }, + { + "id": "1270071328065454224", + "application_id": "842030808114266193", + "version": "1270071614733549593", + "default_member_permissions": null, + "type": 1, + "name": "stop", + "name_localizations": null, + "description": "Stop the song", + "description_localizations": null, + "dm_permission": true, + "contexts": null, + "integration_types": [ + 0 + ], + "nsfw": false + }, + { + "id": "1270071328065454225", + "application_id": "842030808114266193", + "version": "1270071614733549594", + "default_member_permissions": null, + "type": 1, + "name": "skip", + "name_localizations": null, + "description": "Skip the song", + "description_localizations": null, + "dm_permission": true, + "contexts": null, + "integration_types": [ + 0 + ], + "nsfw": false + }, + { + "id": "1270071328577425438", + "application_id": "842030808114266193", + "version": "1270071614733549595", + "default_member_permissions": null, + "type": 1, + "name": "shuffle", + "name_localizations": null, + "description": "Shuffle the queue", + "description_localizations": null, + "dm_permission": true, + "contexts": null, + "integration_types": [ + 0 + ], + "nsfw": false + }, + { + "id": "1270071328577425439", + "application_id": "842030808114266193", + "version": "1270071614733549596", + "default_member_permissions": null, + "type": 1, + "name": "resume", + "name_localizations": null, + "description": "Resume the song", + "description_localizations": null, + "dm_permission": true, + "contexts": null, + "integration_types": [ + 0 + ], + "nsfw": false + }, + { + "id": "1270071328577425440", + "application_id": "842030808114266193", + "version": "1270071614733549597", + "default_member_permissions": null, + "type": 1, + "name": "play", + "name_localizations": null, + "description": "Play some music", + "description_localizations": null, + "dm_permission": true, + "contexts": null, + "integration_types": [ + 0 + ], + "options": [ + { + "type": 3, + "name": "name", + "name_localizations": null, + "description": "The name of the song or URL", + "description_localizations": null, + "required": true + } + ], + "nsfw": false + }, + { + "id": "1270071328577425441", + "application_id": "842030808114266193", + "version": "1270071614733549598", + "default_member_permissions": null, + "type": 1, + "name": "pause", + "name_localizations": null, + "description": "Pause the song", + "description_localizations": null, + "dm_permission": true, + "contexts": null, + "integration_types": [ + 0 + ], + "nsfw": false + }, + { + "id": "1270071328577425442", + "application_id": "842030808114266193", + "version": "1270071615073419358", + "default_member_permissions": null, + "type": 1, + "name": "lyrics", + "name_localizations": null, + "description": "See the lyrics", + "description_localizations": null, + "dm_permission": true, + "contexts": null, + "integration_types": [ + 0 + ], + "nsfw": false + }, + { + "id": "1270071328577425443", + "application_id": "842030808114266193", + "version": "1270071615073419359", + "default_member_permissions": null, + "type": 1, + "name": "loop", + "name_localizations": null, + "description": "Loop the song or queue", + "description_localizations": null, + "dm_permission": true, + "contexts": null, + "integration_types": [ + 0 + ], + "options": [ + { + "type": 10, + "name": "type", + "name_localizations": null, + "description": "0 for disable, 1 for song, 2 for queue", + "description_localizations": null, + "required": true, + "min_value": 0, + "max_value": 2 + } + ], + "nsfw": false + } + ] +} \ No newline at end of file diff --git a/.sern/tsconfig.json b/.sern/tsconfig.json new file mode 100644 index 0000000..c4d2847 --- /dev/null +++ b/.sern/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "module": "esnext", + "moduleResolution": "node16", + "strict": true, + "skipLibCheck": true, + "target": "esnext", + "rootDirs": [ + "./generated", + "../src" + ] + }, + "include": [ + "./ambient.d.ts", + "../src" + ] +} \ No newline at end of file diff --git a/commands/music/todo_queue.ts b/commands/music/todo_queue.ts deleted file mode 100644 index c6ac557..0000000 --- a/commands/music/todo_queue.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { commandModule, CommandType } from '@sern/handler'; -import { EmbedBuilder } from 'discord.js'; -import { Song } from 'distube'; -import { distube } from '../../index.js'; -import { publish } from '../../plugins/publish.js'; - -export default commandModule({ - type: CommandType.Slash, - plugins: [], - description: 'See the current queue', - options: [], - execute: async (ctx, options) => { - const queue = distube.getQueue(ctx.guild!.id) - const embed = new EmbedBuilder() - .setAuthor({name: ctx.user.username, iconURL: ctx.user.displayAvatarURL()}) - .setColor('Random') - .setTitle('Current queue') - .setDescription(`${queue!.songs.map((song: Song, id: number) => `**${id + 1}**. [${song.name}](${song.url}) - \`${song.formattedDuration}\``)}`) - await ctx.reply({embeds: [embed], ephemeral: true}) - }, -}); \ No newline at end of file diff --git a/package.json b/package.json index 09a8539..85d1207 100644 --- a/package.json +++ b/package.json @@ -2,11 +2,11 @@ "name": "bask", "version": "1.0.0", "description": "", - "main": "index.js", + "main": "dist/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "watch": "tsc --watch", - "dev": "tsc-watch --onSuccess \"node dist/index.js\"", + "dev": "sern build && node .", "build": "tsc" }, "type": "module", @@ -20,27 +20,30 @@ "url": "https://github.com/baskbotml/bask/issues" }, "dependencies": { - "@discordjs/opus": "^0.9.0", "@discordjs/voice": "^0.15.0", - "@distube/soundcloud": "^1.3.5", - "@distube/spotify": "^1.4.2", - "@distube/yt-dlp": "^1.1.3", - "@distube/ytdl-core": "^4.11.17", - "@sern/handler": "^2.6.1", + "@distube/soundcloud": "^2.0.3", + "@distube/spotify": "^2.0.2", + "@distube/youtube": "^1.0.4", + "@distube/yt-dlp": "^2.0.1", + "@distube/ytdl-core": "^4.14.2", + "@sern/handler": "^4.0.1", + "@sern/publisher": "^1.1.2", "axios": "^1.1.3", - "discord.js": "^14.8.0", - "distube": "^4.0.4", + "discord.js": "^14.15.3", + "distube": "^5.0.2", "dotenv": "^16.0.3", - "genius-lyrics": "^4.4.0", "libsodium-wrappers": "^0.7.10", - "mongoose": "^6.7.0" + "mongoose": "^6.7.0", + "opusscript": "^0.1.1" }, "devDependencies": { "@types/express": "^4.17.14", "@types/node": "^17.0.25", "nodemon": "^2.0.20", + "tsc-watch": "^6.2.0", "tsup": "^7.2.0", - "typescript": "^4.6.3" + "typescript": "^5.5.4" }, - "homepage": "https://github.com/baskbotml/bask#readme" + "homepage": "https://github.com/baskbotml/bask#readme", + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/sern.config.json b/sern.config.json index 13e4bab..267655b 100644 --- a/sern.config.json +++ b/sern.config.json @@ -1,7 +1,7 @@ { "language": "typescript", "paths": { - "base": ".", + "base": "src", "commands": "commands" } } \ No newline at end of file diff --git a/commands/misc/eval.ts b/src/commands/misc/eval.ts similarity index 96% rename from commands/misc/eval.ts rename to src/commands/misc/eval.ts index 9fbbae7..a1914b3 100644 --- a/commands/misc/eval.ts +++ b/src/commands/misc/eval.ts @@ -8,7 +8,7 @@ export default commandModule({ execute: async (ctx, args) => { if (ctx.user.id !== '703974042700611634') return - let code: string[] | string = args[1]; + let code: string[] | string = ctx.options; code = code.join(" ") as string; if (code.includes("await")) { const ar = code.split(";"); diff --git a/commands/music/loop.ts b/src/commands/music/loop.ts similarity index 74% rename from commands/music/loop.ts rename to src/commands/music/loop.ts index 86fdeb6..cdb604c 100644 --- a/commands/music/loop.ts +++ b/src/commands/music/loop.ts @@ -1,11 +1,9 @@ import { commandModule, CommandType } from '@sern/handler'; import { ApplicationCommandOptionType } from 'discord.js'; -import { distube } from '../../index.js'; -import { publish } from '../../plugins/publish.js'; export default commandModule({ type: CommandType.Slash, - plugins: [publish()], + plugins: [], description: 'Loop the song or queue', options: [ { @@ -18,11 +16,12 @@ export default commandModule({ }, ], //alias : [], - execute: async (ctx) => { + execute: async (ctx, args) => { if (ctx.guild!.members.me?.voice.channelId) { - const queue = distube.getQueue(ctx.guild!); - queue?.setRepeatMode(ctx.interaction.options.getNumber('type') as number); - switch (ctx.interaction.options.getNumber('type') as number) { + const queue = args.deps.distube.getQueue(ctx.guild!); + const type = ctx.options.getNumber('type', true) + queue?.setRepeatMode(type); + switch (type) { case 0: await ctx.reply({ content: 'Looping has been disabled.', diff --git a/commands/music/lyrics.ts b/src/commands/music/lyrics.ts similarity index 50% rename from commands/music/lyrics.ts rename to src/commands/music/lyrics.ts index 662ee86..d8a69e4 100644 --- a/commands/music/lyrics.ts +++ b/src/commands/music/lyrics.ts @@ -1,28 +1,22 @@ import { commandModule, CommandType } from '@sern/handler'; import { EmbedBuilder } from 'discord.js' -import { distube } from '../../index.js'; -import { publish } from '../../plugins/publish.js'; -import Genius from "genius-lyrics"; -const genius = new Genius.Client() export default commandModule({ type: CommandType.Slash, - plugins: [publish()], + plugins: [], description: 'See the lyrics', options: [], //alias : [], - execute: async (ctx) => { - await ctx.interaction.deferReply({ephemeral: true}) + execute: async (ctx, args) => { + await ctx.interaction.deferReply({ ephemeral: true }) if (ctx.guild!.members.me?.voice.channelId) { - const queue = distube.getQueue(ctx.guild!) - const search = await genius.songs.search(queue!.songs[0].name as string) - const song = search[0] - let lyrics - try { - lyrics = await song.lyrics() - } catch (error) { - lyrics = "Lyrics not found!" - } + const queue = args.deps.distube.getQueue(ctx.guild!) + const search = await fetch(`https://lrclib.net/api/search?q=${queue!.songs[0].name}`, { + headers: { + 'User-Agent': 'Bask (https://github.com/baskbotml/bask)' + } + }).then(res => res.json()) as LRCLibSearch[] + const lyrics = search[0].plainLyrics const embed = new EmbedBuilder() .setColor('Random') .setAuthor({name: ctx.user.username, iconURL: ctx.user.displayAvatarURL()}) @@ -33,4 +27,15 @@ export default commandModule({ await ctx.interaction.editReply({content: "There's no queue!"}) } }, -}); \ No newline at end of file +}); + +interface LRCLibSearch { + id: number, + trackName: string, + artistName: string, + albumName: string, + duration: number, + instrumental: boolean, + plainLyrics: string, + syncedLyrics: string, +} \ No newline at end of file diff --git a/commands/music/pause.ts b/src/commands/music/pause.ts similarity index 94% rename from commands/music/pause.ts rename to src/commands/music/pause.ts index b32e777..6965798 100644 --- a/commands/music/pause.ts +++ b/src/commands/music/pause.ts @@ -4,7 +4,7 @@ import { publish } from '../../plugins/publish.js'; export default commandModule({ type: CommandType.Slash, - plugins: [publish()], + plugins: [], description: 'Pause the song', options: [], execute: async (ctx, options) => { diff --git a/commands/music/play.ts b/src/commands/music/play.ts similarity index 86% rename from commands/music/play.ts rename to src/commands/music/play.ts index d96c9d9..4a936eb 100644 --- a/commands/music/play.ts +++ b/src/commands/music/play.ts @@ -1,11 +1,9 @@ import { commandModule, CommandType } from '@sern/handler'; -import { ApplicationCommandOptionType, GuildMember, GuildTextBasedChannel, PermissionFlagsBits, VoiceBasedChannel } from 'discord.js' -import { distube } from '../../index.js'; -import { publish } from '../../plugins/publish.js'; +import { ApplicationCommandOptionType, GuildMember, GuildTextBasedChannel, PermissionFlagsBits } from 'discord.js' export default commandModule({ type: CommandType.Slash, - plugins: [publish()], + plugins: [], description: 'Play some music', options: [ { @@ -23,7 +21,7 @@ export default commandModule({ if (ctx.guild!.members.me?.voice.channelId) {if (ctx.guild!.voiceStates.cache.get(ctx.client.user!.id)?.channelId !== ctx.guild!.voiceStates.cache.get(ctx.user.id)?.channelId) return await ctx.reply({content: `You need to stay in the same VC as me!`, ephemeral: true})} if (!vcConnectionCheck!.has(PermissionFlagsBits.Connect)) return await ctx.reply({content: `I can't join on that VC!`, ephemeral: true}) if (!vcConnectionCheck!.has(PermissionFlagsBits.Speak)) return await ctx.reply({content: `I can't speak on that VC!`, ephemeral: true}) - distube.play((ctx.interaction.member as GuildMember).voice.channel!, args[1].getString('name')!, { + args.deps.distube.play((ctx.interaction.member as GuildMember).voice.channel!, ctx.options.getString('name', true), { member: ctx.interaction.member as GuildMember, textChannel: ctx.interaction.channel as GuildTextBasedChannel, }) diff --git a/commands/music/resume.ts b/src/commands/music/resume.ts similarity index 58% rename from commands/music/resume.ts rename to src/commands/music/resume.ts index 44abd11..26a516a 100644 --- a/commands/music/resume.ts +++ b/src/commands/music/resume.ts @@ -1,14 +1,12 @@ import { commandModule, CommandType } from '@sern/handler'; -import { distube } from '../../index.js'; -import { publish } from '../../plugins/publish.js'; export default commandModule({ type: CommandType.Slash, - plugins: [publish()], + plugins: [], description: 'Resume the song', options: [], - execute: async (ctx, options) => { - const queue = distube.getQueue(ctx.guild!.id) + execute: async (ctx, args) => { + const queue = args.deps.distube.getQueue(ctx.guild!.id) queue?.resume() await ctx.reply({content: `The queue was resumed correctly!`, ephemeral: true}) }, diff --git a/commands/music/shuffle.ts b/src/commands/music/shuffle.ts similarity index 58% rename from commands/music/shuffle.ts rename to src/commands/music/shuffle.ts index 18b3678..0080ebe 100644 --- a/commands/music/shuffle.ts +++ b/src/commands/music/shuffle.ts @@ -1,14 +1,12 @@ import { commandModule, CommandType } from '@sern/handler'; -import { distube } from '../../index.js'; -import { publish } from '../../plugins/publish.js'; export default commandModule({ type: CommandType.Slash, - plugins: [publish()], + plugins: [], description: 'Shuffle the queue', options: [], - execute: async (ctx, options) => { - const queue = distube.getQueue(ctx.guild!.id) + execute: async (ctx, args) => { + const queue = args.deps.distube.getQueue(ctx.guild!.id) await queue?.shuffle() await ctx.reply({content: `The queue was shuffled correctly!`, ephemeral: true}) }, diff --git a/commands/music/skip.ts b/src/commands/music/skip.ts similarity index 65% rename from commands/music/skip.ts rename to src/commands/music/skip.ts index c5dd5e5..6218760 100644 --- a/commands/music/skip.ts +++ b/src/commands/music/skip.ts @@ -1,14 +1,12 @@ import { commandModule, CommandType } from '@sern/handler'; -import { distube } from '../../index.js'; -import { publish } from '../../plugins/publish.js'; export default commandModule({ type: CommandType.Slash, - plugins: [publish()], + plugins: [], description: 'Skip the song', options: [], - execute: async (ctx, options) => { - const queue = distube.getQueue(ctx.guild!.id)! + execute: async (ctx, args) => { + const queue = args.deps.distube.getQueue(ctx.guild!.id)! if (queue.songs.length > 1) { await queue.skip(); } else { diff --git a/commands/music/stop.ts b/src/commands/music/stop.ts similarity index 58% rename from commands/music/stop.ts rename to src/commands/music/stop.ts index 7a339d6..a5c49b2 100644 --- a/commands/music/stop.ts +++ b/src/commands/music/stop.ts @@ -1,14 +1,12 @@ import { commandModule, CommandType } from '@sern/handler'; -import { distube } from '../../index.js'; -import { publish } from '../../plugins/publish.js'; export default commandModule({ type: CommandType.Slash, - plugins: [publish()], + plugins: [], description: 'Stop the song', options: [], - execute: async (ctx, options) => { - const queue = distube.getQueue(ctx.guild!.id) + execute: async (ctx, args) => { + const queue = args.deps.distube.getQueue(ctx.guild!.id) await queue?.stop() await ctx.reply({content: `The queue was stopped correctly!`, ephemeral: true}) }, diff --git a/commands/music/volume.ts b/src/commands/music/volume.ts similarity index 76% rename from commands/music/volume.ts rename to src/commands/music/volume.ts index f943bd1..00369f2 100644 --- a/commands/music/volume.ts +++ b/src/commands/music/volume.ts @@ -1,11 +1,9 @@ import { commandModule, CommandType } from '@sern/handler'; import { ApplicationCommandOptionType } from 'discord.js'; -import { distube } from '../../index.js'; -import { publish } from '../../plugins/publish.js'; export default commandModule({ type: CommandType.Slash, - plugins: [publish()], + plugins: [], description: 'Set the volume of the queue', options: [ { @@ -17,9 +15,9 @@ export default commandModule({ required: true } ], - execute: async (ctx, options) => { + execute: async (ctx, args) => { const option = ctx.interaction.options.getNumber('volume') as number - const queue = distube.getQueue(ctx.guild!.id) + const queue = args.deps.distube.getQueue(ctx.guild!.id) queue?.setVolume(option) await ctx.reply({content: `The volume was set to ${option}%`, ephemeral: true}) }, diff --git a/src/dependencies.d.ts b/src/dependencies.d.ts new file mode 100644 index 0000000..fe0623b --- /dev/null +++ b/src/dependencies.d.ts @@ -0,0 +1,10 @@ +import type { CoreDependencies } from "@sern/handler"; +import type { Publisher } from "@sern/publisher"; +import type { DisTube } from "distube"; + +declare global { + interface Dependencies extends CoreDependencies { + "@sern/publisher": Publisher + "distube": DisTube + } +} \ No newline at end of file diff --git a/events/distube/addSong.ts b/src/events/distube/addSong.ts similarity index 100% rename from events/distube/addSong.ts rename to src/events/distube/addSong.ts diff --git a/events/distube/playSong.ts b/src/events/distube/playSong.ts similarity index 92% rename from events/distube/playSong.ts rename to src/events/distube/playSong.ts index 847d471..b5770a1 100644 --- a/events/distube/playSong.ts +++ b/src/events/distube/playSong.ts @@ -80,9 +80,11 @@ export default eventModule({ .setStyle(ButtonStyle.Secondary) .setDisabled(true) ); - const likeanddislike = await axios - .get(`https://returnyoutubedislikeapi.com/votes?videoId=${song.id}`) - .then((res) => res.data); + if (song.source === 'youtube') { + const likeanddislike = await fetch(`https://returnyoutubedislikeapi.com/votes?videoId=${song.id}`).then(res => res.json()) + song.likes = likeanddislike.likes as number; + song.dislikes = likeanddislike.dislikes as number; + } const embed = new EmbedBuilder() .setColor('Random') .setAuthor({ @@ -90,11 +92,11 @@ export default eventModule({ iconURL: song.member?.user.displayAvatarURL(), }) .setTitle(song.name as string) - .setURL(song.url) + .setURL(song.url!) .setImage(song.thumbnail as string) .setFooter({ iconURL: 'https://cdn.discordapp.com/emojis/990951871797678110.gif', - text: `Views: ${song.views} • Likes: ${likeanddislike.likes} • Dislikes: ${likeanddislike.dislikes}`, + text: `Views: ${song.views?.toLocaleString()} • Likes: ${song.likes?.toLocaleString()}${song.dislikes ? ` • Dislikes: ${song.dislikes.toLocaleString()}` : ''}`, }); const message = await queue.textChannel!.send({ embeds: [embed], diff --git a/events/distube/searchNoResult.ts b/src/events/distube/searchNoResult.ts similarity index 100% rename from events/distube/searchNoResult.ts rename to src/events/distube/searchNoResult.ts diff --git a/events/djs/ready.ts b/src/events/djs/ready.ts similarity index 100% rename from events/djs/ready.ts rename to src/events/djs/ready.ts diff --git a/events/sern/error.ts b/src/events/sern/error.ts similarity index 100% rename from events/sern/error.ts rename to src/events/sern/error.ts diff --git a/index.ts b/src/index.ts similarity index 59% rename from index.ts rename to src/index.ts index 1b705d9..a485e94 100644 --- a/index.ts +++ b/src/index.ts @@ -1,13 +1,14 @@ import { Client, GatewayIntentBits } from 'discord.js'; -import { DefaultLogging, Dependencies, Sern, SernEmitter, single, Singleton } from '@sern/handler'; +import { makeDependencies, Sern } from '@sern/handler'; import "dotenv/config" -import { DisTube } from "distube"; +import { DisTube, Events } from "distube"; import { SpotifyPlugin } from "@distube/spotify"; import { YtDlpPlugin } from "@distube/yt-dlp"; import { SoundCloudPlugin } from "@distube/soundcloud"; import mongoose from 'mongoose'; import { db as distubeerror } from './schemas/distubeError.js'; -import { db as songsplayed } from './schemas/songsPlayed.js'; +import { Publisher } from '@sern/publisher'; +import { YouTubePlugin } from '@distube/youtube'; const client = new Client({ intents: [ @@ -23,42 +24,36 @@ mongoose.connect(process.env.MONGODB as string).then(() => console.log('Connecte export const distube = new DisTube(client, { plugins: [ + new YouTubePlugin(), + new SoundCloudPlugin(), new SpotifyPlugin({ - emitEventsAfterFetching: false, api: { clientId: process.env.SPOTIFY_CLIENT as string, clientSecret: process.env.SPOTIFY_SECRET as string - } + }, }), - new SoundCloudPlugin(), - new YtDlpPlugin() ], - leaveOnEmpty: true, - emptyCooldown: 60, emitAddSongWhenCreatingQueue: false, joinNewVoiceChannel: false, }) -interface MyDependencies extends Dependencies { - '@sern/client': Singleton; - '@sern/logger': Singleton; -} -export const useContainer = Sern.makeDependencies({ - build: root => root - .add({ '@sern/client': single(client) }) - .upsert({ '@sern/logger': single(new DefaultLogging()) }) - .add({ 'distube': single(distube) }) +await makeDependencies(({ add }) => { + add('@sern/client', client); + add('@sern/publisher', deps => new Publisher(deps['@sern/modules'], + deps['@sern/emitter'], + deps['@sern/logger']!)); + add('distube', distube); }); Sern.init({ defaultPrefix: 'b!', commands: 'dist/commands', - events: 'dist/events', - containerConfig: { - get: useContainer - } + events: 'dist/events' }); -distube.on('error', async (channel, error) => { +distube.on(Events.ERROR, async (error, queue) => { + if (error.name === 'CANNOT_RESOVE_SONG') + return queue.textChannel!.send(`Cannot find the track!`) + function makeid(length: number) { var result = ''; var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; @@ -74,10 +69,10 @@ distube.on('error', async (channel, error) => { } const id = makeid(20) console.log(`Error with ID ${id}\n${error}`) - if (channel) await channel.send('An error ocurred.\nNotified correctly! ID: ' + '`' + id + '`') && await writetoDB({error: String(error), id: id}) - else await writetoDB({error: String(error), id: id}) + if (queue.textChannel) await queue.textChannel.send('An error ocurred.\nNotified correctly! ID: ' + '`' + id + '`') && await writetoDB({error: String(error), id: id}) + await writetoDB({error: String(error), id: id}) }) -distube.on("searchNoResult", (message, query) => message.channel.send(`No result found for ${query}!`)); +// distube.on(Events ., (queue, ) => queue.textChannel!.send(`No result found for ${query}!`)); -client.login(process.env.TOKEN); \ No newline at end of file +client.login(); \ No newline at end of file diff --git a/plugins/publish.ts b/src/plugins/publish.ts similarity index 100% rename from plugins/publish.ts rename to src/plugins/publish.ts diff --git a/schemas/distubeError.ts b/src/schemas/distubeError.ts similarity index 100% rename from schemas/distubeError.ts rename to src/schemas/distubeError.ts diff --git a/schemas/songsPlayed.ts b/src/schemas/songsPlayed.ts similarity index 100% rename from schemas/songsPlayed.ts rename to src/schemas/songsPlayed.ts diff --git a/tsconfig.json b/tsconfig.json index 4ac8eb9..06b7eb2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,103 +1,11 @@ { + "extends": "./.sern/tsconfig.json", "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "ESNext", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./dist", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "node", + "allowJs": true, + "skipDefaultLibCheck": true, + "skipLibCheck": true } } diff --git a/yarn.lock b/yarn.lock index 44697ca..5e07111 100644 --- a/yarn.lock +++ b/yarn.lock @@ -444,73 +444,55 @@ dependencies: tslib "^2.3.1" -"@discordjs/builders@^1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.6.4.tgz#d99f4e76684ef9b1c3b9e1c4d0bc17fafb19b960" - integrity sha512-ARFKvmAkLhfkQQiNxqi0YIWqwUExvBRtvdtMFVJXvJoibsGkFrB/DWTf9byU7BTVUfsmW8w7NM55tYXR5S/iSg== - dependencies: - "@discordjs/formatters" "^0.3.1" - "@discordjs/util" "^1.0.0" - "@sapphire/shapeshift" "^3.9.2" - discord-api-types "^0.37.50" +"@discordjs/builders@^1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.8.2.tgz#535d970331ee40f20dec9ef8079e43092f323ce9" + integrity sha512-6wvG3QaCjtMu0xnle4SoOIeFB4y6fKMN6WZfy3BMKJdQQtPLik8KGzDwBVL/+wTtcE/ZlFjgEk74GublyEVZ7g== + dependencies: + "@discordjs/formatters" "^0.4.0" + "@discordjs/util" "^1.1.0" + "@sapphire/shapeshift" "^3.9.7" + discord-api-types "0.37.83" fast-deep-equal "^3.1.3" - ts-mixer "^6.0.3" - tslib "^2.6.1" - -"@discordjs/collection@^1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-1.5.2.tgz#3ba34c216e920999b5075f8fdc62f70bb2a7e0fb" - integrity sha512-LDplPy8SPbc8MYkuCdnLRGWqygAX97E8NH7gA9uz+NZ/hXknUKJHuxsOmhC6pmHnF9Zmg0kvfwrDjGsRIljt9g== - -"@discordjs/formatters@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@discordjs/formatters/-/formatters-0.3.1.tgz#81393cf25e6e3223361061629752ea727475e842" - integrity sha512-M7X4IGiSeh4znwcRGcs+49B5tBkNDn4k5bmhxJDAUhRxRHTiFAOTVUNQ6yAKySu5jZTnCbSvTYHW3w0rAzV1MA== - dependencies: - discord-api-types "^0.37.41" - -"@discordjs/node-pre-gyp@^0.4.5": - version "0.4.5" - resolved "https://registry.yarnpkg.com/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.5.tgz#b33e38cedd821268c75923641783c68fcd1b55ae" - integrity sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ== - dependencies: - detect-libc "^2.0.0" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.7" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - -"@discordjs/opus@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@discordjs/opus/-/opus-0.9.0.tgz#bbd9f78bd6bc399885bcb48645c6d2b1f0efa0c5" - integrity sha512-NEE76A96FtQ5YuoAVlOlB3ryMPrkXbUCTQICHGKb8ShtjXyubGicjRMouHtP1RpuDdm16cDa+oI3aAMo1zQRUQ== + ts-mixer "^6.0.4" + tslib "^2.6.2" + +"@discordjs/collection@1.5.3": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-1.5.3.tgz#5a1250159ebfff9efa4f963cfa7e97f1b291be18" + integrity sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ== + +"@discordjs/collection@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-2.1.0.tgz#f327d944ab2dcf9a1f674470a481f78a120a5e3b" + integrity sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw== + +"@discordjs/formatters@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@discordjs/formatters/-/formatters-0.4.0.tgz#066a2c2163b26ac066e6f621f17445be9690c6a9" + integrity sha512-fJ06TLC1NiruF35470q3Nr1bi95BdvKFAF+T5bNfZJ4bNdqZ3VZ+Ttg6SThqTxm6qumSG3choxLBHMC69WXNXQ== dependencies: - "@discordjs/node-pre-gyp" "^0.4.5" - node-addon-api "^5.0.0" + discord-api-types "0.37.83" -"@discordjs/rest@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-2.0.0.tgz#d82d4035d93bc860f9f34b07af3178dc12a296c4" - integrity sha512-CW9ldfzsRzUbHcS4Oqu5+Moo+yrQ5qQ9groKNxPOzcoq2nuXa/fXOXkuQtQHcTeSVXsC9cmJ56M8gBDBUyLgGA== - dependencies: - "@discordjs/collection" "^1.5.2" - "@discordjs/util" "^1.0.0" - "@sapphire/async-queue" "^1.5.0" - "@sapphire/snowflake" "^3.5.1" - "@vladfrangu/async_event_emitter" "^2.2.2" - discord-api-types "^0.37.50" - magic-bytes.js "^1.0.15" - tslib "^2.6.1" - undici "^5.22.1" - -"@discordjs/util@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@discordjs/util/-/util-1.0.0.tgz#8b4d3756ee725f6fc1a4999834d6ca7c4a353837" - integrity sha512-U2Iiab0mo8cFe+o4ZY4GROoAetGjFYA1PhhxiXEW82LuPUjOU/seHZDtVjDpOf6n3rz4IRm84wNtgHdpqRY5CA== +"@discordjs/rest@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-2.3.0.tgz#06d37c7fb54a9be61134b5bbb201abd760343472" + integrity sha512-C1kAJK8aSYRv3ZwMG8cvrrW4GN0g5eMdP8AuN8ODH5DyOCbHgJspze1my3xHOAgwLJdKUbWNVyAeJ9cEdduqIg== + dependencies: + "@discordjs/collection" "^2.1.0" + "@discordjs/util" "^1.1.0" + "@sapphire/async-queue" "^1.5.2" + "@sapphire/snowflake" "^3.5.3" + "@vladfrangu/async_event_emitter" "^2.2.4" + discord-api-types "0.37.83" + magic-bytes.js "^1.10.0" + tslib "^2.6.2" + undici "6.13.0" + +"@discordjs/util@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@discordjs/util/-/util-1.1.0.tgz#dcffd2b61aab8eadd66bea67811bc34fc769bb2a" + integrity sha512-IndcI5hzlNZ7GS96RV3Xw1R2kaDuXEp7tRIy/KlhidpN/BQ1qh1NZt3377dMLTa44xDUNKT7hnXkA/oUAzD/lg== "@discordjs/voice@^0.15.0": version "0.15.0" @@ -523,71 +505,80 @@ tslib "^2.5.0" ws "^8.12.1" -"@discordjs/ws@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@discordjs/ws/-/ws-1.0.0.tgz#99b6aef63374ae406b481fae2e76a2666e95a1c6" - integrity sha512-POiImjuQJzwCxjJs4JCtDcTjzvjVsVQbnsaoW/F03yTVdrj/xSpmgv4383AnpNEYXI+CA6ggkz37phZDsZQ1NQ== - dependencies: - "@discordjs/collection" "^1.5.2" - "@discordjs/rest" "^2.0.0" - "@discordjs/util" "^1.0.0" - "@sapphire/async-queue" "^1.5.0" - "@types/ws" "^8.5.5" - "@vladfrangu/async_event_emitter" "^2.2.2" - discord-api-types "^0.37.50" - tslib "^2.6.1" - ws "^8.13.0" - -"@distube/soundcloud@^1.2.2": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@distube/soundcloud/-/soundcloud-1.3.3.tgz#73ae80f2235530ac20604b620513377a4005ad90" - integrity sha512-nrO0LEQMPfokUk+rogJX15KUy4ckAce13UPLzzpckKbfTDn7eh3wUVd/bCn7jhqIPS3NO5qlVN0d0Qq6UqPDZg== - dependencies: - soundcloud.ts "^0.5.2" - -"@distube/spotify@^1.4.2": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@distube/spotify/-/spotify-1.5.1.tgz#fdc05d426c8aa004e63e2666084379bb707645a5" - integrity sha512-89S2LaTefn88BoOs4Cy6mRC7mIgGjzc0d9/GKbyyDnWG7APSjC7JevJAC+R207btIl/+o/JozGeroIllJx1s3g== +"@discordjs/ws@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@discordjs/ws/-/ws-1.1.1.tgz#bffbfd46838258ab09054ed98ddef1a36f6507a3" + integrity sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA== + dependencies: + "@discordjs/collection" "^2.1.0" + "@discordjs/rest" "^2.3.0" + "@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.37.83" + tslib "^2.6.2" + ws "^8.16.0" + +"@distube/soundcloud@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@distube/soundcloud/-/soundcloud-2.0.3.tgz#16516a2541e0faef08d72f3c7c1f606e3a8fe599" + integrity sha512-Hm0xtSVJge67W1QdXcOBjJmVaQWR45S1BrPP8oXie4dgYPPasNksXAqEAo8KwsqFNCVwHkCQcgQlTcgU7LzYBg== + dependencies: + soundcloud.ts "^0.5.3" + +"@distube/spotify@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@distube/spotify/-/spotify-2.0.2.tgz#0ea4e986341851e3d788625fbbe24daba2b58ea2" + integrity sha512-rIncX05PhedMZuZyhgz7dt9y/nxir9KPmxUo6sBxfITQcztkXlG3r0EhKivp9+BRCQlEBO/GitRTHVwhRKtmLg== dependencies: - spotify-uri "^3.0.3" - spotify-url-info "^3.1.10" + spotify-uri "^4.1.0" + spotify-url-info "^3.2.15" spotify-web-api-node "^5.0.2" - undici "^5.14.0" + undici "^6.18.2" + +"@distube/youtube@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@distube/youtube/-/youtube-1.0.4.tgz#212d6cf467e3dd06d775ae943503ce62476a264a" + integrity sha512-7iQbtLSv4kpgiX2XtP28CB3z2kgaxw6F8+jNu1RztnW7ckPK3N/8Ayl1yh41YpbrRIHbNMzIVTwguYG0s2ZOuA== + dependencies: + "@distube/ytdl-core" "^4.14.2" + "@distube/ytpl" "^1.2.1" + "@distube/ytsr" "^2.0.4" -"@distube/yt-dlp@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@distube/yt-dlp/-/yt-dlp-1.1.3.tgz#ee9c28695f5427910619a6039ad63f1be23b78b4" - integrity sha512-kInFaIgNK7bhUJwY5o/ejBpwHdtLEH9l/GPBl9G7ddMKFYx7/MA5vKZ2F3oZQVMq9pzphPMRpSGi4UBT9L6O2g== +"@distube/yt-dlp@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@distube/yt-dlp/-/yt-dlp-2.0.1.tgz#b0c38261e9736432d03c939b1a18d3b2d90129cd" + integrity sha512-9c16lRU6jbyal38UUr5E36+2lp36s0DaJySOtFjuAPgaJkp2xvKvyd+s4rFZSqVQGJO5GOhBiH+HD115SKfKAw== dependencies: dargs "^7.0.0" - execa "^5.1.1" - mkdirp "^1.0.4" - undici "^5.7.0" + undici "^6.18.2" -"@distube/ytdl-core@^4.11.17": - version "4.11.17" - resolved "https://registry.yarnpkg.com/@distube/ytdl-core/-/ytdl-core-4.11.17.tgz#9dcfa87f929197f0f4782afdc40d9820f840f87c" - integrity sha512-XHRYxC9hR94GBxfy/SiGjnCbe7AuB1YqTAfD3CxOfdGkW5I2AXbDLHIVsjKLTUNHT3CkVvh3Q99SRM0T2cKdSw== +"@distube/ytdl-core@^4.14.2": + version "4.14.2" + resolved "https://registry.yarnpkg.com/@distube/ytdl-core/-/ytdl-core-4.14.2.tgz#810f9f410accf73b2b7f8f90cfb94371e94074b0" + integrity sha512-rRNl3Bxnw5MYn5LVblauBZVzumdcwwgFgWt8p3/41uGW3I2g2lPpWz8C9U5qH7BDbYPzk2P5SUjkld8NE/OUrQ== dependencies: + http-cookie-agent "^6.0.5" m3u8stream "^0.8.6" miniget "^4.2.3" - sax "^1.2.4" - undici "^5.22.1" + sax "^1.4.1" + tough-cookie "^4.1.4" + undici five -"@distube/ytpl@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@distube/ytpl/-/ytpl-1.1.2.tgz#3df331cd5ad05248f89f0cbd339370bf57b4103c" - integrity sha512-fN4+w94x9Jdr/mFat7F2y94hepnZGdZsBDrP28SR/EE+uc9mw9N7CcAzqhITuPBZNELpcz1NvH2vLWpIIgGA+g== +"@distube/ytpl@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@distube/ytpl/-/ytpl-1.2.1.tgz#bb682c97c97cfd1dea2509956c420b553f34fd85" + integrity sha512-cp9nDYyGTZ2DNHURQXS76ptKWijLMspoxJEj03i++9tJf0LFGTWkskL3sLwcY4qQPLXjlH9FAXwwpjVttdXvZQ== dependencies: - miniget "^4.2.1" + undici "^5.25.2" -"@distube/ytsr@^1.1.9": - version "1.1.9" - resolved "https://registry.yarnpkg.com/@distube/ytsr/-/ytsr-1.1.9.tgz#963ed3deaed4394e1e7190acdbe5382931ec1a21" - integrity sha512-rFSQo9wQ51mfJcazik5xzQcQpnUEZhaDA9W/5F/4s6I+1FNEjLEwkS5fFhf5qgg2G69EYy0kzcnivKiPwRF+4A== +"@distube/ytsr@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@distube/ytsr/-/ytsr-2.0.4.tgz#873b7ca767b5ff362bc0e136ae0d9ca5cbde8f7b" + integrity sha512-OiSWgARQ9LTj+dXt3jmMFzUH4l86VVCD4dVC4hEHNXdqp+DyU4QEzc+W6YY6//kWkvzTaUxOo7JUY7lBzwIF0A== dependencies: - miniget "^4.2.2" + undici "^6.18.2" "@esbuild/android-arm64@0.18.20": version "0.18.20" @@ -699,6 +690,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" @@ -752,32 +748,45 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@sapphire/async-queue@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.5.0.tgz#2f255a3f186635c4fb5a2381e375d3dfbc5312d8" - integrity sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA== +"@sapphire/async-queue@^1.5.2": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.5.3.tgz#03cd2a2f3665068f314736bdc56eee2025352422" + integrity sha512-x7zadcfJGxFka1Q3f8gCts1F0xMwCKbZweM85xECGI0hBTeIZJGGCrHgLggihBoprlQ/hBmDR5LKfIPqnmHM3w== -"@sapphire/shapeshift@^3.9.2": - version "3.9.2" - resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.9.2.tgz#a9c12cd51e1bc467619bb56df804450dd14871ac" - integrity sha512-YRbCXWy969oGIdqR/wha62eX8GNHsvyYi0Rfd4rNW6tSVVa8p0ELiMEuOH/k8rgtvRoM+EMV7Csqz77YdwiDpA== +"@sapphire/shapeshift@^3.9.7": + version "3.9.7" + resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.9.7.tgz#43e23243cac8a0c046bf1e73baf3dbf407d33a0c" + integrity sha512-4It2mxPSr4OGn4HSQWGmhFMsNFGfFVhWeRPCRwbH972Ek2pzfGRZtb0pJ4Ze6oIzcyh2jw7nUDa6qGlWofgd9g== dependencies: fast-deep-equal "^3.1.3" lodash "^4.17.21" -"@sapphire/snowflake@^3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.5.1.tgz#254521c188b49e8b2d4cc048b475fb2b38737fec" - integrity sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA== +"@sapphire/snowflake@3.5.3", "@sapphire/snowflake@^3.5.3": + version "3.5.3" + resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.5.3.tgz#0c102aa2ec5b34f806e9bc8625fc6a5e1d0a0c6a" + integrity sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ== -"@sern/handler@^2.6.1": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@sern/handler/-/handler-2.6.3.tgz#e1970739a6b12b0be4c4a689b3d99570cf141e57" - integrity sha512-qGLX9tCiZQWsd14zhJ5Gqc81RG3VFddBGhrDcXl9AodNt7Q+HQdNvIiagaH72BTS9L8L+64JlLOoq9S5jwgREA== +"@sern/handler@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@sern/handler/-/handler-4.0.1.tgz#1a457b38b4f84a3b37ecf8b0704dd1355bb09e50" + integrity sha512-4XO+Do8sXBHe02bJ8hRN7sZI/WaUU+GTCOf9R5kLNhh/YdoRievo6Fd6piJMCYXBoJxri64efafUQ1wVOxNh2g== dependencies: - iti "^0.6.0" + "@sern/ioc" "^1.1.0" + callsites "^3.1.0" + cron "^3.1.7" + deepmerge "^4.3.1" rxjs "^7.8.0" - ts-results-es "^3.6.0" + ts-results-es "^4.1.0" + +"@sern/ioc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sern/ioc/-/ioc-1.1.0.tgz#7a2a25d10c140e971a94086e12d3fd117a2942b6" + integrity sha512-ZjsVY7FKXdZJAxFVFdFuXyb/s2/KB6CtqwxvGoFHEyVt2m1Qq7gnRRaxlrGIX6M5v/WXHst2tQvxLKtj4kbMgg== + +"@sern/publisher@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@sern/publisher/-/publisher-1.1.2.tgz#7f6ca0ef65ae0aa1d33873e5febcb3112e302a80" + integrity sha512-1zh99JZykKUhqHhE75ZXfiLsBtf1WI+NnDCojv8UlpnGBEyzO8xyI1X7PNf6cPKRs4W9XqY3PqTJ+hrqzIsMkg== "@smithy/abort-controller@^2.0.4": version "2.0.4" @@ -1159,6 +1168,11 @@ resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== +"@types/luxon@~3.4.0": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-3.4.2.tgz#e4fc7214a420173cea47739c33cdf10874694db7" + integrity sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA== + "@types/mime@*": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" @@ -1219,34 +1233,36 @@ "@types/node" "*" "@types/webidl-conversions" "*" -"@types/ws@^8.5.4", "@types/ws@^8.5.5": +"@types/ws@^8.5.10": + version "8.5.12" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" + integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ== + dependencies: + "@types/node" "*" + +"@types/ws@^8.5.4": version "8.5.5" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== dependencies: "@types/node" "*" -"@vladfrangu/async_event_emitter@^2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.2.tgz#84c5a3f8d648842cec5cc649b88df599af32ed88" - integrity sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ== +"@vladfrangu/async_event_emitter@^2.2.4": + version "2.4.5" + resolved "https://registry.yarnpkg.com/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.5.tgz#7bc35026fdc3398a5e1aac801edd21b28cdf4cfa" + integrity sha512-J7T3gUr3Wz0l7Ni1f9upgBZ7+J22/Q1B7dl0X6fG+fTsD+H+31DIosMHj4Um1dWQwqbcQ3oQf+YS2foYkDc9cQ== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== +agent-base@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== dependencies: - debug "4" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + debug "^4.3.4" any-promise@^1.0.0: version "1.3.0" @@ -1261,19 +1277,6 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -1308,11 +1311,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - bowser@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" @@ -1355,13 +1353,6 @@ bundle-require@^4.0.0: dependencies: load-tsconfig "^0.2.3" -busboy@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - cac@^6.7.12: version "6.7.14" resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" @@ -1375,30 +1366,10 @@ call-bind@^1.0.0: function-bind "^1.1.1" get-intrinsic "^1.0.2" -cheerio-select@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" - integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== - dependencies: - boolbase "^1.0.0" - css-select "^5.1.0" - css-what "^6.1.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - -cheerio@^1.0.0-rc.9: - version "1.0.0-rc.12" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" - integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== - dependencies: - cheerio-select "^2.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.3" - domutils "^3.0.1" - htmlparser2 "^8.0.1" - parse5 "^7.0.0" - parse5-htmlparser2-tree-adapter "^7.0.0" +callsites@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== chokidar@^3.5.1, chokidar@^3.5.2: version "3.5.3" @@ -1415,16 +1386,6 @@ chokidar@^3.5.1, chokidar@^3.5.2: optionalDependencies: fsevents "~2.3.2" -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -color-support@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -1447,16 +1408,19 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -console-control-strings@^1.0.0, console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - cookiejar@^2.1.2: version "2.1.4" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== +cron@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/cron/-/cron-3.1.7.tgz#3423d618ba625e78458fff8cb67001672d49ba0d" + integrity sha512-tlBg7ARsAMQLzgwqVxy8AZl/qlTc5nibqYwtNGoCrd+cV+ugI+tvZC1oT/8dFH8W455YrywGykx/KMmAqOr7Jw== + dependencies: + "@types/luxon" "~3.4.0" + luxon "~3.4.0" + cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -1466,28 +1430,12 @@ cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - dargs@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -debug@4, debug@4.x, debug@^4.1.1, debug@^4.3.1: +debug@4.x, debug@^4.1.1, debug@^4.3.1: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -1501,21 +1449,23 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.3.4: + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + dependencies: + ms "2.1.2" + +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -detect-libc@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" - integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -1523,88 +1473,51 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -discord-api-types@^0.37.35, discord-api-types@^0.37.41, discord-api-types@^0.37.50: +discord-api-types@0.37.83: + version "0.37.83" + resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.83.tgz#a22a799729ceded8176ea747157837ddf4708b1f" + integrity sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA== + +discord-api-types@^0.37.35: version "0.37.53" resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.53.tgz#f56b3e7d497d204c7eb267f3322961caf2d8a4dd" integrity sha512-N6uUgv50OyP981Mfxrrt0uxcqiaNr0BDaQIoqfk+3zM2JpZtwU9v7ce1uaFAP53b2xSDvcbrk80Kneui6XJgGg== -discord.js@^14.8.0: - version "14.12.1" - resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.12.1.tgz#f3073d6fedaaf4948209311165c574dffa417df4" - integrity sha512-gGjhTkauIPgFXxpBl0UZgyehrKhDe90cIS8Hn1xFBYQ63EuUAkKoUqRNmc/pcla6DD16s4cUz5tAbdSpXivnxw== - dependencies: - "@discordjs/builders" "^1.6.4" - "@discordjs/collection" "^1.5.2" - "@discordjs/formatters" "^0.3.1" - "@discordjs/rest" "^2.0.0" - "@discordjs/util" "^1.0.0" - "@discordjs/ws" "^1.0.0" - "@sapphire/snowflake" "^3.5.1" - "@types/ws" "^8.5.5" - discord-api-types "^0.37.50" - fast-deep-equal "^3.1.3" - lodash.snakecase "^4.1.1" - tslib "^2.6.1" - undici "^5.22.1" - ws "^8.13.0" - -distube@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/distube/-/distube-4.0.6.tgz#9df6bb0902fe8f709613c867ebb025ba970ab272" - integrity sha512-FVnooKpiTkbd8rFXH5rdGABnZCuLDbOsXkj6UCvyateG5gNAI7xGmmcugV+3kC21rmQlgD8jOLMv+uugESgGKA== +discord.js@^14.15.3: + version "14.15.3" + resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.15.3.tgz#b2a67a1a4ef192be498fb8b6784224a42906f1be" + integrity sha512-/UJDQO10VuU6wQPglA4kz2bw2ngeeSbogiIPx/TsnctfzV/tNf+q+i1HlgtX1OGpeOBpJH9erZQNO5oRM2uAtQ== + dependencies: + "@discordjs/builders" "^1.8.2" + "@discordjs/collection" "1.5.3" + "@discordjs/formatters" "^0.4.0" + "@discordjs/rest" "^2.3.0" + "@discordjs/util" "^1.1.0" + "@discordjs/ws" "^1.1.1" + "@sapphire/snowflake" "3.5.3" + discord-api-types "0.37.83" + fast-deep-equal "3.1.3" + lodash.snakecase "4.1.1" + tslib "2.6.2" + undici "6.13.0" + +distube@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/distube/-/distube-5.0.2.tgz#3b2f0115bd65f29d57de051aaace6f9d90972e9b" + integrity sha512-VR+js/RS+sbxQIGaewh1jZtQDeSE1x05V6CFDb7/KATXSln+nUemIh/RTqKPuPeFJhcPcYGdZWPvEliDU/RS/g== dependencies: - "@distube/ytdl-core" "^4.11.17" - "@distube/ytpl" "^1.1.1" - "@distube/ytsr" "^1.1.9" - prism-media "npm:@distube/prism-media@latest" tiny-typed-emitter "^2.1.0" - tslib "^2.6.1" - undici "^5.22.1" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" + undici "^6.18.2" dotenv@^16.0.3: version "16.3.1" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -entities@^4.2.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +duplexer@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== esbuild@^0.18.2: version "0.18.20" @@ -1634,7 +1547,20 @@ esbuild@^0.18.2: "@esbuild/win32-ia32" "0.18.20" "@esbuild/win32-x64" "0.18.20" -execa@^5.0.0, execa@^5.1.1: +event-stream@=3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + integrity sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g== + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -1649,7 +1575,7 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -fast-deep-equal@^3.1.3: +fast-deep-equal@3.1.3, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -1719,12 +1645,10 @@ formidable@^1.2.2: resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.6.tgz#d2a51d60162bbc9b4a055d8457a7c75315d1a168" integrity sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ== -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g== fs.realpath@^1.0.0: version "1.0.0" @@ -1741,29 +1665,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - -genius-lyrics@^4.4.0: - version "4.4.3" - resolved "https://registry.yarnpkg.com/genius-lyrics/-/genius-lyrics-4.4.3.tgz#0b7e461d61a3bb058fdc238532d0875ab0d9c6f4" - integrity sha512-06L8GUg49FrUYEmSQvrSH74RH5S+qyerHwBpvk8vZLwWgpEw4mIWZDob5IpXT1ryhqazM9K6CXGNucKYPO8kng== - dependencies: - cheerio "^1.0.0-rc.9" - undici "^5.8.2" - get-intrinsic@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" @@ -1798,18 +1699,6 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - globby@^11.0.3: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -1837,11 +1726,6 @@ has-symbols@^1.0.3: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -1854,23 +1738,12 @@ himalaya@~1.1.0: resolved "https://registry.yarnpkg.com/himalaya/-/himalaya-1.1.0.tgz#31724ae9d35714cd7c6f4be94888953f3604606a" integrity sha512-LLase1dHCRMel68/HZTFft0N0wti0epHr3nNY7ynpLbyZpmrKMQ8YIpiOV77TM97cNpC8Wb2n6f66IRggwdWPw== -htmlparser2@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" - integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== +http-cookie-agent@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/http-cookie-agent/-/http-cookie-agent-6.0.5.tgz#23b490439464424a689d80ea7f3a560a4a893ab8" + integrity sha512-sfZ8fDgDP3B1YB+teqSnAK1aPgBu8reUUGxSsndP2XnYN6cM29EURXWXZqQQiaRdor3B4QjpkUNfv21syaO4DA== dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - entities "^4.4.0" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" + agent-base "^7.1.1" human-signals@^2.1.0: version "2.1.0" @@ -1922,11 +1795,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -1949,13 +1817,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -iti@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/iti/-/iti-0.6.0.tgz#e763b4089fd8e5cbd1eb753a9d93e80ad11f3d9b" - integrity sha512-JqujcnAIF3pmzitjbT3acc0LkordU6oHBDvWeT6a25wvEVBddFX3DFx/p6YBwGX1TTFsyLgVZtwhGOknthC96A== - dependencies: - utility-types "^3.10.0" - joycon@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -1993,7 +1854,7 @@ load-tsconfig@^0.2.3: resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1" integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== -lodash.snakecase@^4.1.1: +lodash.snakecase@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== @@ -2015,6 +1876,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +luxon@~3.4.0: + version "3.4.4" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" + integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== + m3u8stream@^0.8.6: version "0.8.6" resolved "https://registry.yarnpkg.com/m3u8stream/-/m3u8stream-0.8.6.tgz#0d6de4ce8ee69731734e6b616e7b05dd9d9a55b1" @@ -2023,17 +1889,15 @@ m3u8stream@^0.8.6: miniget "^4.2.2" sax "^1.2.4" -magic-bytes.js@^1.0.15: - version "1.0.15" - resolved "https://registry.yarnpkg.com/magic-bytes.js/-/magic-bytes.js-1.0.15.tgz#3c9d2b7d45bb8432482646b5f74bbf6725274616" - integrity sha512-bpRmwbRHqongRhA+mXzbLWjVy7ylqmfMBYaQkSs6pac0z6hBTvsgrH0r4FBYd/UYVJBmS6Rp/O+oCCQVLzKV1g== +magic-bytes.js@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/magic-bytes.js/-/magic-bytes.js-1.10.0.tgz#c41cf4bc2f802992b05e64962411c9dd44fdef92" + integrity sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ== -make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + integrity sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g== memory-pager@^1.0.2: version "1.5.0" @@ -2085,43 +1949,18 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -miniget@^4.2.1, miniget@^4.2.2, miniget@^4.2.3: +miniget@^4.2.2, miniget@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/miniget/-/miniget-4.2.3.tgz#3707a24c7c11c25d359473291638ab28aab349bd" integrity sha512-SjbDPDICJ1zT+ZvQwK0hUcRY4wxlhhNpHL9nJOB2MEAXRGagTljsO8MEDzQMTFf0Q8g4QNi8P9lEm/g7e+qgzA== -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minipass@^3.0.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - mongodb-connection-string-url@^2.5.4: version "2.6.0" resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz#57901bf352372abdde812c81be47b75c6b2ec5cf" @@ -2186,17 +2025,10 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -node-addon-api@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" - integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== - -node-fetch@^2.6.7: - version "2.6.12" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" - integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== - dependencies: - whatwg-url "^5.0.0" +node-cleanup@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" + integrity sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw== nodemon@^2.0.20: version "2.0.22" @@ -2214,13 +2046,6 @@ nodemon@^2.0.20: touch "^3.1.0" undefsafe "^2.0.5" -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - nopt@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -2240,24 +2065,7 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -2281,20 +2089,10 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" - integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== - dependencies: - domhandler "^5.0.2" - parse5 "^7.0.0" - -parse5@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" +opusscript@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/opusscript/-/opusscript-0.1.1.tgz#322c126b753ddbf9b0b209d0060a432805b6a34d" + integrity sha512-mL0fZZOUnXdZ78woRXp18lApwpp0lF5tozJOD1Wut0dgrA9WuQTgSels/CSmFleaAZrJi/nci5KOVtbuxeWoQA== path-is-absolute@^1.0.0: version "1.0.1" @@ -2311,6 +2109,13 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== + dependencies: + through "~2.3" + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -2334,16 +2139,23 @@ prism-media@^1.3.5: resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-1.3.5.tgz#ea1533229f304a1b774b158de40e98c765db0aa6" integrity sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA== -"prism-media@npm:@distube/prism-media@latest": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@distube/prism-media/-/prism-media-1.0.0.tgz#96fefb15c9e748bbed4371aefd07e2252b40e39d" - integrity sha512-UII2uqFH95uMPg4Z9yOJU3KJpb5vnrELBFXQYFhlBlk3GZ5wwDtt9fmR35PcqbqtnYGdtmUCCMucaSUeVlWrmw== - proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +ps-tree@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd" + integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA== + dependencies: + event-stream "=3.3.4" + +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + pstree.remy@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" @@ -2361,6 +2173,11 @@ qs@^6.9.4: dependencies: side-channel "^1.0.4" +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -2382,6 +2199,11 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" @@ -2392,13 +2214,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - rollup@^3.2.5: version "3.28.0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.0.tgz#a3c70004b01934760c0cb8df717c7a1d932389a2" @@ -2437,17 +2252,17 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +sax@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + semver@^5.7.1: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.0: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.2, semver@^7.3.5: +semver@^7.3.2: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -2459,11 +2274,6 @@ semver@~7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -2490,7 +2300,7 @@ sift@16.0.1: resolved "https://registry.yarnpkg.com/sift/-/sift-16.0.1.tgz#e9c2ccc72191585008cf3e36fc447b2d2633a053" integrity sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ== -signal-exit@^3.0.0, signal-exit@^3.0.3: +signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -2520,12 +2330,12 @@ socks@^2.7.1: ip "^2.0.0" smart-buffer "^4.2.0" -soundcloud.ts@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/soundcloud.ts/-/soundcloud.ts-0.5.2.tgz#60660b889afb31c0e504f089002228fbf576b298" - integrity sha512-/pc72HWYJpSpup+mJBE9pT31JsrMcxJGBlip3Vem+0Fsscg98xh1/7I2nCpAKuMAeV6MVyrisI8TfjO6T7qKJg== +soundcloud.ts@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/soundcloud.ts/-/soundcloud.ts-0.5.3.tgz#598daf40e1c2654408a7072fdea8f7f77778ba74" + integrity sha512-ZMH6gG5e7WqJrIYXTv14MNArPhx3WzfrL1Ij/2qBDW8mVbNJc8lxOQOc4kLvrfvDl5TkCdZa7zXOiwD6ESXq+g== dependencies: - undici "^5.22.1" + undici "^6.17.0" source-map@0.8.0-beta.0: version "0.8.0-beta.0" @@ -2541,23 +2351,25 @@ sparse-bitfield@^3.0.3: dependencies: memory-pager "^1.0.2" -spotify-uri@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/spotify-uri/-/spotify-uri-3.0.4.tgz#3925951f03043bbb344219b471e37bc911ae726d" - integrity sha512-wtofZNzMjPXR1KD2/gw8F/7ng1QwxpfFbrVgcRaAh0oSJ6ZGC5ln+IBptIRuti1dYGOxJqEIvDc88ctLvTSWiQ== +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA== + dependencies: + through "2" -spotify-uri@~4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/spotify-uri/-/spotify-uri-4.0.0.tgz#a56d034146726d4f43630151a497efbf4c4230db" - integrity sha512-ZAJKcnfx73glWG+3SCDRvW4nkVMzA2hqZwJtSDZ/o87EoGawh/CZ8YkqZIoVcLkg94suicEa/ZOiBFSz1MJ6Pg== +spotify-uri@^4.1.0, spotify-uri@~4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/spotify-uri/-/spotify-uri-4.1.0.tgz#d1286b1922055e2b0e37b773ef2bff2c40e71010" + integrity sha512-SFpBt8pQqO7DOFBsdUjv3GxGZAKYP7UqcTflfE7h3YL1lynl/6Motq7NERoJJR8eF9kXQRSpcdMmV5ou84rbng== -spotify-url-info@^3.1.10: - version "3.2.6" - resolved "https://registry.yarnpkg.com/spotify-url-info/-/spotify-url-info-3.2.6.tgz#e7838372368488897ade3d4e2f4cab6ead0971b8" - integrity sha512-AOGU4uyT0FqyEXbyvZc+ZShnTGBY1eMd50BBZBPfiXPT4ihuzmxAmkWj9VzHT9NIjX7MtVDrszATllR8+WeFkw== +spotify-url-info@^3.2.15: + version "3.2.16" + resolved "https://registry.yarnpkg.com/spotify-url-info/-/spotify-url-info-3.2.16.tgz#7c14f6a03aff83407607d4d62a2771d14cce0431" + integrity sha512-szXt1PLt8lqhaXsTNYH7zPd+EBj6Ha0xtqitqicCijGX6x/jYvn6wgGaK2F1OQfJzx8lxDNfZbtarn4DxzaZ2Q== dependencies: himalaya "~1.1.0" - spotify-uri "~4.0.0" + spotify-uri "~4.1.0" spotify-web-api-node@^5.0.2: version "5.0.2" @@ -2566,19 +2378,17 @@ spotify-web-api-node@^5.0.2: dependencies: superagent "^6.1.0" -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw== dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" + duplexer "~0.1.1" + +string-argv@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== string_decoder@^1.1.1: version "1.3.0" @@ -2587,13 +2397,6 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -2641,18 +2444,6 @@ supports-color@^5.5.0: dependencies: has-flag "^3.0.0" -tar@^6.1.11: - version "6.1.15" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" - integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -2667,6 +2458,11 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +through@2, through@~2.3, through@~2.3.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + tiny-typed-emitter@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" @@ -2686,6 +2482,16 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" +tough-cookie@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -2700,11 +2506,6 @@ tr46@^3.0.0: dependencies: punycode "^2.1.1" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - tree-kill@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" @@ -2715,26 +2516,46 @@ ts-interface-checker@^0.1.9: resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -ts-mixer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.3.tgz#69bd50f406ff39daa369885b16c77a6194c7cae6" - integrity sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ== +ts-mixer@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.4.tgz#1da39ceabc09d947a82140d9f09db0f84919ca28" + integrity sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA== + +ts-results-es@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/ts-results-es/-/ts-results-es-4.2.0.tgz#5cdb5746f50577465421278407d776c66a18cfd2" + integrity sha512-GfpRk+qvHxa/6gADH8WMN/jXvs5oHYbKtMQc6X9L3VhToy5Lri3iQowyYSytaRcvPDiTT2z3vurzQZXFQFXKRA== + +tsc-watch@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tsc-watch/-/tsc-watch-6.2.0.tgz#4b191c36c6ed24c2bf6e721013af0825cd73d217" + integrity sha512-2LBhf9kjKXnz7KQ/puLHlozMzzUNHAdYBNMkg3eksQJ9GBAgMg8czznM83T5PmsoUvDnXzfIeQn2lNcIYDr8LA== + dependencies: + cross-spawn "^7.0.3" + node-cleanup "^2.1.2" + ps-tree "^1.2.0" + string-argv "^0.3.1" -ts-results-es@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/ts-results-es/-/ts-results-es-3.6.1.tgz#2249aca8690b3b68445873c2a3da9517db98a16b" - integrity sha512-J1i9VBJd6PV+W9ZYJLNGiwzEW34f+dbrB8GzL5VEUdDEWQqU89DtSx4oeX01h5e+GP1xI4e7CRn7fbYeNKdZOg== +tslib@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tslib@^1.11.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.3.1, tslib@^2.5.0, tslib@^2.6.1: +tslib@^2.1.0, tslib@^2.3.1, tslib@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== +tslib@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + tsup@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/tsup/-/tsup-7.2.0.tgz#bb24c0d5e436477900c712e42adc67200607303c" @@ -2755,43 +2576,56 @@ tsup@^7.2.0: sucrase "^3.20.3" tree-kill "^1.2.2" -typescript@^4.6.3: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@^5.5.4: + version "5.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== undefsafe@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== -undici@^5.14.0, undici@^5.22.1, undici@^5.7.0, undici@^5.8.2: - version "5.23.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.23.0.tgz#e7bdb0ed42cebe7b7aca87ced53e6eaafb8f8ca0" - integrity sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg== +undici@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-6.13.0.tgz#7edbf4b7f3aac5f8a681d515151bf55cb3589d72" + integrity sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw== + +undici@^5.25.2, undici@five: + version "5.28.4" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" + integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== + dependencies: + "@fastify/busboy" "^2.0.0" + +undici@^6.17.0, undici@^6.18.2: + version "6.19.5" + resolved "https://registry.yarnpkg.com/undici/-/undici-6.19.5.tgz#5829101361b583b53206e81579f4df71c56d6be8" + integrity sha512-LryC15SWzqQsREHIOUybavaIHF5IoL0dJ9aWWxL/PgT1KfqAW5225FZpDUFlt9xiDMS2/S7DOKhFWA7RLksWdg== + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: - busboy "^1.6.0" + querystringify "^2.1.1" + requires-port "^1.0.0" util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -utility-types@^3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" - integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== - uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -2810,14 +2644,6 @@ whatwg-url@^11.0.0: tr46 "^3.0.0" webidl-conversions "^7.0.0" -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - whatwg-url@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" @@ -2834,23 +2660,21 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@^8.12.1, ws@^8.13.0: +ws@^8.12.1: version "8.13.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +ws@^8.16.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"