From 45fe6df4649b7b32e9d88190a586e5b96c1a415b Mon Sep 17 00:00:00 2001 From: Toastie Date: Sun, 26 Nov 2023 22:26:08 +1300 Subject: [PATCH] Updated a lot of things --- .github/dependabot.yml | 18 - .gitignore | 3 +- LICENSE | 2 +- commands/drop.js | 68 + commands/end.js | 71 + commands/help.js | 44 + commands/invite.js | 35 + commands/pause.js | 71 + commands/ping.js | 39 + commands/reroll.js | 70 + commands/start.js | 77 + commands/stats.js | 87 + commands/unpause.js | 71 + config.example.json | 9 - events/discord/interactionCreate.js | 15 - events/discord/messageCreate.js | 20 - events/discord/ready.js | 53 - .../giveaways/endedGiveawayReactionAdded.js | 14 - events/giveaways/giveawayEnded.js | 34 - events/giveaways/giveawayReactionAdded.js | 64 - events/giveaways/giveawayReactionRemoved.js | 27 - events/giveaways/giveawayRerolled.js | 36 - events/interactionCreate.js | 13 + events/mongo/connected.js | 8 - events/mongo/connecting.js | 8 - events/mongo/disconnected.js | 8 - events/mongo/err.js | 8 - events/ready.js | 21 + example.config.json | 5 + examples/custom-databases/.eslintrc.json | 5 + examples/custom-databases/enmap.js | 64 + examples/custom-databases/mongoose.js | 133 + examples/custom-databases/mysql.js | 144 + examples/custom-databases/nano.js | 81 + examples/custom-databases/quick.db.js | 76 + examples/custom-databases/quick.replit.js | 87 + examples/custom-databases/quickmongo.js | 71 + examples/custom-databases/replit.js | 83 + examples/simple.js | 1 + giveawayInit.js | 41 - giveaways.json | 1 + host.js | 7 - index.js | 181 +- package-lock.json | 3842 ----------------- package.json | 35 +- pnpm-lock.yaml | 1060 +++++ schemas/giveawaysSchema.js | 60 - schemas/guild.js | 9 - slash/about.js | 29 - slash/avatar.js | 74 - slash/edit.js | 72 - slash/end.js | 65 - slash/help.js | 108 - slash/info.js | 53 - slash/invite.js | 33 - slash/pause.js | 63 - slash/ping.js | 22 - slash/reroll.js | 62 - slash/resume.js | 63 - slash/servericon.js | 26 - slash/serverinfo.js | 41 - slash/start.js | 164 - slash/userinfo.js | 234 - utils/{message.js => messages.js} | 0 utils/slashsync.js | 55 - 65 files changed, 2579 insertions(+), 5565 deletions(-) delete mode 100644 .github/dependabot.yml create mode 100644 commands/drop.js create mode 100644 commands/end.js create mode 100644 commands/help.js create mode 100644 commands/invite.js create mode 100644 commands/pause.js create mode 100644 commands/ping.js create mode 100644 commands/reroll.js create mode 100644 commands/start.js create mode 100644 commands/stats.js create mode 100644 commands/unpause.js delete mode 100644 config.example.json delete mode 100644 events/discord/interactionCreate.js delete mode 100644 events/discord/messageCreate.js delete mode 100644 events/discord/ready.js delete mode 100644 events/giveaways/endedGiveawayReactionAdded.js delete mode 100644 events/giveaways/giveawayEnded.js delete mode 100644 events/giveaways/giveawayReactionAdded.js delete mode 100644 events/giveaways/giveawayReactionRemoved.js delete mode 100644 events/giveaways/giveawayRerolled.js create mode 100644 events/interactionCreate.js delete mode 100644 events/mongo/connected.js delete mode 100644 events/mongo/connecting.js delete mode 100644 events/mongo/disconnected.js delete mode 100644 events/mongo/err.js create mode 100644 events/ready.js create mode 100644 example.config.json create mode 100644 examples/custom-databases/.eslintrc.json create mode 100644 examples/custom-databases/enmap.js create mode 100644 examples/custom-databases/mongoose.js create mode 100644 examples/custom-databases/mysql.js create mode 100644 examples/custom-databases/nano.js create mode 100644 examples/custom-databases/quick.db.js create mode 100644 examples/custom-databases/quick.replit.js create mode 100644 examples/custom-databases/quickmongo.js create mode 100644 examples/custom-databases/replit.js create mode 100644 examples/simple.js delete mode 100644 giveawayInit.js create mode 100644 giveaways.json delete mode 100644 host.js delete mode 100644 package-lock.json create mode 100644 pnpm-lock.yaml delete mode 100644 schemas/giveawaysSchema.js delete mode 100644 schemas/guild.js delete mode 100644 slash/about.js delete mode 100644 slash/avatar.js delete mode 100644 slash/edit.js delete mode 100644 slash/end.js delete mode 100644 slash/help.js delete mode 100644 slash/info.js delete mode 100644 slash/invite.js delete mode 100644 slash/pause.js delete mode 100644 slash/ping.js delete mode 100644 slash/reroll.js delete mode 100644 slash/resume.js delete mode 100644 slash/servericon.js delete mode 100644 slash/serverinfo.js delete mode 100644 slash/start.js delete mode 100644 slash/userinfo.js rename utils/{message.js => messages.js} (100%) delete mode 100644 utils/slashsync.js diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index b15f222..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,18 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "npm" # See documentation for possible values - directory: "/" # Location of package manifests - schedule: - interval: "daily" - open-pull-requests-limit: 5 - reviewers: - - EmotionChild - target-branch: "development" - labels: - - "npm" - - "dependencies" \ No newline at end of file diff --git a/.gitignore b/.gitignore index 27c6ba3..58a7e9f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ node_modules giveaways.js -config.json -giveaways.json \ No newline at end of file +config.json \ No newline at end of file diff --git a/LICENSE b/LICENSE index 15422e8..f1512fa 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2023 EmotionChild + Copyright 2023 Toastie_t0ast Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/commands/drop.js b/commands/drop.js new file mode 100644 index 0000000..08b594b --- /dev/null +++ b/commands/drop.js @@ -0,0 +1,68 @@ +const Discord = require("discord.js"); +const messages = require("../utils/messages.js"); + +module.exports = { + description: "Create a drop giveaway", + + options: [ + { + name: "winners", + description: "How many winners the giveaway should have", + type: Discord.ApplicationCommandOptionType.Integer, + required: true, + }, + { + name: "prize", + description: "What the prize of the giveaway should be", + type: Discord.ApplicationCommandOptionType.String, + required: true, + }, + { + name: "channel", + description: "The channel to start the giveaway in", + type: Discord.ApplicationCommandOptionType.Channel, + required: true, + }, + ], + + run: async (client, interaction) => { + // If the member doesn't have enough permissions + if ( + !interaction.member.permissions.has("MANAGE_MESSAGES") && + !interaction.member.roles.cache.some((r) => r.name === "Giveaways") + ) { + return interaction.reply({ + content: + ":x: You need to have the manage messages permissions to start giveaways.", + ephemeral: true, + }); + } + + const giveawayChannel = interaction.options.getChannel("channel"); + const giveawayWinnerCount = interaction.options.getInteger("winners"); + const giveawayPrize = interaction.options.getString("prize"); + + if (!giveawayChannel.isTextBased()) { + return interaction.reply({ + content: ":x: Selected channel is not text-based.", + ephemeral: true, + }); + } + + // Start the giveaway + client.giveawaysManager.start(giveawayChannel, { + // The number of winners for this drop + winnerCount: giveawayWinnerCount, + // The prize of the giveaway + prize: giveawayPrize, + // Who hosts this giveaway + hostedBy: client.config.hostedBy ? interaction.user : null, + // specify drop + isDrop: true, + // Messages + messages, + }); + + interaction.reply(`Giveaway started in ${giveawayChannel}!`); + }, +}; \ No newline at end of file diff --git a/commands/end.js b/commands/end.js new file mode 100644 index 0000000..bdfde1f --- /dev/null +++ b/commands/end.js @@ -0,0 +1,71 @@ +const Discord = require("discord.js"); + +module.exports = { + description: "End a giveaway", + + options: [ + { + name: "giveaway", + description: "The giveaway to end (message ID or giveaway prize)", + type: Discord.ApplicationCommandOptionType.String, + required: true, + }, + ], + + run: async (client, interaction) => { + // If the member doesn't have enough permissions + if ( + !interaction.member.permissions.has("MANAGE_MESSAGES") && + !interaction.member.roles.cache.some((r) => r.name === "Giveaways") + ) { + return interaction.reply({ + content: + ":x: You need to have the manage messages permissions to end giveaways.", + ephemeral: true, + }); + } + + const query = interaction.options.getString("giveaway"); + + // try to found the giveaway with prize then with ID + const giveaway = + // Search with giveaway prize + client.giveawaysManager.giveaways.find( + (g) => g.prize === query && g.guildId === interaction.guild.id + ) || + // Search with giveaway ID + client.giveawaysManager.giveaways.find( + (g) => g.messageId === query && g.guildId === interaction.guild.id + ); + + // If no giveaway was found + if (!giveaway) { + return interaction.reply({ + content: "Unable to find a giveaway for `" + query + "`.", + ephemeral: true, + }); + } + + if (giveaway.ended) { + return interaction.reply({ + content: "This giveaway is already ended.", + ephemeral: true, + }); + } + + // Edit the giveaway + client.giveawaysManager + .end(giveaway.messageId) + // Success message + .then(() => { + // Success message + interaction.reply("Giveaway ended!"); + }) + .catch((e) => { + interaction.reply({ + content: e, + ephemeral: true, + }); + }); + }, +}; \ No newline at end of file diff --git a/commands/help.js b/commands/help.js new file mode 100644 index 0000000..9a9bf55 --- /dev/null +++ b/commands/help.js @@ -0,0 +1,44 @@ +const messages = require("../utils/messages"); +const { + EmbedBuilder, + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, +} = require("discord.js"); + +module.exports = { + name: "help", + description: "Get all Bot Commands", + run: async (client, interaction) => { + let helpembed = new EmbedBuilder(); + helpembed.setAuthor({ name: `Commands of ${client.user.username}` }); + helpembed.setColor("#2f3136"); + helpembed.setThumbnail( + "https://cdn.discordapp.com/attachments/765441543100170271/837111290265993246/196270_IDaqfU3u.png" + ); + client.commands.map((cmd) => { + helpembed.addFields({ + name: `\`${cmd.name}\``, + value: `${cmd.description}`, + }); + }); + helpembed.setTimestamp(); + helpembed.setFooter({ text: `© Holana | Have a nice day!` }); + + const row = new ActionRowBuilder().addComponents( + new ButtonBuilder() + .setEmoji("865572290065072128") + .setLabel(`Invite ${client.user.username}`) + .setURL( + `https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=8&scope=bot%20applications.commands` + ) + .setStyle(ButtonStyle.Link) + ); + + await interaction.reply({ + embeds: [helpembed], + components: [row], + ephemeral: true, + }); + }, +}; \ No newline at end of file diff --git a/commands/invite.js b/commands/invite.js new file mode 100644 index 0000000..495e549 --- /dev/null +++ b/commands/invite.js @@ -0,0 +1,35 @@ +const messages = require("../utils/messages"); +const { + EmbedBuilder, + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, +} = require("discord.js"); + +module.exports = { + name: "invite", + description: "Get Invite Link for Holana", + run: async (client, interaction) => { + let invite = new EmbedBuilder() + .setTitle(`${interaction.user.tag}`) + .setDescription("You can invite the bot by clicking on the below button.") + .setColor("#2f3136") + .setFooter({ text: `© Holana | Have a nice day!` }); + + const row = new ActionRowBuilder().addComponents( + new ButtonBuilder() + .setEmoji("865572290065072128") + .setLabel(`Invite ${client.user.username}`) + .setURL( + `https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=8&scope=bot%20applications.commands` + ) + .setStyle(ButtonStyle.Link) + ); + + await interaction.reply({ + embeds: [invite], + components: [row], + ephemeral: true, + }); + }, +}; \ No newline at end of file diff --git a/commands/pause.js b/commands/pause.js new file mode 100644 index 0000000..55bd2dd --- /dev/null +++ b/commands/pause.js @@ -0,0 +1,71 @@ +const Discord = require("discord.js"); + +module.exports = { + description: "Pause a giveaway", + + options: [ + { + name: "giveaway", + description: "The giveaway to pause (message ID or giveaway prize)", + type: Discord.ApplicationCommandOptionType.String, + required: true, + }, + ], + + run: async (client, interaction) => { + // If the member doesn't have enough permissions + if ( + !interaction.member.permissions.has("MANAGE_MESSAGES") && + !interaction.member.roles.cache.some((r) => r.name === "Giveaways") + ) { + return interaction.reply({ + content: + ":x: You need to have the manage messages permissions to pause giveaways.", + ephemeral: true, + }); + } + + const query = interaction.options.getString("giveaway"); + + // try to found the giveaway with prize then with ID + const giveaway = + // Search with giveaway prize + client.giveawaysManager.giveaways.find( + (g) => g.prize === query && g.guildId === interaction.guild.id + ) || + // Search with giveaway ID + client.giveawaysManager.giveaways.find( + (g) => g.messageId === query && g.guildId === interaction.guild.id + ); + + // If no giveaway was found + if (!giveaway) { + return interaction.reply({ + content: "Unable to find a giveaway for `" + query + "`.", + ephemeral: true, + }); + } + + if (giveaway.pauseOptions.isPaused) { + return interaction.reply({ + content: "This giveaway is already paused.", + ephemeral: true, + }); + } + + // Edit the giveaway + client.giveawaysManager + .pause(giveaway.messageId) + // Success message + .then(() => { + // Success message + interaction.reply("Giveaway paused!"); + }) + .catch((e) => { + interaction.reply({ + content: e, + ephemeral: true, + }); + }); + }, +}; \ No newline at end of file diff --git a/commands/ping.js b/commands/ping.js new file mode 100644 index 0000000..c662477 --- /dev/null +++ b/commands/ping.js @@ -0,0 +1,39 @@ +const messages = require("../utils/messages"); +const { EmbedBuilder } = require("discord.js"); + +module.exports = { + name: "ping", + description: "Tells a bot latency,", + run: async (client, interaction) => { + // If the member doesn't have enough permissions + if (!interaction.member.permissions.has("SEND_MESSAGES")) { + return interaction.reply({ + content: + ":x: You need to have the manage messages permissions to start giveaways.", + ephemeral: true, + }); + } + + let circles = { + green: "<:online:903711513183940669>", + yellow: "<:idle:903711513490112512> ", + red: "<:dnd:903711513066487851>", + }; + + let botping = new EmbedBuilder() + .setTitle(`${client.user.username} Ping`) + .setColor("2f3136") + .addFields({ + name: "<:connection2:896715171454677013> Bot Ping:", + value: `${ + client.ws?.ping <= 200 + ? circles.green + : client.ws?.ping <= 400 + ? circles.yellow + : circles.red + } ${client.ws?.ping}ms`, + }) + .setTimestamp(); + await interaction.reply({ embeds: [botping] }); + }, +}; \ No newline at end of file diff --git a/commands/reroll.js b/commands/reroll.js new file mode 100644 index 0000000..108ae6d --- /dev/null +++ b/commands/reroll.js @@ -0,0 +1,70 @@ +const Discord = require("discord.js"); + +module.exports = { + description: "Reroll a giveaway", + + options: [ + { + name: "giveaway", + description: "The giveaway to reroll (message ID or prize)", + type: Discord.ApplicationCommandOptionType.String, + required: true, + }, + ], + + run: async (client, interaction) => { + // If the member doesn't have enough permissions + if ( + !interaction.member.permissions.has("MANAGE_MESSAGES") && + !interaction.member.roles.cache.some((r) => r.name === "Giveaways") + ) { + return interaction.reply({ + content: + ":x: You need to have the manage messages permissions to reroll giveaways.", + ephemeral: true, + }); + } + + const query = interaction.options.getString("giveaway"); + + // try to found the giveaway with prize then with ID + const giveaway = + // Search with giveaway prize + client.giveawaysManager.giveaways.find( + (g) => g.prize === query && g.guildId === interaction.guild.id + ) || + // Search with giveaway ID + client.giveawaysManager.giveaways.find( + (g) => g.messageId === query && g.guildId === interaction.guild.id + ); + + // If no giveaway was found + if (!giveaway) { + return interaction.reply({ + content: "Unable to find a giveaway for `" + query + "`.", + ephemeral: true, + }); + } + + if (!giveaway.ended) { + return interaction.reply({ + content: "The giveaway is not ended yet.", + ephemeral: true, + }); + } + + // Reroll the giveaway + client.giveawaysManager + .reroll(giveaway.messageId) + .then(() => { + // Success message + interaction.reply("Giveaway rerolled!"); + }) + .catch((e) => { + interaction.reply({ + content: e, + ephemeral: true, + }); + }); + }, +}; \ No newline at end of file diff --git a/commands/start.js b/commands/start.js new file mode 100644 index 0000000..9a9068e --- /dev/null +++ b/commands/start.js @@ -0,0 +1,77 @@ +const Discord = require("discord.js"); +const ms = require("ms"); +const messages = require("../utils/messages"); + +module.exports = { + description: "Start a giveaway", + + options: [ + { + name: "duration", + description: + "How long the giveaway should last for. Example values: 1m, 1h, 1d", + type: Discord.ApplicationCommandOptionType.String, + required: true, + }, + { + name: "winners", + description: "How many winners the giveaway should have", + type: Discord.ApplicationCommandOptionType.Integer, + required: true, + }, + { + name: "prize", + description: "What the prize of the giveaway should be", + type: Discord.ApplicationCommandOptionType.String, + required: true, + }, + { + name: "channel", + description: "The channel to start the giveaway in", + type: Discord.ApplicationCommandOptionType.Channel, + required: true, + }, + ], + + run: async (client, interaction) => { + // If the member doesn't have enough permissions + if ( + !interaction.member.permissions.has("MANAGE_MESSAGES") && + !interaction.member.roles.cache.some((r) => r.name === "Giveaways") + ) { + return interaction.reply({ + content: + ":x: You need to have the manage messages permissions to start giveaways.", + ephemeral: true, + }); + } + + const giveawayChannel = interaction.options.getChannel("channel"); + const giveawayDuration = interaction.options.getString("duration"); + const giveawayWinnerCount = interaction.options.getInteger("winners"); + const giveawayPrize = interaction.options.getString("prize"); + + if (!giveawayChannel.isTextBased()) { + return interaction.reply({ + content: ":x: Selected channel is not text-based.", + ephemeral: true, + }); + } + + // Start the giveaway + client.giveawaysManager.start(giveawayChannel, { + // The giveaway duration + duration: ms(giveawayDuration), + // The giveaway prize + prize: giveawayPrize, + // The giveaway winner count + winnerCount: giveawayWinnerCount, + // Who hosts this giveaway + hostedBy: client.config.hostedBy ? interaction.user : null, + // Messages + messages, + }); + + interaction.reply(`Giveaway started in ${giveawayChannel}!`); + }, +}; \ No newline at end of file diff --git a/commands/stats.js b/commands/stats.js new file mode 100644 index 0000000..99c5d4b --- /dev/null +++ b/commands/stats.js @@ -0,0 +1,87 @@ +const os = require("os"); +const { EmbedBuilder } = require("discord.js"); +const feroms = require("fero-ms"); + +module.exports = { + name: "stats", + description: "Sends bot physical statistics", + run: async (client, interaction) => { + let uptime = client.uptime; + let shortUptime = feroms.ms(uptime); + let model = os.cpus()[0].model; + let cores = os.cpus().length; + let platform = os.platform(); + let nodejs = process.version; + let djs = require("discord.js").version; + let botversion = require("../package.json").version; + let server = client.guilds.cache.size; + let user = client.users.cache.size; + let channel = client.channels.cache.size; + + let statsembed = new EmbedBuilder() + .addFields( + { + name: "<:live2:896715171882500106> I have been online for?", + value: `\`\`\`${shortUptime}\`\`\``, + }, + { + name: "<:globe:896718155416760340> Guilds", + value: `\`${server}\``, + inline: true, + }, + { + name: "<:mention:896718358672707584> Users", + value: `\`${user}\``, + inline: true, + }, + { + name: "<:channel:896717996326809641> Channels", + value: `\`${channel}\``, + inline: true, + }, + { + name: "Bot Version", + value: `\`v${botversion}\``, + inline: true, + }, + { + name: "<:prime:896718399776886816> Arch", + value: `\`${os.arch()}\``, + inline: true, + }, + { + name: "<:info:896718244461826140> Platform", + value: `\`${platform}\``, + inline: true, + }, + { + name: "<:desktop:896718080821047346> Cores", + value: `\`${cores}\``, + inline: true, + }, + { + name: " Discord.js Version", + value: `\`v${djs}\``, + inline: true, + }, + { + name: "<:jss:896718571491704852> Node.js Version", + value: `\`${nodejs}\``, + inline: true, + }, + { + name: "<:ram:896715172029276180> Ram Usage", + value: `\`${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed( + 2 + )}MB/ ${(os.totalmem() / 1024 / 1024).toFixed(2)}MB\``, + inline: true, + }, + { + name: "<:desktop:896718080821047346> CPU Model", + value: `\`\`\`${model}\`\`\``, + } + ) + .setTimestamp(); + await interaction.reply({ embeds: [statsembed] }); + }, +}; \ No newline at end of file diff --git a/commands/unpause.js b/commands/unpause.js new file mode 100644 index 0000000..3f9f511 --- /dev/null +++ b/commands/unpause.js @@ -0,0 +1,71 @@ +const Discord = require("discord.js"); + +module.exports = { + description: "Unpause a giveaway", + + options: [ + { + name: "giveaway", + description: "The giveaway to unpause (message ID or giveaway prize)", + type: Discord.ApplicationCommandOptionType.String, + required: true, + }, + ], + + run: async (client, interaction) => { + // If the member doesn't have enough permissions + if ( + !interaction.member.permissions.has("MANAGE_MESSAGES") && + !interaction.member.roles.cache.some((r) => r.name === "Giveaways") + ) { + return interaction.reply({ + content: + ":x: You need to have the manage messages permissions to unpause giveaways.", + ephemeral: true, + }); + } + + const query = interaction.options.getString("giveaway"); + + // try to found the giveaway with prize then with ID + const giveaway = + // Search with giveaway prize + client.giveawaysManager.giveaways.find( + (g) => g.prize === query && g.guildId === interaction.guild.id + ) || + // Search with giveaway ID + client.giveawaysManager.giveaways.find( + (g) => g.messageId === query && g.guildId === interaction.guild.id + ); + + // If no giveaway was found + if (!giveaway) { + return interaction.reply({ + content: "Unable to find a giveaway for `" + query + "`.", + ephemeral: true, + }); + } + + if (!giveaway.pauseOptions.isPaused) { + return interaction.reply({ + content: "This giveaway is not paused.", + ephemeral: true, + }); + } + + // Edit the giveaway + client.giveawaysManager + .unpause(giveaway.messageId) + // Success message + .then(() => { + // Success message + interaction.reply("Giveaway unpaused!"); + }) + .catch((e) => { + interaction.reply({ + content: e, + ephemeral: true, + }); + }); + }, +}; \ No newline at end of file diff --git a/config.example.json b/config.example.json deleted file mode 100644 index 7fe9e9e..0000000 --- a/config.example.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "token": "", - "prefix": "!", - "everyoneMention": false, - "copyright": "Holana", - "hostedBy": false, - "MONGODB_URI": "", - "privateMessageInformation": true -} \ No newline at end of file diff --git a/events/discord/interactionCreate.js b/events/discord/interactionCreate.js deleted file mode 100644 index 151d209..0000000 --- a/events/discord/interactionCreate.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = (client, interaction) => { - // Check if our interaction is a slash command - if (interaction.isCommand()) { - // Get the command from our slash command collection - const command = client.interactions.get(interaction.commandName); - - // If command does not exist return an error message - if (!command) return interaction.reply({ - content: "Something Went Wrong | Perhaps command not registered?", - ephemeral: true - }); - - command.run(client, interaction); - } -} \ No newline at end of file diff --git a/events/discord/messageCreate.js b/events/discord/messageCreate.js deleted file mode 100644 index 9d0b6e7..0000000 --- a/events/discord/messageCreate.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = (client, message) => { - // return if author is a bot - if (message.author.bot) return; - - // return if message does not match prefix (in command) - if (message.content.indexOf(client.config.prefix) !== 0) return; - - // Defining what are arguments and commands - const args = message.content.slice(client.config.prefix.length).trim().split(/ +/g); - const command = args.shift().toLowerCase(); - - // Get the command data from the client.commands Enmap - const cmd = client.commands.get(command); - - // If command does not exist return - if (!cmd) return; - - // Run the command - cmd.run(client, message, args); -}; \ No newline at end of file diff --git a/events/discord/ready.js b/events/discord/ready.js deleted file mode 100644 index d937b39..0000000 --- a/events/discord/ready.js +++ /dev/null @@ -1,53 +0,0 @@ -const register = require('../../utils/slashsync'); -const { ActivityType } = require('discord.js'); - -module.exports = async (client) => { - - await register(client, client.register_arr.map((command) => ({ - name: command.name, - description: command.description, - options: command.options, - type: '1' - })), { - debug: true - }); - - console.log(`[ / | Slash Command ] - ✅ Loaded all slash commands!`) - console.log(`[STATUS] ${client.user.tag} is now online!`); - const activities = [ - 'Your Giveaways', - '/help', - 'www.elliebot.net' - ] - - setInterval(() => { - const status = activities[Math.floor(Math.random() * activities.length)]; - client.user.setActivity({ name: `${status}`, type: ActivityType.Watching }) - }, 5000); - -}; - - -// Do this one if you want the streaming Status // - -/* -const register = require('../../utils/slashsync'); -const { ActivityType } = require('discord.js'); - -module.exports = async (client) => { - - await register(client, client.register_arr.map((command) => ({ - name: command.name, - description: command.description, - options: command.options, - type: '1' - })), { - debug: true - }); - - console.log(`[ / | Slash Command ] - ✅ Loaded all slash commands!`) - console.log(`[STATUS] ${client.user.tag} is now online!`); - - client.user.setActivity({ name: `Your Giveaways`, type: ActivityType.Streaming, url: 'https://youtube.com/' }) - -};*/ \ No newline at end of file diff --git a/events/giveaways/endedGiveawayReactionAdded.js b/events/giveaways/endedGiveawayReactionAdded.js deleted file mode 100644 index 5649ed1..0000000 --- a/events/giveaways/endedGiveawayReactionAdded.js +++ /dev/null @@ -1,14 +0,0 @@ -const Discord = require('discord.js'); -module.exports = { - async execute(giveaway, member, reaction) { - reaction.users.remove(member.user); - member.send({ - embeds: [ - new Discord.EmbedBuilder() - .setColor("#2F3136") - .setDescription("<:cross:885049515323846696> **Oops! Looks Like that giveaway has already ended!** <:ended:1033984179672727553>"), - ], - }) - .catch((e) => {}); - }, -}; \ No newline at end of file diff --git a/events/giveaways/giveawayEnded.js b/events/giveaways/giveawayEnded.js deleted file mode 100644 index 32b1fdd..0000000 --- a/events/giveaways/giveawayEnded.js +++ /dev/null @@ -1,34 +0,0 @@ -const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); - -module.exports = { - async execute(giveaway, winners) { - winners.forEach((member) => { - member.send({ - components: [new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setLabel("Jump to the Giveaway") - .setStyle(ButtonStyle.Link) - .setURL(`https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}`) - .setEmoji('973495590921043968'), - new ButtonBuilder() - .setLabel("Invite Me") - .setStyle(ButtonStyle.Link) - .setURL("https://discord.com/api/oauth2/authorize?client_id=726333575091454002permissions=406881561681&scope=bot%20applications.commands") - .setEmoji('984296691794583582'))], - embeds: [new EmbedBuilder() - .setAuthor({name: "Congratulations!", iconURL: "https://ellie.gcoms.xyz/Ellise.png"}) - .setColor("#2F3136") - .setThumbnail('https://ellie.gcoms.xyz/Ellise.png') - .setDescription(`<:DotYellow:1002212470812852245> Hello there ${member.user}\n <:DotBlue:1002212466480128032> Congrats!! you have won **${giveaway.prize}!**\n <:DotBlue:1002212466480128032> DM ${giveaway.hostedBy} to claim your prize!`) - .setImage('https://ellie.gcoms.xyz/Ellise.png') - .setTimestamp() - .setFooter({ - text: `©️ Holana`, - iconURL: ('https://ellie.gcoms.xyz/Ellise.png') - }) - ] - }).catch(e => {}) - }); - } -} \ No newline at end of file diff --git a/events/giveaways/giveawayReactionAdded.js b/events/giveaways/giveawayReactionAdded.js deleted file mode 100644 index 852678f..0000000 --- a/events/giveaways/giveawayReactionAdded.js +++ /dev/null @@ -1,64 +0,0 @@ -const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); - -module.exports = { - async execute(giveaway, reactor, messageReaction) { - - const noice = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setLabel("Invite Me") - .setStyle(ButtonStyle.Link) - .setURL("https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=406881561681&scope=bot%20applications.commands") - .setEmoji('984296691794583582'), - ); - - let approved = new EmbedBuilder() - .setTimestamp() - .setColor("#2F3136") - .setAuthor({name: "Entry Confirmed!", iconURL: "https://ellie.gcoms.xyz/Ellise.png"}) - .setDescription( - `<:DotGreen:1002212464345239643> Your entry to **${giveaway.prize}** on [This Server](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}) has been approved! \n<:DotGreen:1002212464345239643> Earn extra points by **Voting**. \n<:DotPink:1002212468870877304> Hosted By: ${giveaway.hostedBy}` - ) - .setFooter({ text: "©️ Holana", iconURL: ('https://ellie.gcoms.xyz/Ellise.png') }) - .setTimestamp() - - const lol = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setLabel("Invite Me") - .setStyle(ButtonStyle.Link) - .setURL("https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=406881561681&scope=bot%20applications.commands") - .setEmoji('984296691794583582'), - ); - - let denied = new EmbedBuilder() - .setTimestamp() - .setColor("#2F3136") - .setAuthor({name: "Entry Denied!", iconURL: "https://ellie.gcoms.xyz/Ellise.png"}) - .setDescription( - `<:DotPink:1002212468870877304> Your entry to **${giveaway.prize}** on [This Server](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}) has been denied! \n<:DotPink:1002212468870877304> Please review the requirements to enter the giveaway properly. \n<:DotPink:1002212468870877304> Hosted By: ${giveaway.hostedBy}` - ) - .setFooter({ text: "©️ Holana", iconURL: ('https://ellie.gcoms.xyz/Ellise.png') }) - - let client = messageReaction.message.client - if (reactor.user.bot) return; - if(giveaway.extraData) { - if (giveaway.extraData.role !== "null" && !reactor.roles.cache.get(giveaway.extraData.role)){ - messageReaction.users.remove(reactor.user); - return reactor.send({ - embeds: [denied], - components: [lol] - }).catch(e => {}) - } - - return reactor.send({ - embeds: [approved], - components: [noice] - }).catch(e => {}) - } else { - return reactor.send({ - embeds: [approved] - }).catch(e => {}) - } - } - } \ No newline at end of file diff --git a/events/giveaways/giveawayReactionRemoved.js b/events/giveaways/giveawayReactionRemoved.js deleted file mode 100644 index 0e1ed32..0000000 --- a/events/giveaways/giveawayReactionRemoved.js +++ /dev/null @@ -1,27 +0,0 @@ -const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); - -module.exports = { - async execute(giveaway, member) { - return member.send({ - - components: [new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setLabel("Jump to the Giveaway") - .setStyle(ButtonStyle.Link) - .setURL(`https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}`) - .setEmoji('973495590921043968'))], - - embeds: [new EmbedBuilder() - .setTimestamp() - .setAuthor({ name: "Reaction Removed!", iconURL: "https://ellie.gcoms.xyz/Ellise.png" }) - .setTitle('Did You Just Remove a Reaction From A Giveaway?') - .setColor("#2F3136") - .setDescription( - `<:DotPink:1002212468870877304> Your entery to **${giveaway.prize}** on [This Server](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}) have been removed!\n <:DotPink:1002212468870877304> This means you're removed as a valid giveaway participant.\n <:DotGreen:1002212464345239643> Think It was a mistake? **Go react again!**` - ) - .setFooter({ text: "©️ Holana", iconURL: ('https://ellie.gcoms.xyz/Ellise.png') }) - ] - }).catch(e => {}) - } -} \ No newline at end of file diff --git a/events/giveaways/giveawayRerolled.js b/events/giveaways/giveawayRerolled.js deleted file mode 100644 index 3f006fd..0000000 --- a/events/giveaways/giveawayRerolled.js +++ /dev/null @@ -1,36 +0,0 @@ -const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); - -module.exports = { - async execute(giveaway, winners) { - winners.forEach((member) => { - member.send({ - - components: [new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setLabel("Jump to the Giveaway") - .setStyle(ButtonStyle.Link) - .setURL(`https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}`) - .setEmoji('973495590921043968'), - new ButtonBuilder() - .setLabel("Invite Me") - .setStyle(ButtonStyle.Link) - .setURL("https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=406881561681&scope=bot%20applications.commands") - .setEmoji('984296691794583582'))], - - embeds: [new EmbedBuilder() - .setAuthor({name: "Congratulations!", iconURL: ('https://ellie.gcoms.xyz/Ellise.png')}) - .setThumbnail('https://ellie.gcoms.xyz/Ellise.png') - .setColor("#2F3136") - .setDescription(`<:DotYellow:1002212470812852245> Hello there ${member.user}\n<:DotGreen:1002212464345239643> Host of the giveaway rerolled and you won the Giveaway!\n<:DotGreen:1002212464345239643> Good Job On Winning **${giveaway.prize}!** <:confetti:984296694357319730><:confetti:984296694357319730>\n<:DotGreen:1002212464345239643> DM ${giveaway.hostedBy} to claim your prize!!`) - .setImage('https://ellie.gcoms.xyz/Ellise.png') - .setTimestamp() - .setFooter({ - text: "©️ Holana", - iconURL: ('https://ellie.gcoms.xyz/Ellise.png') - }) - ] - }).catch(e => {}) - }); - } -} \ No newline at end of file diff --git a/events/interactionCreate.js b/events/interactionCreate.js new file mode 100644 index 0000000..c9eb1c2 --- /dev/null +++ b/events/interactionCreate.js @@ -0,0 +1,13 @@ +module.exports = (client, interaction) => { + if (!interaction.isChatInputCommand()) return; + + const command = client.commands.get(interaction.commandName); + + if (!command) + return void interaction.reply({ + content: `Command \`${interaction.commandName}\` not found.`, + ephemeral: true, + }); + + command.run(client, interaction); +} \ No newline at end of file diff --git a/events/mongo/connected.js b/events/mongo/connected.js deleted file mode 100644 index 1f05652..0000000 --- a/events/mongo/connected.js +++ /dev/null @@ -1,8 +0,0 @@ -const chalk = require('chalk'); - -module.exports = { - name: "connected", - execute() { - console.log(chalk.greenBright("[MONGO DB]: Connected to MongoDB!")); - }, -}; \ No newline at end of file diff --git a/events/mongo/connecting.js b/events/mongo/connecting.js deleted file mode 100644 index 15cabf1..0000000 --- a/events/mongo/connecting.js +++ /dev/null @@ -1,8 +0,0 @@ -const chalk = require('chalk'); - -module.exports = { - name: "connecting", - execute() { - console.log(chalk.cyan("[MONGO DB]: Connecting to MongoDB...")); - }, -}; \ No newline at end of file diff --git a/events/mongo/disconnected.js b/events/mongo/disconnected.js deleted file mode 100644 index 1509d2d..0000000 --- a/events/mongo/disconnected.js +++ /dev/null @@ -1,8 +0,0 @@ -const chalk = require('chalk'); - -module.exports = { - name: 'disconnected', - execute(client) { - console.log(chalk.red("[MONGO DB]: Disconnected from MongoDB!")); - }, -}; \ No newline at end of file diff --git a/events/mongo/err.js b/events/mongo/err.js deleted file mode 100644 index 50742fb..0000000 --- a/events/mongo/err.js +++ /dev/null @@ -1,8 +0,0 @@ -const chalk = require('chalk'); - -module.exports = { - name: "err", - execute(err) { - console.log(chalk.red("[MONGO DB]: Error: " + err + "")); - }, -}; \ No newline at end of file diff --git a/events/ready.js b/events/ready.js new file mode 100644 index 0000000..965ff93 --- /dev/null +++ b/events/ready.js @@ -0,0 +1,21 @@ +const { ActivityType } = require("discord.js"); + +module.exports = (client) => { + console.log( + `Ready to serve in ${client.channels.cache.size} channels on ${client.guilds.cache.size} servers, for a total of ${client.users.cache.size} users.` + ); + + const activities = [ + `Giveaways in ${client.guilds.cache.size} guilds`, + "/help", + `over ${client.users.cache.size} users!`, + `${ + client.giveawaysManager.giveaways.filter((g) => !g.ended).length + } active giveaways!`, + ]; + + setInterval(() => { + let activity = activities[Math.floor(Math.random() * activities.length)]; + client.user.setActivity(activity, { type: ActivityType.Watching }); + }, 20000); +}; \ No newline at end of file diff --git a/example.config.json b/example.config.json new file mode 100644 index 0000000..1c36f8c --- /dev/null +++ b/example.config.json @@ -0,0 +1,5 @@ +{ + "token": "Discord Bot Token", + "everyoneMention": false, + "hostedBy": true +} \ No newline at end of file diff --git a/examples/custom-databases/.eslintrc.json b/examples/custom-databases/.eslintrc.json new file mode 100644 index 0000000..4ea2dac --- /dev/null +++ b/examples/custom-databases/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "rules": { + "no-restricted-globals": "off" + } +} \ No newline at end of file diff --git a/examples/custom-databases/enmap.js b/examples/custom-databases/enmap.js new file mode 100644 index 0000000..80cf5f2 --- /dev/null +++ b/examples/custom-databases/enmap.js @@ -0,0 +1,64 @@ +const Discord = require("discord.js"); +const client = new Discord.Client({ + intents: [ + Discord.IntentsBitField.Flags.Guilds, + Discord.IntentsBitField.Flags.GuildMessageReactions, + ], +}); + +// Load Enmap +const Enmap = require("enmap"); + +// Create giveaways table +const giveawayDB = new Enmap({ name: "giveaways" }); + +const { GiveawaysManager } = require("discord-giveaways"); +const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager { + // This function is called when the manager needs to get all giveaways which are stored in the database. + async getAllGiveaways() { + // Get all giveaways from the database + return giveawayDB.fetchEverything().array(); + } + + // This function is called when a giveaway needs to be saved in the database. + async saveGiveaway(messageId, giveawayData) { + // Add the new giveaway to the database + giveawayDB.set(messageId, giveawayData); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be edited in the database. + async editGiveaway(messageId, giveawayData) { + // Replace the unedited giveaway with the edited giveaway + giveawayDB.set(messageId, giveawayData); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be deleted from the database. + async deleteGiveaway(messageId) { + // Remove the giveaway from the database + giveawayDB.delete(messageId); + // Don't forget to return something! + return true; + } +}; + +// Create a new instance of your new class +const manager = new GiveawayManagerWithOwnDatabase(client, { + default: { + botsCanWin: false, + embedColor: "#FF0000", + embedColorEnd: "#000000", + reaction: "🎉", + }, +}); +// We now have a giveawaysManager property to access the manager everywhere! +client.giveawaysManager = manager; + +client.on("ready", () => { + console.log("Bot is ready!"); +}); + +client.login(process.env.DISCORD_BOT_TOKEN); \ No newline at end of file diff --git a/examples/custom-databases/mongoose.js b/examples/custom-databases/mongoose.js new file mode 100644 index 0000000..3d5c89f --- /dev/null +++ b/examples/custom-databases/mongoose.js @@ -0,0 +1,133 @@ +const Discord = require("discord.js"); +const client = new Discord.Client({ + intents: [ + Discord.IntentsBitField.Flags.Guilds, + Discord.IntentsBitField.Flags.GuildMessageReactions, + ], +}); + +// Connect to the database +const mongoose = require("mongoose"); +mongoose.connect("mongodb://localhost/database"); +const db = mongoose.connection; + +// Check the connection +db.on("error", console.error.bind(console, "Connection error:")); +db.once("open", () => { + console.log("Connected to MongoDB."); +}); + +// Create the schema for giveaways +const giveawaySchema = new mongoose.Schema( + { + messageId: String, + channelId: String, + guildId: String, + startAt: Number, + endAt: Number, + ended: Boolean, + winnerCount: Number, + prize: String, + messages: { + giveaway: String, + giveawayEnded: String, + title: String, + inviteToParticipate: String, + drawing: String, + dropMessage: String, + winMessage: mongoose.Mixed, + embedFooter: mongoose.Mixed, + noWinner: String, + winners: String, + endedAt: String, + hostedBy: String, + }, + thumbnail: String, + image: String, + hostedBy: String, + winnerIds: { type: [String], default: undefined }, + reaction: mongoose.Mixed, + botsCanWin: Boolean, + embedColor: mongoose.Mixed, + embedColorEnd: mongoose.Mixed, + exemptPermissions: { type: [], default: undefined }, + exemptMembers: String, + bonusEntries: String, + extraData: mongoose.Mixed, + lastChance: { + enabled: Boolean, + content: String, + threshold: Number, + embedColor: mongoose.Mixed, + }, + pauseOptions: { + isPaused: Boolean, + content: String, + unPauseAfter: Number, + embedColor: mongoose.Mixed, + durationAfterPause: Number, + infiniteDurationText: String, + }, + isDrop: Boolean, + allowedMentions: { + parse: { type: [String], default: undefined }, + users: { type: [String], default: undefined }, + roles: { type: [String], default: undefined }, + }, + }, + { id: false } +); + +// Create the model +const giveawayModel = mongoose.model("giveaways", giveawaySchema); + +const { GiveawaysManager } = require("discord-giveaways"); +const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager { + // This function is called when the manager needs to get all giveaways which are stored in the database. + async getAllGiveaways() { + // Get all giveaways from the database. We fetch all documents by passing an empty condition. + return await giveawayModel.find().lean().exec(); + } + + // This function is called when a giveaway needs to be saved in the database. + async saveGiveaway(messageId, giveawayData) { + // Add the new giveaway to the database + await giveawayModel.create(giveawayData); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be edited in the database. + async editGiveaway(messageId, giveawayData) { + // Find by messageId and update it + await giveawayModel.updateOne({ messageId }, giveawayData).exec(); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be deleted from the database. + async deleteGiveaway(messageId) { + // Find by messageId and delete it + await giveawayModel.deleteOne({ messageId }).exec(); + // Don't forget to return something! + return true; + } +}; + +// Create a new instance of your new class +const manager = new GiveawayManagerWithOwnDatabase(client, { + default: { + botsCanWin: false, + embedColor: "#FF0000", + embedColorEnd: "#000000", + reaction: "🎉", + }, +}); +// We now have a giveawaysManager property to access the manager everywhere! +client.giveawaysManager = manager; + +client.on("ready", () => { + console.log("Bot is ready!"); +}); + +client.login(process.env.DISCORD_BOT_TOKEN); \ No newline at end of file diff --git a/examples/custom-databases/mysql.js b/examples/custom-databases/mysql.js new file mode 100644 index 0000000..2f44e83 --- /dev/null +++ b/examples/custom-databases/mysql.js @@ -0,0 +1,144 @@ +const Discord = require("discord.js"); +const client = new Discord.Client({ + intents: [ + Discord.IntentsBitField.Flags.Guilds, + Discord.IntentsBitField.Flags.GuildMessageReactions, + ], +}); + +// Load mysql +const MySQL = require("mysql"); +const sql = MySQL.createConnection({ + host: "localhost", + user: "Your MySQL user", + password: "Your MySQL password", + database: "Your MySQL database name", + charset: "utf8mb4", // In order to save emojis correctly +}); +sql.connect((err) => { + if (err) { + // Stop the process if we can't connect to the MySQL server + throw new Error("Impossible to connect to MySQL server. Code: " + err.code); + } else { + console.log( + "[SQL] Connected to the MySQL server! Connection ID: " + sql.threadId + ); + } +}); + +// Create giveaways table +sql.query( + ` + CREATE TABLE IF NOT EXISTS \`giveaways\` + ( + \`id\` INT(1) NOT NULL AUTO_INCREMENT, + \`message_id\` VARCHAR(20) NOT NULL, + \`data\` JSON NOT NULL, + PRIMARY KEY (\`id\`) + ); +`, + (err) => { + if (err) console.error(err); + console.log("[SQL] Created table `giveaways`"); + } +); + +const { GiveawaysManager } = require("discord-giveaways"); +const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager { + // This function is called when the manager needs to get all giveaways which are stored in the database. + async getAllGiveaways() { + return new Promise((resolve, reject) => { + sql.query("SELECT `data` FROM `giveaways`", (err, res) => { + if (err) { + console.error(err); + return reject(err); + } + const giveaways = res.map((row) => + JSON.parse(row.data, (_, v) => + typeof v === "string" && /BigInt\("(-?\d+)"\)/.test(v) ? eval(v) : v + ) + ); + resolve(giveaways); + }); + }); + } + + // This function is called when a giveaway needs to be saved in the database. + async saveGiveaway(messageId, giveawayData) { + return new Promise((resolve, reject) => { + sql.query( + "INSERT INTO `giveaways` (`message_id`, `data`) VALUES (?,?)", + [ + messageId, + JSON.stringify(giveawayData, (_, v) => + typeof v === "bigint" ? `BigInt("${v}")` : v + ), + ], + (err, res) => { + if (err) { + console.error(err); + return reject(err); + } + resolve(true); + } + ); + }); + } + + // This function is called when a giveaway needs to be edited in the database. + async editGiveaway(messageId, giveawayData) { + return new Promise((resolve, reject) => { + sql.query( + "UPDATE `giveaways` SET `data` = ? WHERE `message_id` = ?", + [ + JSON.stringify(giveawayData, (_, v) => + typeof v === "bigint" ? `BigInt("${v}")` : v + ), + messageId, + ], + (err, res) => { + if (err) { + console.error(err); + return reject(err); + } + resolve(true); + } + ); + }); + } + + // This function is called when a giveaway needs to be deleted from the database. + async deleteGiveaway(messageId) { + return new Promise((resolve, reject) => { + sql.query( + "DELETE FROM `giveaways` WHERE `message_id` = ?", + messageId, + (err, res) => { + if (err) { + console.error(err); + return reject(err); + } + resolve(true); + } + ); + }); + } +}; + +// Create a new instance of your new class +const manager = new GiveawayManagerWithOwnDatabase(client, { + default: { + botsCanWin: false, + embedColor: "#FF0000", + embedColorEnd: "#000000", + reaction: "🎉", + }, +}); +// We now have a giveawaysManager property to access the manager everywhere! +client.giveawaysManager = manager; + +client.on("ready", () => { + console.log("Bot is ready!"); +}); + +client.login(process.env.DISCORD_BOT_TOKEN); \ No newline at end of file diff --git a/examples/custom-databases/nano.js b/examples/custom-databases/nano.js new file mode 100644 index 0000000..a9969d2 --- /dev/null +++ b/examples/custom-databases/nano.js @@ -0,0 +1,81 @@ +const Discord = require("discord.js"); +const client = new Discord.Client({ + intents: [ + Discord.IntentsBitField.Flags.Guilds, + Discord.IntentsBitField.Flags.GuildMessageReactions, + ], +}); + +// Load nano +const nano = require("nano")("http://admin:mypassword@localhost:5984"); +let giveawayDB; + +// Check the DB +(async () => { + if (!(await nano.db.list()).includes("giveaways")) + await nano.db.create("giveaways"); + giveawayDB = nano.use("giveaways"); + // Start the manager only after the DB got checked to prevent an error + client.giveawaysManager._init(); +})(); + +const { GiveawaysManager } = require("discord-giveaways"); +const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager { + // This function is called when the manager needs to get all giveaways which are stored in the database. + async getAllGiveaways() { + // Get all giveaways from the database + return (await giveawayDB.list({ include_docs: true })).rows.map( + (r) => r.doc + ); + } + + // This function is called when a giveaway needs to be saved in the database. + async saveGiveaway(messageId, giveawayData) { + // Add the new giveaway to the database + await giveawayDB.insert(giveawayData, messageId); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be edited in the database. + async editGiveaway(messageId, giveawayData) { + // Get the unedited giveaway from the database + const giveaway = await giveawayDB.get(messageId); + // Edit the giveaway + await giveawayDB.insert({ ...giveaway, ...giveawayData }); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be deleted from the database. + async deleteGiveaway(messageId) { + // Get the giveaway from the database + const giveaway = await giveawayDB.get(messageId); + // Remove the giveaway from the database + await giveawayDB.destroy(messageId, giveaway._rev); + // Don't forget to return something! + return true; + } +}; + +// Create a new instance of your new class +const manager = new GiveawayManagerWithOwnDatabase( + client, + { + default: { + botsCanWin: false, + embedColor: "#FF0000", + embedColorEnd: "#000000", + reaction: "🎉", + }, + }, + false +); // ATTENTION: Add "false" in order to not start the manager until the DB got checked, see below +// We now have a giveawaysManager property to access the manager everywhere! +client.giveawaysManager = manager; + +client.on("ready", () => { + console.log("Bot is ready!"); +}); + +client.login(process.env.DISCORD_BOT_TOKEN); \ No newline at end of file diff --git a/examples/custom-databases/quick.db.js b/examples/custom-databases/quick.db.js new file mode 100644 index 0000000..b81acaa --- /dev/null +++ b/examples/custom-databases/quick.db.js @@ -0,0 +1,76 @@ +const Discord = require("discord.js"); +const client = new Discord.Client({ + intents: [ + Discord.IntentsBitField.Flags.Guilds, + Discord.IntentsBitField.Flags.GuildMessageReactions, + ], +}); + +// Load quick.db +const db = require("quick.db"); +if (!Array.isArray(db.get("giveaways"))) db.set("giveaways", []); + +const { GiveawaysManager } = require("discord-giveaways"); +const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager { + // This function is called when the manager needs to get all giveaways which are stored in the database. + async getAllGiveaways() { + // Get all giveaways from the database + return db.get("giveaways"); + } + + // This function is called when a giveaway needs to be saved in the database. + async saveGiveaway(messageId, giveawayData) { + // Add the new giveaway to the database + db.push("giveaways", giveawayData); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be edited in the database. + async editGiveaway(messageId, giveawayData) { + // Get all giveaways from the database + const giveaways = db.get("giveaways"); + // Remove the unedited giveaway from the array + const newGiveawaysArray = giveaways.filter( + (giveaway) => giveaway.messageId !== messageId + ); + // Push the edited giveaway into the array + newGiveawaysArray.push(giveawayData); + // Save the updated array + db.set("giveaways", newGiveawaysArray); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be deleted from the database. + async deleteGiveaway(messageId) { + // Get all giveaways from the database + const giveaways = db.get("giveaways"); + // Remove the giveaway from the array + const newGiveawaysArray = giveaways.filter( + (giveaway) => giveaway.messageId !== messageId + ); + // Save the updated array + db.set("giveaways", newGiveawaysArray); + // Don't forget to return something! + return true; + } +}; + +// Create a new instance of your new class +const manager = new GiveawayManagerWithOwnDatabase(client, { + default: { + botsCanWin: false, + embedColor: "#FF0000", + embedColorEnd: "#000000", + reaction: "🎉", + }, +}); +// We now have a giveawaysManager property to access the manager everywhere! +client.giveawaysManager = manager; + +client.on("ready", () => { + console.log("Bot is ready!"); +}); + +client.login(process.env.DISCORD_BOT_TOKEN); \ No newline at end of file diff --git a/examples/custom-databases/quick.replit.js b/examples/custom-databases/quick.replit.js new file mode 100644 index 0000000..6eadf2f --- /dev/null +++ b/examples/custom-databases/quick.replit.js @@ -0,0 +1,87 @@ +const Discord = require("discord.js"); +const client = new Discord.Client({ + intents: [ + Discord.IntentsBitField.Flags.Guilds, + Discord.IntentsBitField.Flags.GuildMessageReactions, + ], +}); + +// Load quick.replit +const { Database } = require("quick.replit"); +const db = new Database(); + +// Check the DB when it is ready +db.once("ready", async () => { + if (!Array.isArray(await db.get("giveaways"))) await db.set("giveaways", []); + // Start the manager only after the DB got checked to prevent an error + client.giveawaysManager._init(); +}); + +const { GiveawaysManager } = require("discord-giveaways"); +const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager { + // This function is called when the manager needs to get all giveaways which are stored in the database. + async getAllGiveaways() { + // Get all giveaways from the database + return await db.get("giveaways"); + } + + // This function is called when a giveaway needs to be saved in the database. + async saveGiveaway(messageId, giveawayData) { + // Add the new giveaway to the database + await db.push("giveaways", giveawayData); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be edited in the database. + async editGiveaway(messageId, giveawayData) { + // Get all giveaways from the database + const giveaways = await db.get("giveaways"); + // Remove the unedited giveaway from the array + const newGiveawaysArray = giveaways.filter( + (giveaway) => giveaway.messageId !== messageId + ); + // Push the edited giveaway into the array + newGiveawaysArray.push(giveawayData); + // Save the updated array + await db.set("giveaways", newGiveawaysArray); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be deleted from the database. + async deleteGiveaway(messageId) { + // Get all giveaways from the database + const giveaways = await db.get("giveaways"); + // Remove the giveaway from the array + const newGiveawaysArray = giveaways.filter( + (giveaway) => giveaway.messageId !== messageId + ); + // Save the updated array + await db.set("giveaways", newGiveawaysArray); + // Don't forget to return something! + return true; + } +}; + +// Create a new instance of your new class +const manager = new GiveawayManagerWithOwnDatabase( + client, + { + default: { + botsCanWin: false, + embedColor: "#FF0000", + embedColorEnd: "#000000", + reaction: "🎉", + }, + }, + false +); // ATTENTION: Add "false" in order to not start the manager until the DB got checked, see below +// We now have a giveawaysManager property to access the manager everywhere! +client.giveawaysManager = manager; + +client.on("ready", () => { + console.log("Bot is ready!"); +}); + +client.login(process.env.DISCORD_BOT_TOKEN); \ No newline at end of file diff --git a/examples/custom-databases/quickmongo.js b/examples/custom-databases/quickmongo.js new file mode 100644 index 0000000..53f23c5 --- /dev/null +++ b/examples/custom-databases/quickmongo.js @@ -0,0 +1,71 @@ +const Discord = require("discord.js"); +const client = new Discord.Client({ + intents: [ + Discord.IntentsBitField.Flags.Guilds, + Discord.IntentsBitField.Flags.GuildMessageReactions, + ], +}); + +// Load quickmongo +const { Database } = require("quickmongo"); +const giveawayDB = new Database("mongodb://localhost/database", { + collectionName: "giveaways", +}); + +// Start the manager only after the DB turned ready to prevent an error +giveawayDB.once("ready", () => client.giveawaysManager._init()); + +const { GiveawaysManager } = require("discord-giveaways"); +const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager { + // This function is called when the manager needs to get all giveaways which are stored in the database. + async getAllGiveaways() { + // Get all giveaways from the database + return (await giveawayDB.all()).map((element) => element.data); + } + + // This function is called when a giveaway needs to be saved in the database. + async saveGiveaway(messageId, giveawayData) { + // Add the new giveaway to the database + await giveawayDB.set(messageId, giveawayData); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be edited in the database. + async editGiveaway(messageId, giveawayData) { + // Replace the unedited giveaway with the edited giveaway + await giveawayDB.set(messageId, giveawayData); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be deleted from the database. + async deleteGiveaway(messageId) { + // Remove the giveaway from the database + await giveawayDB.delete(messageId); + // Don't forget to return something! + return true; + } +}; + +// Create a new instance of your new class +const manager = new GiveawayManagerWithOwnDatabase( + client, + { + default: { + botsCanWin: false, + embedColor: "#FF0000", + embedColorEnd: "#000000", + reaction: "🎉", + }, + }, + false +); // ATTENTION: Add "false" in order to not start the manager until the DB got checked, see below +// We now have a giveawaysManager property to access the manager everywhere! +client.giveawaysManager = manager; + +client.on("ready", () => { + console.log("Bot is ready!"); +}); + +client.login(process.env.DISCORD_BOT_TOKEN); \ No newline at end of file diff --git a/examples/custom-databases/replit.js b/examples/custom-databases/replit.js new file mode 100644 index 0000000..6dd8c84 --- /dev/null +++ b/examples/custom-databases/replit.js @@ -0,0 +1,83 @@ +const Discord = require("discord.js"); +const client = new Discord.Client({ + intents: [ + Discord.IntentsBitField.Flags.Guilds, + Discord.IntentsBitField.Flags.GuildMessageReactions, + ], +}); + +// Load Replit Database +const Database = require("@replit/database"); +const db = new Database(); +(async () => { + if (!Array.isArray(await db.get("giveaways"))) await db.set("giveaways", []); +})(); + +const { GiveawaysManager } = require("discord-giveaways"); +const GiveawayManagerWithOwnDatabase = class extends GiveawaysManager { + // This function is called when the manager needs to get all giveaways which are stored in the database. + async getAllGiveaways() { + // Get all giveaways from the database + return await db.get("giveaways"); + } + + // This function is called when a giveaway needs to be saved in the database. + async saveGiveaway(messageId, giveawayData) { + // Get all giveaways from the database + const giveawaysArray = await db.get("giveaways"); + // Push the new giveaway into the array + giveawaysArray.push(giveawayData); + // Save the updated array + await db.set("giveaways", giveawaysArray); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be edited in the database. + async editGiveaway(messageId, giveawayData) { + // Get all giveaways from the database + const giveaways = await db.get("giveaways"); + // Remove the unedited giveaway from the array + const newGiveawaysArray = giveaways.filter( + (giveaway) => giveaway.messageId !== messageId + ); + // Push the edited giveaway into the array + newGiveawaysArray.push(giveawayData); + // Save the updated array + await db.set("giveaways", newGiveawaysArray); + // Don't forget to return something! + return true; + } + + // This function is called when a giveaway needs to be deleted from the database. + async deleteGiveaway(messageId) { + // Get all giveaways from the database + const giveaways = await db.get("giveaways"); + // Remove the giveaway from the array + const newGiveawaysArray = giveaways.filter( + (giveaway) => giveaway.messageId !== messageId + ); + // Save the updated array + await db.set("giveaways", newGiveawaysArray); + // Don't forget to return something! + return true; + } +}; + +// Create a new instance of your new class +const manager = new GiveawayManagerWithOwnDatabase(client, { + default: { + botsCanWin: false, + embedColor: "#FF0000", + embedColorEnd: "#000000", + reaction: "🎉", + }, +}); +// We now have a giveawaysManager property to access the manager everywhere! +client.giveawaysManager = manager; + +client.on("ready", () => { + console.log("Bot is ready!"); +}); + +client.login(process.env.DISCORD_BOT_TOKEN); \ No newline at end of file diff --git a/examples/simple.js b/examples/simple.js new file mode 100644 index 0000000..457ca58 --- /dev/null +++ b/examples/simple.js @@ -0,0 +1 @@ +// Example bot available on https://toastielab.dev/toastie_t0ast/Holana \ No newline at end of file diff --git a/giveawayInit.js b/giveawayInit.js deleted file mode 100644 index 4939ad1..0000000 --- a/giveawayInit.js +++ /dev/null @@ -1,41 +0,0 @@ -const { GiveawaysManager } = require("discord-giveaways"); -const giveawayModel = require('./schemas/giveawaysSchema'); - -module.exports = (client) =>{ - - class GiveawayManagerCustom extends GiveawaysManager { - - - async getAllGiveaways() { - return await giveawayModel.find().lean().exec(); - } - - async saveGiveaway(messageId, giveawayData) { - await giveawayModel.create(giveawayData); - return true; - } - - async editGiveaway(messageId, giveawayData) { - await giveawayModel.updateOne({ messageId }, giveawayData, { omitUndefined: true }).exec(); - return true; - } - - async deleteGiveaway(messageId) { - await giveawayModel.deleteOne({ messageId }).exec(); - return true; - } - }; - - const manager = new GiveawayManagerCustom(client, { - storage: false, - updateCountdownEvery: 10000, - default: { - botsCanWin: false, - exemptPermissions: [], - embedColor: "#FF0000", - reaction: "🎉" - } - }); - - client.giveawaysManager = manager -} \ No newline at end of file diff --git a/giveaways.json b/giveaways.json new file mode 100644 index 0000000..10ad9ba --- /dev/null +++ b/giveaways.json @@ -0,0 +1 @@ +[{"messageId":"1178260749441830943","channelId":"553759294953357314","guildId":"553759294953357312","startAt":1700989652527,"endAt":1700989652557,"ended":true,"winnerCount":1,"prize":"test","messages":{"giveaway":"🎉🎉 **GIVEAWAY** 🎉🎉","giveawayEnded":"🎉🎉 **GIVEAWAY ENDED** 🎉🎉","title":"{this.prize}","inviteToParticipate":"React with 🎉 to participate!","winMessage":"Congratulations, {winners}! You won **{this.prize}**!","drawing":"Drawing: {timestamp}","dropMessage":"Be the first to react with 🎉 !","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","winners":"winner(s)","endedAt":"Ended at","hostedBy":"Hosted by: {this.hostedBy}"},"hostedBy":"<@234542843732033537>"},{"messageId":"1178260884200620084","channelId":"553759294953357314","guildId":"553759294953357312","startAt":1700989684632,"endAt":1700989724632,"ended":true,"winnerCount":1,"prize":"test","messages":{"giveaway":"🎉🎉 **GIVEAWAY** 🎉🎉","giveawayEnded":"🎉🎉 **GIVEAWAY ENDED** 🎉🎉","title":"{this.prize}","inviteToParticipate":"React with 🎉 to participate!","winMessage":"Congratulations, {winners}! You won **{this.prize}**!","drawing":"Drawing: {timestamp}","dropMessage":"Be the first to react with 🎉 !","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","winners":"winner(s)","endedAt":"Ended at","hostedBy":"Hosted by: {this.hostedBy}"},"hostedBy":"<@234542843732033537>","winnerIds":["234542843732033537"]}] \ No newline at end of file diff --git a/host.js b/host.js deleted file mode 100644 index de3c9d6..0000000 --- a/host.js +++ /dev/null @@ -1,7 +0,0 @@ -// const express = require('express'); -// const app = express(); -// const port = 3000; -// app.listen(port, () => console.log(`Bot running on http://127.0.0.1:${port}`)); - -const http = require("http"); -http.createServer((_, res) => res.end("Holana online")).listen(8080) \ No newline at end of file diff --git a/index.js b/index.js index d938639..23cccc4 100644 --- a/index.js +++ b/index.js @@ -1,114 +1,103 @@ -process.title = 'Giveaway Child'; +process.title = 'Holana'; -const Discord = require("discord.js"); -const { Client, GatewayIntentBits, Partials } = require("discord.js"); -const chalk = require("chalk"); -const config = require("./config.json"); -const Handler = require("discord-handlers"); -const handler = new Handler(); -const { connect } = require("mongoose"); -const GiveawaysManager = require("./giveawayInit"); -const client = new Client({ - partials: [ - Partials.Channel, // for text channel - Partials.GuildMember, // for guild member - Partials.Reaction, // for message reaction - ], - intents: [ - GatewayIntentBits.Guilds, // for guild related things - GatewayIntentBits.GuildMessages, // for guild messages things - GatewayIntentBits.GuildMessageReactions, // for message reactions things - ], -}); const fs = require("fs"); +const Discord = require("discord.js"); +const client = new Discord.Client({ + intents: [ + Discord.GatewayIntentBits.Guilds, + Discord.GatewayIntentBits.GuildMembers, + Discord.GatewayIntentBits.GuildMessageReactions, + ], +}); + +const config = require("./config.json"); client.config = config; -(async () => { - await connect(config.MONGODB_URI).catch((err) => - console.log(chalk.red(`[MONGO DB]: Error: ${err}`)) +const synchronizeSlashCommands = require("discord-sync-commands"); + +// Init discord giveaways +const { GiveawaysManager } = require("discord-giveaways"); +client.giveawaysManager = new GiveawaysManager(client, { + storage: "./giveaways.json", + default: { + botsCanWin: false, + embedColor: "#FF0000", + reaction: "🎉", + lastChance: { + enabled: true, + content: "⚠️ **LAST CHANCE TO ENTER !** ⚠️", + threshold: 10000, + embedColor: "#FF0000", + }, + }, +}); +// We now have a client.giveawaysManager property to manage our giveaways! + +client.giveawaysManager.on( + "giveawayReactionAdded", + (giveaway, member, reaction) => { + console.log( + `${member.user.tag} entered giveaway #${giveaway.messageId} (${reaction.emoji.name})` + ); + } +); + +client.giveawaysManager.on( + "giveawayReactionRemoved", + (giveaway, member, reaction) => { + console.log( + `${member.user.tag} unreact to giveaway #${giveaway.messageId} (${reaction.emoji.name})` + ); + } +); + +client.giveawaysManager.on("giveawayEnded", (giveaway, winners) => { + console.log( + `Giveaway #${giveaway.messageId} ended! Winners: ${winners + .map((member) => member.user.username) + .join(", ")}` ); -})(); - -handler.handleMongoEvents("./events/mongo", client); - -// Initialise discord giveaways - -GiveawaysManager(client); - - -//<:confetti:984296694357319730> -//<:warning:984663315412303922> -/* Load all events (discord based) */ - -fs.readdir("./events/discord", (_err, files) => { - files.forEach((file) => { - if (!file.endsWith(".js")) return; - const event = require(`./events/discord/${file}`); - let eventName = file.split(".")[0]; - console.log(`[Event] ✅ Loaded: ${eventName}`); - client.on(eventName, event.bind(null, client)); - delete require.cache[require.resolve(`./events/discord/${file}`)]; - }); }); -/* Load all events (giveaways based) */ - -fs.readdir("./events/giveaways", (_err, files) => { +/* Load all commands */ +client.commands = new Discord.Collection(); +fs.readdir("./commands/", (_err, files) => { files.forEach((file) => { if (!file.endsWith(".js")) return; - const event = require(`./events/giveaways/${file}`); - let eventName = file.split(".")[0]; - console.log(`[Event] 🎉 Loaded: ${eventName}`); - client.giveawaysManager.on(eventName, (...file) => - event.execute(...file, client) - ), - delete require.cache[require.resolve(`./events/giveaways/${file}`)]; - }); -}); - -// if(config.privateMessageInformation === true) { -// fs.readdirSync('./events/giveaways').forEach(async (dir) => { -// const events = fs.readdirSync(`./events/giveaways/${dir}`).filter(file => file.endsWith('.js')); - -// for(const file of events) { -// const event = require(`./events/giveaways/${dir}/${file}`); -// if(event.name) { -// // console.log(`[GIVEAWAYS EVENTS]` + ` Event ${file.split(".")[0]} loaded!`); - -// client.giveawaysManager.on(event.name, (...args) => event.execute(...args, client)) -// delete require.cache[require.resolve(`./events/giveaways/${dir}/${file}`)]; -// } else { -// console.log(`[GIVEAWAYS EVENTS]` + ` Failed to load event: ${file.split('.')[0]}!`); -// continue; -// } -// } -// }); -// } else { -// return console.log(`[WARNING]`.yellow + ` Private Message Information is disabled!`); -// } - -/* Load all events (mongo based) */ - - - -// let interactions be a new collection ( slash commands ) -client.interactions = new Discord.Collection(); -// creating an empty array for registering slash commands -client.register_arr = []; -/* Load all slash commands */ -fs.readdir("./slash/", (_err, files) => { - files.forEach((file) => { - if (!file.endsWith(".js")) return; - let props = require(`./slash/${file}`); + let props = require(`./commands/${file}`); let commandName = file.split(".")[0]; - client.interactions.set(commandName, { + client.commands.set(commandName, { name: commandName, ...props, }); - client.register_arr.push(props); + console.log(`👌 Command loaded: ${commandName}`); + }); + synchronizeSlashCommands( + client, + client.commands.map((c) => ({ + name: c.name, + description: c.description, + options: c.options, + type: Discord.ApplicationCommandType.ChatInput, + })), + { + debug: true, + } + ); +}); + +/* Load all events */ +fs.readdir("./events/", (_err, files) => { + files.forEach((file) => { + if (!file.endsWith(".js")) return; + const event = require(`./events/${file}`); + let eventName = file.split(".")[0]; + console.log(`👌 Event loaded: ${eventName}`); + client.on(eventName, event.bind(null, client)); + delete require.cache[require.resolve(`./events/${file}`)]; }); }); -// Login through the client +// Login client.login(config.token); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 5fdcacc..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3842 +0,0 @@ -{ - "name": "giveaway-child", - "version": "3.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "giveaway-child", - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "axios": "^0.27.2", - "chalk": "^4.1.2", - "discord-giveaways": "^6.0.1", - "discord-handlers": "^0.0.1", - "discord.js": "^14.6.0", - "dotenv": "^16.0.3", - "japi.rest": "^1.0.1", - "moment": "^2.29.4", - "mongoose": "^6.9.0", - "ms": "^3.0.0-canary.1", - "node-fetch": "^3.3.0", - "parsec": "^2.0.2", - "quickmongo": "^4.0.0" - }, - "devDependencies": { - "node": "^16.9.1" - }, - "engines": { - "node": "16.x" - } - }, - "node_modules/@aws-crypto/ie11-detection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "optional": true, - "dependencies": { - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "optional": true, - "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - }, - "node_modules/@aws-crypto/sha256-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "optional": true, - "dependencies": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "optional": true, - "dependencies": { - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - }, - "node_modules/@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/util/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - }, - "node_modules/@aws-sdk/abort-controller": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz", - "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.321.1.tgz", - "integrity": "sha512-6XuGHbGjKmwmBP9fxVtHtgYsSUZEDJZAdBa9jD3+//6OG9Qh4/mxRUZJFImMT8DOrmNLHU2q2W/4HjsbDql6VA==", - "optional": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.321.1", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-node": "3.321.1", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.319.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.321.1", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.319.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.321.1.tgz", - "integrity": "sha512-ecoT4tBGtRJR5G7oLBTMXZmgZZlff1amhSdKPEtkWxv6kWc8VPb5rRuRgVPsDR9HuesI6ZVlODptvGtnfkIJwA==", - "optional": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.319.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.321.1", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.319.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.321.1.tgz", - "integrity": "sha512-PBVfHQbyrsfzbnO6u9d9Sik8JlXGLhHj3zLd87iBkYXBdHwD5NuvwWu7OtjUtrHjP4SfzodVwfjmTbDAFqbtzw==", - "optional": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.319.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.321.1", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.319.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sts": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.321.1.tgz", - "integrity": "sha512-AB+N4a1TVEKl9Sd5O2TxTprEZp7Va6zPZLMraFAYMdmJVBmCmmwyBs7ygju685DpQ1dos5PRsKCRcossyY5pDQ==", - "optional": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-node": "3.321.1", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-sdk-sts": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.319.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.321.1", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.319.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "fast-xml-parser": "4.1.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/config-resolver": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz", - "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-config-provider": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.321.1.tgz", - "integrity": "sha512-g+3MQcwhpw1WqQ27BJLCCS90aUExH8kT9o2WM2tYjGATfTQ8+tpAqao2JxChtfzQbq6m69M175bZ3o09EaKobQ==", - "optional": true, - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.321.1", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz", - "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==", - "optional": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-imds": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz", - "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==", - "optional": true, - "dependencies": { - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.321.1.tgz", - "integrity": "sha512-prndSVQhiikNaI40bYnM2Q8PkC35FCwhbQnBk6KXNvdtfo9RqatMC639F+6oryb3BuMy++Ij4Yoi8WnPBs5Sww==", - "optional": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/credential-provider-process": "3.310.0", - "@aws-sdk/credential-provider-sso": "3.321.1", - "@aws-sdk/credential-provider-web-identity": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.321.1.tgz", - "integrity": "sha512-5B1waOwSvY2JMLGRebo7IUqnTaGoCnby9cRbG/dhi7Ke97M3V8380S9THDJ/bktjL8zHEVfBVZy7HhXHzhSjEg==", - "optional": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/credential-provider-ini": "3.321.1", - "@aws-sdk/credential-provider-process": "3.310.0", - "@aws-sdk/credential-provider-sso": "3.321.1", - "@aws-sdk/credential-provider-web-identity": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz", - "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==", - "optional": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.321.1.tgz", - "integrity": "sha512-kg0rc1OacJFgAvmZj0TOu+BSc+yRdnC5dO/RAag3XU6+hlQI5/C080RQp9Qj6V7ga0HtAJMRwJcUlCPA3RJPug==", - "optional": true, - "dependencies": { - "@aws-sdk/client-sso": "3.321.1", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/token-providers": "3.321.1", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz", - "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==", - "optional": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-providers": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.321.1.tgz", - "integrity": "sha512-z7uPo5B/pW8k2IHT2Nu2SFAWEzBnR/NnjUVOTwf93bxNbc7IxRODiCMggmK2wpjiRSBAc8zKKbZ4dHCcb4MyZg==", - "optional": true, - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.321.1", - "@aws-sdk/client-sso": "3.321.1", - "@aws-sdk/client-sts": "3.321.1", - "@aws-sdk/credential-provider-cognito-identity": "3.321.1", - "@aws-sdk/credential-provider-env": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/credential-provider-ini": "3.321.1", - "@aws-sdk/credential-provider-node": "3.321.1", - "@aws-sdk/credential-provider-process": "3.310.0", - "@aws-sdk/credential-provider-sso": "3.321.1", - "@aws-sdk/credential-provider-web-identity": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/fetch-http-handler": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz", - "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==", - "optional": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/querystring-builder": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/hash-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz", - "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-buffer-from": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/invalid-dependency": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz", - "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/is-array-buffer": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz", - "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==", - "optional": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-content-length": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz", - "integrity": "sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ==", - "optional": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-endpoint": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz", - "integrity": "sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg==", - "optional": true, - "dependencies": { - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz", - "integrity": "sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA==", - "optional": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz", - "integrity": "sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz", - "integrity": "sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ==", - "optional": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-retry": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz", - "integrity": "sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g==", - "optional": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/service-error-classification": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz", - "integrity": "sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ==", - "optional": true, - "dependencies": { - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-serde": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz", - "integrity": "sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-signing": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz", - "integrity": "sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ==", - "optional": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/signature-v4": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-stack": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz", - "integrity": "sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==", - "optional": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.319.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.319.0.tgz", - "integrity": "sha512-ytaLx2dlR5AdMSne6FuDCISVg8hjyKj+cHU20b2CRA/E/z+XXrLrssp4JrCgizRKPPUep0psMIa22Zd6osTT5Q==", - "optional": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-endpoints": "3.319.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-config-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz", - "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==", - "optional": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-http-handler": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.321.1.tgz", - "integrity": "sha512-DdQBrtFFDNtzphJIN3s93Vf+qd9LHSzH6WTQRrWoXhTDMHDzSI2Cn+c5KWfk89Nggp/n3+OTwUPQeCiBT5EBuw==", - "optional": true, - "dependencies": { - "@aws-sdk/abort-controller": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/querystring-builder": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/property-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz", - "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/protocol-http": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz", - "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/querystring-builder": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz", - "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/querystring-parser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz", - "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/service-error-classification": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz", - "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==", - "optional": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz", - "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/signature-v4": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz", - "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==", - "optional": true, - "dependencies": { - "@aws-sdk/is-array-buffer": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/smithy-client": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.316.0.tgz", - "integrity": "sha512-6YXOKbRnXeS8r8RWzuL6JMBolDYM5Wa4fD/VY6x/wK78i2xErHOvqzHgyyeLI1MMw4uqyd4wRNJNWC9TMPduXw==", - "optional": true, - "dependencies": { - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.321.1.tgz", - "integrity": "sha512-I1sXS4qXirSvgvrOIPf+e1D7GvC83DdeyMxHZvuhHgeMCqDAzToS8OLxOX0enN9xZRHWAQYja8xyeGbDL2I0Zw==", - "optional": true, - "dependencies": { - "@aws-sdk/client-sso-oidc": "3.321.1", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/types": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz", - "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==", - "optional": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/url-parser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz", - "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==", - "optional": true, - "dependencies": { - "@aws-sdk/querystring-parser": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/util-base64": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz", - "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==", - "optional": true, - "dependencies": { - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-body-length-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz", - "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==", - "optional": true, - "dependencies": { - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/util-body-length-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz", - "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==", - "optional": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-buffer-from": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz", - "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==", - "optional": true, - "dependencies": { - "@aws-sdk/is-array-buffer": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-config-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz", - "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==", - "optional": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.316.0.tgz", - "integrity": "sha512-6FSqLhYmaihtH2n1s4b2rlLW0ABU8N6VZIfzLfe2ING4PF0MzfaMMhnTFUHVXfKCVGoR8yP6iyFTRCyHGVEL1w==", - "optional": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.316.0.tgz", - "integrity": "sha512-dkYy10hdjPSScXXvnjGpZpnJxllkb6ICHgLMwZ4JczLHhPM12T/4PQ758YN8HS+muiYDGX1Bl2z1jd/bMcewBQ==", - "optional": true, - "dependencies": { - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.319.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.319.0.tgz", - "integrity": "sha512-3I64UMoYA2e2++oOUJXRcFtYLpLylnZFRltWfPo1B3dLlf+MIWat9djT+mMus+hW1ntLsvAIVu1hLVePJC0gvw==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-hex-encoding": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz", - "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==", - "optional": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", - "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", - "optional": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-middleware": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz", - "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==", - "optional": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-retry": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz", - "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==", - "optional": true, - "dependencies": { - "@aws-sdk/service-error-classification": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@aws-sdk/util-uri-escape": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz", - "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==", - "optional": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz", - "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz", - "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==", - "optional": true, - "dependencies": { - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "node_modules/@aws-sdk/util-utf8": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz", - "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==", - "optional": true, - "dependencies": { - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "optional": true, - "dependencies": { - "tslib": "^2.3.1" - } - }, - "node_modules/@discordjs/builders": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.6.1.tgz", - "integrity": "sha512-CCcLwn/8ANhlAbhlE18fcaN0hfXTen53/JiwZs1t9oE/Cqa9maA8ZRarkCIsXF4J7J/MYnd0J6IsxeKsq+f6mw==", - "dependencies": { - "@discordjs/formatters": "^0.3.0", - "@discordjs/util": "^0.2.0", - "@sapphire/shapeshift": "^3.8.1", - "discord-api-types": "^0.37.37", - "fast-deep-equal": "^3.1.3", - "ts-mixer": "^6.0.3", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/collection": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.0.tgz", - "integrity": "sha512-suyVndkEAAWrGxyw/CPGdtXoRRU6AUNkibtnbJevQzpelkJh3Q1gQqWDpqf5i39CnAn5+LrN0YS+cULeEjq2Yw==", - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/formatters": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.0.tgz", - "integrity": "sha512-Fc4MomalbP8HMKEMor3qUiboAKDtR7PSBoPjwm7WYghVRwgJlj5WYvUsriLsxeKk8+Qq2oy+HJlGTUkGvX0YnA==", - "dependencies": { - "discord-api-types": "^0.37.37" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/rest": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.7.0.tgz", - "integrity": "sha512-r2HzmznRIo8IDGYBWqQfkEaGN1LrFfWQd3dSyC4tOpMU8nuVvFUEw6V/lwnG44jyOq+vgyDny2fxeUDMt9I4aQ==", - "dependencies": { - "@discordjs/collection": "^1.5.0", - "@discordjs/util": "^0.2.0", - "@sapphire/async-queue": "^1.5.0", - "@sapphire/snowflake": "^3.4.0", - "discord-api-types": "^0.37.37", - "file-type": "^18.2.1", - "tslib": "^2.5.0", - "undici": "^5.21.0" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/util": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-0.2.0.tgz", - "integrity": "sha512-/8qNbebFzLWKOOg+UV+RB8itp4SmU5jw0tBUD3ifElW6rYNOj1Ku5JaSW7lLl/WgjjxF01l/1uQPCzkwr110vg==", - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@sapphire/async-queue": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", - "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/shapeshift": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.8.2.tgz", - "integrity": "sha512-NXpnJAsxN3/h9TqQPntOeVWZrpIuucqXI3IWF6tj2fWCoRLCuVK5wx7Dtg7pRrtkYfsMUbDqgKoX26vrC5iYfA==", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/snowflake": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.4.2.tgz", - "integrity": "sha512-KJwlv5gkGjs1uFV7/xx81n3tqgBwBJvH94n1xDyH3q+JSmtsMeSleJffarEBfG2yAFeJiFA4BnGOK6FFPHc19g==", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@types/node": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.6.tgz", - "integrity": "sha512-+XBAjfZmmivILUzO0HwBJoYkAyyySSLg5KCGBDFLomJo0sV6szvVLAf4ANZZ0pfWzgEds5KmGLG9D5hfEqOhaA==" - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" - }, - "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dependencies": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", - "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "optional": true - }, - "node_modules/bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", - "dependencies": { - "buffer": "^5.6.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/deepmerge-ts": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.2.2.tgz", - "integrity": "sha512-Ka3Kb21tiWjvQvS9U+1Dx+aqFAHsdTnMdYptLTmC2VAmDFMugWMY1e15aTODstipmCun8iNuqeSfcx6rsUUk0Q==", - "engines": { - "node": ">=12.4.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/discord-api-types": { - "version": "0.37.40", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.40.tgz", - "integrity": "sha512-LMALvtO+p6ERK8rwWoaI490NfIE/egbqjR4/rfLL1z9gQE1gqLiTpIUUDIunfAtKYzeH6ucyXhaXXWpfZh/Q6g==" - }, - "node_modules/discord-giveaways": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/discord-giveaways/-/discord-giveaways-6.0.1.tgz", - "integrity": "sha512-hs6Vtb62VdlV7NfB93Phaxc8FW0cH4N1Nkb0bXVZ2npgn73yGOFVmdp8bBP5gsC2ady9OAXXI8Gb66t1IddkFw==", - "dependencies": { - "deepmerge-ts": "^4.2.1", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">=16.9.0" - }, - "peerDependencies": { - "discord.js": ">=14.0.0" - } - }, - "node_modules/discord-handlers": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/discord-handlers/-/discord-handlers-0.0.1.tgz", - "integrity": "sha512-ilivA4f94Ygb/pgrWRZzxO75pPA+ck788VUYCb72irj53/2nMBW4gfxI7bojQ5wchmYUpvbD4o0SkjSxLbP7vg==", - "dependencies": { - "chalk": "^4.1.2", - "discord.js": "^14.6.0", - "mongoose": "^6.7.3", - "path": "^0.12.7" - } - }, - "node_modules/discord.js": { - "version": "14.9.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.9.0.tgz", - "integrity": "sha512-ygGms5xP4hG+QrrY9k7d/OYCzMltSMtdl/2Snzq/nLCiZo+Sna91Ulv9l0+B5Jd/Czcq37B7wJAnmja7GOa+bg==", - "dependencies": { - "@discordjs/builders": "^1.6.0", - "@discordjs/collection": "^1.5.0", - "@discordjs/formatters": "^0.3.0", - "@discordjs/rest": "^1.7.0", - "@discordjs/util": "^0.2.0", - "@sapphire/snowflake": "^3.4.0", - "@types/ws": "^8.5.4", - "discord-api-types": "^0.37.37", - "fast-deep-equal": "^3.1.3", - "lodash.snakecase": "^4.1.1", - "tslib": "^2.5.0", - "undici": "^5.21.0", - "ws": "^8.13.0" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-xml-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", - "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", - "optional": true, - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/file-type": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.3.0.tgz", - "integrity": "sha512-pkPZ5OGIq0TYb37b8bHDLNeQSe1H2KlaQ2ySGpJkkr2KZdaWsO4QhPzHA0mQcsUW2cSqJk+4gM/UyLz/UFbXdQ==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0", - "token-types": "^5.0.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/japi.rest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/japi.rest/-/japi.rest-1.0.1.tgz", - "integrity": "sha512-dJGpErZk9Dp81jHXLLCIohSPbQuqem/fpwKbBdImYQzNtrrNEaDDkSQ5ECGHpLB3jg/Z9Chh0uaSJnMOjOfTlQ==", - "dependencies": { - "node-fetch": "^2.6.1" - } - }, - "node_modules/japi.rest/node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/japi.rest/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/japi.rest/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/japi.rest/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "engines": { - "node": "*" - } - }, - "node_modules/mongodb": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz", - "integrity": "sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==", - "dependencies": { - "bson": "^4.7.0", - "mongodb-connection-string-url": "^2.5.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">=12.9.0" - }, - "optionalDependencies": { - "@aws-sdk/credential-providers": "^3.186.0", - "saslprep": "^1.0.3" - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - } - }, - "node_modules/mongoose": { - "version": "6.10.5", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.5.tgz", - "integrity": "sha512-y4HL4/9EySec7L0gJ+pCm9heLSF45uIIvRS4fSeAFWDfe4vXW1vRZJwTz7OGkra3ZoSfRnFTo9bNZkuggDVlVA==", - "dependencies": { - "bson": "^4.7.0", - "kareem": "2.5.1", - "mongodb": "4.14.0", - "mpath": "0.9.0", - "mquery": "4.0.3", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, - "node_modules/mongoose/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", - "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", - "dependencies": { - "debug": "4.x" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/mquery/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mquery/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/ms": { - "version": "3.0.0-canary.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz", - "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==", - "engines": { - "node": ">=12.13" - } - }, - "node_modules/node": { - "version": "16.20.0", - "resolved": "https://registry.npmjs.org/node/-/node-16.20.0.tgz", - "integrity": "sha512-dom1A0xPnc1qzE+voYGswg3afb5QzlQxsPqE2b94BUcZZ6I5+v1EzqV0wHo7mXM1YzFTJOLshOwyAlouNEk3tA==", - "dev": true, - "dependencies": { - "node-bin-setup": "^1.0.0" - }, - "bin": { - "node": "bin/node" - }, - "engines": { - "npm": ">=5.0.0" - } - }, - "node_modules/node-bin-setup": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.1.3.tgz", - "integrity": "sha512-opgw9iSCAzT2+6wJOETCpeRYAQxSopqQ2z+N6BXwIMsQQ7Zj5M8MaafQY8JMlolRR6R1UXg2WmhKp0p9lSOivg==", - "dev": true - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/parsec": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/parsec/-/parsec-2.0.2.tgz", - "integrity": "sha512-4rXD5jon00sYj70xma4MKI9uGLfE7CvJq8iM+MBrJ596oWUWJZZqjZbLtTWUj5KIkegS4CexIqS4YgEq80zXOA==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info." - }, - "node_modules/path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", - "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "node_modules/peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/quickmongo": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/quickmongo/-/quickmongo-4.0.0.tgz", - "integrity": "sha512-oOGEnU/3ouxw1PQa6tAAMqGZL8KG8QDcJy2PqQPcLZUOZi1rSpfD3Glsuwd49Lvy0s+qRzg5SA3Cc8F2hfZbbw==", - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/quickmongo/-/quickmongo-4.0.0.tgz", - "integrity": "sha512-oOGEnU/3ouxw1PQa6tAAMqGZL8KG8QDcJy2PqQPcLZUOZi1rSpfD3Glsuwd49Lvy0s+qRzg5SA3Cc8F2hfZbbw==", - "dependencies": { - "dot-prop": "^6.0.1" - "dot-prop": "^6.0.1" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/sift": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", - "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "optional": true - }, - "node_modules/strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/ts-mixer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz", - "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==" - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/undici": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.0.tgz", - "integrity": "sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==", - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "optional": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - } - }, - "dependencies": { - "@aws-crypto/ie11-detection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "optional": true, - "requires": { - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - } - } - }, - "@aws-crypto/sha256-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "optional": true, - "requires": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - } - } - }, - "@aws-crypto/sha256-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "optional": true, - "requires": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - } - } - }, - "@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "optional": true, - "requires": { - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - } - } - }, - "@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "optional": true, - "requires": { - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - } - } - }, - "@aws-sdk/abort-controller": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz", - "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/client-cognito-identity": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.321.1.tgz", - "integrity": "sha512-6XuGHbGjKmwmBP9fxVtHtgYsSUZEDJZAdBa9jD3+//6OG9Qh4/mxRUZJFImMT8DOrmNLHU2q2W/4HjsbDql6VA==", - "optional": true, - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.321.1", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-node": "3.321.1", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.319.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.321.1", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.319.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/client-sso": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.321.1.tgz", - "integrity": "sha512-ecoT4tBGtRJR5G7oLBTMXZmgZZlff1amhSdKPEtkWxv6kWc8VPb5rRuRgVPsDR9HuesI6ZVlODptvGtnfkIJwA==", - "optional": true, - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.319.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.321.1", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.319.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/client-sso-oidc": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.321.1.tgz", - "integrity": "sha512-PBVfHQbyrsfzbnO6u9d9Sik8JlXGLhHj3zLd87iBkYXBdHwD5NuvwWu7OtjUtrHjP4SfzodVwfjmTbDAFqbtzw==", - "optional": true, - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.319.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.321.1", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.319.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/client-sts": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.321.1.tgz", - "integrity": "sha512-AB+N4a1TVEKl9Sd5O2TxTprEZp7Va6zPZLMraFAYMdmJVBmCmmwyBs7ygju685DpQ1dos5PRsKCRcossyY5pDQ==", - "optional": true, - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-node": "3.321.1", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-sdk-sts": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.319.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.321.1", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.319.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "fast-xml-parser": "4.1.2", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/config-resolver": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz", - "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-config-provider": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-cognito-identity": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.321.1.tgz", - "integrity": "sha512-g+3MQcwhpw1WqQ27BJLCCS90aUExH8kT9o2WM2tYjGATfTQ8+tpAqao2JxChtfzQbq6m69M175bZ3o09EaKobQ==", - "optional": true, - "requires": { - "@aws-sdk/client-cognito-identity": "3.321.1", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-env": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz", - "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==", - "optional": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-imds": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz", - "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==", - "optional": true, - "requires": { - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-ini": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.321.1.tgz", - "integrity": "sha512-prndSVQhiikNaI40bYnM2Q8PkC35FCwhbQnBk6KXNvdtfo9RqatMC639F+6oryb3BuMy++Ij4Yoi8WnPBs5Sww==", - "optional": true, - "requires": { - "@aws-sdk/credential-provider-env": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/credential-provider-process": "3.310.0", - "@aws-sdk/credential-provider-sso": "3.321.1", - "@aws-sdk/credential-provider-web-identity": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-node": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.321.1.tgz", - "integrity": "sha512-5B1waOwSvY2JMLGRebo7IUqnTaGoCnby9cRbG/dhi7Ke97M3V8380S9THDJ/bktjL8zHEVfBVZy7HhXHzhSjEg==", - "optional": true, - "requires": { - "@aws-sdk/credential-provider-env": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/credential-provider-ini": "3.321.1", - "@aws-sdk/credential-provider-process": "3.310.0", - "@aws-sdk/credential-provider-sso": "3.321.1", - "@aws-sdk/credential-provider-web-identity": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-process": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz", - "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==", - "optional": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-sso": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.321.1.tgz", - "integrity": "sha512-kg0rc1OacJFgAvmZj0TOu+BSc+yRdnC5dO/RAag3XU6+hlQI5/C080RQp9Qj6V7ga0HtAJMRwJcUlCPA3RJPug==", - "optional": true, - "requires": { - "@aws-sdk/client-sso": "3.321.1", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/token-providers": "3.321.1", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-web-identity": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz", - "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==", - "optional": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-providers": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.321.1.tgz", - "integrity": "sha512-z7uPo5B/pW8k2IHT2Nu2SFAWEzBnR/NnjUVOTwf93bxNbc7IxRODiCMggmK2wpjiRSBAc8zKKbZ4dHCcb4MyZg==", - "optional": true, - "requires": { - "@aws-sdk/client-cognito-identity": "3.321.1", - "@aws-sdk/client-sso": "3.321.1", - "@aws-sdk/client-sts": "3.321.1", - "@aws-sdk/credential-provider-cognito-identity": "3.321.1", - "@aws-sdk/credential-provider-env": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/credential-provider-ini": "3.321.1", - "@aws-sdk/credential-provider-node": "3.321.1", - "@aws-sdk/credential-provider-process": "3.310.0", - "@aws-sdk/credential-provider-sso": "3.321.1", - "@aws-sdk/credential-provider-web-identity": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/fetch-http-handler": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz", - "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==", - "optional": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/querystring-builder": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/hash-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz", - "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-buffer-from": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/invalid-dependency": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz", - "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/is-array-buffer": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz", - "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==", - "optional": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-content-length": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz", - "integrity": "sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ==", - "optional": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-endpoint": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz", - "integrity": "sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg==", - "optional": true, - "requires": { - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-host-header": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz", - "integrity": "sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA==", - "optional": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-logger": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz", - "integrity": "sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-recursion-detection": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz", - "integrity": "sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ==", - "optional": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-retry": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz", - "integrity": "sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g==", - "optional": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/service-error-classification": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - } - }, - "@aws-sdk/middleware-sdk-sts": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz", - "integrity": "sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ==", - "optional": true, - "requires": { - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-serde": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz", - "integrity": "sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-signing": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz", - "integrity": "sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ==", - "optional": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/signature-v4": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-stack": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz", - "integrity": "sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==", - "optional": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-user-agent": { - "version": "3.319.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.319.0.tgz", - "integrity": "sha512-ytaLx2dlR5AdMSne6FuDCISVg8hjyKj+cHU20b2CRA/E/z+XXrLrssp4JrCgizRKPPUep0psMIa22Zd6osTT5Q==", - "optional": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-endpoints": "3.319.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/node-config-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz", - "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==", - "optional": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/node-http-handler": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.321.1.tgz", - "integrity": "sha512-DdQBrtFFDNtzphJIN3s93Vf+qd9LHSzH6WTQRrWoXhTDMHDzSI2Cn+c5KWfk89Nggp/n3+OTwUPQeCiBT5EBuw==", - "optional": true, - "requires": { - "@aws-sdk/abort-controller": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/querystring-builder": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/property-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz", - "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/protocol-http": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz", - "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/querystring-builder": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz", - "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/querystring-parser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz", - "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/service-error-classification": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz", - "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==", - "optional": true - }, - "@aws-sdk/shared-ini-file-loader": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz", - "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/signature-v4": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz", - "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==", - "optional": true, - "requires": { - "@aws-sdk/is-array-buffer": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/smithy-client": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.316.0.tgz", - "integrity": "sha512-6YXOKbRnXeS8r8RWzuL6JMBolDYM5Wa4fD/VY6x/wK78i2xErHOvqzHgyyeLI1MMw4uqyd4wRNJNWC9TMPduXw==", - "optional": true, - "requires": { - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/token-providers": { - "version": "3.321.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.321.1.tgz", - "integrity": "sha512-I1sXS4qXirSvgvrOIPf+e1D7GvC83DdeyMxHZvuhHgeMCqDAzToS8OLxOX0enN9xZRHWAQYja8xyeGbDL2I0Zw==", - "optional": true, - "requires": { - "@aws-sdk/client-sso-oidc": "3.321.1", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/types": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz", - "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==", - "optional": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/url-parser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz", - "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==", - "optional": true, - "requires": { - "@aws-sdk/querystring-parser": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-base64": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz", - "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==", - "optional": true, - "requires": { - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-body-length-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz", - "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==", - "optional": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-body-length-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz", - "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==", - "optional": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-buffer-from": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz", - "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==", - "optional": true, - "requires": { - "@aws-sdk/is-array-buffer": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-config-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz", - "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==", - "optional": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-defaults-mode-browser": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.316.0.tgz", - "integrity": "sha512-6FSqLhYmaihtH2n1s4b2rlLW0ABU8N6VZIfzLfe2ING4PF0MzfaMMhnTFUHVXfKCVGoR8yP6iyFTRCyHGVEL1w==", - "optional": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-defaults-mode-node": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.316.0.tgz", - "integrity": "sha512-dkYy10hdjPSScXXvnjGpZpnJxllkb6ICHgLMwZ4JczLHhPM12T/4PQ758YN8HS+muiYDGX1Bl2z1jd/bMcewBQ==", - "optional": true, - "requires": { - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-endpoints": { - "version": "3.319.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.319.0.tgz", - "integrity": "sha512-3I64UMoYA2e2++oOUJXRcFtYLpLylnZFRltWfPo1B3dLlf+MIWat9djT+mMus+hW1ntLsvAIVu1hLVePJC0gvw==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-hex-encoding": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz", - "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==", - "optional": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-locate-window": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", - "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", - "optional": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-middleware": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz", - "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==", - "optional": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-retry": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz", - "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==", - "optional": true, - "requires": { - "@aws-sdk/service-error-classification": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-uri-escape": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz", - "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==", - "optional": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-user-agent-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz", - "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==", - "optional": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-user-agent-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz", - "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==", - "optional": true, - "requires": { - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-utf8": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz", - "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==", - "optional": true, - "requires": { - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "optional": true, - "requires": { - "tslib": "^2.3.1" - } - }, - "@discordjs/builders": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.6.1.tgz", - "integrity": "sha512-CCcLwn/8ANhlAbhlE18fcaN0hfXTen53/JiwZs1t9oE/Cqa9maA8ZRarkCIsXF4J7J/MYnd0J6IsxeKsq+f6mw==", - "requires": { - "@discordjs/formatters": "^0.3.0", - "@discordjs/util": "^0.2.0", - "@sapphire/shapeshift": "^3.8.1", - "discord-api-types": "^0.37.37", - "fast-deep-equal": "^3.1.3", - "ts-mixer": "^6.0.3", - "tslib": "^2.5.0" - } - }, - "@discordjs/collection": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.0.tgz", - "integrity": "sha512-suyVndkEAAWrGxyw/CPGdtXoRRU6AUNkibtnbJevQzpelkJh3Q1gQqWDpqf5i39CnAn5+LrN0YS+cULeEjq2Yw==" - }, - "@discordjs/formatters": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.0.tgz", - "integrity": "sha512-Fc4MomalbP8HMKEMor3qUiboAKDtR7PSBoPjwm7WYghVRwgJlj5WYvUsriLsxeKk8+Qq2oy+HJlGTUkGvX0YnA==", - "requires": { - "discord-api-types": "^0.37.37" - } - }, - "@discordjs/rest": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.7.0.tgz", - "integrity": "sha512-r2HzmznRIo8IDGYBWqQfkEaGN1LrFfWQd3dSyC4tOpMU8nuVvFUEw6V/lwnG44jyOq+vgyDny2fxeUDMt9I4aQ==", - "requires": { - "@discordjs/collection": "^1.5.0", - "@discordjs/util": "^0.2.0", - "@sapphire/async-queue": "^1.5.0", - "@sapphire/snowflake": "^3.4.0", - "discord-api-types": "^0.37.37", - "file-type": "^18.2.1", - "tslib": "^2.5.0", - "undici": "^5.21.0" - } - }, - "@discordjs/util": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-0.2.0.tgz", - "integrity": "sha512-/8qNbebFzLWKOOg+UV+RB8itp4SmU5jw0tBUD3ifElW6rYNOj1Ku5JaSW7lLl/WgjjxF01l/1uQPCzkwr110vg==" - }, - "@sapphire/async-queue": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", - "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==" - }, - "@sapphire/shapeshift": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.8.2.tgz", - "integrity": "sha512-NXpnJAsxN3/h9TqQPntOeVWZrpIuucqXI3IWF6tj2fWCoRLCuVK5wx7Dtg7pRrtkYfsMUbDqgKoX26vrC5iYfA==", - "requires": { - "fast-deep-equal": "^3.1.3", - "lodash": "^4.17.21" - } - }, - "@sapphire/snowflake": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.4.2.tgz", - "integrity": "sha512-KJwlv5gkGjs1uFV7/xx81n3tqgBwBJvH94n1xDyH3q+JSmtsMeSleJffarEBfG2yAFeJiFA4BnGOK6FFPHc19g==" - }, - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "@types/node": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.6.tgz", - "integrity": "sha512-+XBAjfZmmivILUzO0HwBJoYkAyyySSLg5KCGBDFLomJo0sV6szvVLAf4ANZZ0pfWzgEds5KmGLG9D5hfEqOhaA==" - }, - "@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" - }, - "@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "requires": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "@types/ws": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", - "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", - "requires": { - "@types/node": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "optional": true - }, - "bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", - "requires": { - "buffer": "^5.6.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "requires": { - "streamsearch": "^1.1.0" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" - }, - "deepmerge-ts": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-4.2.2.tgz", - "integrity": "sha512-Ka3Kb21tiWjvQvS9U+1Dx+aqFAHsdTnMdYptLTmC2VAmDFMugWMY1e15aTODstipmCun8iNuqeSfcx6rsUUk0Q==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "discord-api-types": { - "version": "0.37.40", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.40.tgz", - "integrity": "sha512-LMALvtO+p6ERK8rwWoaI490NfIE/egbqjR4/rfLL1z9gQE1gqLiTpIUUDIunfAtKYzeH6ucyXhaXXWpfZh/Q6g==" - }, - "discord-giveaways": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/discord-giveaways/-/discord-giveaways-6.0.1.tgz", - "integrity": "sha512-hs6Vtb62VdlV7NfB93Phaxc8FW0cH4N1Nkb0bXVZ2npgn73yGOFVmdp8bBP5gsC2ady9OAXXI8Gb66t1IddkFw==", - "requires": { - "deepmerge-ts": "^4.2.1", - "serialize-javascript": "^6.0.0" - } - }, - "discord-handlers": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/discord-handlers/-/discord-handlers-0.0.1.tgz", - "integrity": "sha512-ilivA4f94Ygb/pgrWRZzxO75pPA+ck788VUYCb72irj53/2nMBW4gfxI7bojQ5wchmYUpvbD4o0SkjSxLbP7vg==", - "requires": { - "chalk": "^4.1.2", - "discord.js": "^14.6.0", - "mongoose": "^6.7.3", - "path": "^0.12.7" - } - }, - "discord.js": { - "version": "14.9.0", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.9.0.tgz", - "integrity": "sha512-ygGms5xP4hG+QrrY9k7d/OYCzMltSMtdl/2Snzq/nLCiZo+Sna91Ulv9l0+B5Jd/Czcq37B7wJAnmja7GOa+bg==", - "requires": { - "@discordjs/builders": "^1.6.0", - "@discordjs/collection": "^1.5.0", - "@discordjs/formatters": "^0.3.0", - "@discordjs/rest": "^1.7.0", - "@discordjs/util": "^0.2.0", - "@sapphire/snowflake": "^3.4.0", - "@types/ws": "^8.5.4", - "discord-api-types": "^0.37.37", - "fast-deep-equal": "^3.1.3", - "lodash.snakecase": "^4.1.1", - "tslib": "^2.5.0", - "undici": "^5.21.0", - "ws": "^8.13.0" - } - }, - "dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-xml-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", - "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", - "optional": true, - "requires": { - "strnum": "^1.0.5" - } - }, - "fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "requires": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - } - }, - "file-type": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.3.0.tgz", - "integrity": "sha512-pkPZ5OGIq0TYb37b8bHDLNeQSe1H2KlaQ2ySGpJkkr2KZdaWsO4QhPzHA0mQcsUW2cSqJk+4gM/UyLz/UFbXdQ==", - "requires": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0", - "token-types": "^5.0.1" - } - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "requires": { - "fetch-blob": "^3.1.2" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "japi.rest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/japi.rest/-/japi.rest-1.0.1.tgz", - "integrity": "sha512-dJGpErZk9Dp81jHXLLCIohSPbQuqem/fpwKbBdImYQzNtrrNEaDDkSQ5ECGHpLB3jg/Z9Chh0uaSJnMOjOfTlQ==", - "requires": { - "node-fetch": "^2.6.1" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==" - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" - }, - "memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" - }, - "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "requires": { - "mime-db": "1.51.0" - } - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "mongodb": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.14.0.tgz", - "integrity": "sha512-coGKkWXIBczZPr284tYKFLg+KbGPPLlSbdgfKAb6QqCFt5bo5VFZ50O3FFzsw4rnkqjwT6D8Qcoo9nshYKM7Mg==", - "requires": { - "@aws-sdk/credential-providers": "^3.186.0", - "bson": "^4.7.0", - "mongodb-connection-string-url": "^2.5.4", - "saslprep": "^1.0.3", - "socks": "^2.7.1" - } - }, - "mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "requires": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - } - }, - "mongoose": { - "version": "6.10.5", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.10.5.tgz", - "integrity": "sha512-y4HL4/9EySec7L0gJ+pCm9heLSF45uIIvRS4fSeAFWDfe4vXW1vRZJwTz7OGkra3ZoSfRnFTo9bNZkuggDVlVA==", - "requires": { - "bson": "^4.7.0", - "kareem": "2.5.1", - "mongodb": "4.14.0", - "mpath": "0.9.0", - "mquery": "4.0.3", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==" - }, - "mquery": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", - "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", - "requires": { - "debug": "4.x" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "ms": { - "version": "3.0.0-canary.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz", - "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==" - }, - "node": { - "version": "16.20.0", - "resolved": "https://registry.npmjs.org/node/-/node-16.20.0.tgz", - "integrity": "sha512-dom1A0xPnc1qzE+voYGswg3afb5QzlQxsPqE2b94BUcZZ6I5+v1EzqV0wHo7mXM1YzFTJOLshOwyAlouNEk3tA==", - "dev": true, - "requires": { - "node-bin-setup": "^1.0.0" - } - }, - "node-bin-setup": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.1.3.tgz", - "integrity": "sha512-opgw9iSCAzT2+6wJOETCpeRYAQxSopqQ2z+N6BXwIMsQQ7Zj5M8MaafQY8JMlolRR6R1UXg2WmhKp0p9lSOivg==", - "dev": true - }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" - }, - "node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, - "parsec": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/parsec/-/parsec-2.0.2.tgz", - "integrity": "sha512-4rXD5jon00sYj70xma4MKI9uGLfE7CvJq8iM+MBrJ596oWUWJZZqjZbLtTWUj5KIkegS4CexIqS4YgEq80zXOA==" - }, - "path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" - }, - "quickmongo": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/quickmongo/-/quickmongo-4.0.0.tgz", - "integrity": "sha512-oOGEnU/3ouxw1PQa6tAAMqGZL8KG8QDcJy2PqQPcLZUOZi1rSpfD3Glsuwd49Lvy0s+qRzg5SA3Cc8F2hfZbbw==", - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/quickmongo/-/quickmongo-4.0.0.tgz", - "integrity": "sha512-oOGEnU/3ouxw1PQa6tAAMqGZL8KG8QDcJy2PqQPcLZUOZi1rSpfD3Glsuwd49Lvy0s+qRzg5SA3Cc8F2hfZbbw==", - "requires": { - "dot-prop": "^6.0.1" - "dot-prop": "^6.0.1" - } - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "requires": { - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "requires": { - "sparse-bitfield": "^3.0.3" - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "sift": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", - "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" - }, - "socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - } - }, - "sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "optional": true, - "requires": { - "memory-pager": "^1.0.2" - } - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "optional": true - }, - "strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", - "requires": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - } - }, - "token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "requires": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - } - }, - "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "requires": { - "punycode": "^2.1.1" - } - }, - "ts-mixer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz", - "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==" - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "undici": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.0.tgz", - "integrity": "sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==", - "requires": { - "busboy": "^1.6.0" - } - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "optional": true - }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" - }, - "whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - } - }, - "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "requires": {} - } - } -} diff --git a/package.json b/package.json index ebfd29a..57aee87 100644 --- a/package.json +++ b/package.json @@ -4,37 +4,30 @@ "description": "", "main": "index.js", "scripts": { - "start": "node index.js" - }, - "engines": { - "node": "16.x" + "start": "node index.js", + "dev": "nodemon index.js" }, "repository": { "type": "git", - "url": "git+https://github.com/EmotionChild/Giveaway-Child.git" + "url": "git+https://toastielab.dev/toastie_t0ast/Holana.git" }, - "author": "EmotionChild", + "author": "Toastie", "license": "Apache-2.0", "bugs": { - "url": "https://github.com/EmotionChild/Giveaway-Child/issues" + "url": "https://toastielab.dev/toastie_t0ast/Holana/issues" }, - "homepage": "https://github.com/EmotionChild/Giveaway-Child#readme", + "homepage": "https://toastielab.dev/toastie_t0ast/Holana#readme", "dependencies": { - "axios": "^0.27.2", - "chalk": "^4.1.2", + "beautify": "0.0.8", "discord-giveaways": "^6.0.1", - "discord-handlers": "^0.0.1", - "discord.js": "^14.6.0", - "dotenv": "^16.0.3", - "japi.rest": "^1.0.1", - "moment": "^2.29.4", - "mongoose": "^6.9.0", - "ms": "^3.0.0-canary.1", - "node-fetch": "^3.3.0", - "parsec": "^2.0.2", - "quickmongo": "^4.0.0" + "discord-sync-commands": "0.3.0", + "discord.js": "^14.9.0", + "fero-ms": "^2.0.7", + "ms": "^2.1.3", + "quickdb": "1.0.5", + "quickmongo": "4.0.0" }, "devDependencies": { - "node": "^16.9.1" + "nodemon": "^2.0.22" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..90ddc3c --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1060 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + beautify: + specifier: 0.0.8 + version: 0.0.8 + discord-giveaways: + specifier: ^6.0.1 + version: 6.0.1(discord.js@14.14.1) + discord-sync-commands: + specifier: 0.3.0 + version: 0.3.0 + discord.js: + specifier: ^14.9.0 + version: 14.14.1 + fero-ms: + specifier: ^2.0.7 + version: 2.0.7 + ms: + specifier: ^2.1.3 + version: 2.1.3 + quickdb: + specifier: 1.0.5 + version: 1.0.5 + quickmongo: + specifier: 4.0.0 + version: 4.0.0 + +devDependencies: + nodemon: + specifier: ^2.0.22 + version: 2.0.22 + +packages: + + /@discordjs/builders@0.5.0: + resolution: {integrity: sha512-HP5y4Rqw68o61Qv4qM5tVmDbWi4mdTFftqIOGRo33SNPpLJ1Ga3KEIR2ibKofkmsoQhEpLmopD1AZDs3cKpHuw==} + engines: {node: '>=14.0.0', npm: '>=7.0.0'} + deprecated: no longer supported + dependencies: + '@sindresorhus/is': 4.6.0 + discord-api-types: 0.22.0 + ow: 0.27.0 + ts-mixer: 6.0.3 + tslib: 2.6.2 + dev: false + + /@discordjs/builders@1.7.0: + resolution: {integrity: sha512-GDtbKMkg433cOZur8Dv6c25EHxduNIBsxeHrsRoIM8+AwmEZ8r0tEpckx/sHwTLwQPOF3e2JWloZh9ofCaMfAw==} + engines: {node: '>=16.11.0'} + dependencies: + '@discordjs/formatters': 0.3.3 + '@discordjs/util': 1.0.2 + '@sapphire/shapeshift': 3.9.3 + discord-api-types: 0.37.61 + fast-deep-equal: 3.1.3 + ts-mixer: 6.0.3 + tslib: 2.6.2 + dev: false + + /@discordjs/collection@0.2.4: + resolution: {integrity: sha512-PVrEJH+V6Ob0OwfagYQ/57kwt/HNEJxt5jqY4P+S3st9y29t9iokdnGMQoJXG5VEMAQIPbzu9Snw1F6yE8PdLA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + deprecated: no longer supported + dev: false + + /@discordjs/collection@1.5.3: + resolution: {integrity: sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==} + engines: {node: '>=16.11.0'} + dev: false + + /@discordjs/collection@2.0.0: + resolution: {integrity: sha512-YTWIXLrf5FsrLMycpMM9Q6vnZoR/lN2AWX23/Cuo8uOOtS8eHB2dyQaaGnaF8aZPYnttf2bkLMcXn/j6JUOi3w==} + engines: {node: '>=18'} + dev: false + + /@discordjs/form-data@3.0.1: + resolution: {integrity: sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==} + engines: {node: '>= 6'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /@discordjs/formatters@0.3.3: + resolution: {integrity: sha512-wTcI1Q5cps1eSGhl6+6AzzZkBBlVrBdc9IUhJbijRgVjCNIIIZPgqnUj3ntFODsHrdbGU8BEG9XmDQmgEEYn3w==} + engines: {node: '>=16.11.0'} + dependencies: + discord-api-types: 0.37.61 + dev: false + + /@discordjs/rest@2.2.0: + resolution: {integrity: sha512-nXm9wT8oqrYFRMEqTXQx9DUTeEtXUDMmnUKIhZn6O2EeDY9VCdwj23XCPq7fkqMPKdF7ldAfeVKyxxFdbZl59A==} + engines: {node: '>=16.11.0'} + dependencies: + '@discordjs/collection': 2.0.0 + '@discordjs/util': 1.0.2 + '@sapphire/async-queue': 1.5.0 + '@sapphire/snowflake': 3.5.1 + '@vladfrangu/async_event_emitter': 2.2.2 + discord-api-types: 0.37.61 + magic-bytes.js: 1.5.0 + tslib: 2.6.2 + undici: 5.27.2 + dev: false + + /@discordjs/util@1.0.2: + resolution: {integrity: sha512-IRNbimrmfb75GMNEjyznqM1tkI7HrZOf14njX7tCAAUetyZM1Pr8hX/EK2lxBCOgWDRmigbp24fD1hdMfQK5lw==} + engines: {node: '>=16.11.0'} + dev: false + + /@discordjs/ws@1.0.2: + resolution: {integrity: sha512-+XI82Rm2hKnFwAySXEep4A7Kfoowt6weO6381jgW+wVdTpMS/56qCvoXyFRY0slcv7c/U8My2PwIB2/wEaAh7Q==} + engines: {node: '>=16.11.0'} + dependencies: + '@discordjs/collection': 2.0.0 + '@discordjs/rest': 2.2.0 + '@discordjs/util': 1.0.2 + '@sapphire/async-queue': 1.5.0 + '@types/ws': 8.5.9 + '@vladfrangu/async_event_emitter': 2.2.2 + discord-api-types: 0.37.61 + tslib: 2.6.2 + ws: 8.14.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} + dev: false + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false + + /@one-ini/wasm@0.1.1: + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + dev: false + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true + + /@sapphire/async-queue@1.5.0: + resolution: {integrity: sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==} + engines: {node: '>=v14.0.0', npm: '>=7.0.0'} + dev: false + + /@sapphire/shapeshift@3.9.3: + resolution: {integrity: sha512-WzKJSwDYloSkHoBbE8rkRW8UNKJiSRJ/P8NqJ5iVq7U2Yr/kriIBx2hW+wj2Z5e5EnXL1hgYomgaFsdK6b+zqQ==} + engines: {node: '>=v14.0.0', npm: '>=7.0.0'} + dependencies: + fast-deep-equal: 3.1.3 + lodash: 4.17.21 + dev: false + + /@sapphire/snowflake@3.5.1: + resolution: {integrity: sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==} + engines: {node: '>=v14.0.0', npm: '>=7.0.0'} + dev: false + + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: false + + /@types/node@20.10.0: + resolution: {integrity: sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==} + dependencies: + undici-types: 5.26.5 + dev: false + + /@types/ws@7.4.7: + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + dependencies: + '@types/node': 20.10.0 + dev: false + + /@types/ws@8.5.9: + resolution: {integrity: sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==} + dependencies: + '@types/node': 20.10.0 + dev: false + + /@vladfrangu/async_event_emitter@2.2.2: + resolution: {integrity: sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ==} + engines: {node: '>=v14.0.0', npm: '>=7.0.0'} + dev: false + + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: true + + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: false + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: false + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: false + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /beautify@0.0.8: + resolution: {integrity: sha512-1iF6Ey2qxDkm6bPgKcoXUmwFDpoRi5IgwefQDDQBRLxlZAAYwcULoQ2IdBArXZuSsuL7AT+KvZI9xZVLeUZPRg==} + hasBin: true + dependencies: + cssbeautify: 0.3.1 + html: 1.0.0 + js-beautify: 1.14.11 + dev: false + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: false + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: false + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: false + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: false + + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: false + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: false + + /cssbeautify@0.3.1: + resolution: {integrity: sha512-ljnSOCOiMbklF+dwPbpooyB78foId02vUrTDogWzu6ca2DCNB7Kc/BHEGBnYOlUYtwXvSW0mWTwaiO2pwFIoRg==} + hasBin: true + dev: false + + /debug@3.2.7(supports-color@5.5.0): + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + supports-color: 5.5.0 + dev: true + + /deepmerge-ts@4.3.0: + resolution: {integrity: sha512-if3ZYdkD2dClhnXR5reKtG98cwyaRT1NeugQoAPTTfsOpV9kqyeiBF9Qa5RHjemb3KzD5ulqygv6ED3t5j9eJw==} + engines: {node: '>=12.4.0'} + dev: false + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /discord-api-types@0.22.0: + resolution: {integrity: sha512-l8yD/2zRbZItUQpy7ZxBJwaLX/Bs2TGaCthRppk8Sw24LOIWg12t9JEreezPoYD0SQcC2htNNo27kYEpYW/Srg==} + engines: {node: '>=12'} + deprecated: No longer supported. Install the latest release! + dev: false + + /discord-api-types@0.37.61: + resolution: {integrity: sha512-o/dXNFfhBpYHpQFdT6FWzeO7pKc838QeeZ9d91CfVAtpr5XLK4B/zYxQbYgPdoMiTDvJfzcsLW5naXgmHGDNXw==} + dev: false + + /discord-giveaways@6.0.1(discord.js@14.14.1): + resolution: {integrity: sha512-hs6Vtb62VdlV7NfB93Phaxc8FW0cH4N1Nkb0bXVZ2npgn73yGOFVmdp8bBP5gsC2ady9OAXXI8Gb66t1IddkFw==} + engines: {node: '>=16.9.0'} + peerDependencies: + discord.js: '>=14.0.0' + dependencies: + deepmerge-ts: 4.3.0 + discord.js: 14.14.1 + serialize-javascript: 6.0.1 + dev: false + + /discord-sync-commands@0.3.0: + resolution: {integrity: sha512-JPKJTqzUvAtqTFcHp8GgEZfgpkOaeUIHpLVcnP88lK8gMMxUfz1X9+DsVgbAbsWSF7uer0PpBowHyWomzTJH/g==} + dependencies: + discord.js: github.com/discordjs/discord.js/b2ef10fdd742aa08da3a33b2cf35f0f2350e915a + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false + + /discord.js@14.14.1: + resolution: {integrity: sha512-/hUVzkIerxKHyRKopJy5xejp4MYKDPTszAnpYxzVVv4qJYf+Tkt+jnT2N29PIPschicaEEpXwF2ARrTYHYwQ5w==} + engines: {node: '>=16.11.0'} + dependencies: + '@discordjs/builders': 1.7.0 + '@discordjs/collection': 1.5.3 + '@discordjs/formatters': 0.3.3 + '@discordjs/rest': 2.2.0 + '@discordjs/util': 1.0.2 + '@discordjs/ws': 1.0.2 + '@sapphire/snowflake': 3.5.1 + '@types/ws': 8.5.9 + discord-api-types: 0.37.61 + fast-deep-equal: 3.1.3 + lodash.snakecase: 4.1.1 + tslib: 2.6.2 + undici: 5.27.2 + ws: 8.14.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /dot-prop@6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} + dependencies: + is-obj: 2.0.0 + dev: false + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false + + /editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.5.4 + dev: false + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: false + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: false + + /fero-ms@2.0.7: + resolution: {integrity: sha512-FtPY5YEmSomF6soqAdB/9pVFppK49VB1V2wWQtSlqX/WnRBX1EhJIv54AsDeast9TD/9jYLMulBJdGRHVQhw4Q==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dev: false + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: false + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: false + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /html@1.0.0: + resolution: {integrity: sha512-lw/7YsdKiP3kk5PnR1INY17iJuzdAtJewxr14ozKJWbbR97znovZ0mh+WEMZ8rjc3lgTK+ID/htTjuyGKB52Kw==} + hasBin: true + dependencies: + concat-stream: 1.6.2 + dev: false + + /ignore-by-default@1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: false + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: false + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: false + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: false + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false + + /js-beautify@1.14.11: + resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} + engines: {node: '>=14'} + hasBin: true + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.4 + glob: 10.3.10 + nopt: 7.2.0 + dev: false + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: false + + /lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + dev: false + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: false + + /magic-bytes.js@1.5.0: + resolution: {integrity: sha512-wJkXvutRbNWcc37tt5j1HyOK1nosspdh3dj6LUYYAvF6JYNqs53IfRvK9oEpcwiDA1NdoIi64yAMfdivPeVAyw==} + dev: false + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /nodemon@2.0.22: + resolution: {integrity: sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==} + engines: {node: '>=8.10.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + debug: 3.2.7(supports-color@5.5.0) + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 5.7.2 + simple-update-notifier: 1.1.0 + supports-color: 5.5.0 + touch: 3.1.0 + undefsafe: 2.0.5 + dev: true + + /nopt@1.0.10: + resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: false + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /ow@0.27.0: + resolution: {integrity: sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==} + engines: {node: '>=12'} + dependencies: + '@sindresorhus/is': 4.6.0 + callsites: 3.1.0 + dot-prop: 6.0.1 + lodash.isequal: 4.5.0 + type-fest: 1.4.0 + vali-date: 1.0.0 + dev: false + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: false + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.1.0 + minipass: 7.0.4 + dev: false + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: false + + /pstree.remy@1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + dev: true + + /quickdb@1.0.5: + resolution: {integrity: sha512-bl//t43nrKh6gWS1ET5dp0UjCITnMM0lPMofolfeKF8bXAb5rvCX64WVAHRXPIdmhJULFUybYUlz2Xlsp+3Lhg==} + dev: false + + /quickmongo@4.0.0: + resolution: {integrity: sha512-oOGEnU/3ouxw1PQa6tAAMqGZL8KG8QDcJy2PqQPcLZUOZi1rSpfD3Glsuwd49Lvy0s+qRzg5SA3Cc8F2hfZbbw==} + dependencies: + dot-prop: 6.0.1 + dev: false + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + + /semver@7.0.0: + resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + + /serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: false + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: false + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false + + /simple-update-notifier@1.1.0: + resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} + engines: {node: '>=8.10.0'} + dependencies: + semver: 7.0.0 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: false + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: false + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: false + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /touch@3.1.0: + resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} + hasBin: true + dependencies: + nopt: 1.0.10 + dev: true + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /ts-mixer@6.0.3: + resolution: {integrity: sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==} + dev: false + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: false + + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: false + + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: false + + /undefsafe@2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: false + + /undici@5.27.2: + resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.0 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + + /vali-date@1.0.0: + resolution: {integrity: sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==} + engines: {node: '>=0.10.0'} + dev: false + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false + + /ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /ws@8.14.2: + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: false + + github.com/discordjs/discord.js/b2ef10fdd742aa08da3a33b2cf35f0f2350e915a: + resolution: {tarball: https://codeload.github.com/discordjs/discord.js/tar.gz/b2ef10fdd742aa08da3a33b2cf35f0f2350e915a} + name: discord.js + version: 13.2.0-dev + engines: {node: '>=16.6.0', npm: '>=7.0.0'} + prepare: true + requiresBuild: true + dependencies: + '@discordjs/builders': 0.5.0 + '@discordjs/collection': 0.2.4 + '@discordjs/form-data': 3.0.1 + '@sapphire/async-queue': 1.5.0 + '@types/ws': 7.4.7 + discord-api-types: 0.22.0 + node-fetch: 2.7.0 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false diff --git a/schemas/giveawaysSchema.js b/schemas/giveawaysSchema.js deleted file mode 100644 index 4d8fafb..0000000 --- a/schemas/giveawaysSchema.js +++ /dev/null @@ -1,60 +0,0 @@ -const mongoose = require('mongoose'); - -const giveawaySchema = new mongoose.Schema({ - messageId: String, - channelId: String, - guildId: String, - startAt: Number, - endAt: Number, - ended: Boolean, - winnerCount: Number, - prize: String, - messages: { - giveaway: String, - giveawayEnded: String, - inviteToParticipate: String, - drawing: String, - dropMessage: String, - winMessage: mongoose.Mixed, - embedFooter: mongoose.Mixed, - noWinner: String, - winners: String, - endedAt: String, - hostedBy: String - }, - thumbnail: String, - hostedBy: String, - winnerIds: { type: [String], default: undefined }, - reaction: mongoose.Mixed, - botsCanWin: Boolean, - embedColor: mongoose.Mixed, - embedColorEnd: mongoose.Mixed, - exemptPermissions: { type: [], default: undefined }, - exemptMembers: String, - bonusEntries: String, - extraData: mongoose.Mixed, - lastChance: { - enabled: Boolean, - content: String, - threshold: Number, - embedColor: mongoose.Mixed - }, - pauseOptions: { - isPaused: Boolean, - content: String, - unpauseAfter: Number, - embedColor: mongoose.Mixed, - durationAfterPause: Number, - infiniteDurationText: String - }, - isDrop: Boolean, - allowedMentions: { - parse: { type: [String], default: undefined }, - users: { type: [String], default: undefined }, - roles: { type: [String], default: undefined } - } -}, { id: false }); - -const giveawayModel = mongoose.model('giveaways', giveawaySchema); - -module.exports = giveawayModel; \ No newline at end of file diff --git a/schemas/guild.js b/schemas/guild.js deleted file mode 100644 index 16adaeb..0000000 --- a/schemas/guild.js +++ /dev/null @@ -1,9 +0,0 @@ -const { Schema, model } = require('mongoose'); - -const guildSchema = new Schema({ - _id: Schema.Types.ObjectId, - guildId: String, - guildName: String, -}); - -module.exports = model("Guild", guildSchema, "guilds"); \ No newline at end of file diff --git a/slash/about.js b/slash/about.js deleted file mode 100644 index 25bc2cf..0000000 --- a/slash/about.js +++ /dev/null @@ -1,29 +0,0 @@ -const { ApplicationCommandOptionType, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, } = require('discord.js'); - -module.exports = { - name: 'avatar', - description: 'Shows User Avatar', - options: [{ - name: 'user', - type: ApplicationCommandOptionType.User, - description: 'Select a user', - required: false, - }], - run: async (client, interaction) => { - const user = interaction.options.getUser('user') || interaction.user - - const row = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setLabel(`Avatar URL`) - .setStyle(ButtonStyle.Link) - .setURL(`${user.displayAvatarURL({ dynamic: false, format: 'png', size: 1024 })}`)) - - const embed = new EmbedBuilder() - .setTitle(`${user.username}'s Avatar`) - .setColor('#2F3136') - .setFooter({ text: `Requested by: ${interaction.user.username}`, iconURL: interaction.user.displayAvatarURL({ dynamic: true }) }) - .setImage(user.displayAvatarURL({ dynamic: true, size: 1024 })) - interaction.reply({ embeds: [embed], components: [row] }); - } -} \ No newline at end of file diff --git a/slash/avatar.js b/slash/avatar.js deleted file mode 100644 index b74a3c1..0000000 --- a/slash/avatar.js +++ /dev/null @@ -1,74 +0,0 @@ -const { - ApplicationCommandOptionType, - EmbedBuilder, - ActionRowBuilder, - ButtonBuilder, - ButtonStyle, -} = require("discord.js"); -module.exports = { - name: "avatar", - description: "Shows User Avatar", - options: [ - { - name: "user", - type: ApplicationCommandOptionType.User, - description: "Select a user", - required: false, - }, - ], - run: async (client, interaction) => { - const user = interaction.options.getUser("user") || interaction.user; - const fetch = require("axios"); - let userdata = await fetch.get( - `https://discord.com/api/guilds/${interaction.guild.id}/members/${user.id}`, - { - headers: { - Authorization: `Bot ${client.token}`, - }, - } - ); - - if (userdata.data.avatar !== undefined && userdata.data.avatar !== null) { - let AvatarURL = `https://cdn.discordapp.com/guilds/${interaction.guild.id}/users/${user.id}/avatars/${userdata.data.avatar}.webp?size=1024`; - const row = new ActionRowBuilder().addComponents( - new ButtonBuilder() - .setLabel(`Avatar URL`) - .setStyle(ButtonStyle.Link) - .setURL(AvatarURL) - ); - - const embed = new EmbedBuilder() - .setTitle(`${user.username}'s Avatar`) - .setColor("#2F3136") - .setFooter({ - text: `Requested by: ${interaction.user.username}`, - iconURL: interaction.user.displayAvatarURL({ dynamic: true }), - }) - .setImage(AvatarURL); - interaction.reply({ embeds: [embed], components: [row] }); - } else { - const row = new ActionRowBuilder().addComponents( - new ButtonBuilder() - .setLabel(`Avatar URL`) - .setStyle(ButtonStyle.Link) - .setURL( - `${user.displayAvatarURL({ - dynamic: false, - format: "png", - size: 1024, - })}` - ) - ); - - const embed = new EmbedBuilder() - .setTitle(`${user.username}'s Avatar`) - .setColor("#2F3136") - .setFooter({ - text: `Requested by: ${interaction.user.username}`, - iconURL: interaction.user.displayAvatarURL({ dynamic: true }), - }) - .setImage(user.displayAvatarURL({ dynamic: true, size: 1024 })); - interaction.reply({ embeds: [embed], components: [row] }); - } - }, -}; \ No newline at end of file diff --git a/slash/edit.js b/slash/edit.js deleted file mode 100644 index b52abb8..0000000 --- a/slash/edit.js +++ /dev/null @@ -1,72 +0,0 @@ -const { ApplicationCommandOptionType } = require('discord.js'); - -module.exports = { - name: 'edit', - description: '🎉 Edit a giveaway', - - options: [ - { - name: 'giveaway', - description: 'The giveaway to end (message ID)', - type: ApplicationCommandOptionType.String, - required: true - }, - { - name: 'duration', - description: 'Setting time of mentioned giveaway. Eg. 1h sets the current giveaway to end after an hour!', - type: ApplicationCommandOptionType.String, - required: true - }, - { - name: 'winners', - description: 'How many winners the giveaway should have', - type: ApplicationCommandOptionType.Integer, - required: true - }, - { - name: 'prize', - description: 'What the prize of the giveaway should be', - type: ApplicationCommandOptionType.String, - required: true - } - ], - - run: async (client, interaction) => { - - // If the member doesn't have enough permissions - if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) { - return interaction.reply({ - content: '<:x_:1010816180719722566> You need to have the manage messages permissions to start giveaways.', - ephemeral: true - }); - } - const gid = interaction.options.getString('giveaway'); - const time = interaction.options.getString('duration'); - const winnersCount = interaction.options.getInteger('winners'); - const prize = interaction.options.getString('prize'); - - await interaction.deferReply({ - ephemeral: true - }) - // Edit the giveaway - try { - await client.giveawaysManager.edit(gid, { - newWinnersCount: winnersCount, - newPrize: prize, - addTime: time - }) - } catch(e) { -return interaction.editReply({ - content: - `No giveaway found with the given message ID: \`${gid}\``, - ephemeral: true - }); - } - interaction.editReply({ - content: - `This giveaway has now been edited!`, - ephemeral: true - }); - } - -}; \ No newline at end of file diff --git a/slash/end.js b/slash/end.js deleted file mode 100644 index 9d450c0..0000000 --- a/slash/end.js +++ /dev/null @@ -1,65 +0,0 @@ -const { ApplicationCommandOptionType } = require('discord.js'); - -module.exports = { - name: "end", - description: '🎉 End an already running giveaway', - - options: [ - { - name: 'giveaway', - description: 'The giveaway to end (message ID or giveaway prize)', - type: ApplicationCommandOptionType.String, - required: true - } - ], - - run: async (client, interaction) => { - - // If the member doesn't have enough permissions - if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) { - return interaction.reply({ - content: '<:x_:1010816180719722566> You need to have the manage messages permissions to end giveaways.', - ephemeral: true - }); - } - - const query = interaction.options.getString('giveaway'); - - // fetching the giveaway with message Id or prize - const giveaway = - // Search with giveaway prize - client.giveawaysManager.giveaways.find((g) => g.prize === query && g.guildId === interaction.guild.id) || - // Search with giveaway Id - client.giveawaysManager.giveaways.find((g) => g.messageId === query && g.guildId === interaction.guild.id); - - // If no giveaway was found with the corresponding input - if (!giveaway) { - return interaction.reply({ - content: 'Unable to find a giveaway for `' + query + '`.', - ephemeral: true - }); - } - - if (giveaway.ended) { - return interaction.reply({ - content: 'This giveaway has already ended!', - ephemeral: true - }); - } - - // Edit the giveaway - client.giveawaysManager.end(giveaway.messageId) - // Success message - .then(() => { - // Success message - interaction.reply(`**[This Giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})** Has Now Ended!`); - }) - .catch((e) => { - interaction.reply({ - content: e, - ephemeral: true - }); - }); - - } -}; \ No newline at end of file diff --git a/slash/help.js b/slash/help.js deleted file mode 100644 index 99c7b40..0000000 --- a/slash/help.js +++ /dev/null @@ -1,108 +0,0 @@ -const { EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder, SelectMenuBuilder, ComponentType } = require('discord.js'); -const config = require('../config.json'); - -module.exports = { - name: 'help', - description: '📜 View all the commands available to the bot!', - run: async (client, interaction) => { - const embed = new EmbedBuilder() - .setTitle(`Commands of ${client.user.username}`) - .setColor('#2F3136') - .setDescription('Please Select a category to view all its commands\n<:invi:1000459192555024404><:next:1000472400049209385> **Giveaway Commands** \n<:invi:1000459192555024404><:next:1000472400049209385> **Configuration Commands**') - .setThumbnail('https://ellie.gcoms.xyz/Ellise.png') - .setTimestamp() - .setFooter({ - text: `©️ Holana`, - iconURL: ('https://i.imgur.com/sB02Hbz.png') - }); - - const giveaway = new EmbedBuilder() - .setTitle("Categories » Giveaway") - .setColor('#2F3136') - .setDescription("<:sort:1003268901360115842> Here are the giveaway commands") - .addFields( - { name: 'Create / Start' , value: `Start a giveaway in your guild!\n > **Type: \`/start\`**`, inline: true }, - { name: 'Edit' , value: `Edit an already running giveaway!\n > **Type: \`/edit\`**`, inline: true }, - { name: 'End' , value: `End an already running giveaway!\n > **Type: \`/end\`**`, inline: true }, - { name: 'Pause' , value: `Pause an already running giveaway!\n > **Type: \`/pause\`**`, inline: true }, - { name: 'Reroll' , value: `Reroll an ended giveaway!\n > **Type: \`/reroll\`**`, inline: true }, - { name: 'Resume' , value: `Resume a paused giveaway!\n > **Type: \`/resume\`**`, inline: true }, - ) - .setTimestamp() - .setFooter({ - text: `©️ Holana`, - iconURL: ('https://ellie.gcoms.xyz/Ellise.png') - }); - - const general = new EmbedBuilder() - .setTitle("Categories » Configuration") - .setColor('#2F3136') - .setDescription("<:sort:1003268901360115842> Here are the configuration commands in slash") - .addFields( - { name: 'Help', value: `Show the help menu.\n > **Type: \`/help\`**`, inline: true }, - { name: 'About', value: `Show Info About Holana.\n > **Type: \`/about\`**`, inline: true }, - { name: 'Server Info', value: `Shows server info.\n > **Type: \`/serverinfo\`**`, inline: true }, - { name: 'Server Icon', value: `Shows server icon.\n > **Type: \`/servericon\`**`, inline: true }, - { name: 'User Info', value: `Shows user info.\n > **Type: \`/userinfo\`**`, inline: true }, - { name: 'User Avatar', value: `Shows user avatar.\n > **Type: \`/avatar\`**`, inline: true }, - { name: 'Invite', value: `Get the bot's invite link.\n > **Type: \`/invite\`**`, inline: true }, - { name: 'Ping', value: `Check the bot's ping!\n > **Type: \`/ping\`**`, inline: true }, - { name: 'System', value: `Check the bot's System info.\n > **Type: \`/info\`**`, inline: true }, - ) - .setTimestamp() - .setFooter({ - text: `©️ Holana`, - iconURL: ('https://ellie.gcoms.xyz/Ellise.png') - }); - - const components = (state) => [ - new ActionRowBuilder().addComponents( - new StringSelectMenuBuilder() - .setCustomId("help-menu") - .setPlaceholder("Please Select a Category") - .setDisabled(state) - .addOptions([{ - label: `Giveaways`, - value: `giveaway`, - description: `View all the giveaway based commands!`, - emoji: `<:confetti:984296694357319730>` - }, - { - label: `Configuration`, - value: `general`, - description: `View all the general bot commands!`, - emoji: `<:Discord_settings:990669159849414736>` - } - ]) - ), - ]; - - const initialMessage = await interaction.reply({ embeds: [embed], components: components(false) }); - - const filter = (interaction) => interaction.user.id === interaction.member.id; - - const collector = interaction.channel.createMessageComponentCollector( - { - filter, - componentType: ComponentType.SelectMenu, - idle: 300000, - dispose: true, - }); - - collector.on('collect', (interaction) => { - if (interaction.values[0] === "giveaway") { - interaction.update({ embeds: [giveaway], components: components(false) }).catch((e) => { }); - } else if (interaction.values[0] === "general") { - interaction.update({ embeds: [general], components: components(false) }).catch((e) => { }); - } - }); - collector.on('end', (collected, reason) => { - if (reason == "time") { - initialMessage.edit({ - content: "Collector Destroyed, Try Again!", - components: [], - }); - } - }) - } -} \ No newline at end of file diff --git a/slash/info.js b/slash/info.js deleted file mode 100644 index 30d0081..0000000 --- a/slash/info.js +++ /dev/null @@ -1,53 +0,0 @@ -const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); - -module.exports = { - name: 'info', - description: '📚 Check my system info!', - run: async (client, interaction) => { - let ccount = client.channels.cache.size; - let mcount = 0; -client.guilds.cache.forEach((guild) => { - mcount += guild.memberCount -}) - - const row = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setLabel(`Invite ${client.user.username}`) - .setStyle(ButtonStyle.Link) - .setURL("https://discord.com/api/oauth2/authorize?client_id=973436715819745290&permissions=406881561681&scope=bot%20applications.commands") - .setEmoji('973537545289875486'), - ) - - let pembed = new EmbedBuilder() - .setAuthor({name: "Holana", iconURL: "https://ellie.gcoms.xyz/Ellise.png" }) - .setTitle('Information') - .setColor('#2F3136') - .setTimestamp() - .addFields( - { name: "\Server", value: `\`\`\`ini\n[ ${client.guilds.cache.size} ]\n\`\`\``, inline: true }, - {name: "Users", value: `\`\`\`ini\n[ ${mcount} ]\n\`\`\``, inline: true }, - {name: "Channels", value: `\`\`\`ini\n[ ${ccount} ]\n\`\`\``, inline: true} - ) - .setDescription(` -**= STATISTICS =** -> **• Discord.js** : v14.7.1 -> **• Node** : v18.13.0 - -**= SYSTEM =** -> **• Hosting** : - -> **• Platform** : Windows - -**= CPU =** -> **• Model** : - -> **• Speed** : - -> **• Cores** : -`) - .setFooter({ - text: `©️ IVON`, - iconURL: ('https://ellie.gcoms.xyz/Ellise.png') - }) - interaction.reply({ - embeds: [pembed], components: [row] - }); - }, -}; \ No newline at end of file diff --git a/slash/invite.js b/slash/invite.js deleted file mode 100644 index 89ad08a..0000000 --- a/slash/invite.js +++ /dev/null @@ -1,33 +0,0 @@ -const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); -const config = require('../config.json'); - -module.exports = { - name: 'invite', - description: '➕ Invite the bot to your server!', - run: async (client, interaction) => { - const row = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setLabel(`Invite ${client.user.username}`) - .setStyle(ButtonStyle.Link) - .setEmoji('973537545289875486') - .setURL(`https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=406881561681&scope=bot%20applications.commands`), - ) - let invite = new EmbedBuilder() - .setAuthor({ - name: `Invite ${client.user.username}`, - iconURL: client.user.displayAvatarURL() - }) - .setTitle("Invite & Support Link!") - .setDescription(`I'm A Giveaway bot to host Giveaways easily on your server with multiple options, Including role requirements, bonus roles, bonus points and server joinings. Get started with Holana today!`) - .setColor('#2F3136') - .setTimestamp() - .setThumbnail('https://ellie.gcoms.xyz/Ellise.png') - .setFooter({ - text: `©️ Holana`, - iconURL: ('https://ellie.gcoms.xyz/Ellise.png') - }) - - interaction.reply({ embeds: [invite], components: [row]}); -} -} \ No newline at end of file diff --git a/slash/pause.js b/slash/pause.js deleted file mode 100644 index 89f3ba0..0000000 --- a/slash/pause.js +++ /dev/null @@ -1,63 +0,0 @@ -const { ApplicationCommandOptionType } = require('discord.js'); - -module.exports = { - name: "pause", - description: '⏸ Pause a giveaway', - - options: [ - { - name: 'giveaway', - description: 'The giveaway to pause (message ID)', - type: ApplicationCommandOptionType.String, - required: true - } - ], - - run: async (client, interaction) => { - - // If the member doesn't have enough permissions - if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) { - return interaction.reply({ - content: '<:x_:1010816180719722566> You need to have the manage messages permissions to pause giveaways.', - ephemeral: true - }); - } - - const query = interaction.options.getString('giveaway'); - - // try to find the giveaway with prize alternatively with ID - const giveaway = - // Search with giveaway ID - client.giveawaysManager.giveaways.find((g) => g.messageId === query && g.guildId === interaction.guild.id); - - // If no giveaway was found - if (!giveaway) { - return interaction.reply({ - content: 'Unable to find a giveaway for `' + query + '`.', - ephemeral: true - }); - } - - if (giveaway.pauseOptions.isPaused) { - return interaction.reply({ - content: `**[This giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})** is already paused.`, - ephemeral: true - }); - } - - // Edit the giveaway - client.giveawaysManager.pause(giveaway.messageId) - // Success message - .then(() => { - // Success message - interaction.reply(`**[This giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})** has now been paused!`); - }) - .catch((e) => { - interaction.reply({ - content: e, - ephemeral: true - }); - }); - - } -}; \ No newline at end of file diff --git a/slash/ping.js b/slash/ping.js deleted file mode 100644 index 6a46731..0000000 --- a/slash/ping.js +++ /dev/null @@ -1,22 +0,0 @@ -const { EmbedBuilder } = require('discord.js'); - -module.exports = { - name: 'ping', - description: '🏓Check my ping!', - run: async (client, interaction) => { - let pembed = new EmbedBuilder() - .setTitle("Pong!") - .setColor('#2F3136') - .setThumbnail('https://ellie.gcoms.xyz/Ellise.png') - .addFields({name: '**Latency**', value: `\`\`\`ini\n[ ${Date.now() - interaction.createdTimestamp}ms ]\n\`\`\``, inline: true}, - {name: '**API Latency**', value: `\`\`\`ini\n[ ${Math.round(client.ws.ping)}ms ]\n\`\`\``, inline: true}) - .setTimestamp() - .setFooter({ - text: `©️ Holana`, - iconURL: ('https://ellie.gcoms.xyz/Ellise.png') - }) - interaction.reply({ - embeds: [pembed] - }); - }, -}; \ No newline at end of file diff --git a/slash/reroll.js b/slash/reroll.js deleted file mode 100644 index 0066916..0000000 --- a/slash/reroll.js +++ /dev/null @@ -1,62 +0,0 @@ -const { ApplicationCommandOptionType } = require('discord.js'); - -module.exports = { - name: "reroll", - description: '🎉 Reroll a giveaway', - - options: [ - { - name: 'giveaway', - description: 'The giveaway to reroll (message ID)', - type: ApplicationCommandOptionType.String, - required: true - } - ], - - run: async (client, interaction) => { - - // If the member doesn't have enough permissions - if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) { - return interaction.reply({ - content: '<:x_:1010816180719722566> You need to have the manage messages permission to reroll giveaways.', - ephemeral: true - }); - } - - const query = interaction.options.getString('giveaway'); - - // try to find the giveaway with the provided prize OR with the ID - const giveaway = - // Search with giveaway ID - client.giveawaysManager.giveaways.find((g) => g.messageId === query && g.guildId === interaction.guild.id); - - // If no giveaway was found - if (!giveaway) { - return interaction.reply({ - content: 'Unable to find a giveaway for `' + query + '`.', - ephemeral: true - }); - } - - if (!giveaway.ended) { - return interaction.reply({ - content: `[This Giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId}) has not been ended yet`, - ephemeral: true - }); - } - - // Reroll the giveaway - client.giveawaysManager.reroll(giveaway.messageId) - .then(() => { - // Success message - interaction.reply(`Rerolled **[this giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})!**`); - }) - .catch((e) => { - interaction.reply({ - content: e, - ephemeral: true - }); - }); - - } -}; \ No newline at end of file diff --git a/slash/resume.js b/slash/resume.js deleted file mode 100644 index 8873227..0000000 --- a/slash/resume.js +++ /dev/null @@ -1,63 +0,0 @@ -const { ApplicationCommandOptionType } = require('discord.js'); - -module.exports = { - name: "resume", - description: '▶ Resume a paused giveaway', - - options: [ - { - name: 'giveaway', - description: 'The giveaway to resume (message ID)', - type: ApplicationCommandOptionType.String, - required: true - } - ], - - run: async (client, interaction) => { - - // If the member doesn't have enough permissions - if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) { - return interaction.reply({ - content: '<:x_:1010816180719722566> You need to have the manage messages permissions to pause giveaways.', - ephemeral: true - }); - } - - const query = interaction.options.getString('giveaway'); - - // try to find the giveaway with prize alternatively with ID - const giveaway = - // Search with giveaway ID - client.giveawaysManager.giveaways.find((g) => g.messageId === query && g.guildId === interaction.guild.id); - - // If no giveaway was found - if (!giveaway) { - return interaction.reply({ - content: 'Unable to find a giveaway for `' + query + '`.', - ephemeral: true - }); - } - - if (!giveaway.pauseOptions.isPaused) { - return interaction.reply({ - content: `**[This giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})** is not paused!`, - ephemeral: true - }); - } - - // Edit the giveaway - client.giveawaysManager.unpause(giveaway.messageId) - // Success message - .then(() => { - // Success message - interaction.reply(`**[This giveaway](https://discord.com/channels/${giveaway.guildId}/${giveaway.channelId}/${giveaway.messageId})** has been successfully resumed!`); - }) - .catch((e) => { - interaction.reply({ - content: e, - ephemeral: true - }); - }); - - } -}; \ No newline at end of file diff --git a/slash/servericon.js b/slash/servericon.js deleted file mode 100644 index 76900fd..0000000 --- a/slash/servericon.js +++ /dev/null @@ -1,26 +0,0 @@ -const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); - -module.exports = { - name: 'servericon', - description: 'sends the Server Icon', - run: async (client, interaction) => { - -const row = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setLabel(`Server Icon URL`) - .setStyle(ButtonStyle.Link) - .setURL(`${interaction.guild.iconURL()}?size=1024`)) - - let embed = new EmbedBuilder() - .setAuthor({ name: interaction.guild.name }) - .setImage(interaction.guild.iconURL({ dynamic: true, size: 1024 })) - .setColor('#2F3136') - .setFooter({ - text: `©️ Holana`, - iconURL: ('https://ellie.gcoms.xyz/Ellise') - }) - interaction.reply({embeds: [embed], components: [row]}); - - } -} \ No newline at end of file diff --git a/slash/serverinfo.js b/slash/serverinfo.js deleted file mode 100644 index 24dc846..0000000 --- a/slash/serverinfo.js +++ /dev/null @@ -1,41 +0,0 @@ -const { EmbedBuilder } = require('discord.js'); - -module.exports = { - name: 'serverinfo', - description: 'sends the serverinfo', - run: async (client, interaction) => { - const guild = client.guilds.resolve(interaction.guildId) - const voicechannels = await guild.channels.cache.filter( - (ch) => ch.type === ChannelType.GuildVoice - ).size -const textchannels = await guild.channels.cache.filter( - (ch) => ch.type === ChannelType.GuildText - ).size - - let embed = new EmbedBuilder() - .setTitle("**Server Information**") - .setColor('#2F3136') - .setThumbnail(interaction.guild.iconURL({ dynamic: true })) - .setDescription(` - <:profile:1000770439406157904> **Name:** \`${interaction.guild.name}\` - <:invi:1000459192555024404><:next:1000472400049209385> **Server ID:** ${interaction.guild.id} - <:vip:990606565344182302> **Owner:** <@${(interaction.guild.ownerId)}> - <:invi:1000459192555024404><:next:1000472400049209385> **Owner ID:** ${(await interaction.guild.ownerId)}\n - <:birthday:1000469205520502935> **Created At: ** - <:member:1000768159952949258> **Members:** \`${interaction.guild.memberCount}\` - <:role:1000449831157907556> **Roles:** \`${interaction.guild.roles.cache.size}\` - <:boost:990601774438166609> **Emojis:** \`${interaction.guild.emojis.cache.size}\` - **Animated Emojis:** \`${interaction.guild.emojis.cache.filter(emoji => emoji.animated).size}\` - <:channel:990666581493284915> **Text Channels:** \`${textchannels}\` - <:voice:990666579182223431> **Voice Channels:** \`${voicechannels}\`\n\n - **Boost Information**\n - <:boosters:1000708963626668052> **Total Boosts:** \`${interaction.guild.premiumSubscriptionCount}\` - <:boost:984643370511118378> **Boost Level:** \`${interaction.guild.premiumTier}\``) - .setAuthor({ name: interaction.guild.name }) - .setFooter({ - text: `©️ Holana`, - iconURL: ('https://ellie.gcoms.xyz/Ellise') - }) - interaction.reply({embeds: [embed]}); - } -} \ No newline at end of file diff --git a/slash/start.js b/slash/start.js deleted file mode 100644 index 1987d26..0000000 --- a/slash/start.js +++ /dev/null @@ -1,164 +0,0 @@ -const Discord = require("discord.js") -const { ApplicationCommandOptionType, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require("discord.js"); -const messages = require("../utils/message"); -const ms = require("ms") -module.exports = { - name: 'start', - description: '🎉 Start a giveaway', - - options: [ - { - name: 'duration', - description: 'How long the giveaway should last for. Example values: 1m, 1h, 1d', - type: ApplicationCommandOptionType.String, - required: true - }, - { - name: 'winners', - description: 'How many winners the giveaway should have', - type: ApplicationCommandOptionType.Integer, - required: true - }, - { - name: 'prize', - description: 'What the prize of the giveaway should be', - type: ApplicationCommandOptionType.String, - required: true - }, - { - name: 'channel', - description: 'The channel to start the giveaway in', - type: ApplicationCommandOptionType.Channel, - required: true - }, - { - name: 'bonusrole', - description: 'Role which would recieve bonus entries', - type: ApplicationCommandOptionType.Role, - required: false - }, - { - name: 'bonusamount', - description: 'The amount of bonus entries the role will recieve', - type: ApplicationCommandOptionType.Integer, - required: false - }, - { - name: 'description', - description: 'Add more details about your giveaway', - type: ApplicationCommandOptionType.String, - required: false - }, - { - name: 'role', - description: 'Role you want to add as giveaway joining requirement', - type: ApplicationCommandOptionType.Role, - required: false - }, - ], - - run: async (client, interaction) => { - - // If the member doesn't have enough permissions - if (!interaction.member.permissions.has('MANAGE_MESSAGES') && !interaction.member.roles.cache.some((r) => r.name === "Giveaways")) { - return interaction.reply({ - content: ':x: You need to have the manage messages permissions to start giveaways.', - ephemeral: true - }); - } - - const giveawayChannel = interaction.options.getChannel('channel'); - const giveawayDuration = interaction.options.getString('duration'); - const giveawayWinnerCount = interaction.options.getInteger('winners'); - const giveawayPrize = interaction.options.getString('prize'); - - if (!giveawayChannel.isTextBased()) { - return interaction.reply({ - content: ':x: Please select a text channel!', - ephemeral: true - }); - } - if(isNaN(ms(giveawayDuration))) { - return interaction.reply({ - content: ':x: Please select a valid duration!', - ephemeral: true - }); - } - if (giveawayWinnerCount < 1) { - return interaction.reply({ - content: ':x: Please select a valid winner count! greater or equal to one.', - }) - } - - const bonusRole = interaction.options.getRole('bonusrole') - const bonusEntries = interaction.options.getInteger('bonusamount') - let rolereq = interaction.options.getRole('role') - let invite = interaction.options.getString('description') - - if (bonusRole) { - if (!bonusEntries) { - return interaction.reply({ - content: `:x: You must specify how many bonus entries would ${bonusRole} recieve!`, - ephemeral: true - }); - } - } - - - await interaction.deferReply({ ephemeral: true }) - - if (rolereq) { - messages.inviteToParticipate = `**React with <:confetti:984296694357319730> to participate!**\n>>> - Only members having ${rolereq} are allowed to participate in this giveaway!` - } - if (rolereq && invite) { - messages.inviteToParticipate = `**React with <:confetti:984296694357319730> to participate!**\n>>> - Only members having ${rolereq} are allowed to participate in this giveaway!` - } - if (!rolereq && invite) { - messages.inviteToParticipate = `**React with <:confetti:984296694357319730> to participate!**\n>>> Read more details about this giveaway down below!` - } - - - // start giveaway - await client.giveawaysManager.start(giveawayChannel, { - // The giveaway duration - duration: ms(giveawayDuration), - // The giveaway prize - prize: giveawayPrize, - // The giveaway Host - hostedBy: `<@${interaction.user.id}>`, - // The giveaway winner count - winnerCount: parseInt(giveawayWinnerCount), - // BonusEntries If Provided - bonusEntries: [ - { - // Members who have the role which is assigned to "rolename" get the amount of bonus entries which are assigned to "BonusEntries" - bonus: new Function('member', `return member.roles.cache.some((r) => r.name === \'${bonusRole ?.name}\') ? ${bonusEntries} : null`), - cumulative: false - } - ], - // Messages - messages, - extraData: { - role: rolereq == null ? "null" : rolereq.id, - } - }); - interaction.editReply({ - content: - `Giveaway started in ${giveawayChannel}!`, - ephemeral: true - }) - - if (bonusRole) { - let giveaway = new Discord.EmbedBuilder() - .setAuthor({ name: `Bonus Entries Alert!` }) - .setDescription( - `**${bonusRole}** Has **${bonusEntries}** Extra Entries in this giveaway!` - ) - .setColor("#2F3136") - .setTimestamp(); - giveawayChannel.send({ embeds: [giveaway] }); - } - - } - -}; \ No newline at end of file diff --git a/slash/userinfo.js b/slash/userinfo.js deleted file mode 100644 index 801343e..0000000 --- a/slash/userinfo.js +++ /dev/null @@ -1,234 +0,0 @@ -const { - EmbedBuilder, - ActionRowBuilder, - ApplicationCommandOptionType, - AttachmentBuilder, -} = require("discord.js"); -const moment = require("moment"); -const japiRestPkg = require("japi.rest"); -const japiRest = new japiRestPkg('API Key'); // Get ur japi key from https://key.japi.rest - -module.exports = { - name: "userinfo", - description: "Gives information about a user or server", - UserPerms: ["MANAGE_MESSAGES"], - BotPerms: ["EMBED_LINKS"], - options: [ - { - name: "member", - description: - "Please select a server member of whose information you want", - type: ApplicationCommandOptionType.User, - required: false, - }, - ], - /** - * @param {Client} client - * @param {CommandInteraction} interaction - * @param {String[]} args - */ - run: async (client, interaction, args) => { - const flags = { - DISCORD_EMPLOYEE: "<:BadgeStaff:990666549163610252>", //Replace your emoji here - DISCORD_PARTNER: "<:Partner:990667758654091274>", //Replace your emoji here - BUGHUNTER_LEVEL_1: "<:bughunterlv1:990666534609354843>", //Replace your emoji here - BUGHUNTER_LEVEL_2: "<:bughunterlv2:990666595795873832>", //Replace your emoji here - HYPESQUAD_EVENTS: "<:discord_serveur:990666593455452200>", //Replace your emoji here - HOUSE_BRAVERY: "<:bravery:990666567593373736>", //Replace your emoji here - HOUSE_BRILLIANCE: "<:brillance:990666570013479042>", //Replace your emoji here - HOUSE_BALANCE: "<:balance:990666565273911427>", //Replace your emoji here - EARLY_SUPPORTER: "<:earlysupporter:990666536802992188>", //Replace your emoji here - SYSTEM: "<:developer:974687011040526376>", //Replace your emoji here - VERIFIED_BOT: "<:gg:991441731163803799><:ggg:991441739590156290>", //Replace your emoji here - VERIFIED_DEVELOPER: "<:developersofDiscord:990666539218899004>", //Replace your emoji here - ACTIVE_DEVELOPER: "<:active_developer:1040582016112013382>", - NITRO: "<:DiscordNitro:990666558235877396>", //Replace your emoji here - BOOSTER_1: "<:1m:991804502455885824>", //Replace your emoji here - BOOSTER_2: "<:2m:991804500388102305>", //Replace your emoji here - BOOSTER_3: "<:3m:991804504678867026>", //Replace your emoji here - BOOSTER_4: "<:6m:991804497384972490>", //Replace your emoji here - BOOSTER_5: "<:9m:991804517706375278>", //Replace your emoji here - BOOSTER_6: "<:12m:991804515198193674>", //Replace your emoji here - BOOSTER_7: "<:15m:991804512434147418>", //Replace your emoji here - BOOSTER_8: "<:18m:991804509766557767>", //Replace your emoji here - BOOSTER_9: "<:24m:991804507308707850>", //Replace your emoji here - }; - //badge system - - const { options } = interaction; - const user = (await options.getUser("member")) || interaction.user; - const member = await interaction.guild.members.fetch(user); - const owner = await interaction.guild.fetchOwner(); - - const avpng = member.user.displayAvatarURL({ - format: "png", - dynamic: true, - }); - const joinedServerAt = `${moment(member.joinedTimestamp).format( - "DD/MM/YYYY" - )}`; - const isBot = member.user.bot - ? "<:true:990666572366499940>" - : "<:false:990666574295867393>"; - let memberPermissons = `${member.permissions - .toArray() - .map((p) => `${p}`) - .join(", ")}`; - if (member.user.id === owner.id) { - memberPermissons = "SERVER_OWNER"; - } - const joinedDiscordAt = `${moment(member.user.createdTimestamp).format( - "DD/MM/YYYY" - )}`; - const statuses = { - online: "🟢", - idle: "🌙", - dnd: "⛔", - offline: "⚫️", - }; - const status = `${statuses[member.presence?.status]} ${ - member.presence?.status - }`; - const activity = member.presence?.activities[0]; - var userstatus = "None"; - if (activity) { - if (activity.type === "CUSTOM_STATUS") { - let emoji = `${ - activity.emoji - ? activity.emoji.id - ? `<${activity.emoji.animated ? "a" : ""}:${ - activity.emoji.name - }:${activity.emoji.id}>` - : activity.emoji.name - : "" - }`; - userstatus = `${emoji} \`${activity.state || "None"}\``; - } else { - userstatus = `\`${ - activity.type.toLowerCase().charAt(0).toUpperCase() + - activity.type.toLowerCase().slice(1) - } ${activity.name}\``; - } - } - const totalRoles = await member.roles.cache.size; - const roles = await member.roles; - const highestRole = - member.roles.highest.id === interaction.guild.id - ? "None" - : member.roles.highest; - function trimArray(arr, maxLen = 25) { - if (Array.from(arr.values()).length > maxLen) { - const len = Array.from(arr.values()).length - maxLen; - arr = Array.from(arr.values()) - .sort((a, b) => b.rawPosition - a.rawPosition) - .slice(0, maxLen); - arr.map((role) => `<@&${role.id}>`); - arr.push(`${len} more...`); - } - return arr.join(", "); - } - const Roles = - (await member.roles.cache.size) < 25 - ? Array.from(roles.cache.values()) - .sort((a, b) => b.rawPosition - a.rawPosition) - .map((role) => `<@&${role.id}>`) - .join(", ") - : roles.cache.size > 25 - ? trimArray(roles.cache) - : "None"; - - japiRest.discord.getUser(user.id).then((user) => { - data = user.data; - fetch(data); - }); - - async function fetch(data) { - const badges = data.public_flags_array - ? data.public_flags_array.map((flag) => { - return flags[flag]; - }) - : "No Badges."; - - const fetchh = require("axios"); - - let userdata = await fetchh.get( - `https://discord.com/api/users/${user.id}`, - { - headers: { - Authorization: `Bot ${client.token}`, - }, - } - ); - let banner = userdata.data.banner; - //if (!banner && !userdata.data.accent_color) banner = "a_" + userdata.data.accent_color.toString(16); - if (banner) { - fileType = banner.startsWith("a_") ? ".gif" : ".png"; - const url = `https://cdn.discordapp.com/banners/${user.id}/${banner}${fileType}?size=1024`; - const UserInfoEm = new EmbedBuilder() - .setColor("2f3136") - .setTitle("**WHO THE HELL IS THIS?**") - .setThumbnail(member.user.displayAvatarURL({ dynamic: true })) - .setImage(`${url}`) - .setDescription( - ` - **Name:** \`${member.user.username}\` - > Nickname: **${member.nickname == null ? "No nickname set" : member.nickname}** - > Tag: **${member.user.tag}** - > ID: **${member.user.id}** - > Avatar: [PNG](${avpng})\n - **Creation:** - **Joined:** - **Bot:** ${isBot} - **Discord Badges:** ${badges}\n - **Highest Role:** \n${highestRole}\n - **Roles:** \n${Roles}\n - **Permissions:** \n\`\`\`ini\n[ ${memberPermissons} ]\`\`\`` - ) - .setFooter({ - text: "©️ Holana", - iconURL: "https://ellie.gcoms.xyz/Ellise", - }); - await interaction.reply({ - content: `Information about **${member.user.tag}**`, - embeds: [UserInfoEm], - }); - } else { - const UserInfoEm = new EmbedBuilder() - .setColor("2f3136") - .setTitle("**WHO THE HELL IS THIS?**") - .setThumbnail(member.user.displayAvatarURL({ dynamic: true })) - .setDescription( - ` - **Name:** \`${member.user.username}\` - > Nickname: **${member.nickname == null ? "No nickname set" : member.nickname}** - > Tag: **${member.user.tag}** - > ID: **${member.user.id}** - > Avatar: [Click here](${avpng})\n - **Creation:** - **Joined:** - **Bot:** ${isBot} - **Discord Badges:** ${badges}\n - **Highest Role:** \n${highestRole}\n - **Roles:** \n${Roles}\n - **Permissions:** \n\`\`\`ini\n[ ${memberPermissons} ]\`\`\`` - ) - .setFooter({ - text: "©️ Holana", - iconURL: "https://ellie.gcoms.xyz/Ellise", - }); - await interaction.reply({ - content: `Information about **${member.user.tag}**`, - embeds: [UserInfoEm], - }); - } - } - }, -}; \ No newline at end of file diff --git a/utils/message.js b/utils/messages.js similarity index 100% rename from utils/message.js rename to utils/messages.js diff --git a/utils/slashsync.js b/utils/slashsync.js deleted file mode 100644 index a38291a..0000000 --- a/utils/slashsync.js +++ /dev/null @@ -1,55 +0,0 @@ -const Discord = require('discord.js'); - -module.exports = async(client, commands, options = { - debug: false, - guildId: null -}) => { - - const log = (message) => options.debug && console.log(message); - - const ready = client.readyAt ? Promise.resolve() : new Promise(resolve => client.once('ready', resolve)); - await ready; - const currentCommands = await client.application.commands.fetch(options.guildId && { guildId: options.guildId }); - - log(`Synchronizing commands...`); - log(`Currently ${currentCommands.size} commands are registered to the bot.`); - - const newCommands = commands.filter((command) => !currentCommands.some((c) => c.name === command.name)); - for (let newCommand of newCommands) { - await client.application.commands.create(newCommand, options.guildId); - } - - log(`Created ${newCommands.length} commands!`); - - const deletedCommands = currentCommands.filter((command) => !commands.some((c) => c.name === command.name)).toJSON(); - for (let deletedCommand of deletedCommands) { - await deletedCommand.delete(); - } - - log(`Deleted ${deletedCommands.length} commands!`); - - const updatedCommands = commands.filter((command) => currentCommands.some((c) => c.name === command.name)); - let updatedCommandCount = 0; - for (let updatedCommand of updatedCommands) { - const newCommand = updatedCommand; - const previousCommand = currentCommands.find((c) => c.name === updatedCommand.name); - let modified = false; - if (previousCommand.description !== newCommand.description) modified = true; - if (!Discord.ApplicationCommand.optionsEqual(previousCommand.options ?? [], newCommand.options ?? [])) modified = true; - if (modified) { - await previousCommand.edit(newCommand); - updatedCommandCount++; - } - } - - log(`Updated ${updatedCommandCount} commands!`); - - log(`Commands synchronized!`); - - return { - currentCommandCount: currentCommands.size, - newCommandCount: newCommands.length, - deletedCommandCount: deletedCommands.length, - updatedCommandCount - }; -} \ No newline at end of file