From 6aa637d06331abacd7175c8006d916507dc15838 Mon Sep 17 00:00:00 2001 From: HunteRoi Date: Wed, 24 Sep 2025 00:38:34 +0200 Subject: [PATCH 1/4] Upgrade dependencies and adapt code Upgrade DiscordJS, discord-verification, discord-selfrole and discord-temp-channels then adapt code accordingly (ephemeral messages are marked with the flags property, ready event becomes clientReady). Drop SendGrid in favor of SMTP2Go. Remove "pin" command. --- #.env.development | 2 +- README.md | 2 +- config.development.json | 4 +- config.production.json | 4 +- package.json | 24 +- src/commands/admins/announce.ts | 3 +- src/commands/others/link.ts | 5 +- src/commands/others/pin.ts | 79 -- src/commands/owner/eval.ts | 3 +- src/commands/owner/reload.ts | 5 +- src/commands/owner/restart.ts | 5 +- src/commands/utility/mdn.ts | 2 +- src/config.ts | 2 +- src/datadrop.ts | 4 +- src/events/{ready.ts => clientReady.ts} | 4 +- src/events/interactionCreate.ts | 15 +- src/models/Configuration.ts | 4 +- src/services/CommandHandler.ts | 12 +- yarn.lock | 1201 ++++++++++++++--------- 19 files changed, 799 insertions(+), 581 deletions(-) delete mode 100644 src/commands/others/pin.ts rename src/events/{ready.ts => clientReady.ts} (97%) diff --git a/#.env.development b/#.env.development index 6a268a1..d5ea493 100644 --- a/#.env.development +++ b/#.env.development @@ -3,4 +3,4 @@ POSTGRES_PASSWORD= DATABASE_PORT=5432 DATABASE_HOST=localhost DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${POSTGRES_DB}?schema=public -SENDGRID_API_KEY= +SMTP2GO_API_KEY= diff --git a/README.md b/README.md index 9829f3b..b93a535 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ POSTGRES_PASSWORD= DATABASE_PORT=5432 DATABASE_HOST=localhost DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${POSTGRES_DB}?schema=public -SENDGRID_API_KEY= +SMTP2GO_API_KEY= ``` An empty copy of this file is available as [#.env.development](./#.env.development). diff --git a/config.development.json b/config.development.json index 9377126..ca091ad 100644 --- a/config.development.json +++ b/config.development.json @@ -145,8 +145,8 @@ }, "communicationServiceOptions": { "mailData": { - "from": "mdpdevti@henallux.be", - "templateId": "d-c8892944b4f2417bafece2d7a5b73d1f" + "from": "fctienoreplydiscord@henallux.be", + "templateId": "9131196" } } } diff --git a/config.production.json b/config.production.json index 4eeb34d..c8ddd34 100644 --- a/config.production.json +++ b/config.production.json @@ -157,8 +157,8 @@ }, "communicationServiceOptions": { "mailData": { - "from": "mdpdevti@henallux.be", - "templateId": "d-ae8dfdd7cc9c49f1af6e016ecbb4d856" + "from": "fctienoreplydiscord@henallux.be", + "templateId": "9131196" } } } diff --git a/package.json b/package.json index 26a9b62..0fa5961 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "datadrop", - "version": "2.1.0", + "version": "2.1.1", "type": "module", "main": "./build/index.js", "scripts": { @@ -23,20 +23,20 @@ }, "homepage": "https://github.com/section-IG/DataDrop#readme", "dependencies": { - "@dotenvx/dotenvx": "^1.21.1", + "@dotenvx/dotenvx": "^1.51.0", "@hunteroi/advanced-logger": "^0.2.0", - "@hunteroi/discord-selfrole": "^4.0.4", - "@hunteroi/discord-temp-channels": "^3.3.0", - "@hunteroi/discord-verification": "^1.5.0", - "@sendgrid/mail": "8.1.3", - "discord-sync-commands": "^0.3.0", - "discord.js": "^14.16.2", + "@hunteroi/discord-selfrole": "^4.0.5", + "@hunteroi/discord-temp-channels": "^3.3.1", + "@hunteroi/discord-verification": "^1.5.2", + "smtp2go-nodejs": "^0.3.5", + "discord-sync-commands": "^0.5.2", + "discord.js": "^14.22.1", "ts-postgres": "1.3.0" }, "devDependencies": { - "@biomejs/biome": "^1.9.4", - "@types/node": "^20.12.7", - "tsx": "^4.19.2", - "typescript": "^5.4.4" + "@biomejs/biome": "^2.2.4", + "@types/node": "^24.5.2", + "tsx": "^4.20.5", + "typescript": "^5.9.2" } } diff --git a/src/commands/admins/announce.ts b/src/commands/admins/announce.ts index 4dbeb43..fcd9cc1 100644 --- a/src/commands/admins/announce.ts +++ b/src/commands/admins/announce.ts @@ -7,6 +7,7 @@ import { Colors, EmbedBuilder, InteractionContextType, + MessageFlags, PermissionFlagsBits, SlashCommandBuilder, type TextChannel, @@ -63,7 +64,7 @@ export default { "Ceci est une preview de l'annonce. Voulez-vous l'envoyer?", components: [row], embeds: [embed], - ephemeral: true, + flags: MessageFlags.Ephemeral }); try { diff --git a/src/commands/others/link.ts b/src/commands/others/link.ts index 87cf6ad..0818439 100644 --- a/src/commands/others/link.ts +++ b/src/commands/others/link.ts @@ -3,6 +3,7 @@ import { ButtonBuilder, ButtonStyle, type ChatInputCommandInteraction, + MessageFlags, SlashCommandBuilder, } from "discord.js"; @@ -25,7 +26,7 @@ export default { await interaction.reply({ content: "❌ **Oups!** - Tu as déjà lié ton compte Hénallux avec ton compte Discord!", - ephemeral: true, + flags: MessageFlags.Ephemeral, }); return; } @@ -43,7 +44,7 @@ export default { await interaction.reply({ content: `Pour lier ton compte, rien de plus simple! Il te suffit de cliquer sur le bouton ci-dessous et remplir le formulaire! Tu recevras un code par email qu'il faudra envoyer ici ensuite!\n⚠️ Nous conservons les informations soumises après utilisation. Si tu soumets tes informations, tu acceptes que celles-ci nous soient transmises et que nous les conservions durant toute la durée de ta présence sur le serveur!`, components: [buttonComponent], - ephemeral: true, + flags: MessageFlags.Ephemeral, }); }, } as Command; diff --git a/src/commands/others/pin.ts b/src/commands/others/pin.ts deleted file mode 100644 index 37b28be..0000000 --- a/src/commands/others/pin.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { - ApplicationCommandType, - ContextMenuCommandBuilder, - InteractionContextType, - type MessageContextMenuCommandInteraction, -} from "discord.js"; - -import type { DatadropClient } from "../../datadrop.js"; -import type { Command } from "../../models/Command.js"; - -export default { - data: new ContextMenuCommandBuilder() - .setName("(Dés)Épingler le message") - .setType(ApplicationCommandType.Message) - .setContexts(InteractionContextType.Guild), - - async execute( - client: DatadropClient, - interaction: MessageContextMenuCommandInteraction, - ) { - if (!interaction.inGuild()) return; - - const member = await interaction.guild?.members.fetch( - interaction.user.id, - ); - if (!member) { - await interaction.reply({ - content: - "❌ **Oups!** - Impossible de récupérer ton identifiant Discord!", - ephemeral: true, - }); - return; - } - - const { - communitymanagerRoleid, - adminRoleid, - delegatesRoleid, - professorRoleid, - } = client.config; - - if ( - ![ - communitymanagerRoleid, - adminRoleid, - delegatesRoleid, - professorRoleid, - ].some((r) => member.roles.cache.has(r)) - ) { - await interaction.reply({ - content: - "❌ **Oups!** - Tu n'es pas membre d'un des rôles nécessaires et n'es donc pas éligible à cette commande.", - ephemeral: true, - }); - client.logger.info( - `Le membre <${member.displayName}> (${member.id}) a tenté d'épingler/désépingler un message mais n'a pas les droits nécessaires.`, - ); - return; - } - - const referencedMessage = interaction.targetMessage; - if (referencedMessage.pinned) { - await referencedMessage.unpin(); - await interaction.reply({ - content: "✅ Message désépinglé!", - ephemeral: true, - }); - } else { - await referencedMessage.pin(); - await interaction.reply({ - content: "✅ Message épinglé!", - ephemeral: true, - }); - } - client.logger.info( - `Le membre <${member.displayName}> (${member.id}) a épinglé/désépinglé le message <${referencedMessage.id}>.`, - ); - }, -} as Command; diff --git a/src/commands/owner/eval.ts b/src/commands/owner/eval.ts index ab808e2..ed04909 100644 --- a/src/commands/owner/eval.ts +++ b/src/commands/owner/eval.ts @@ -1,5 +1,6 @@ import { type ChatInputCommandInteraction, + MessageFlags, PermissionFlagsBits, SlashCommandBuilder, codeBlock, @@ -32,7 +33,7 @@ export default { await interaction.reply({ content: "❌ **Oups!** - Vous n'êtes pas autorisé à utiliser cette commande.", - ephemeral: true, + flags: MessageFlags.Ephemeral, }); return; } diff --git a/src/commands/owner/reload.ts b/src/commands/owner/reload.ts index 86a0d84..84db3c5 100644 --- a/src/commands/owner/reload.ts +++ b/src/commands/owner/reload.ts @@ -1,5 +1,6 @@ import { type ChatInputCommandInteraction, + MessageFlags, PermissionFlagsBits, SlashCommandBuilder, } from "discord.js"; @@ -24,7 +25,7 @@ export default { await interaction.reply({ content: "❌ **Oups!** - Vous n'êtes pas autorisé à utiliser cette commande.", - ephemeral: true, + flags: MessageFlags.Ephemeral, }); return; } @@ -33,7 +34,7 @@ export default { await client.reloadConfig(); await interaction.reply({ content: "Rechargement de la configuration en cours... 👌", - ephemeral: true, + flags: MessageFlags.Ephemeral, }); }, } as Command; diff --git a/src/commands/owner/restart.ts b/src/commands/owner/restart.ts index aaa8110..ceec82e 100644 --- a/src/commands/owner/restart.ts +++ b/src/commands/owner/restart.ts @@ -1,5 +1,6 @@ import { type ChatInputCommandInteraction, + MessageFlags, PermissionFlagsBits, SlashCommandBuilder, } from "discord.js"; @@ -24,7 +25,7 @@ export default { await interaction.reply({ content: "❌ **Oups!** - Vous n'êtes pas autorisé à utiliser cette commande.", - ephemeral: true, + flags: MessageFlags.Ephemeral, }); return; } @@ -32,7 +33,7 @@ export default { client.logger.info("Arrêt en cours..."); await interaction.reply({ content: "Arrêt en cours... 👌", - ephemeral: true, + flags: MessageFlags.Ephemeral, }); process.exit(); }, diff --git a/src/commands/utility/mdn.ts b/src/commands/utility/mdn.ts index a2e853e..f32e455 100644 --- a/src/commands/utility/mdn.ts +++ b/src/commands/utility/mdn.ts @@ -134,7 +134,7 @@ export default { client: DatadropClient, interaction: ChatInputCommandInteraction, ) { - await interaction.deferReply({ ephemeral: false }); + await interaction.deferReply(); const cleanQuery = interaction.options.getString("query", true).trim(); const searchUrl = `${MDN_URL}${cleanQuery}/index.json`; diff --git a/src/config.ts b/src/config.ts index b0f9515..750f953 100644 --- a/src/config.ts +++ b/src/config.ts @@ -52,7 +52,7 @@ export async function readConfig(): Promise { version: `${environment}-v${packageInfo.version}`, }; config.communicationServiceOptions.apiKey = - process.env.SENDGRID_API_KEY; + process.env.SMTP2GO_API_KEY; return config; } catch (err: unknown) { diff --git a/src/datadrop.ts b/src/datadrop.ts index d660d8f..3cd8c7a 100644 --- a/src/datadrop.ts +++ b/src/datadrop.ts @@ -34,7 +34,7 @@ import { VerificationManager, VerificationManagerEvents, } from "@hunteroi/discord-verification"; -import { SendGridService } from "@hunteroi/discord-verification/lib/services/SendGridService.js"; +import { SMTP2GoService } from "@hunteroi/discord-verification/lib/services/SMTP2GoService.js"; import { readConfig } from "./config.js"; import { getErrorMessage, readFilesFrom } from "./helpers.js"; @@ -75,7 +75,7 @@ export class DatadropClient extends Client { this.tempChannelsManager = new TempChannelsManager(this); this.database = new PostgresDatabaseService(this.logger); - const communicationService = new SendGridService( + const communicationService = new SMTP2GoService( config.communicationServiceOptions, ); this.verificationManager = new VerificationManager( diff --git a/src/events/ready.ts b/src/events/clientReady.ts similarity index 97% rename from src/events/ready.ts rename to src/events/clientReady.ts index 034e605..9a1bb0a 100644 --- a/src/events/ready.ts +++ b/src/events/clientReady.ts @@ -9,10 +9,10 @@ import type { Event } from "../models/Event.js"; export default { name: Events.ClientReady, once: true, - execute: ready, + execute: clientReady, } as Event; -async function ready(client: DatadropClient) { +async function clientReady(client: DatadropClient) { const { config } = client; await registerRolesChannels(client, config); await registerDynamicChannels(client, config); diff --git a/src/events/interactionCreate.ts b/src/events/interactionCreate.ts index 695911c..e4ecf85 100644 --- a/src/events/interactionCreate.ts +++ b/src/events/interactionCreate.ts @@ -7,7 +7,10 @@ import { type ChatInputCommandInteraction, Events, type Interaction, + InteractionEditReplyOptions, + InteractionReplyOptions, type MessageContextMenuCommandInteraction, + MessageFlags, ModalBuilder, type ModalSubmitInteraction, type RepliableInteraction, @@ -45,7 +48,7 @@ async function interactionCreate( ) { await interaction.reply({ content: "Ce message ne t'était assurément pas destiné!", - ephemeral: true, + flags: MessageFlags.Ephemeral, }); } } @@ -75,7 +78,7 @@ async function handleVerificationModalSubmission( client: DatadropClient, interaction: ModalSubmitInteraction, ) { - await interaction.deferReply({ ephemeral: true }); + await interaction.deferReply({ flags: MessageFlags.Ephemeral }); if (await isAlreadyVerified(client, interaction)) return; @@ -112,13 +115,13 @@ async function isAlreadyVerified( const userFromDatabase = await client.database.read(interaction.user.id); if (userFromDatabase?.activatedCode) { if (interaction.isRepliable()) { - const replyOptions = { + const replyOptions: InteractionReplyOptions = { content: "Tu as déjà lié ton compte Hénallux avec ton compte Discord!", - ephemeral: true, + flags: MessageFlags.Ephemeral, }; if (interaction.deferred) { - await interaction.editReply(replyOptions); + await interaction.editReply(replyOptions as InteractionEditReplyOptions); } else if (interaction.replied) { await interaction.followUp(replyOptions); } else { @@ -223,7 +226,7 @@ async function showVerificationButton( .setCustomId(`lacb${interaction.user.id}`) .setDisabled( content.includes(client.errorMessage) || - content.includes(client.activeAccountMessage), + content.includes(client.activeAccountMessage), ); const buttonComponent = new ActionRowBuilder().addComponents( linkAccountButton, diff --git a/src/models/Configuration.ts b/src/models/Configuration.ts index 5c70eb2..7cced6c 100644 --- a/src/models/Configuration.ts +++ b/src/models/Configuration.ts @@ -1,6 +1,6 @@ import type { Snowflake } from "discord.js"; -import type { SendGridOptions } from "@hunteroi/discord-verification/lib/services/SendGridService.js"; +import type { SMTP2GoOptions } from "@hunteroi/discord-verification/lib/services/SMTP2GoService.js"; export interface SpecialRoleConfiguration { roleid: Snowflake; @@ -59,5 +59,5 @@ export interface Configuration { announce: AnnounceConfiguration; - communicationServiceOptions: SendGridOptions; + communicationServiceOptions: SMTP2GoOptions; } diff --git a/src/services/CommandHandler.ts b/src/services/CommandHandler.ts index c864348..46e3a37 100644 --- a/src/services/CommandHandler.ts +++ b/src/services/CommandHandler.ts @@ -2,7 +2,9 @@ import { type AutocompleteInteraction, ChannelType, type ChatInputCommandInteraction, + InteractionReplyOptions, type MessageContextMenuCommandInteraction, + MessageFlags, } from "discord.js"; import type { DatadropClient } from "../datadrop.js"; @@ -68,7 +70,7 @@ export class CommandHandler< if ("reply" in interaction) { await interaction.reply({ content: "❌ **Oups!** - Cette commande n'existe pas.", - ephemeral: true, + flags: MessageFlags.Ephemeral, }); } } @@ -77,7 +79,7 @@ export class CommandHandler< if ("reply" in interaction) { await interaction.reply({ content: error, - ephemeral: true, + flags: MessageFlags.Ephemeral, }); } } @@ -109,12 +111,12 @@ export class CommandHandler< return; } - const replyOptions = { + const replyOptions: InteractionReplyOptions = { content: "❌ **Oups!** - Une erreur est survenue en essayant cette commande. Reporte-le à un membre du Staff s'il te plaît!", - ephemeral: true, + flags: MessageFlags.Ephemeral, }; if (interaction.deferred) { - await interaction.editReply(replyOptions.content); + await interaction.editReply(replyOptions.content!); } else if (interaction.replied) { await interaction.followUp(replyOptions); } else { diff --git a/yarn.lock b/yarn.lock index 0442ad4..9172917 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,80 +2,203 @@ # yarn lockfile v1 -"@biomejs/biome@^1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.9.4.tgz#89766281cbc3a0aae865a7ff13d6aaffea2842bf" - integrity sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog== +"@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + dependencies: + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.4.tgz#96fdf1af1b8859c8474ab39c295312bfb7c24b04" + integrity sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw== + +"@babel/generator@^7.28.3": + version "7.28.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" + integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== + dependencies: + "@babel/parser" "^7.28.3" + "@babel/types" "^7.28.2" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753" + integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg== + dependencies: + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + debug "^4.4.1" + lodash.debounce "^4.0.8" + resolve "^1.22.10" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-plugin-utils@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" + integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== + dependencies: + "@babel/types" "^7.28.4" + +"@babel/plugin-transform-runtime@^7.26.10": + version "7.28.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz#f5990a1b2d2bde950ed493915e0719841c8d0eaa" + integrity sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + babel-plugin-polyfill-corejs2 "^0.4.14" + babel-plugin-polyfill-corejs3 "^0.13.0" + babel-plugin-polyfill-regenerator "^0.6.5" + semver "^6.3.1" + +"@babel/runtime@^7.27.0": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" + integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== + +"@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.27.1": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.4.tgz#8d456101b96ab175d487249f60680221692b958b" + integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.3" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.4" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.4" + debug "^4.3.1" + +"@babel/types@^7.27.1", "@babel/types@^7.28.2", "@babel/types@^7.28.4": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" + integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + +"@biomejs/biome@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-2.2.4.tgz#184e4b83f89bd0d4151682a5aa3840df37748e17" + integrity sha512-TBHU5bUy/Ok6m8c0y3pZiuO/BZoY/OcGxoLlrfQof5s8ISVwbVBdFINPQZyFfKwil8XibYWb7JMwnT8wT4WVPg== optionalDependencies: - "@biomejs/cli-darwin-arm64" "1.9.4" - "@biomejs/cli-darwin-x64" "1.9.4" - "@biomejs/cli-linux-arm64" "1.9.4" - "@biomejs/cli-linux-arm64-musl" "1.9.4" - "@biomejs/cli-linux-x64" "1.9.4" - "@biomejs/cli-linux-x64-musl" "1.9.4" - "@biomejs/cli-win32-arm64" "1.9.4" - "@biomejs/cli-win32-x64" "1.9.4" - -"@biomejs/cli-darwin-arm64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.4.tgz#dfa376d23a54a2d8f17133c92f23c1bf2e62509f" - integrity sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw== - -"@biomejs/cli-darwin-x64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.4.tgz#eafc2ce3849d385fc02238aad1ca4a73395a64d9" - integrity sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg== - -"@biomejs/cli-linux-arm64-musl@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.4.tgz#d780c3e01758fc90f3268357e3f19163d1f84fca" - integrity sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA== - -"@biomejs/cli-linux-arm64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.4.tgz#8ed1dd0e89419a4b66a47f95aefb8c46ae6041c9" - integrity sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g== - -"@biomejs/cli-linux-x64-musl@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.4.tgz#f36982b966bd671a36671e1de4417963d7db15fb" - integrity sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg== - -"@biomejs/cli-linux-x64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz#a0a7f56680c76b8034ddc149dbf398bdd3a462e8" - integrity sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg== - -"@biomejs/cli-win32-arm64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.4.tgz#e2ef4e0084e76b7e26f0fc887c5ef1265ea56200" - integrity sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg== - -"@biomejs/cli-win32-x64@1.9.4": - version "1.9.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.4.tgz#4c7afa90e3970213599b4095e62f87e5972b2340" - integrity sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA== - -"@discordjs/builders@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-0.5.0.tgz#646cbea9cc67f68639e6fb70ed1278b26dacdb14" - integrity sha512-HP5y4Rqw68o61Qv4qM5tVmDbWi4mdTFftqIOGRo33SNPpLJ1Ga3KEIR2ibKofkmsoQhEpLmopD1AZDs3cKpHuw== - dependencies: - "@sindresorhus/is" "^4.0.1" - discord-api-types "^0.22.0" - ow "^0.27.0" - ts-mixer "^6.0.0" - tslib "^2.3.0" - -"@discordjs/builders@^1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.9.0.tgz#71fa6de91132bd1deaff2a9daea7aa5d5c9f124a" - integrity sha512-0zx8DePNVvQibh5ly5kCEei5wtPBIUbSoE9n+91Rlladz4tgtFbJ36PZMxxZrTEOQ7AHMZ/b0crT/0fCy6FTKg== - dependencies: - "@discordjs/formatters" "^0.5.0" + "@biomejs/cli-darwin-arm64" "2.2.4" + "@biomejs/cli-darwin-x64" "2.2.4" + "@biomejs/cli-linux-arm64" "2.2.4" + "@biomejs/cli-linux-arm64-musl" "2.2.4" + "@biomejs/cli-linux-x64" "2.2.4" + "@biomejs/cli-linux-x64-musl" "2.2.4" + "@biomejs/cli-win32-arm64" "2.2.4" + "@biomejs/cli-win32-x64" "2.2.4" + +"@biomejs/cli-darwin-arm64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.2.4.tgz#9b50620c93501e370b7e6d5a8445f117f9946a0c" + integrity sha512-RJe2uiyaloN4hne4d2+qVj3d3gFJFbmrr5PYtkkjei1O9c+BjGXgpUPVbi8Pl8syumhzJjFsSIYkcLt2VlVLMA== + +"@biomejs/cli-darwin-x64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.2.4.tgz#343620c884fc8141155d114430e80e4eacfddc9e" + integrity sha512-cFsdB4ePanVWfTnPVaUX+yr8qV8ifxjBKMkZwN7gKb20qXPxd/PmwqUH8mY5wnM9+U0QwM76CxFyBRJhC9tQwg== + +"@biomejs/cli-linux-arm64-musl@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.2.4.tgz#cabcdadce2bc88b697f4063374224266c6f8b6e5" + integrity sha512-7TNPkMQEWfjvJDaZRSkDCPT/2r5ESFPKx+TEev+I2BXDGIjfCZk2+b88FOhnJNHtksbOZv8ZWnxrA5gyTYhSsQ== + +"@biomejs/cli-linux-arm64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.2.4.tgz#55620f8f088145e62e1158eb85c568554d0c8673" + integrity sha512-M/Iz48p4NAzMXOuH+tsn5BvG/Jb07KOMTdSVwJpicmhN309BeEyRyQX+n1XDF0JVSlu28+hiTQ2L4rZPvu7nMw== + +"@biomejs/cli-linux-x64-musl@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.2.4.tgz#6bfaea72505afdbda66a66c998d2d169a8b55f90" + integrity sha512-m41nFDS0ksXK2gwXL6W6yZTYPMH0LughqbsxInSKetoH6morVj43szqKx79Iudkp8WRT5SxSh7qVb8KCUiewGg== + +"@biomejs/cli-linux-x64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-2.2.4.tgz#8c1ed61dcafb8a5939346c714ec122651f57e1db" + integrity sha512-orr3nnf2Dpb2ssl6aihQtvcKtLySLta4E2UcXdp7+RTa7mfJjBgIsbS0B9GC8gVu0hjOu021aU8b3/I1tn+pVQ== + +"@biomejs/cli-win32-arm64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.2.4.tgz#b2528f6c436e753d6083d7779f0662e08786cedb" + integrity sha512-NXnfTeKHDFUWfxAefa57DiGmu9VyKi0cDqFpdI+1hJWQjGJhJutHPX0b5m+eXvTKOaf+brU+P0JrQAZMb5yYaQ== + +"@biomejs/cli-win32-x64@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-2.2.4.tgz#c8e21413120fe073fa49b78fdd987022941ff66f" + integrity sha512-3Y4V4zVRarVh/B/eSHczR4LYoSVyv3Dfuvm3cWs5w/HScccS0+Wt/lHOcDTRYeHjQmMYVC3rIRWqyN2EI52+zg== + +"@discordjs/builders@^1.11.2": + version "1.11.3" + resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.11.3.tgz#14b8b027e16b73136924faecaf1819b94711647c" + integrity sha512-p3kf5eV49CJiRTfhtutUCeivSyQ/l2JlKodW1ZquRwwvlOWmG9+6jFShX6x8rUiYhnP6wKI96rgN/SXMy5e5aw== + dependencies: + "@discordjs/formatters" "^0.6.1" "@discordjs/util" "^1.1.1" "@sapphire/shapeshift" "^4.0.0" - discord-api-types "0.37.97" + discord-api-types "^0.38.16" fast-deep-equal "^3.1.3" ts-mixer "^6.0.4" tslib "^2.6.3" @@ -85,74 +208,60 @@ resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-1.5.3.tgz#5a1250159ebfff9efa4f963cfa7e97f1b291be18" integrity sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ== -"@discordjs/collection@^0.2.1": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.2.4.tgz#c8ff2250430dcec7324dd4aafd1ccbcbdfa9ac14" - integrity sha512-PVrEJH+V6Ob0OwfagYQ/57kwt/HNEJxt5jqY4P+S3st9y29t9iokdnGMQoJXG5VEMAQIPbzu9Snw1F6yE8PdLA== - "@discordjs/collection@^2.1.0", "@discordjs/collection@^2.1.1": version "2.1.1" resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-2.1.1.tgz#901917bc538c12b9c3613036d317847baee08cae" integrity sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg== -"@discordjs/form-data@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@discordjs/form-data/-/form-data-3.0.1.tgz#5c9e6be992e2e57d0dfa0e39979a850225fb4697" - integrity sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -"@discordjs/formatters@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@discordjs/formatters/-/formatters-0.5.0.tgz#2d284c4271bc41984339936df1d0164e470f3b7a" - integrity sha512-98b3i+Y19RFq1Xke4NkVY46x8KjJQjldHUuEbCqMvp1F5Iq9HgnGpu91jOi/Ufazhty32eRsKnnzS8n4c+L93g== +"@discordjs/formatters@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@discordjs/formatters/-/formatters-0.6.1.tgz#211bf3eb060d8fe7fa1f020b8be3c4adad00555a" + integrity sha512-5cnX+tASiPCqCWtFcFslxBVUaCetB0thvM/JyavhbXInP1HJIEU+Qv/zMrnuwSsX3yWH2lVXNJZeDK3EiP4HHg== dependencies: - discord-api-types "0.37.97" + discord-api-types "^0.38.1" -"@discordjs/rest@^2.3.0", "@discordjs/rest@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-2.4.0.tgz#63bfc816af58af844914e3589d7eae609cd199b5" - integrity sha512-Xb2irDqNcq+O8F0/k/NaDp7+t091p+acb51iA4bCKfIn+WFWd6HrNvcsSbMMxIR9NjcMZS6NReTKygqiQN+ntw== +"@discordjs/rest@^2.5.1", "@discordjs/rest@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-2.6.0.tgz#8c449b0d5c22a4cd9c655f5d1d53a20b05c37f10" + integrity sha512-RDYrhmpB7mTvmCKcpj+pc5k7POKszS4E2O9TYc+U+Y4iaCP+r910QdO43qmpOja8LRr1RJ0b3U+CqVsnPqzf4w== dependencies: "@discordjs/collection" "^2.1.1" "@discordjs/util" "^1.1.1" "@sapphire/async-queue" "^1.5.3" "@sapphire/snowflake" "^3.5.3" "@vladfrangu/async_event_emitter" "^2.4.6" - discord-api-types "0.37.97" + discord-api-types "^0.38.16" magic-bytes.js "^1.10.0" tslib "^2.6.3" - undici "6.19.8" + undici "6.21.3" "@discordjs/util@^1.1.0", "@discordjs/util@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@discordjs/util/-/util-1.1.1.tgz#bafcde0faa116c834da1258d78ec237080bbab29" integrity sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g== -"@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== +"@discordjs/ws@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@discordjs/ws/-/ws-1.2.3.tgz#7cf80d8528366c6810c02b43ca49958ef154c3d4" + integrity sha512-wPlQDxEmlDg5IxhJPuxXr3Vy9AjYq5xCvFWGJyD7w7Np8ZGu+Mc+97LCoEc/+AYCo2IDpKioiH0/c/mj5ZR9Uw== dependencies: "@discordjs/collection" "^2.1.0" - "@discordjs/rest" "^2.3.0" + "@discordjs/rest" "^2.5.1" "@discordjs/util" "^1.1.0" "@sapphire/async-queue" "^1.5.2" "@types/ws" "^8.5.10" "@vladfrangu/async_event_emitter" "^2.2.4" - discord-api-types "0.37.83" + discord-api-types "^0.38.1" tslib "^2.6.2" - ws "^8.16.0" + ws "^8.17.0" -"@dotenvx/dotenvx@^1.21.1": - version "1.21.1" - resolved "https://registry.yarnpkg.com/@dotenvx/dotenvx/-/dotenvx-1.21.1.tgz#70101fe2da7ee29db882cf92f391d9cacc16768f" - integrity sha512-ER9oBUtcFgDB/hwhJ0eg7xvR/8EtXkFm8J6nGo0rvLLMZKBpmvMtgTIQ8hDSjnboOaELOdUXTpa7WgoRZR6g3A== +"@dotenvx/dotenvx@^1.51.0": + version "1.51.0" + resolved "https://registry.yarnpkg.com/@dotenvx/dotenvx/-/dotenvx-1.51.0.tgz#6faf730e7cf532f0ecafdc87dc854d07e31c2915" + integrity sha512-CbMGzyOYSyFF7d4uaeYwO9gpSBzLTnMmSmTVpCZjvpJFV69qYbjYPpzNnCz1mb2wIvEhjWjRwQWuBzTO0jITww== dependencies: commander "^11.1.0" - dotenv "^16.4.5" + dotenv "^17.2.1" eciesjs "^0.4.10" execa "^5.1.1" fdir "^6.2.0" @@ -166,125 +275,135 @@ resolved "https://registry.yarnpkg.com/@ecies/ciphers/-/ciphers-0.2.1.tgz#a3119516fb55d27ed2d21c497b1c4988f0b4ca02" integrity sha512-ezMihhjW24VNK/2qQR7lH8xCQY24nk0XHF/kwJ1OuiiY5iEwQXOcKVSy47fSoHPRG8gVGXcK5SgtONDk5xMwtQ== -"@esbuild/aix-ppc64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353" - integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ== - -"@esbuild/android-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018" - integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw== - -"@esbuild/android-arm@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee" - integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ== - -"@esbuild/android-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517" - integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg== - -"@esbuild/darwin-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16" - integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q== - -"@esbuild/darwin-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931" - integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw== - -"@esbuild/freebsd-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc" - integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA== - -"@esbuild/freebsd-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730" - integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g== - -"@esbuild/linux-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383" - integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g== - -"@esbuild/linux-arm@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771" - integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ== - -"@esbuild/linux-ia32@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333" - integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ== - -"@esbuild/linux-loong64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac" - integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw== - -"@esbuild/linux-mips64el@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6" - integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q== - -"@esbuild/linux-ppc64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96" - integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw== - -"@esbuild/linux-riscv64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7" - integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA== - -"@esbuild/linux-s390x@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f" - integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw== - -"@esbuild/linux-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24" - integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ== - -"@esbuild/netbsd-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653" - integrity sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA== - -"@esbuild/openbsd-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7" - integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q== - -"@esbuild/openbsd-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273" - integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA== - -"@esbuild/sunos-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403" - integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA== - -"@esbuild/win32-arm64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2" - integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A== - -"@esbuild/win32-ia32@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac" - integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ== - -"@esbuild/win32-x64@0.23.1": - version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699" - integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg== +"@esbuild/aix-ppc64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz#ee6b7163a13528e099ecf562b972f2bcebe0aa97" + integrity sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw== + +"@esbuild/android-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz#115fc76631e82dd06811bfaf2db0d4979c16e2cb" + integrity sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg== + +"@esbuild/android-arm@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.10.tgz#8d5811912da77f615398611e5bbc1333fe321aa9" + integrity sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w== + +"@esbuild/android-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.10.tgz#e3e96516b2d50d74105bb92594c473e30ddc16b1" + integrity sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg== + +"@esbuild/darwin-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz#6af6bb1d05887dac515de1b162b59dc71212ed76" + integrity sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA== + +"@esbuild/darwin-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz#99ae82347fbd336fc2d28ffd4f05694e6e5b723d" + integrity sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg== + +"@esbuild/freebsd-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz#0c6d5558a6322b0bdb17f7025c19bd7d2359437d" + integrity sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg== + +"@esbuild/freebsd-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz#8c35873fab8c0857a75300a3dcce4324ca0b9844" + integrity sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA== + +"@esbuild/linux-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz#3edc2f87b889a15b4cedaf65f498c2bed7b16b90" + integrity sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ== + +"@esbuild/linux-arm@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz#86501cfdfb3d110176d80c41b27ed4611471cde7" + integrity sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg== + +"@esbuild/linux-ia32@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz#e6589877876142537c6864680cd5d26a622b9d97" + integrity sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ== + +"@esbuild/linux-loong64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz#11119e18781f136d8083ea10eb6be73db7532de8" + integrity sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg== + +"@esbuild/linux-mips64el@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz#3052f5436b0c0c67a25658d5fc87f045e7def9e6" + integrity sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA== + +"@esbuild/linux-ppc64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz#2f098920ee5be2ce799f35e367b28709925a8744" + integrity sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA== + +"@esbuild/linux-riscv64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz#fa51d7fd0a22a62b51b4b94b405a3198cf7405dd" + integrity sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA== + +"@esbuild/linux-s390x@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz#a27642e36fc282748fdb38954bd3ef4f85791e8a" + integrity sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew== + +"@esbuild/linux-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz#9d9b09c0033d17529570ced6d813f98315dfe4e9" + integrity sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA== + +"@esbuild/netbsd-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz#25c09a659c97e8af19e3f2afd1c9190435802151" + integrity sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A== + +"@esbuild/netbsd-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz#7fa5f6ffc19be3a0f6f5fd32c90df3dc2506937a" + integrity sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig== + +"@esbuild/openbsd-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz#8faa6aa1afca0c6d024398321d6cb1c18e72a1c3" + integrity sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw== + +"@esbuild/openbsd-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz#a42979b016f29559a8453d32440d3c8cd420af5e" + integrity sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw== + +"@esbuild/openharmony-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz#fd87bfeadd7eeb3aa384bbba907459ffa3197cb1" + integrity sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag== + +"@esbuild/sunos-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz#3a18f590e36cb78ae7397976b760b2b8c74407f4" + integrity sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ== + +"@esbuild/win32-arm64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz#e71741a251e3fd971408827a529d2325551f530c" + integrity sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw== + +"@esbuild/win32-ia32@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz#c6f010b5d3b943d8901a0c87ea55f93b8b54bf94" + integrity sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw== + +"@esbuild/win32-x64@0.25.10": + version "0.25.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz#e4b3e255a1b4aea84f6e1d2ae0b73f826c3785bd" + integrity sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw== "@hunteroi/advanced-logger@^0.2.0": version "0.2.0" @@ -294,20 +413,46 @@ chalk "^3.0.0" moment "^2.24.0" -"@hunteroi/discord-selfrole@^4.0.4": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@hunteroi/discord-selfrole/-/discord-selfrole-4.0.4.tgz#7661fe2326bc97db6301036e92a7cb6b851ecc08" - integrity sha512-E05VZqTXZs3WMTE6FdxeV4ZWcNtEeGZccLIyFKM6x0zW27TC6kJ32FoM6J9pfsgIWgQHg5vUS2RNAPbpJskajg== - -"@hunteroi/discord-temp-channels@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@hunteroi/discord-temp-channels/-/discord-temp-channels-3.3.0.tgz#b0dbe95235a705d44bb30fda455047c6e022c2bc" - integrity sha512-oOeGIJo+GLXAox3OSWe9o6eDgnFJtRd6X7IYSgExz5VXJlmQvOBX3psFuE/qMem7u7EjjWIlL22UmTjeZsyFKw== - -"@hunteroi/discord-verification@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@hunteroi/discord-verification/-/discord-verification-1.5.0.tgz#4278904eba608aa8db70c19ec65994f553630a61" - integrity sha512-BSn+gLc9XpC1xvU+qw5WXo5utEjwqbM8Q6lQTPiZmX3F3u+PuRt+Sl2JAQnztYzneCxUy4IORneZE7bevSKfuA== +"@hunteroi/discord-selfrole@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@hunteroi/discord-selfrole/-/discord-selfrole-4.0.5.tgz#28bd5a4e02483c4f6db2f8a550d984b07882d4a3" + integrity sha512-oBxE0nY/NsV8hds0CdzJhz5jVdaOXCLPdFqBmVxG6qHDF1quccEgJN/hM3CVXwT4BrQlk2/ezNkrTnmiQlIq/w== + +"@hunteroi/discord-temp-channels@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@hunteroi/discord-temp-channels/-/discord-temp-channels-3.3.1.tgz#351f6657ab5482b31507b9d8e925481c05fa216c" + integrity sha512-zm0aJVnh3Nnyk5ImUhxzecWwHvlvOZICK8+8uKeiHXtrvj9gkJyYUGTWM7rvDg6BASjSlTVkLEbD5WdzOgjMiw== + +"@hunteroi/discord-verification@^1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@hunteroi/discord-verification/-/discord-verification-1.5.2.tgz#fcb6bbc626d11af2230f625f011323f5fa7edc04" + integrity sha512-F31p2ARYAm16tjbRadio898ype5nmhAI0eJ1vUXo08posyrxxW07VxNiy6hV09FulaM2+KwPYn7pXAZMGC2dMg== + +"@jridgewell/gen-mapping@^0.3.12": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@noble/ciphers@^1.0.0": version "1.0.0" @@ -326,7 +471,7 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0" integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== -"@sapphire/async-queue@^1.1.4", "@sapphire/async-queue@^1.5.2", "@sapphire/async-queue@^1.5.3": +"@sapphire/async-queue@^1.5.2", "@sapphire/async-queue@^1.5.3": version "1.5.3" resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.5.3.tgz#03cd2a2f3665068f314736bdc56eee2025352422" integrity sha512-x7zadcfJGxFka1Q3f8gCts1F0xMwCKbZweM85xECGI0hBTeIZJGGCrHgLggihBoprlQ/hBmDR5LKfIPqnmHM3w== @@ -344,34 +489,6 @@ resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.5.3.tgz#0c102aa2ec5b34f806e9bc8625fc6a5e1d0a0c6a" integrity sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ== -"@sendgrid/client@^8.1.3": - version "8.1.3" - resolved "https://registry.yarnpkg.com/@sendgrid/client/-/client-8.1.3.tgz#51fd4a318627c4b615ff98e35609e98486a3bd6f" - integrity sha512-mRwTticRZIdUTsnyzvlK6dMu3jni9ci9J+dW/6fMMFpGRAJdCJlivFVYQvqk8kRS3RnFzS7sf6BSmhLl1ldDhA== - dependencies: - "@sendgrid/helpers" "^8.0.0" - axios "^1.6.8" - -"@sendgrid/helpers@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@sendgrid/helpers/-/helpers-8.0.0.tgz#f74bf9743bacafe4c8573be46166130c604c0fc1" - integrity sha512-Ze7WuW2Xzy5GT5WRx+yEv89fsg/pgy3T1E3FS0QEx0/VvRmigMZ5qyVGhJz4SxomegDkzXv/i0aFPpHKN8qdAA== - dependencies: - deepmerge "^4.2.2" - -"@sendgrid/mail@8.1.3": - version "8.1.3" - resolved "https://registry.yarnpkg.com/@sendgrid/mail/-/mail-8.1.3.tgz#d371cbddcd2e8ca9469a68d1ed0c6b3a5c365e5e" - integrity sha512-Wg5iKSUOER83/cfY6rbPa+o3ChnYzWwv1OcsR8gCV8SKi+sUPIMroildimlnb72DBkQxcbylxng1W7f0RIX7MQ== - dependencies: - "@sendgrid/client" "^8.1.3" - "@sendgrid/helpers" "^8.0.0" - -"@sindresorhus/is@^4.0.1": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== - "@types/node@*": version "22.5.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.5.tgz#52f939dd0f65fc552a4ad0b392f3c466cc5d7a44" @@ -379,19 +496,12 @@ dependencies: undici-types "~6.19.2" -"@types/node@^20.12.7": - version "20.16.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.5.tgz#d43c7f973b32ffdf9aa7bd4f80e1072310fd7a53" - integrity sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA== +"@types/node@^24.5.2": + version "24.5.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.5.2.tgz#52ceb83f50fe0fcfdfbd2a9fab6db2e9e7ef6446" + integrity sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ== dependencies: - undici-types "~6.19.2" - -"@types/ws@^7.4.7": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== - dependencies: - "@types/node" "*" + undici-types "~7.12.0" "@types/ws@^8.5.10": version "8.5.12" @@ -417,19 +527,67 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -axios@^1.6.8: - version "1.7.7" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" - integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== +axios@^1.8.4: + version "1.12.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.12.2.tgz#6c307390136cf7a2278d09cec63b136dfc6e6da7" + integrity sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw== dependencies: follow-redirects "^1.15.6" - form-data "^4.0.0" + form-data "^4.0.4" proxy-from-env "^1.1.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== +babel-plugin-polyfill-corejs2@^0.4.14: + version "0.4.14" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f" + integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg== + dependencies: + "@babel/compat-data" "^7.27.7" + "@babel/helper-define-polyfill-provider" "^0.6.5" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz#bb7f6aeef7addff17f7602a08a6d19a128c30164" + integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.5" + core-js-compat "^3.43.0" + +babel-plugin-polyfill-regenerator@^0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5" + integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.5" + +baseline-browser-mapping@^2.8.3: + version "2.8.6" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.6.tgz#c37dea4291ed8d01682f85661dbe87967028642e" + integrity sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw== + +browserslist@^4.24.0, browserslist@^4.25.3: + version "4.26.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.26.2.tgz#7db3b3577ec97f1140a52db4936654911078cef3" + integrity sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A== + dependencies: + baseline-browser-mapping "^2.8.3" + caniuse-lite "^1.0.30001741" + electron-to-chromium "^1.5.218" + node-releases "^2.0.21" + update-browserslist-db "^1.1.3" + +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +caniuse-lite@^1.0.30001741: + version "1.0.30001743" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz#50ff91a991220a1ee2df5af00650dd5c308ea7cd" + integrity sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw== chalk@^3.0.0: version "3.0.0" @@ -463,6 +621,13 @@ commander@^11.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== +core-js-compat@^3.43.0: + version "3.45.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.45.1.tgz#424f3f4af30bf676fd1b67a579465104f64e9c7a" + integrity sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA== + dependencies: + browserslist "^4.25.3" + cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -472,80 +637,62 @@ cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -deepmerge@^4.2.2: - 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== +debug@^4.3.1, debug@^4.4.1: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" 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== -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.97: - version "0.37.97" - resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.97.tgz#d658573f726ad179261d538dbad4e7e8eca48d11" - integrity sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA== +discord-api-types@^0.38.1, discord-api-types@^0.38.16: + version "0.38.26" + resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.38.26.tgz#d30f6bf0a4725b0a5ea46e0a12cef0b8880bbc9a" + integrity sha512-xpmPviHjIJ6dFu1eNwNDIGQ3N6qmPUUYFVAx/YZ64h7ZgPkTcKjnciD8bZe8Vbeji7yS5uYljyciunpq0J5NSw== -discord-api-types@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.22.0.tgz#34dc57fe8e016e5eaac5e393646cd42a7e1ccc2a" - integrity sha512-l8yD/2zRbZItUQpy7ZxBJwaLX/Bs2TGaCthRppk8Sw24LOIWg12t9JEreezPoYD0SQcC2htNNo27kYEpYW/Srg== - -discord-sync-commands@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/discord-sync-commands/-/discord-sync-commands-0.3.0.tgz#471d711a7c6cbcccb7ab29e29bb53d68d02d0dfa" - integrity sha512-JPKJTqzUvAtqTFcHp8GgEZfgpkOaeUIHpLVcnP88lK8gMMxUfz1X9+DsVgbAbsWSF7uer0PpBowHyWomzTJH/g== +discord-sync-commands@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/discord-sync-commands/-/discord-sync-commands-0.5.2.tgz#093aa08894980e5158a672139077d675d94c5f4c" + integrity sha512-RGinA7lJ1zg1bE7Ph6ltvHXiajzUeLD8bH3TtXpB6E4PUL35jHG295WySG838+TnTzk1j9AxtRLmjeOS64c09A== dependencies: - discord.js discordjs/discord.js#refs/pull/6414/head + discord.js "^14.20.0" -discord.js@^14.16.2: - version "14.16.2" - resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.16.2.tgz#c878977b5a377cf41eaed0b1901115f8faec9852" - integrity sha512-VGNi9WE2dZIxYM8/r/iatQQ+3LT8STW4hhczJOwm+DBeHq66vsKDCk8trChNCB01sMO9crslYuEMeZl2d7r3xw== +discord.js@^14.20.0, discord.js@^14.22.1: + version "14.22.1" + resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.22.1.tgz#aa364cf0108b41bac3eaa9fa1aae836d0882a91c" + integrity sha512-3k+Kisd/v570Jr68A1kNs7qVhNehDwDJAPe4DZ2Syt+/zobf9zEcuYFvsfIaAOgCa0BiHMfOOKQY4eYINl0z7w== dependencies: - "@discordjs/builders" "^1.9.0" + "@discordjs/builders" "^1.11.2" "@discordjs/collection" "1.5.3" - "@discordjs/formatters" "^0.5.0" - "@discordjs/rest" "^2.4.0" + "@discordjs/formatters" "^0.6.1" + "@discordjs/rest" "^2.6.0" "@discordjs/util" "^1.1.1" - "@discordjs/ws" "1.1.1" + "@discordjs/ws" "^1.2.3" "@sapphire/snowflake" "3.5.3" - discord-api-types "0.37.97" + discord-api-types "^0.38.16" fast-deep-equal "3.1.3" lodash.snakecase "4.1.1" + magic-bytes.js "^1.10.0" tslib "^2.6.3" - undici "6.19.8" - -discord.js@discordjs/discord.js#refs/pull/6414/head: - version "13.2.0-dev" - resolved "https://codeload.github.com/discordjs/discord.js/tar.gz/b2ef10fdd742aa08da3a33b2cf35f0f2350e915a" - dependencies: - "@discordjs/builders" "^0.5.0" - "@discordjs/collection" "^0.2.1" - "@discordjs/form-data" "^3.0.1" - "@sapphire/async-queue" "^1.1.4" - "@types/ws" "^7.4.7" - discord-api-types "^0.22.0" - node-fetch "^2.6.1" - ws "^7.5.1" - -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" + undici "6.21.3" -dotenv@^16.4.5: - version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" - integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== +dotenv@^17.2.1: + version "17.2.2" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-17.2.2.tgz#4010cfe1c2be4fc0f46fd3d951afb424bc067ac6" + integrity sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q== + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" eciesjs@^0.4.10: version "0.4.10" @@ -557,35 +704,74 @@ eciesjs@^0.4.10: "@noble/curves" "^1.6.0" "@noble/hashes" "^1.5.0" -esbuild@~0.23.0: - version "0.23.1" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8" - integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg== +electron-to-chromium@^1.5.218: + version "1.5.223" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.223.tgz#cf9b1aebba1c8ee5e50d1c9e198229e15bc87b28" + integrity sha512-qKm55ic6nbEmagFlTFczML33rF90aU+WtrJ9MdTCThrcvDNdUHN4p6QfVN78U06ZmguqXIyMPyYhw2TrbDUwPQ== + +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +esbuild@~0.25.0: + version "0.25.10" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.10.tgz#37f5aa5cd14500f141be121c01b096ca83ac34a9" + integrity sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ== optionalDependencies: - "@esbuild/aix-ppc64" "0.23.1" - "@esbuild/android-arm" "0.23.1" - "@esbuild/android-arm64" "0.23.1" - "@esbuild/android-x64" "0.23.1" - "@esbuild/darwin-arm64" "0.23.1" - "@esbuild/darwin-x64" "0.23.1" - "@esbuild/freebsd-arm64" "0.23.1" - "@esbuild/freebsd-x64" "0.23.1" - "@esbuild/linux-arm" "0.23.1" - "@esbuild/linux-arm64" "0.23.1" - "@esbuild/linux-ia32" "0.23.1" - "@esbuild/linux-loong64" "0.23.1" - "@esbuild/linux-mips64el" "0.23.1" - "@esbuild/linux-ppc64" "0.23.1" - "@esbuild/linux-riscv64" "0.23.1" - "@esbuild/linux-s390x" "0.23.1" - "@esbuild/linux-x64" "0.23.1" - "@esbuild/netbsd-x64" "0.23.1" - "@esbuild/openbsd-arm64" "0.23.1" - "@esbuild/openbsd-x64" "0.23.1" - "@esbuild/sunos-x64" "0.23.1" - "@esbuild/win32-arm64" "0.23.1" - "@esbuild/win32-ia32" "0.23.1" - "@esbuild/win32-x64" "0.23.1" + "@esbuild/aix-ppc64" "0.25.10" + "@esbuild/android-arm" "0.25.10" + "@esbuild/android-arm64" "0.25.10" + "@esbuild/android-x64" "0.25.10" + "@esbuild/darwin-arm64" "0.25.10" + "@esbuild/darwin-x64" "0.25.10" + "@esbuild/freebsd-arm64" "0.25.10" + "@esbuild/freebsd-x64" "0.25.10" + "@esbuild/linux-arm" "0.25.10" + "@esbuild/linux-arm64" "0.25.10" + "@esbuild/linux-ia32" "0.25.10" + "@esbuild/linux-loong64" "0.25.10" + "@esbuild/linux-mips64el" "0.25.10" + "@esbuild/linux-ppc64" "0.25.10" + "@esbuild/linux-riscv64" "0.25.10" + "@esbuild/linux-s390x" "0.25.10" + "@esbuild/linux-x64" "0.25.10" + "@esbuild/netbsd-arm64" "0.25.10" + "@esbuild/netbsd-x64" "0.25.10" + "@esbuild/openbsd-arm64" "0.25.10" + "@esbuild/openbsd-x64" "0.25.10" + "@esbuild/openharmony-arm64" "0.25.10" + "@esbuild/sunos-x64" "0.25.10" + "@esbuild/win32-arm64" "0.25.10" + "@esbuild/win32-ia32" "0.25.10" + "@esbuild/win32-x64" "0.25.10" + +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== execa@^5.1.1: version "5.1.1" @@ -617,13 +803,15 @@ follow-redirects@^1.15.6: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== +form-data@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" mime-types "^2.1.12" fsevents@~2.3.3: @@ -631,6 +819,35 @@ fsevents@~2.3.3: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-intrinsic@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -643,11 +860,35 @@ get-tsconfig@^4.7.5: dependencies: resolve-pkg-maps "^1.0.0" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -658,10 +899,12 @@ ignore@^5.3.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" is-stream@^2.0.0: version "2.0.1" @@ -678,10 +921,20 @@ isexe@^3.1.1: resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.snakecase@4.1.1: version "4.1.1" @@ -693,11 +946,23 @@ lodash@^4.17.21: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + 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== +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -708,6 +973,11 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== +mime-db@^1.54.0: + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + mime-types@^2.1.12: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" @@ -715,6 +985,13 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" +mime-types@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.1.tgz#b1d94d6997a9b32fd69ebaed0db73de8acb519ce" + integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA== + dependencies: + mime-db "^1.54.0" + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -725,12 +1002,15 @@ moment@^2.24.0: resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== -node-fetch@^2.6.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +node-releases@^2.0.21: + version "2.0.21" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.21.tgz#f59b018bc0048044be2d4c4c04e4c8b18160894c" + integrity sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw== npm-run-path@^4.0.1: version "4.0.1" @@ -751,23 +1031,21 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -ow@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/ow/-/ow-0.27.0.tgz#d44da088e8184fa11de64b5813206f9f86ab68d0" - integrity sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ== - dependencies: - "@sindresorhus/is" "^4.0.1" - callsites "^3.1.0" - dot-prop "^6.0.1" - lodash.isequal "^4.5.0" - type-fest "^1.2.1" - vali-date "^1.0.0" - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" @@ -783,6 +1061,20 @@ resolve-pkg-maps@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== +resolve@^1.22.10: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -800,6 +1092,16 @@ signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +smtp2go-nodejs@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/smtp2go-nodejs/-/smtp2go-nodejs-0.3.5.tgz#0b35ed1df02aefb27c70bc95068f552e7d1f03a5" + integrity sha512-iYCDi12QZKcHyRkGCOyeCsdTLXm2rB8saALNxIfxncnFV741fCtnyyX1h4JFwhtWojOMDOar70JePRehBTKUHg== + dependencies: + "@babel/plugin-transform-runtime" "^7.26.10" + "@babel/runtime" "^7.27.0" + axios "^1.8.4" + mime-types "^3.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" @@ -812,12 +1114,12 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -ts-mixer@^6.0.0, ts-mixer@^6.0.4: +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== @@ -834,63 +1136,48 @@ ts-typed-events@^3.0.0: resolved "https://registry.yarnpkg.com/ts-typed-events/-/ts-typed-events-3.0.0.tgz#2f9d96ff962edfc936402c859370337373880faa" integrity sha512-+2FZ0XPX+UPR7PO8ZQjuvnuDMYRhzrDaCRaNHaBG1xSL//0oPa3XMU5yxgDTzW67VzkE33fQpx1YxWBdkaF7Zw== -tslib@^2.3.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.0.tgz#d124c86c3c05a40a91e6fdea4021bd31d377971b" - integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA== - tslib@^2.6.2, tslib@^2.6.3: version "2.7.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== -tsx@^4.19.2: - version "4.19.2" - resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.2.tgz#2d7814783440e0ae42354d0417d9c2989a2ae92c" - integrity sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g== +tsx@^4.20.5: + version "4.20.5" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.20.5.tgz#856c8b2f114c50a9f4ae108126967a167f240dc7" + integrity sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw== dependencies: - esbuild "~0.23.0" + esbuild "~0.25.0" get-tsconfig "^4.7.5" optionalDependencies: fsevents "~2.3.3" -type-fest@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== - -typescript@^5.4.4: - version "5.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" - integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== +typescript@^5.9.2: + version "5.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6" + integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A== undici-types@~6.19.2: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== -undici@6.19.8: - version "6.19.8" - resolved "https://registry.yarnpkg.com/undici/-/undici-6.19.8.tgz#002d7c8a28f8cc3a44ff33c3d4be4d85e15d40e1" - integrity sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g== +undici-types@~7.12.0: + version "7.12.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.12.0.tgz#15c5c7475c2a3ba30659529f5cdb4674b622fafb" + integrity sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ== -vali-date@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" - integrity sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg== +undici@6.21.3: + version "6.21.3" + resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.3.tgz#185752ad92c3d0efe7a7d1f6854a50f83b552d7a" + integrity sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw== -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== - -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== +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" + escalade "^3.2.0" + picocolors "^1.1.1" which@^2.0.1: version "2.0.2" @@ -906,12 +1193,12 @@ which@^4.0.0: dependencies: isexe "^3.1.1" -ws@^7.5.1: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== +ws@^8.17.0: + version "8.18.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== -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@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== From 33cf3255e815007cfd0d98a1e154aeaaf7d5c3c7 Mon Sep 17 00:00:00 2001 From: HunteRoi Date: Wed, 24 Sep 2025 00:45:29 +0200 Subject: [PATCH 2/4] linting --- biome.json | 42 +++++++++++----------- index.ts | 2 +- src/commands/admins/announce.ts | 5 +-- src/commands/owner/eval.ts | 2 +- src/commands/utility/email.ts | 5 +-- src/commands/utility/mdn.ts | 19 ++++++---- src/config.ts | 3 +- src/datadrop.ts | 31 ++++++++--------- src/events/clientReady.ts | 3 +- src/events/interactionCreate.ts | 12 ++++--- src/models/Configuration.ts | 3 +- src/models/IDatabaseService.ts | 3 +- src/services/CommandHandler.ts | 46 ++++++++++++++++++------- src/services/PostgresDatabaseService.ts | 5 ++- 14 files changed, 100 insertions(+), 81 deletions(-) diff --git a/biome.json b/biome.json index a58e954..0d61572 100644 --- a/biome.json +++ b/biome.json @@ -1,24 +1,22 @@ { - "$schema": "https://biomejs.dev/schemas/1.6.4/schema.json", - "organizeImports": { - "enabled": true - }, - "vcs": { - "enabled": true, - "clientKind": "git", - "useIgnoreFile": true, - "defaultBranch": "master" - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true - } - }, - "formatter": { - "enabled": true, - "indentStyle": "space", - "indentWidth": 4, - "lineEnding": "lf" - } + "$schema": "https://biomejs.dev/schemas/2.2.4/schema.json", + "assist": { "actions": { "source": { "organizeImports": "on" } } }, + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true, + "defaultBranch": "master" + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 4, + "lineEnding": "lf" + } } diff --git a/index.ts b/index.ts index a2c10d6..b12704d 100644 --- a/index.ts +++ b/index.ts @@ -1,5 +1,5 @@ -import { GatewayIntentBits } from "discord.js"; import * as dotenvx from "@dotenvx/dotenvx"; +import { GatewayIntentBits } from "discord.js"; import { readConfig } from "./src/config.js"; import { DatadropClient } from "./src/datadrop.js"; diff --git a/src/commands/admins/announce.ts b/src/commands/admins/announce.ts index fcd9cc1..74d9499 100644 --- a/src/commands/admins/announce.ts +++ b/src/commands/admins/announce.ts @@ -64,7 +64,7 @@ export default { "Ceci est une preview de l'annonce. Voulez-vous l'envoyer?", components: [row], embeds: [embed], - flags: MessageFlags.Ephemeral + flags: MessageFlags.Ephemeral, }); try { @@ -110,7 +110,8 @@ export default { components: [], }); } - } catch (e) { + } catch (error) { + console.error(error); await interaction.editReply({ content: "❌ **Oups!** - Aucune confirmation reçue, annulation...", diff --git a/src/commands/owner/eval.ts b/src/commands/owner/eval.ts index ed04909..fdb7ecf 100644 --- a/src/commands/owner/eval.ts +++ b/src/commands/owner/eval.ts @@ -1,9 +1,9 @@ import { type ChatInputCommandInteraction, + codeBlock, MessageFlags, PermissionFlagsBits, SlashCommandBuilder, - codeBlock, } from "discord.js"; import type { DatadropClient } from "../../datadrop.js"; diff --git a/src/commands/utility/email.ts b/src/commands/utility/email.ts index cc75166..20046b4 100644 --- a/src/commands/utility/email.ts +++ b/src/commands/utility/email.ts @@ -25,10 +25,7 @@ export default { "Affiche un message concernant l'envoi d'email à un.e professeur.e ou aux organisations étudiantes.", ), - async execute( - client: DatadropClient, - interaction: ChatInputCommandInteraction, - ) { + async execute(_: DatadropClient, interaction: ChatInputCommandInteraction) { const embed = new EmbedBuilder() .setTitle("Emails") .setColor("Random") diff --git a/src/commands/utility/mdn.ts b/src/commands/utility/mdn.ts index f32e455..c915ae1 100644 --- a/src/commands/utility/mdn.ts +++ b/src/commands/utility/mdn.ts @@ -4,14 +4,14 @@ import { type AutocompleteInteraction, ButtonBuilder, ButtonStyle, + bold, type ChatInputCommandInteraction, Colors, EmbedBuilder, - SlashCommandBuilder, - bold, hideLinkEmbed, hyperlink, inlineCode, + SlashCommandBuilder, } from "discord.js"; import type { DatadropClient } from "../../datadrop.js"; @@ -142,7 +142,9 @@ export default { try { let hit = searchCache.get(searchUrl); if (!hit) { - client.logger.debug(`Fetching MDN search results for ${cleanQuery} hitting on ${searchUrl}...`); + client.logger.debug( + `Fetching MDN search results for ${cleanQuery} hitting on ${searchUrl}...`, + ); const response = await fetch(searchUrl); if (!response.ok) throw new Error( @@ -159,17 +161,22 @@ export default { .setURL(url) .setTitle(sanitize(hit.title)) .setDescription(sanitize(hit.summary)) - .setFooter({ text: 'MDN Web Docs', iconURL: 'https://developer.mozilla.org/favicon-48x48.png' }) + .setFooter({ + text: "MDN Web Docs", + iconURL: "https://developer.mozilla.org/favicon-48x48.png", + }) .setTimestamp(); const button = new ButtonBuilder() .setStyle(ButtonStyle.Link) .setLabel("Voir plus") .setURL(url); - const row = new ActionRowBuilder().addComponents(button); + const row = new ActionRowBuilder().addComponents( + button, + ); await interaction.editReply({ content: "✅ Voici le résultat de votre recherche!", embeds: [embed], - components: [row] + components: [row], }); } catch (err) { client.logger.error( diff --git a/src/config.ts b/src/config.ts index 750f953..64523e7 100644 --- a/src/config.ts +++ b/src/config.ts @@ -51,8 +51,7 @@ export async function readConfig(): Promise { ...json, version: `${environment}-v${packageInfo.version}`, }; - config.communicationServiceOptions.apiKey = - process.env.SMTP2GO_API_KEY; + config.communicationServiceOptions.apiKey = process.env.SMTP2GO_API_KEY; return config; } catch (err: unknown) { diff --git a/src/datadrop.ts b/src/datadrop.ts index 3cd8c7a..9b0d4a8 100644 --- a/src/datadrop.ts +++ b/src/datadrop.ts @@ -1,19 +1,4 @@ import * as path from "node:path"; -import { - type ButtonInteraction, - Client, - type ClientEvents, - type ClientOptions, - Collection, - type GuildMember, - type GuildTextBasedChannel, - type Message, - type Role, - type Snowflake, - type StringSelectMenuInteraction, - type VoiceChannel, -} from "discord.js"; - import { ConsoleLogger, type DefaultLogger, @@ -35,6 +20,20 @@ import { VerificationManagerEvents, } from "@hunteroi/discord-verification"; import { SMTP2GoService } from "@hunteroi/discord-verification/lib/services/SMTP2GoService.js"; +import { + type ButtonInteraction, + Client, + type ClientEvents, + type ClientOptions, + Collection, + type GuildMember, + type GuildTextBasedChannel, + type Message, + type Role, + type Snowflake, + type StringSelectMenuInteraction, + type VoiceChannel, +} from "discord.js"; import { readConfig } from "./config.js"; import { getErrorMessage, readFilesFrom } from "./helpers.js"; @@ -216,7 +215,7 @@ export class DatadropClient extends Client { this.selfRoleManager.on( SelfRoleManagerEvents.interaction, async ( - rte: RoleToEmojiData, + _: RoleToEmojiData, interaction: StringSelectMenuInteraction | ButtonInteraction, ) => { await interaction.editReply( diff --git a/src/events/clientReady.ts b/src/events/clientReady.ts index 9a1bb0a..66e449a 100644 --- a/src/events/clientReady.ts +++ b/src/events/clientReady.ts @@ -1,6 +1,5 @@ -import { ButtonStyle, Events, Role, bold, roleMention } from "discord.js"; - import type { RoleToEmojiData } from "@hunteroi/discord-selfrole"; +import { ButtonStyle, bold, Events, Role, roleMention } from "discord.js"; import type { DatadropClient } from "../datadrop.js"; import type { Configuration } from "../models/Configuration.js"; diff --git a/src/events/interactionCreate.ts b/src/events/interactionCreate.ts index e4ecf85..36714ed 100644 --- a/src/events/interactionCreate.ts +++ b/src/events/interactionCreate.ts @@ -7,8 +7,9 @@ import { type ChatInputCommandInteraction, Events, type Interaction, - InteractionEditReplyOptions, - InteractionReplyOptions, + type InteractionEditReplyOptions, + type InteractionReplyOptions, + italic, type MessageContextMenuCommandInteraction, MessageFlags, ModalBuilder, @@ -16,7 +17,6 @@ import { type RepliableInteraction, TextInputBuilder, TextInputStyle, - italic, } from "discord.js"; import type { DatadropClient } from "../datadrop.js"; @@ -121,7 +121,9 @@ async function isAlreadyVerified( flags: MessageFlags.Ephemeral, }; if (interaction.deferred) { - await interaction.editReply(replyOptions as InteractionEditReplyOptions); + await interaction.editReply( + replyOptions as InteractionEditReplyOptions, + ); } else if (interaction.replied) { await interaction.followUp(replyOptions); } else { @@ -226,7 +228,7 @@ async function showVerificationButton( .setCustomId(`lacb${interaction.user.id}`) .setDisabled( content.includes(client.errorMessage) || - content.includes(client.activeAccountMessage), + content.includes(client.activeAccountMessage), ); const buttonComponent = new ActionRowBuilder().addComponents( linkAccountButton, diff --git a/src/models/Configuration.ts b/src/models/Configuration.ts index 7cced6c..0171538 100644 --- a/src/models/Configuration.ts +++ b/src/models/Configuration.ts @@ -1,6 +1,5 @@ -import type { Snowflake } from "discord.js"; - import type { SMTP2GoOptions } from "@hunteroi/discord-verification/lib/services/SMTP2GoService.js"; +import type { Snowflake } from "discord.js"; export interface SpecialRoleConfiguration { roleid: Snowflake; diff --git a/src/models/IDatabaseService.ts b/src/models/IDatabaseService.ts index 1bba740..7181e78 100644 --- a/src/models/IDatabaseService.ts +++ b/src/models/IDatabaseService.ts @@ -1,6 +1,5 @@ -import type { Snowflake } from "discord.js"; - import type { IStoringSystem } from "@hunteroi/discord-verification"; +import type { Snowflake } from "discord.js"; import type { User } from "./User.js"; diff --git a/src/services/CommandHandler.ts b/src/services/CommandHandler.ts index 46e3a37..31e969c 100644 --- a/src/services/CommandHandler.ts +++ b/src/services/CommandHandler.ts @@ -2,7 +2,7 @@ import { type AutocompleteInteraction, ChannelType, type ChatInputCommandInteraction, - InteractionReplyOptions, + type InteractionReplyOptions, type MessageContextMenuCommandInteraction, MessageFlags, } from "discord.js"; @@ -16,9 +16,9 @@ type AuthorizationResponse = { export class CommandHandler< T extends - | ChatInputCommandInteraction - | MessageContextMenuCommandInteraction - | AutocompleteInteraction, + | ChatInputCommandInteraction + | MessageContextMenuCommandInteraction + | AutocompleteInteraction, > { readonly #client: DatadropClient; @@ -26,6 +26,7 @@ export class CommandHandler< this.#client = client; } + // biome-ignore lint/correctness/noUnusedFunctionParameters: parameter is intentionally unused as it's part of the interface contract shouldExecute(interaction: T): boolean { return true; } @@ -37,11 +38,17 @@ export class CommandHandler< return; } - const authorizationResponse = await this.#checkAuthorization(interaction, command); + const authorizationResponse = await this.#checkAuthorization( + interaction, + command, + ); this.#logUsage(interaction, command, !authorizationResponse.error); if (authorizationResponse.error) { - await this.#handleAuthorizationError(interaction, authorizationResponse.error); + await this.#handleAuthorizationError( + interaction, + authorizationResponse.error, + ); return; } @@ -66,7 +73,9 @@ export class CommandHandler< } async #handleUnknownCommand(interaction: T): Promise { - this.#client.logger.error(`Commande inexistante employée: ${interaction.commandName}`); + this.#client.logger.error( + `Commande inexistante employée: ${interaction.commandName}`, + ); if ("reply" in interaction) { await interaction.reply({ content: "❌ **Oups!** - Cette commande n'existe pas.", @@ -75,7 +84,10 @@ export class CommandHandler< } } - async #handleAuthorizationError(interaction: T, error: string): Promise { + async #handleAuthorizationError( + interaction: T, + error: string, + ): Promise { if ("reply" in interaction) { await interaction.reply({ content: error, @@ -88,7 +100,10 @@ export class CommandHandler< try { if (interaction.isAutocomplete() && command.autocomplete) { await command.autocomplete(this.#client, interaction); - } else if (interaction.isChatInputCommand() || interaction.isMessageContextMenuCommand()) { + } else if ( + interaction.isChatInputCommand() || + interaction.isMessageContextMenuCommand() + ) { await command.execute(this.#client, interaction); } } catch (err) { @@ -96,7 +111,11 @@ export class CommandHandler< } } - async #handleCommandError(interaction: T, command: Command, err: unknown): Promise { + async #handleCommandError( + interaction: T, + command: Command, + err: unknown, + ): Promise { this.#client.logger.error( `Une erreur est survenue lors de l'exécution de la commande <${command.data.name}>: ${JSON.stringify(err)}`, ); @@ -111,12 +130,13 @@ export class CommandHandler< return; } - const replyOptions: InteractionReplyOptions = { - content: "❌ **Oups!** - Une erreur est survenue en essayant cette commande. Reporte-le à un membre du Staff s'il te plaît!", + const replyOptions: InteractionReplyOptions & { content: string } = { + content: + "❌ **Oups!** - Une erreur est survenue en essayant cette commande. Reporte-le à un membre du Staff s'il te plaît!", flags: MessageFlags.Ephemeral, }; if (interaction.deferred) { - await interaction.editReply(replyOptions.content!); + await interaction.editReply(replyOptions.content); } else if (interaction.replied) { await interaction.followUp(replyOptions); } else { diff --git a/src/services/PostgresDatabaseService.ts b/src/services/PostgresDatabaseService.ts index fe683af..278bd6a 100644 --- a/src/services/PostgresDatabaseService.ts +++ b/src/services/PostgresDatabaseService.ts @@ -1,3 +1,4 @@ +import type { ConsoleLogger } from "@hunteroi/advanced-logger"; import type { Snowflake } from "discord.js"; import { Client, @@ -6,8 +7,6 @@ import { type Value, } from "ts-postgres"; -import type { ConsoleLogger } from "@hunteroi/advanced-logger"; - import { getErrorMessage } from "../helpers.js"; import type { IDatabaseService } from "../models/IDatabaseService.js"; import type { User } from "../models/User.js"; @@ -289,7 +288,7 @@ export default class PostgresDatabaseService implements IDatabaseService { value ? new Date(value) : null; const asInteger = ( value: string | undefined | null, - ): number | null => (value ? Number.parseInt(value) : null); + ): number | null => (value ? Number.parseInt(value, 10) : null); const user = { userid: entity.get("userid")?.valueOf(), data: JSON.parse(entity.get("data")?.toString() ?? "{}"), From c5dc6fa599eeb692bf317a32f8dd551a276dd3aa Mon Sep 17 00:00:00 2001 From: HunteRoi Date: Wed, 24 Sep 2025 01:09:03 +0200 Subject: [PATCH 3/4] Fix Quality Gate issues & refactor script to deploy commands Use dotenvx and proper "clientReady" event. Use top-level await over promise chain. Use String.raw instead of escaping a character. Remove array cloning when unnecessary. Change conditions to avoid negated ones. Use Set and Set#has instead of an array. --- index.ts | 41 +++++++++++++------------ scripts/deploy-commands.cjs | 7 +++-- src/commands/admins/announce.ts | 3 +- src/commands/utility/mdn.ts | 2 +- src/events/clientReady.ts | 8 ++--- src/services/CommandHandler.ts | 6 ++-- src/services/PostgresDatabaseService.ts | 24 ++++++++------- 7 files changed, 48 insertions(+), 43 deletions(-) diff --git a/index.ts b/index.ts index b12704d..42c8aa7 100644 --- a/index.ts +++ b/index.ts @@ -3,26 +3,29 @@ import { GatewayIntentBits } from "discord.js"; import { readConfig } from "./src/config.js"; import { DatadropClient } from "./src/datadrop.js"; -import type { Configuration } from "./src/models/Configuration.js"; dotenvx.config({ debug: Boolean(process.env.DEBUG), encoding: "utf-8" }); -let client: DatadropClient; -readConfig() - .then(async (config: Configuration) => { - client = new DatadropClient( - { - intents: [ - GatewayIntentBits.Guilds, - GatewayIntentBits.GuildMembers, - GatewayIntentBits.GuildVoiceStates, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.DirectMessages, - ], - }, - config, - ); +const config = await readConfig(); - await client.start(); - }) - .catch(() => client?.stop()); +if (!config) throw new Error("No configuration file read; aborting startup."); + +const client = new DatadropClient( + { + intents: [ + GatewayIntentBits.Guilds, + GatewayIntentBits.GuildMembers, + GatewayIntentBits.GuildVoiceStates, + GatewayIntentBits.GuildMessages, + GatewayIntentBits.DirectMessages, + ], + }, + config, +); + +try { + await client.start(); +} catch (err) { + console.error(err); + await client?.stop(); +} diff --git a/scripts/deploy-commands.cjs b/scripts/deploy-commands.cjs index 813b411..48df83f 100644 --- a/scripts/deploy-commands.cjs +++ b/scripts/deploy-commands.cjs @@ -1,8 +1,9 @@ -const dotenv = require("dotenv"); +const dotenvx = require("@dotenvx/dotenvx"); const { Client, Collection, REST, Routes } = require("discord.js"); const path = require("node:path"); const fsp = require("node:fs/promises"); const synchronizeSlashCommands = require("discord-sync-commands"); + const { botId: botProdId } = require("../config.production.json"); const { guildId, botId: botDevId } = require("../config.development.json"); @@ -65,7 +66,7 @@ async function main(args) { } const client = new Client({ intents: [] }); - client.once("ready", () => console.log("Ready!")); + client.once("clientReady", () => console.log("Ready!")); client.once("error", console.error); const commands = new Collection(); @@ -90,7 +91,7 @@ async function main(args) { await client.destroy(); } -dotenv.config({ debug: Boolean(process.env.DEBUG), encoding: "utf-8" }); +dotenvx.config({ debug: Boolean(process.env.DEBUG), encoding: "utf-8" }); if (!process.env.DISCORD_TOKEN) { console.error( "Error: Please provide a Discord token in the environment variable DISCORD_TOKEN.", diff --git a/src/commands/admins/announce.ts b/src/commands/admins/announce.ts index 74d9499..628024f 100644 --- a/src/commands/admins/announce.ts +++ b/src/commands/admins/announce.ts @@ -14,6 +14,7 @@ import { } from "discord.js"; import type { DatadropClient } from "../../datadrop.js"; +import { getErrorMessage } from "../../helpers.js"; import type { Command } from "../../models/Command.js"; export default { @@ -111,7 +112,7 @@ export default { }); } } catch (error) { - console.error(error); + client.logger.error(getErrorMessage(error)); await interaction.editReply({ content: "❌ **Oups!** - Aucune confirmation reçue, annulation...", diff --git a/src/commands/utility/mdn.ts b/src/commands/utility/mdn.ts index c915ae1..2811bb1 100644 --- a/src/commands/utility/mdn.ts +++ b/src/commands/utility/mdn.ts @@ -55,7 +55,7 @@ async function getMDNIndex() { function sanitize(str: string): string { return str .replaceAll("||", "|\u200B|") // avoid spoiler - .replaceAll("*", "\\*") // avoid bold/italic + .replaceAll("*", String.raw`\*`) // avoid bold/italic .replaceAll(/\s+/g, " ") // remove duplicate spaces .replaceAll( /\[(.+?)]\((.+?)\)/g, diff --git a/src/events/clientReady.ts b/src/events/clientReady.ts index 66e449a..fd031f9 100644 --- a/src/events/clientReady.ts +++ b/src/events/clientReady.ts @@ -47,11 +47,9 @@ async function registerRolesChannels( await Promise.all([ client.selfRoleManager.registerChannel(rolesChannelid, { - rolesToEmojis: [ - ...[first, second, third, alumni, tutor, announce].map( - (cfg) => ({ role: cfg.roleid, emoji: cfg.emote }), - ), - ], + rolesToEmojis: [first, second, third, alumni, tutor, announce].map( + (cfg) => ({ role: cfg.roleid, emoji: cfg.emote }), + ), message: { ...message, options: { diff --git a/src/services/CommandHandler.ts b/src/services/CommandHandler.ts index 31e969c..4a11e99 100644 --- a/src/services/CommandHandler.ts +++ b/src/services/CommandHandler.ts @@ -58,13 +58,13 @@ export class CommandHandler< #logUsage(interaction: T, command: Command, isAuthorized: boolean): void { let channelInfo: string; const channel = interaction.channel; - if (!channel) { - channelInfo = "dans un canal inconnu"; - } else { + if (channel) { channelInfo = channel.type === ChannelType.GuildText ? `dans #${channel.name} (${channel.id})` : "en DM"; + } else { + channelInfo = "dans un canal inconnu"; } const author = interaction.user; this.#client.logger.info( diff --git a/src/services/PostgresDatabaseService.ts b/src/services/PostgresDatabaseService.ts index 278bd6a..9064b8b 100644 --- a/src/services/PostgresDatabaseService.ts +++ b/src/services/PostgresDatabaseService.ts @@ -116,8 +116,8 @@ export default class PostgresDatabaseService implements IDatabaseService { let sqlQuery = "SELECT * FROM Users"; let nbArguments = 1; while (nbArguments <= argument.size * 2) { - if (!sqlQuery.includes("WHERE")) sqlQuery += " WHERE "; - else sqlQuery += " AND "; + if (sqlQuery.includes("WHERE")) sqlQuery += " AND "; + else sqlQuery += " WHERE "; sqlQuery += `$${nbArguments} = $${++nbArguments}`; nbArguments++; } @@ -150,16 +150,18 @@ export default class PostgresDatabaseService implements IDatabaseService { const insertValues = userEntries .filter(([prop]) => insertColumns.includes(prop)) .sort(([prop1], [prop2]) => this.#ascendingSort(prop1, prop2)); - const updateColumns = [ - "status", - "code", - "nbCodeCalled", - "nbVerifyCalled", - "activatedCode", - "activationTimestamp", - ].sort(this.#ascendingSort); + const updateColumns = new Set( + [ + "status", + "code", + "nbCodeCalled", + "nbVerifyCalled", + "activatedCode", + "activationTimestamp", + ].sort(this.#ascendingSort), + ); const updateValues = userEntries - .filter(([prop]) => updateColumns.includes(prop)) + .filter(([prop]) => updateColumns.has(prop)) .sort(([prop1], [prop2]) => this.#ascendingSort(prop1, prop2)); const sqlQuery = `INSERT INTO Users (userId, data, createdAt, ${this.#listParameters(insertColumns)}) From 1ef6fcf8bc2c492c0f6fdbbdca437086599350c9 Mon Sep 17 00:00:00 2001 From: HunteRoi Date: Wed, 24 Sep 2025 15:04:58 +0200 Subject: [PATCH 4/4] refactor: change SMTP2GO_API_KEY env variable to a generic name --- #.env.development | 2 +- README.md | 2 +- src/config.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/#.env.development b/#.env.development index d5ea493..636a8c3 100644 --- a/#.env.development +++ b/#.env.development @@ -3,4 +3,4 @@ POSTGRES_PASSWORD= DATABASE_PORT=5432 DATABASE_HOST=localhost DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${POSTGRES_DB}?schema=public -SMTP2GO_API_KEY= +MAILING_API_KEY= diff --git a/README.md b/README.md index b93a535..e9bc38a 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ POSTGRES_PASSWORD= DATABASE_PORT=5432 DATABASE_HOST=localhost DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${POSTGRES_DB}?schema=public -SMTP2GO_API_KEY= +MAILING_API_KEY= ``` An empty copy of this file is available as [#.env.development](./#.env.development). diff --git a/src/config.ts b/src/config.ts index 64523e7..677376e 100644 --- a/src/config.ts +++ b/src/config.ts @@ -51,7 +51,7 @@ export async function readConfig(): Promise { ...json, version: `${environment}-v${packageInfo.version}`, }; - config.communicationServiceOptions.apiKey = process.env.SMTP2GO_API_KEY; + config.communicationServiceOptions.apiKey = process.env.MAILING_API_KEY; return config; } catch (err: unknown) {