diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0cffcb3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+config.json
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..cde4ac6
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,10 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
+
+In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to
diff --git a/commands/ping.js b/commands/ping.js
new file mode 100644
index 0000000..64e2ba6
--- /dev/null
+++ b/commands/ping.js
@@ -0,0 +1,10 @@
+const { SlashCommandBuilder } = require('discord.js');
+
+module.exports = {
+ data: new SlashCommandBuilder()
+ .setName('ping')
+ .setDescription('Replies with Pong!'),
+ async execute(interaction) {
+ await interaction.reply('Pong!');
+ },
+};
diff --git a/commands/server.js b/commands/server.js
new file mode 100644
index 0000000..67411cf
--- /dev/null
+++ b/commands/server.js
@@ -0,0 +1,11 @@
+const { SlashCommandBuilder } = require('discord.js');
+
+module.exports = {
+ data: new SlashCommandBuilder()
+ .setName('server')
+ .setDescription('Provides information about the server.'),
+ async execute(interaction) {
+ // interaction.guild is the object representing the Guild in which the command was run
+ await interaction.reply(`This server is ${interaction.guild.name} and has ${interaction.guild.memberCount} members.`);
+ },
+};
diff --git a/commands/user.js b/commands/user.js
new file mode 100644
index 0000000..6ef0ba8
--- /dev/null
+++ b/commands/user.js
@@ -0,0 +1,12 @@
+const { SlashCommandBuilder } = require('discord.js');
+
+module.exports = {
+ data: new SlashCommandBuilder()
+ .setName('user')
+ .setDescription('Provides information about the user.'),
+ async execute(interaction) {
+ // interaction.user is the object representing the User who ran the command
+ // interaction.member is the GuildMember object, which represents the user in the specific guild
+ await interaction.reply(`This command was run by ${interaction.user.username}, who joined on ${interaction.member.joinedAt}.`);
+ },
+};
diff --git a/deploy-commands.js b/deploy-commands.js
new file mode 100644
index 0000000..0cf3c76
--- /dev/null
+++ b/deploy-commands.js
@@ -0,0 +1,36 @@
+const { REST, Routes } = require('discord.js');
+const { clientId, guildId, token } = require('./config.json');
+const fs = require('node:fs');
+const path = require('node:path');
+
+const commands = [];
+// Grab all the command files from the commands directory you created earlier
+const commandsPath = path.join(__dirname, 'commands');
+const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js'));
+
+// Grab the SlashCommandBuilder#toJSON() output of each command's data for deployment
+for (const file of commandFiles) {
+ const command = require(`./commands/${file}`);
+ commands.push(command.data.toJSON());
+}
+
+// Construct and prepare an instance of the REST module
+const rest = new REST({ version: '10' }).setToken(token);
+
+// and deploy your commands!
+(async () => {
+ try {
+ console.log(`Started refreshing ${commands.length} application (/) commands.`);
+
+ // The put method is used to fully refresh all commands in the guild with the current set
+ const data = await rest.put(
+ Routes.applicationCommands(clientId),
+ { body: commands },
+ );
+
+ console.log(`Successfully reloaded ${data.length} application (/) commands.`);
+ } catch (error) {
+ // And of course, make sure you catch and log any errors!
+ console.error(error);
+ }
+})();
diff --git a/discordbot.sh b/discordbot.sh
new file mode 100755
index 0000000..d1f4fdf
--- /dev/null
+++ b/discordbot.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+node index.js
\ No newline at end of file
diff --git a/img_input.txt b/img_input.txt
new file mode 100644
index 0000000..525aec9
--- /dev/null
+++ b/img_input.txt
@@ -0,0 +1 @@
+fuckery
\ No newline at end of file
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..a9c1dd3
--- /dev/null
+++ b/index.js
@@ -0,0 +1,62 @@
+const { Client, Collection, Events, GatewayIntentBits, ActivityType } = require('discord.js');
+const fs = require('node:fs');
+const path = require('node:path');
+const { token } = require('./config.json');
+
+
+const client = new Client({ intents: [GatewayIntentBits.Guilds] });
+
+//COMMANDS
+client.commands = new Collection();
+
+const commandsPath = path.join(__dirname, 'commands');
+const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js'));
+
+for (const file of commandFiles) {
+ const filePath = path.join(commandsPath, file);
+ const command = require(filePath);
+ // Set a new item in the Collection with the key as the command name and the value as the exported module
+ if ('data' in command && 'execute' in command) {
+ client.commands.set(command.data.name, command);
+ } else {
+ console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`);
+ }
+}
+
+client.on(Events.InteractionCreate, async interaction => {
+ if (!interaction.isChatInputCommand()) return;
+ const command = interaction.client.commands.get(interaction.commandName);
+
+ if (!command) {
+ console.error(`No command matching ${interaction.commandName} was found.`);
+ return;
+ }
+
+ try {
+ await command.execute(interaction);
+ } catch (error) {
+ console.error(error);
+ if (interaction.replied || interaction.deferred) {
+ await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true });
+ } else {
+ await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });
+ }
+ }
+
+ console.log(interaction);
+});
+
+
+//COMMANDS
+
+//CLIENT READY
+client.once(Events.ClientReady, c => {
+ client.user.setPresence({ activities: [{ name: `The Multiverse`, type: ActivityType.Watching }],
+ status: 'online',});
+ console.log(`Ready! Logged in as ${c.user.tag}`);
+});
+//CLIENT READY
+
+
+//Login to bot
+client.login(token);
\ No newline at end of file
diff --git a/node_modules/.bin/is-ci b/node_modules/.bin/is-ci
new file mode 120000
index 0000000..fe6aca6
--- /dev/null
+++ b/node_modules/.bin/is-ci
@@ -0,0 +1 @@
+../is-ci/bin.js
\ No newline at end of file
diff --git a/node_modules/.bin/nodemon b/node_modules/.bin/nodemon
new file mode 120000
index 0000000..1056ddc
--- /dev/null
+++ b/node_modules/.bin/nodemon
@@ -0,0 +1 @@
+../nodemon/bin/nodemon.js
\ No newline at end of file
diff --git a/node_modules/.bin/nodetouch b/node_modules/.bin/nodetouch
new file mode 120000
index 0000000..3409fdb
--- /dev/null
+++ b/node_modules/.bin/nodetouch
@@ -0,0 +1 @@
+../touch/bin/nodetouch.js
\ No newline at end of file
diff --git a/node_modules/.bin/nopt b/node_modules/.bin/nopt
new file mode 120000
index 0000000..6b6566e
--- /dev/null
+++ b/node_modules/.bin/nopt
@@ -0,0 +1 @@
+../nopt/bin/nopt.js
\ No newline at end of file
diff --git a/node_modules/.bin/rc b/node_modules/.bin/rc
new file mode 120000
index 0000000..48b3cda
--- /dev/null
+++ b/node_modules/.bin/rc
@@ -0,0 +1 @@
+../rc/cli.js
\ No newline at end of file
diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver
new file mode 120000
index 0000000..317eb29
--- /dev/null
+++ b/node_modules/.bin/semver
@@ -0,0 +1 @@
+../semver/bin/semver
\ No newline at end of file
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
new file mode 100644
index 0000000..7e08ee0
--- /dev/null
+++ b/node_modules/.package-lock.json
@@ -0,0 +1,2106 @@
+{
+ "name": "discord_bot",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "node_modules/@babel/runtime": {
+ "version": "7.15.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz",
+ "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==",
+ "dependencies": {
+ "regenerator-runtime": "^0.13.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@discordjs/builders": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.5.0.tgz",
+ "integrity": "sha512-7XxT78mnNBPigHn2y6KAXkicxIBFtZREGWaRZ249EC1l6gBUEP8IyVY5JTciIjJArxkF+tg675aZvsTNTKBpmA==",
+ "dependencies": {
+ "@discordjs/formatters": "^0.2.0",
+ "@discordjs/util": "^0.2.0",
+ "@sapphire/shapeshift": "^3.8.1",
+ "discord-api-types": "^0.37.35",
+ "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.4.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.4.0.tgz",
+ "integrity": "sha512-hiOJyk2CPFf1+FL3a4VKCuu1f448LlROVuu8nLz1+jCOAPokUcdFAV+l4pd3B3h6uJlJQSASoZzrdyNdjdtfzQ==",
+ "engines": {
+ "node": ">=16.9.0"
+ }
+ },
+ "node_modules/@discordjs/formatters": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.2.0.tgz",
+ "integrity": "sha512-vn4oMSXuMZUm8ITqVOtvE7/fMMISj4cI5oLsR09PEQXHKeKDAMLltG/DWeeIs7Idfy6V8Fk3rn1e69h7NfzuNA==",
+ "dependencies": {
+ "discord-api-types": "^0.37.35"
+ },
+ "engines": {
+ "node": ">=16.9.0"
+ }
+ },
+ "node_modules/@discordjs/rest": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-1.6.0.tgz",
+ "integrity": "sha512-HGvqNCZ5Z5j0tQHjmT1lFvE5ETO4hvomJ1r0cbnpC1zM23XhCpZ9wgTCiEmaxKz05cyf2CI9p39+9LL+6Yz1bA==",
+ "dependencies": {
+ "@discordjs/collection": "^1.4.0",
+ "@discordjs/util": "^0.2.0",
+ "@sapphire/async-queue": "^1.5.0",
+ "@sapphire/snowflake": "^3.4.0",
+ "discord-api-types": "^0.37.35",
+ "file-type": "^18.2.1",
+ "tslib": "^2.5.0",
+ "undici": "^5.20.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/@discordjs/voice": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.15.0.tgz",
+ "integrity": "sha512-YEvrRchDhjB0QbI9QYOF/qgDwvGb9sNGUyks5d3Srl+VRoMoKkMzWY+wcEfVbAgdMIAdLi5vyrTKP/gLND26jA==",
+ "dependencies": {
+ "@types/ws": "^8.5.4",
+ "discord-api-types": "^0.37.35",
+ "prism-media": "^1.3.5",
+ "tslib": "^2.5.0",
+ "ws": "^8.12.1"
+ },
+ "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.1",
+ "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.8.1.tgz",
+ "integrity": "sha512-xG1oXXBhCjPKbxrRTlox9ddaZTvVpOhYLmKmApD/vIWOV1xEYXnpoFs68zHIZBGbqztq6FrUPNPerIrO1Hqeaw==",
+ "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.0",
+ "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.4.0.tgz",
+ "integrity": "sha512-zZxymtVO6zeXVMPds+6d7gv/OfnCc25M1Z+7ZLB0oPmeMTPeRWVPQSS16oDJy5ZsyCOLj7M6mbZml5gWXcVRNw==",
+ "engines": {
+ "node": ">=v14.0.0",
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+ "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+ "dependencies": {
+ "defer-to-connect": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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/jsonwebtoken": {
+ "version": "8.5.4",
+ "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.4.tgz",
+ "integrity": "sha512-4L8msWK31oXwdtC81RmRBAULd0ShnAHjBuKT9MRQpjP0piNrZdXyTRcKY9/UIfhGeKIT4PvF5amOOUbbT/9Wpg==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/jwt-decode": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@types/jwt-decode/-/jwt-decode-2.2.1.tgz",
+ "integrity": "sha512-aWw2YTtAdT7CskFyxEX2K21/zSDStuf/ikI3yBqmwpwJF0pS+/IX5DWv+1UFffZIbruP6cnT9/LAJV1gFwAT1A=="
+ },
+ "node_modules/@types/node": {
+ "version": "16.6.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz",
+ "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw=="
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.7",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
+ "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
+ },
+ "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/abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
+ "node_modules/ansi-align": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
+ "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==",
+ "dependencies": {
+ "string-width": "^3.0.0"
+ }
+ },
+ "node_modules/ansi-align/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-align/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+ },
+ "node_modules/ansi-align/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ansi-align/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-align/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
+ },
+ "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.21.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
+ "dependencies": {
+ "follow-redirects": "^1.14.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/boxen": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
+ "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
+ "dependencies": {
+ "ansi-align": "^3.0.0",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.1.0",
+ "cli-boxes": "^2.2.1",
+ "string-width": "^4.2.2",
+ "type-fest": "^0.20.2",
+ "widest-line": "^3.1.0",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
+ },
+ "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/cacheable-request": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+ "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^3.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^4.1.0",
+ "responselike": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
+ "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
+ },
+ "node_modules/cli-boxes": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
+ "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "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/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "node_modules/configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/csprng": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/csprng/-/csprng-0.1.2.tgz",
+ "integrity": "sha1-S8aPEvo2jSUqWYQcusqXSxirReI=",
+ "dependencies": {
+ "sequin": "*"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
+ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ=="
+ },
+ "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.37",
+ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.37.tgz",
+ "integrity": "sha512-LDMBKzl/zbvHO/yCzno5hevuA6lFIXJwdKSJZQrB+1ToDpFfN9thK+xxgZNR4aVkI7GHRDja0p4Sl2oYVPnHYg=="
+ },
+ "node_modules/discord.js": {
+ "version": "14.8.0",
+ "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.8.0.tgz",
+ "integrity": "sha512-UOxYtc/YnV7jAJ2gISluJyYeBw4e+j8gWn+IoqG8unaHAVuvZ13DdYN0M1f9fbUgUvSarV798inIrYFtDNDjwQ==",
+ "dependencies": {
+ "@discordjs/builders": "^1.5.0",
+ "@discordjs/collection": "^1.4.0",
+ "@discordjs/formatters": "^0.2.0",
+ "@discordjs/rest": "^1.6.0",
+ "@discordjs/util": "^0.2.0",
+ "@sapphire/snowflake": "^3.4.0",
+ "@types/ws": "^8.5.4",
+ "discord-api-types": "^0.37.35",
+ "fast-deep-equal": "^3.1.3",
+ "lodash.snakecase": "^4.1.1",
+ "tslib": "^2.5.0",
+ "undici": "^5.20.0",
+ "ws": "^8.12.1"
+ },
+ "engines": {
+ "node": ">=16.9.0"
+ }
+ },
+ "node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
+ },
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/escape-goat": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
+ "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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/faye": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/faye/-/faye-1.4.0.tgz",
+ "integrity": "sha512-kRrIg4be8VNYhycS2PY//hpBJSzZPr/DBbcy9VWelhZMW3KhyLkQR0HL0k0MNpmVoNFF4EdfMFkNAWjTP65g6w==",
+ "dependencies": {
+ "asap": "*",
+ "csprng": "*",
+ "faye-websocket": ">=0.9.1",
+ "safe-buffer": "*",
+ "tough-cookie": "*",
+ "tunnel-agent": "*"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/faye-websocket": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
+ "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
+ "dependencies": {
+ "websocket-driver": ">=0.5.1"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "18.2.1",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.2.1.tgz",
+ "integrity": "sha512-Yw5MtnMv7vgD2/6Bjmmuegc8bQEVA9GmAyaR18bMYWKqsWDG9wgYZ1j4I6gNMF5Y5JBDcUcjRQqNQx7Y8uotcg==",
+ "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/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+ "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/getstream": {
+ "version": "7.2.10",
+ "resolved": "https://registry.npmjs.org/getstream/-/getstream-7.2.10.tgz",
+ "integrity": "sha512-cSUBxZ8JiTyfTXwiYl6vwqrg1XTOR0YGA+sYSODtuxGBgAsBZIUWWA9mvWgbmWnzRNboL52+bhwyisvaZhxDAA==",
+ "dependencies": {
+ "@babel/runtime": "^7.13.10",
+ "@types/jsonwebtoken": "^8.5.0",
+ "@types/jwt-decode": "^2.2.1",
+ "@types/qs": "^6.9.6",
+ "axios": "^0.21.1",
+ "faye": "^1.4.0",
+ "form-data": "^4.0.0",
+ "jsonwebtoken": "^8.5.1",
+ "jwt-decode": "^3.1.2",
+ "qs": "^6.9.6"
+ },
+ "engines": {
+ "node": "10 || 12 || >=14"
+ },
+ "peerDependencies": {
+ "@types/node": ">=10"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/global-dirs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz",
+ "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==",
+ "dependencies": {
+ "ini": "2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/global-dirs/node_modules/ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/got": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+ "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+ "dependencies": {
+ "@sindresorhus/is": "^0.14.0",
+ "@szmarczak/http-timer": "^1.1.2",
+ "cacheable-request": "^6.0.0",
+ "decompress-response": "^3.3.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^4.1.0",
+ "lowercase-keys": "^1.0.1",
+ "mimic-response": "^1.0.1",
+ "p-cancelable": "^1.0.0",
+ "to-readable-stream": "^1.0.0",
+ "url-parse-lax": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+ "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-yarn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
+ "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="
+ },
+ "node_modules/http-parser-js": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz",
+ "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg=="
+ },
+ "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/ignore-by-default": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
+ },
+ "node_modules/import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "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/ini": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
+ "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ=="
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dependencies": {
+ "ci-info": "^2.0.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-installed-globally": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+ "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
+ "dependencies": {
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-npm": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
+ "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "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/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "node_modules/is-yarn-global": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
+ "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw=="
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg="
+ },
+ "node_modules/jsonwebtoken": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
+ "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
+ "dependencies": {
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=4",
+ "npm": ">=1.4.28"
+ }
+ },
+ "node_modules/jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "dependencies": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jwt-decode": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz",
+ "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A=="
+ },
+ "node_modules/keyv": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+ "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+ "dependencies": {
+ "json-buffer": "3.0.0"
+ }
+ },
+ "node_modules/latest-version": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
+ "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
+ "dependencies": {
+ "package-json": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
+ },
+ "node_modules/lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
+ },
+ "node_modules/lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
+ },
+ "node_modules/lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
+ },
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
+ },
+ "node_modules/lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
+ },
+ "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/lowercase-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.46.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
+ "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.29",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
+ "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
+ "dependencies": {
+ "mime-db": "1.46.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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/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/nodemon": {
+ "version": "2.0.22",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz",
+ "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==",
+ "dependencies": {
+ "chokidar": "^3.5.2",
+ "debug": "^3.2.7",
+ "ignore-by-default": "^1.0.1",
+ "minimatch": "^3.1.2",
+ "pstree.remy": "^1.1.8",
+ "semver": "^5.7.1",
+ "simple-update-notifier": "^1.0.7",
+ "supports-color": "^5.5.0",
+ "touch": "^3.1.0",
+ "undefsafe": "^2.0.5"
+ },
+ "bin": {
+ "nodemon": "bin/nodemon.js"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/nodemon"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
+ "dependencies": {
+ "abbrev": "1"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
+ "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
+ "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/package-json": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz",
+ "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==",
+ "dependencies": {
+ "got": "^9.6.0",
+ "registry-auth-token": "^4.0.0",
+ "registry-url": "^5.0.0",
+ "semver": "^6.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/package-json/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "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/picomatch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+ "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prism-media": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.5.tgz",
+ "integrity": "sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==",
+ "peerDependencies": {
+ "@discordjs/opus": ">=0.8.0 <1.0.0",
+ "ffmpeg-static": "^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0",
+ "node-opus": "^0.3.3",
+ "opusscript": "^0.0.8"
+ },
+ "peerDependenciesMeta": {
+ "@discordjs/opus": {
+ "optional": true
+ },
+ "ffmpeg-static": {
+ "optional": true
+ },
+ "node-opus": {
+ "optional": true
+ },
+ "opusscript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/psl": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
+ },
+ "node_modules/pstree.remy": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
+ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pupa": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
+ "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
+ "dependencies": {
+ "escape-goat": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz",
+ "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "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/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/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
+ },
+ "node_modules/registry-auth-token": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
+ "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
+ "dependencies": {
+ "rc": "^1.2.8"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/registry-url": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
+ "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
+ "dependencies": {
+ "rc": "^1.2.8"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/responselike": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+ "dependencies": {
+ "lowercase-keys": "^1.0.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "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/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/semver-diff": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
+ "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
+ "dependencies": {
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/semver-diff/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/sequin": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/sequin/-/sequin-0.1.1.tgz",
+ "integrity": "sha1-XC04nWajg3NOqvvEXt6ywcsb5wE=",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
+ },
+ "node_modules/simple-update-notifier": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
+ "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==",
+ "dependencies": {
+ "semver": "~7.0.0"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/simple-update-notifier/node_modules/semver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "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.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dependencies": {
+ "ansi-regex": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-readable-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+ "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "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/touch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
+ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
+ "dependencies": {
+ "nopt": "~1.0.10"
+ },
+ "bin": {
+ "nodetouch": "bin/nodetouch.js"
+ }
+ },
+ "node_modules/tough-cookie": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
+ "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "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/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/undefsafe": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
+ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
+ },
+ "node_modules/undici": {
+ "version": "5.21.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-5.21.0.tgz",
+ "integrity": "sha512-HOjK8l6a57b2ZGXOcUsI5NLfoTrfmbOl90ixJDl0AEFG4wgHNDQxtZy15/ZQp7HhjkpaGlp/eneMgtsu1dIlUA==",
+ "dependencies": {
+ "busboy": "^1.6.0"
+ },
+ "engines": {
+ "node": ">=12.18"
+ }
+ },
+ "node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/update-notifier": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz",
+ "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==",
+ "dependencies": {
+ "boxen": "^5.0.0",
+ "chalk": "^4.1.0",
+ "configstore": "^5.0.1",
+ "has-yarn": "^2.1.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^2.0.0",
+ "is-installed-globally": "^0.4.0",
+ "is-npm": "^5.0.0",
+ "is-yarn-global": "^0.3.0",
+ "latest-version": "^5.1.0",
+ "pupa": "^2.1.1",
+ "semver": "^7.3.4",
+ "semver-diff": "^3.1.1",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/update-notifier?sponsor=1"
+ }
+ },
+ "node_modules/update-notifier/node_modules/semver": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/url-parse-lax": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+ "dependencies": {
+ "prepend-http": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "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/websocket-driver": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
+ "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
+ "dependencies": {
+ "http-parser-js": ">=0.5.1",
+ "safe-buffer": ">=5.1.0",
+ "websocket-extensions": ">=0.1.1"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/websocket-extensions": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "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/widest-line": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
+ "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
+ "dependencies": {
+ "string-width": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "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
+ }
+ }
+ },
+ "node_modules/xdg-basedir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ }
+ }
+}
diff --git a/node_modules/@babel/runtime/LICENSE b/node_modules/@babel/runtime/LICENSE
new file mode 100644
index 0000000..f31575e
--- /dev/null
+++ b/node_modules/@babel/runtime/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/@babel/runtime/README.md b/node_modules/@babel/runtime/README.md
new file mode 100644
index 0000000..119c99d
--- /dev/null
+++ b/node_modules/@babel/runtime/README.md
@@ -0,0 +1,19 @@
+# @babel/runtime
+
+> babel's modular runtime helpers
+
+See our website [@babel/runtime](https://babeljs.io/docs/en/babel-runtime) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/runtime
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/runtime
+```
diff --git a/node_modules/@babel/runtime/helpers/AsyncGenerator.js b/node_modules/@babel/runtime/helpers/AsyncGenerator.js
new file mode 100644
index 0000000..cdca7f5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/AsyncGenerator.js
@@ -0,0 +1,99 @@
+var AwaitValue = require("./AwaitValue.js");
+
+function AsyncGenerator(gen) {
+ var front, back;
+
+ function send(key, arg) {
+ return new Promise(function (resolve, reject) {
+ var request = {
+ key: key,
+ arg: arg,
+ resolve: resolve,
+ reject: reject,
+ next: null
+ };
+
+ if (back) {
+ back = back.next = request;
+ } else {
+ front = back = request;
+ resume(key, arg);
+ }
+ });
+ }
+
+ function resume(key, arg) {
+ try {
+ var result = gen[key](arg);
+ var value = result.value;
+ var wrappedAwait = value instanceof AwaitValue;
+ Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {
+ if (wrappedAwait) {
+ resume(key === "return" ? "return" : "next", arg);
+ return;
+ }
+
+ settle(result.done ? "return" : "normal", arg);
+ }, function (err) {
+ resume("throw", err);
+ });
+ } catch (err) {
+ settle("throw", err);
+ }
+ }
+
+ function settle(type, value) {
+ switch (type) {
+ case "return":
+ front.resolve({
+ value: value,
+ done: true
+ });
+ break;
+
+ case "throw":
+ front.reject(value);
+ break;
+
+ default:
+ front.resolve({
+ value: value,
+ done: false
+ });
+ break;
+ }
+
+ front = front.next;
+
+ if (front) {
+ resume(front.key, front.arg);
+ } else {
+ back = null;
+ }
+ }
+
+ this._invoke = send;
+
+ if (typeof gen["return"] !== "function") {
+ this["return"] = undefined;
+ }
+}
+
+AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () {
+ return this;
+};
+
+AsyncGenerator.prototype.next = function (arg) {
+ return this._invoke("next", arg);
+};
+
+AsyncGenerator.prototype["throw"] = function (arg) {
+ return this._invoke("throw", arg);
+};
+
+AsyncGenerator.prototype["return"] = function (arg) {
+ return this._invoke("return", arg);
+};
+
+module.exports = AsyncGenerator;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/AwaitValue.js b/node_modules/@babel/runtime/helpers/AwaitValue.js
new file mode 100644
index 0000000..d36df6e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/AwaitValue.js
@@ -0,0 +1,6 @@
+function _AwaitValue(value) {
+ this.wrapped = value;
+}
+
+module.exports = _AwaitValue;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js b/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js
new file mode 100644
index 0000000..feaeab8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js
@@ -0,0 +1,31 @@
+function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
+ var desc = {};
+ Object.keys(descriptor).forEach(function (key) {
+ desc[key] = descriptor[key];
+ });
+ desc.enumerable = !!desc.enumerable;
+ desc.configurable = !!desc.configurable;
+
+ if ('value' in desc || desc.initializer) {
+ desc.writable = true;
+ }
+
+ desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+ return decorator(target, property, desc) || desc;
+ }, desc);
+
+ if (context && desc.initializer !== void 0) {
+ desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+ desc.initializer = undefined;
+ }
+
+ if (desc.initializer === void 0) {
+ Object.defineProperty(target, property, desc);
+ desc = null;
+ }
+
+ return desc;
+}
+
+module.exports = _applyDecoratedDescriptor;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/arrayLikeToArray.js b/node_modules/@babel/runtime/helpers/arrayLikeToArray.js
new file mode 100644
index 0000000..a459c8e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/arrayLikeToArray.js
@@ -0,0 +1,12 @@
+function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length) len = arr.length;
+
+ for (var i = 0, arr2 = new Array(len); i < len; i++) {
+ arr2[i] = arr[i];
+ }
+
+ return arr2;
+}
+
+module.exports = _arrayLikeToArray;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/arrayWithHoles.js b/node_modules/@babel/runtime/helpers/arrayWithHoles.js
new file mode 100644
index 0000000..9a36e2a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/arrayWithHoles.js
@@ -0,0 +1,6 @@
+function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+}
+
+module.exports = _arrayWithHoles;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js b/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js
new file mode 100644
index 0000000..aac913f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js
@@ -0,0 +1,8 @@
+var arrayLikeToArray = require("./arrayLikeToArray.js");
+
+function _arrayWithoutHoles(arr) {
+ if (Array.isArray(arr)) return arrayLikeToArray(arr);
+}
+
+module.exports = _arrayWithoutHoles;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/assertThisInitialized.js b/node_modules/@babel/runtime/helpers/assertThisInitialized.js
new file mode 100644
index 0000000..352e1e6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/assertThisInitialized.js
@@ -0,0 +1,10 @@
+function _assertThisInitialized(self) {
+ if (self === void 0) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return self;
+}
+
+module.exports = _assertThisInitialized;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js b/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js
new file mode 100644
index 0000000..91f6d61
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js
@@ -0,0 +1,57 @@
+function _asyncGeneratorDelegate(inner, awaitWrap) {
+ var iter = {},
+ waiting = false;
+
+ function pump(key, value) {
+ waiting = true;
+ value = new Promise(function (resolve) {
+ resolve(inner[key](value));
+ });
+ return {
+ done: false,
+ value: awaitWrap(value)
+ };
+ }
+
+ ;
+
+ iter[typeof Symbol !== "undefined" && Symbol.iterator || "@@iterator"] = function () {
+ return this;
+ };
+
+ iter.next = function (value) {
+ if (waiting) {
+ waiting = false;
+ return value;
+ }
+
+ return pump("next", value);
+ };
+
+ if (typeof inner["throw"] === "function") {
+ iter["throw"] = function (value) {
+ if (waiting) {
+ waiting = false;
+ throw value;
+ }
+
+ return pump("throw", value);
+ };
+ }
+
+ if (typeof inner["return"] === "function") {
+ iter["return"] = function (value) {
+ if (waiting) {
+ waiting = false;
+ return value;
+ }
+
+ return pump("return", value);
+ };
+ }
+
+ return iter;
+}
+
+module.exports = _asyncGeneratorDelegate;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/asyncIterator.js b/node_modules/@babel/runtime/helpers/asyncIterator.js
new file mode 100644
index 0000000..d59aa99
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/asyncIterator.js
@@ -0,0 +1,16 @@
+function _asyncIterator(iterable) {
+ var method;
+
+ if (typeof Symbol !== "undefined") {
+ if (Symbol.asyncIterator) method = iterable[Symbol.asyncIterator];
+ if (method == null && Symbol.iterator) method = iterable[Symbol.iterator];
+ }
+
+ if (method == null) method = iterable["@@asyncIterator"];
+ if (method == null) method = iterable["@@iterator"];
+ if (method == null) throw new TypeError("Object is not async iterable");
+ return method.call(iterable);
+}
+
+module.exports = _asyncIterator;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/asyncToGenerator.js b/node_modules/@babel/runtime/helpers/asyncToGenerator.js
new file mode 100644
index 0000000..ec5daa8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/asyncToGenerator.js
@@ -0,0 +1,38 @@
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+
+ if (info.done) {
+ resolve(value);
+ } else {
+ Promise.resolve(value).then(_next, _throw);
+ }
+}
+
+function _asyncToGenerator(fn) {
+ return function () {
+ var self = this,
+ args = arguments;
+ return new Promise(function (resolve, reject) {
+ var gen = fn.apply(self, args);
+
+ function _next(value) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+ }
+
+ function _throw(err) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+ }
+
+ _next(undefined);
+ });
+ };
+}
+
+module.exports = _asyncToGenerator;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js b/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js
new file mode 100644
index 0000000..c338fee
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js
@@ -0,0 +1,8 @@
+var AwaitValue = require("./AwaitValue.js");
+
+function _awaitAsyncGenerator(value) {
+ return new AwaitValue(value);
+}
+
+module.exports = _awaitAsyncGenerator;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js
new file mode 100644
index 0000000..521c1e0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js
@@ -0,0 +1,23 @@
+function _classApplyDescriptorDestructureSet(receiver, descriptor) {
+ if (descriptor.set) {
+ if (!("__destrObj" in descriptor)) {
+ descriptor.__destrObj = {
+ set value(v) {
+ descriptor.set.call(receiver, v);
+ }
+
+ };
+ }
+
+ return descriptor.__destrObj;
+ } else {
+ if (!descriptor.writable) {
+ throw new TypeError("attempted to set read only private field");
+ }
+
+ return descriptor;
+ }
+}
+
+module.exports = _classApplyDescriptorDestructureSet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js
new file mode 100644
index 0000000..f750596
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js
@@ -0,0 +1,10 @@
+function _classApplyDescriptorGet(receiver, descriptor) {
+ if (descriptor.get) {
+ return descriptor.get.call(receiver);
+ }
+
+ return descriptor.value;
+}
+
+module.exports = _classApplyDescriptorGet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js
new file mode 100644
index 0000000..997b264
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js
@@ -0,0 +1,14 @@
+function _classApplyDescriptorSet(receiver, descriptor, value) {
+ if (descriptor.set) {
+ descriptor.set.call(receiver, value);
+ } else {
+ if (!descriptor.writable) {
+ throw new TypeError("attempted to set read only private field");
+ }
+
+ descriptor.value = value;
+ }
+}
+
+module.exports = _classApplyDescriptorSet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classCallCheck.js b/node_modules/@babel/runtime/helpers/classCallCheck.js
new file mode 100644
index 0000000..026da41
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classCallCheck.js
@@ -0,0 +1,8 @@
+function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+}
+
+module.exports = _classCallCheck;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js
new file mode 100644
index 0000000..67373aa
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js
@@ -0,0 +1,8 @@
+function _classCheckPrivateStaticAccess(receiver, classConstructor) {
+ if (receiver !== classConstructor) {
+ throw new TypeError("Private static access of wrong provenance");
+ }
+}
+
+module.exports = _classCheckPrivateStaticAccess;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js
new file mode 100644
index 0000000..3b93472
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js
@@ -0,0 +1,8 @@
+function _classCheckPrivateStaticFieldDescriptor(descriptor, action) {
+ if (descriptor === undefined) {
+ throw new TypeError("attempted to " + action + " private static field before its declaration");
+ }
+}
+
+module.exports = _classCheckPrivateStaticFieldDescriptor;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js b/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js
new file mode 100644
index 0000000..aaaac8c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js
@@ -0,0 +1,10 @@
+function _classExtractFieldDescriptor(receiver, privateMap, action) {
+ if (!privateMap.has(receiver)) {
+ throw new TypeError("attempted to " + action + " private field on non-instance");
+ }
+
+ return privateMap.get(receiver);
+}
+
+module.exports = _classExtractFieldDescriptor;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classNameTDZError.js b/node_modules/@babel/runtime/helpers/classNameTDZError.js
new file mode 100644
index 0000000..bf740fa
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classNameTDZError.js
@@ -0,0 +1,6 @@
+function _classNameTDZError(name) {
+ throw new Error("Class \"" + name + "\" cannot be referenced in computed property keys.");
+}
+
+module.exports = _classNameTDZError;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js
new file mode 100644
index 0000000..50b9fb0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js
@@ -0,0 +1,11 @@
+var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js");
+
+var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js");
+
+function _classPrivateFieldDestructureSet(receiver, privateMap) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
+ return classApplyDescriptorDestructureSet(receiver, descriptor);
+}
+
+module.exports = _classPrivateFieldDestructureSet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js
new file mode 100644
index 0000000..df55969
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js
@@ -0,0 +1,11 @@
+var classApplyDescriptorGet = require("./classApplyDescriptorGet.js");
+
+var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js");
+
+function _classPrivateFieldGet(receiver, privateMap) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get");
+ return classApplyDescriptorGet(receiver, descriptor);
+}
+
+module.exports = _classPrivateFieldGet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js
new file mode 100644
index 0000000..3acdb7b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js
@@ -0,0 +1,10 @@
+function _classPrivateFieldBase(receiver, privateKey) {
+ if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
+ throw new TypeError("attempted to use private field on non-instance");
+ }
+
+ return receiver;
+}
+
+module.exports = _classPrivateFieldBase;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js
new file mode 100644
index 0000000..3c0c552
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js
@@ -0,0 +1,8 @@
+var id = 0;
+
+function _classPrivateFieldKey(name) {
+ return "__private_" + id++ + "_" + name;
+}
+
+module.exports = _classPrivateFieldKey;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js
new file mode 100644
index 0000000..d4a59b0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js
@@ -0,0 +1,12 @@
+var classApplyDescriptorSet = require("./classApplyDescriptorSet.js");
+
+var classExtractFieldDescriptor = require("./classExtractFieldDescriptor.js");
+
+function _classPrivateFieldSet(receiver, privateMap, value) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
+ classApplyDescriptorSet(receiver, descriptor, value);
+ return value;
+}
+
+module.exports = _classPrivateFieldSet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js
new file mode 100644
index 0000000..d2f8ab1
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js
@@ -0,0 +1,10 @@
+function _classPrivateMethodGet(receiver, privateSet, fn) {
+ if (!privateSet.has(receiver)) {
+ throw new TypeError("attempted to get private field on non-instance");
+ }
+
+ return fn;
+}
+
+module.exports = _classPrivateMethodGet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js
new file mode 100644
index 0000000..f500d16
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js
@@ -0,0 +1,6 @@
+function _classPrivateMethodSet() {
+ throw new TypeError("attempted to reassign private method");
+}
+
+module.exports = _classPrivateMethodSet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js
new file mode 100644
index 0000000..57e2c7f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js
@@ -0,0 +1,14 @@
+var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js");
+
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
+
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
+
+function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "set");
+ return classApplyDescriptorDestructureSet(receiver, descriptor);
+}
+
+module.exports = _classStaticPrivateFieldDestructureSet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js
new file mode 100644
index 0000000..136c1f6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js
@@ -0,0 +1,14 @@
+var classApplyDescriptorGet = require("./classApplyDescriptorGet.js");
+
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
+
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
+
+function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "get");
+ return classApplyDescriptorGet(receiver, descriptor);
+}
+
+module.exports = _classStaticPrivateFieldSpecGet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js
new file mode 100644
index 0000000..e6ecfa4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js
@@ -0,0 +1,15 @@
+var classApplyDescriptorSet = require("./classApplyDescriptorSet.js");
+
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
+
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
+
+function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "set");
+ classApplyDescriptorSet(receiver, descriptor, value);
+ return value;
+}
+
+module.exports = _classStaticPrivateFieldSpecSet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js
new file mode 100644
index 0000000..5bc41fc
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js
@@ -0,0 +1,9 @@
+var classCheckPrivateStaticAccess = require("./classCheckPrivateStaticAccess.js");
+
+function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ return method;
+}
+
+module.exports = _classStaticPrivateMethodGet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js
new file mode 100644
index 0000000..06cfcc1
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js
@@ -0,0 +1,6 @@
+function _classStaticPrivateMethodSet() {
+ throw new TypeError("attempted to set read only static private field");
+}
+
+module.exports = _classStaticPrivateMethodSet;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/construct.js b/node_modules/@babel/runtime/helpers/construct.js
new file mode 100644
index 0000000..108b39a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/construct.js
@@ -0,0 +1,26 @@
+var setPrototypeOf = require("./setPrototypeOf.js");
+
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
+
+function _construct(Parent, args, Class) {
+ if (isNativeReflectConstruct()) {
+ module.exports = _construct = Reflect.construct;
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
+ } else {
+ module.exports = _construct = function _construct(Parent, args, Class) {
+ var a = [null];
+ a.push.apply(a, args);
+ var Constructor = Function.bind.apply(Parent, a);
+ var instance = new Constructor();
+ if (Class) setPrototypeOf(instance, Class.prototype);
+ return instance;
+ };
+
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
+ }
+
+ return _construct.apply(null, arguments);
+}
+
+module.exports = _construct;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createClass.js b/node_modules/@babel/runtime/helpers/createClass.js
new file mode 100644
index 0000000..293bd61
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createClass.js
@@ -0,0 +1,18 @@
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+}
+
+module.exports = _createClass;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js b/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js
new file mode 100644
index 0000000..9098865
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js
@@ -0,0 +1,61 @@
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+
+function _createForOfIteratorHelper(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+
+ if (!it) {
+ if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
+ if (it) o = it;
+ var i = 0;
+
+ var F = function F() {};
+
+ return {
+ s: F,
+ n: function n() {
+ if (i >= o.length) return {
+ done: true
+ };
+ return {
+ done: false,
+ value: o[i++]
+ };
+ },
+ e: function e(_e) {
+ throw _e;
+ },
+ f: F
+ };
+ }
+
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+
+ var normalCompletion = true,
+ didErr = false,
+ err;
+ return {
+ s: function s() {
+ it = it.call(o);
+ },
+ n: function n() {
+ var step = it.next();
+ normalCompletion = step.done;
+ return step;
+ },
+ e: function e(_e2) {
+ didErr = true;
+ err = _e2;
+ },
+ f: function f() {
+ try {
+ if (!normalCompletion && it["return"] != null) it["return"]();
+ } finally {
+ if (didErr) throw err;
+ }
+ }
+ };
+}
+
+module.exports = _createForOfIteratorHelper;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js b/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js
new file mode 100644
index 0000000..2dedbc9
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js
@@ -0,0 +1,25 @@
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+
+function _createForOfIteratorHelperLoose(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+ if (it) return (it = it.call(o)).next.bind(it);
+
+ if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
+ if (it) o = it;
+ var i = 0;
+ return function () {
+ if (i >= o.length) return {
+ done: true
+ };
+ return {
+ done: false,
+ value: o[i++]
+ };
+ };
+ }
+
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+
+module.exports = _createForOfIteratorHelperLoose;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createSuper.js b/node_modules/@babel/runtime/helpers/createSuper.js
new file mode 100644
index 0000000..0acdd51
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createSuper.js
@@ -0,0 +1,25 @@
+var getPrototypeOf = require("./getPrototypeOf.js");
+
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
+
+var possibleConstructorReturn = require("./possibleConstructorReturn.js");
+
+function _createSuper(Derived) {
+ var hasNativeReflectConstruct = isNativeReflectConstruct();
+ return function _createSuperInternal() {
+ var Super = getPrototypeOf(Derived),
+ result;
+
+ if (hasNativeReflectConstruct) {
+ var NewTarget = getPrototypeOf(this).constructor;
+ result = Reflect.construct(Super, arguments, NewTarget);
+ } else {
+ result = Super.apply(this, arguments);
+ }
+
+ return possibleConstructorReturn(this, result);
+ };
+}
+
+module.exports = _createSuper;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/decorate.js b/node_modules/@babel/runtime/helpers/decorate.js
new file mode 100644
index 0000000..80d1751
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/decorate.js
@@ -0,0 +1,401 @@
+var toArray = require("./toArray.js");
+
+var toPropertyKey = require("./toPropertyKey.js");
+
+function _decorate(decorators, factory, superClass, mixins) {
+ var api = _getDecoratorsApi();
+
+ if (mixins) {
+ for (var i = 0; i < mixins.length; i++) {
+ api = mixins[i](api);
+ }
+ }
+
+ var r = factory(function initialize(O) {
+ api.initializeInstanceElements(O, decorated.elements);
+ }, superClass);
+ var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators);
+ api.initializeClassElements(r.F, decorated.elements);
+ return api.runClassFinishers(r.F, decorated.finishers);
+}
+
+function _getDecoratorsApi() {
+ _getDecoratorsApi = function _getDecoratorsApi() {
+ return api;
+ };
+
+ var api = {
+ elementsDefinitionOrder: [["method"], ["field"]],
+ initializeInstanceElements: function initializeInstanceElements(O, elements) {
+ ["method", "field"].forEach(function (kind) {
+ elements.forEach(function (element) {
+ if (element.kind === kind && element.placement === "own") {
+ this.defineClassElement(O, element);
+ }
+ }, this);
+ }, this);
+ },
+ initializeClassElements: function initializeClassElements(F, elements) {
+ var proto = F.prototype;
+ ["method", "field"].forEach(function (kind) {
+ elements.forEach(function (element) {
+ var placement = element.placement;
+
+ if (element.kind === kind && (placement === "static" || placement === "prototype")) {
+ var receiver = placement === "static" ? F : proto;
+ this.defineClassElement(receiver, element);
+ }
+ }, this);
+ }, this);
+ },
+ defineClassElement: function defineClassElement(receiver, element) {
+ var descriptor = element.descriptor;
+
+ if (element.kind === "field") {
+ var initializer = element.initializer;
+ descriptor = {
+ enumerable: descriptor.enumerable,
+ writable: descriptor.writable,
+ configurable: descriptor.configurable,
+ value: initializer === void 0 ? void 0 : initializer.call(receiver)
+ };
+ }
+
+ Object.defineProperty(receiver, element.key, descriptor);
+ },
+ decorateClass: function decorateClass(elements, decorators) {
+ var newElements = [];
+ var finishers = [];
+ var placements = {
+ "static": [],
+ prototype: [],
+ own: []
+ };
+ elements.forEach(function (element) {
+ this.addElementPlacement(element, placements);
+ }, this);
+ elements.forEach(function (element) {
+ if (!_hasDecorators(element)) return newElements.push(element);
+ var elementFinishersExtras = this.decorateElement(element, placements);
+ newElements.push(elementFinishersExtras.element);
+ newElements.push.apply(newElements, elementFinishersExtras.extras);
+ finishers.push.apply(finishers, elementFinishersExtras.finishers);
+ }, this);
+
+ if (!decorators) {
+ return {
+ elements: newElements,
+ finishers: finishers
+ };
+ }
+
+ var result = this.decorateConstructor(newElements, decorators);
+ finishers.push.apply(finishers, result.finishers);
+ result.finishers = finishers;
+ return result;
+ },
+ addElementPlacement: function addElementPlacement(element, placements, silent) {
+ var keys = placements[element.placement];
+
+ if (!silent && keys.indexOf(element.key) !== -1) {
+ throw new TypeError("Duplicated element (" + element.key + ")");
+ }
+
+ keys.push(element.key);
+ },
+ decorateElement: function decorateElement(element, placements) {
+ var extras = [];
+ var finishers = [];
+
+ for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {
+ var keys = placements[element.placement];
+ keys.splice(keys.indexOf(element.key), 1);
+ var elementObject = this.fromElementDescriptor(element);
+ var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);
+ element = elementFinisherExtras.element;
+ this.addElementPlacement(element, placements);
+
+ if (elementFinisherExtras.finisher) {
+ finishers.push(elementFinisherExtras.finisher);
+ }
+
+ var newExtras = elementFinisherExtras.extras;
+
+ if (newExtras) {
+ for (var j = 0; j < newExtras.length; j++) {
+ this.addElementPlacement(newExtras[j], placements);
+ }
+
+ extras.push.apply(extras, newExtras);
+ }
+ }
+
+ return {
+ element: element,
+ finishers: finishers,
+ extras: extras
+ };
+ },
+ decorateConstructor: function decorateConstructor(elements, decorators) {
+ var finishers = [];
+
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var obj = this.fromClassDescriptor(elements);
+ var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj);
+
+ if (elementsAndFinisher.finisher !== undefined) {
+ finishers.push(elementsAndFinisher.finisher);
+ }
+
+ if (elementsAndFinisher.elements !== undefined) {
+ elements = elementsAndFinisher.elements;
+
+ for (var j = 0; j < elements.length - 1; j++) {
+ for (var k = j + 1; k < elements.length; k++) {
+ if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) {
+ throw new TypeError("Duplicated element (" + elements[j].key + ")");
+ }
+ }
+ }
+ }
+ }
+
+ return {
+ elements: elements,
+ finishers: finishers
+ };
+ },
+ fromElementDescriptor: function fromElementDescriptor(element) {
+ var obj = {
+ kind: element.kind,
+ key: element.key,
+ placement: element.placement,
+ descriptor: element.descriptor
+ };
+ var desc = {
+ value: "Descriptor",
+ configurable: true
+ };
+ Object.defineProperty(obj, Symbol.toStringTag, desc);
+ if (element.kind === "field") obj.initializer = element.initializer;
+ return obj;
+ },
+ toElementDescriptors: function toElementDescriptors(elementObjects) {
+ if (elementObjects === undefined) return;
+ return toArray(elementObjects).map(function (elementObject) {
+ var element = this.toElementDescriptor(elementObject);
+ this.disallowProperty(elementObject, "finisher", "An element descriptor");
+ this.disallowProperty(elementObject, "extras", "An element descriptor");
+ return element;
+ }, this);
+ },
+ toElementDescriptor: function toElementDescriptor(elementObject) {
+ var kind = String(elementObject.kind);
+
+ if (kind !== "method" && kind !== "field") {
+ throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"');
+ }
+
+ var key = toPropertyKey(elementObject.key);
+ var placement = String(elementObject.placement);
+
+ if (placement !== "static" && placement !== "prototype" && placement !== "own") {
+ throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"');
+ }
+
+ var descriptor = elementObject.descriptor;
+ this.disallowProperty(elementObject, "elements", "An element descriptor");
+ var element = {
+ kind: kind,
+ key: key,
+ placement: placement,
+ descriptor: Object.assign({}, descriptor)
+ };
+
+ if (kind !== "field") {
+ this.disallowProperty(elementObject, "initializer", "A method descriptor");
+ } else {
+ this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor");
+ this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor");
+ this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor");
+ element.initializer = elementObject.initializer;
+ }
+
+ return element;
+ },
+ toElementFinisherExtras: function toElementFinisherExtras(elementObject) {
+ var element = this.toElementDescriptor(elementObject);
+
+ var finisher = _optionalCallableProperty(elementObject, "finisher");
+
+ var extras = this.toElementDescriptors(elementObject.extras);
+ return {
+ element: element,
+ finisher: finisher,
+ extras: extras
+ };
+ },
+ fromClassDescriptor: function fromClassDescriptor(elements) {
+ var obj = {
+ kind: "class",
+ elements: elements.map(this.fromElementDescriptor, this)
+ };
+ var desc = {
+ value: "Descriptor",
+ configurable: true
+ };
+ Object.defineProperty(obj, Symbol.toStringTag, desc);
+ return obj;
+ },
+ toClassDescriptor: function toClassDescriptor(obj) {
+ var kind = String(obj.kind);
+
+ if (kind !== "class") {
+ throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"');
+ }
+
+ this.disallowProperty(obj, "key", "A class descriptor");
+ this.disallowProperty(obj, "placement", "A class descriptor");
+ this.disallowProperty(obj, "descriptor", "A class descriptor");
+ this.disallowProperty(obj, "initializer", "A class descriptor");
+ this.disallowProperty(obj, "extras", "A class descriptor");
+
+ var finisher = _optionalCallableProperty(obj, "finisher");
+
+ var elements = this.toElementDescriptors(obj.elements);
+ return {
+ elements: elements,
+ finisher: finisher
+ };
+ },
+ runClassFinishers: function runClassFinishers(constructor, finishers) {
+ for (var i = 0; i < finishers.length; i++) {
+ var newConstructor = (0, finishers[i])(constructor);
+
+ if (newConstructor !== undefined) {
+ if (typeof newConstructor !== "function") {
+ throw new TypeError("Finishers must return a constructor.");
+ }
+
+ constructor = newConstructor;
+ }
+ }
+
+ return constructor;
+ },
+ disallowProperty: function disallowProperty(obj, name, objectType) {
+ if (obj[name] !== undefined) {
+ throw new TypeError(objectType + " can't have a ." + name + " property.");
+ }
+ }
+ };
+ return api;
+}
+
+function _createElementDescriptor(def) {
+ var key = toPropertyKey(def.key);
+ var descriptor;
+
+ if (def.kind === "method") {
+ descriptor = {
+ value: def.value,
+ writable: true,
+ configurable: true,
+ enumerable: false
+ };
+ } else if (def.kind === "get") {
+ descriptor = {
+ get: def.value,
+ configurable: true,
+ enumerable: false
+ };
+ } else if (def.kind === "set") {
+ descriptor = {
+ set: def.value,
+ configurable: true,
+ enumerable: false
+ };
+ } else if (def.kind === "field") {
+ descriptor = {
+ configurable: true,
+ writable: true,
+ enumerable: true
+ };
+ }
+
+ var element = {
+ kind: def.kind === "field" ? "field" : "method",
+ key: key,
+ placement: def["static"] ? "static" : def.kind === "field" ? "own" : "prototype",
+ descriptor: descriptor
+ };
+ if (def.decorators) element.decorators = def.decorators;
+ if (def.kind === "field") element.initializer = def.value;
+ return element;
+}
+
+function _coalesceGetterSetter(element, other) {
+ if (element.descriptor.get !== undefined) {
+ other.descriptor.get = element.descriptor.get;
+ } else {
+ other.descriptor.set = element.descriptor.set;
+ }
+}
+
+function _coalesceClassElements(elements) {
+ var newElements = [];
+
+ var isSameElement = function isSameElement(other) {
+ return other.kind === "method" && other.key === element.key && other.placement === element.placement;
+ };
+
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i];
+ var other;
+
+ if (element.kind === "method" && (other = newElements.find(isSameElement))) {
+ if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {
+ if (_hasDecorators(element) || _hasDecorators(other)) {
+ throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated.");
+ }
+
+ other.descriptor = element.descriptor;
+ } else {
+ if (_hasDecorators(element)) {
+ if (_hasDecorators(other)) {
+ throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ").");
+ }
+
+ other.decorators = element.decorators;
+ }
+
+ _coalesceGetterSetter(element, other);
+ }
+ } else {
+ newElements.push(element);
+ }
+ }
+
+ return newElements;
+}
+
+function _hasDecorators(element) {
+ return element.decorators && element.decorators.length;
+}
+
+function _isDataDescriptor(desc) {
+ return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);
+}
+
+function _optionalCallableProperty(obj, name) {
+ var value = obj[name];
+
+ if (value !== undefined && typeof value !== "function") {
+ throw new TypeError("Expected '" + name + "' to be a function");
+ }
+
+ return value;
+}
+
+module.exports = _decorate;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/defaults.js b/node_modules/@babel/runtime/helpers/defaults.js
new file mode 100644
index 0000000..576c5a4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/defaults.js
@@ -0,0 +1,17 @@
+function _defaults(obj, defaults) {
+ var keys = Object.getOwnPropertyNames(defaults);
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ var value = Object.getOwnPropertyDescriptor(defaults, key);
+
+ if (value && value.configurable && obj[key] === undefined) {
+ Object.defineProperty(obj, key, value);
+ }
+ }
+
+ return obj;
+}
+
+module.exports = _defaults;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js b/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js
new file mode 100644
index 0000000..4fe90c3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js
@@ -0,0 +1,25 @@
+function _defineEnumerableProperties(obj, descs) {
+ for (var key in descs) {
+ var desc = descs[key];
+ desc.configurable = desc.enumerable = true;
+ if ("value" in desc) desc.writable = true;
+ Object.defineProperty(obj, key, desc);
+ }
+
+ if (Object.getOwnPropertySymbols) {
+ var objectSymbols = Object.getOwnPropertySymbols(descs);
+
+ for (var i = 0; i < objectSymbols.length; i++) {
+ var sym = objectSymbols[i];
+ var desc = descs[sym];
+ desc.configurable = desc.enumerable = true;
+ if ("value" in desc) desc.writable = true;
+ Object.defineProperty(obj, sym, desc);
+ }
+ }
+
+ return obj;
+}
+
+module.exports = _defineEnumerableProperties;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/defineProperty.js b/node_modules/@babel/runtime/helpers/defineProperty.js
new file mode 100644
index 0000000..1cd65ac
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/defineProperty.js
@@ -0,0 +1,17 @@
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+
+ return obj;
+}
+
+module.exports = _defineProperty;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js b/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js
new file mode 100644
index 0000000..919aab8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js
@@ -0,0 +1,95 @@
+import AwaitValue from "./AwaitValue.js";
+export default function AsyncGenerator(gen) {
+ var front, back;
+
+ function send(key, arg) {
+ return new Promise(function (resolve, reject) {
+ var request = {
+ key: key,
+ arg: arg,
+ resolve: resolve,
+ reject: reject,
+ next: null
+ };
+
+ if (back) {
+ back = back.next = request;
+ } else {
+ front = back = request;
+ resume(key, arg);
+ }
+ });
+ }
+
+ function resume(key, arg) {
+ try {
+ var result = gen[key](arg);
+ var value = result.value;
+ var wrappedAwait = value instanceof AwaitValue;
+ Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {
+ if (wrappedAwait) {
+ resume(key === "return" ? "return" : "next", arg);
+ return;
+ }
+
+ settle(result.done ? "return" : "normal", arg);
+ }, function (err) {
+ resume("throw", err);
+ });
+ } catch (err) {
+ settle("throw", err);
+ }
+ }
+
+ function settle(type, value) {
+ switch (type) {
+ case "return":
+ front.resolve({
+ value: value,
+ done: true
+ });
+ break;
+
+ case "throw":
+ front.reject(value);
+ break;
+
+ default:
+ front.resolve({
+ value: value,
+ done: false
+ });
+ break;
+ }
+
+ front = front.next;
+
+ if (front) {
+ resume(front.key, front.arg);
+ } else {
+ back = null;
+ }
+ }
+
+ this._invoke = send;
+
+ if (typeof gen["return"] !== "function") {
+ this["return"] = undefined;
+ }
+}
+
+AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () {
+ return this;
+};
+
+AsyncGenerator.prototype.next = function (arg) {
+ return this._invoke("next", arg);
+};
+
+AsyncGenerator.prototype["throw"] = function (arg) {
+ return this._invoke("throw", arg);
+};
+
+AsyncGenerator.prototype["return"] = function (arg) {
+ return this._invoke("return", arg);
+};
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/AwaitValue.js b/node_modules/@babel/runtime/helpers/esm/AwaitValue.js
new file mode 100644
index 0000000..5237e18
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/AwaitValue.js
@@ -0,0 +1,3 @@
+export default function _AwaitValue(value) {
+ this.wrapped = value;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js b/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js
new file mode 100644
index 0000000..84b5961
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js
@@ -0,0 +1,28 @@
+export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
+ var desc = {};
+ Object.keys(descriptor).forEach(function (key) {
+ desc[key] = descriptor[key];
+ });
+ desc.enumerable = !!desc.enumerable;
+ desc.configurable = !!desc.configurable;
+
+ if ('value' in desc || desc.initializer) {
+ desc.writable = true;
+ }
+
+ desc = decorators.slice().reverse().reduce(function (desc, decorator) {
+ return decorator(target, property, desc) || desc;
+ }, desc);
+
+ if (context && desc.initializer !== void 0) {
+ desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+ desc.initializer = undefined;
+ }
+
+ if (desc.initializer === void 0) {
+ Object.defineProperty(target, property, desc);
+ desc = null;
+ }
+
+ return desc;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js b/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
new file mode 100644
index 0000000..edbeb8e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
@@ -0,0 +1,9 @@
+export default function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length) len = arr.length;
+
+ for (var i = 0, arr2 = new Array(len); i < len; i++) {
+ arr2[i] = arr[i];
+ }
+
+ return arr2;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js b/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
new file mode 100644
index 0000000..be734fc
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
@@ -0,0 +1,3 @@
+export default function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js b/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
new file mode 100644
index 0000000..f7d8dc7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
@@ -0,0 +1,4 @@
+import arrayLikeToArray from "./arrayLikeToArray.js";
+export default function _arrayWithoutHoles(arr) {
+ if (Array.isArray(arr)) return arrayLikeToArray(arr);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js b/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
new file mode 100644
index 0000000..bbf849c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
@@ -0,0 +1,7 @@
+export default function _assertThisInitialized(self) {
+ if (self === void 0) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return self;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js b/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js
new file mode 100644
index 0000000..a7ccd67
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js
@@ -0,0 +1,54 @@
+export default function _asyncGeneratorDelegate(inner, awaitWrap) {
+ var iter = {},
+ waiting = false;
+
+ function pump(key, value) {
+ waiting = true;
+ value = new Promise(function (resolve) {
+ resolve(inner[key](value));
+ });
+ return {
+ done: false,
+ value: awaitWrap(value)
+ };
+ }
+
+ ;
+
+ iter[typeof Symbol !== "undefined" && Symbol.iterator || "@@iterator"] = function () {
+ return this;
+ };
+
+ iter.next = function (value) {
+ if (waiting) {
+ waiting = false;
+ return value;
+ }
+
+ return pump("next", value);
+ };
+
+ if (typeof inner["throw"] === "function") {
+ iter["throw"] = function (value) {
+ if (waiting) {
+ waiting = false;
+ throw value;
+ }
+
+ return pump("throw", value);
+ };
+ }
+
+ if (typeof inner["return"] === "function") {
+ iter["return"] = function (value) {
+ if (waiting) {
+ waiting = false;
+ return value;
+ }
+
+ return pump("return", value);
+ };
+ }
+
+ return iter;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/asyncIterator.js b/node_modules/@babel/runtime/helpers/esm/asyncIterator.js
new file mode 100644
index 0000000..91ddb42
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/asyncIterator.js
@@ -0,0 +1,13 @@
+export default function _asyncIterator(iterable) {
+ var method;
+
+ if (typeof Symbol !== "undefined") {
+ if (Symbol.asyncIterator) method = iterable[Symbol.asyncIterator];
+ if (method == null && Symbol.iterator) method = iterable[Symbol.iterator];
+ }
+
+ if (method == null) method = iterable["@@asyncIterator"];
+ if (method == null) method = iterable["@@iterator"];
+ if (method == null) throw new TypeError("Object is not async iterable");
+ return method.call(iterable);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js b/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
new file mode 100644
index 0000000..2a25f54
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
@@ -0,0 +1,35 @@
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+
+ if (info.done) {
+ resolve(value);
+ } else {
+ Promise.resolve(value).then(_next, _throw);
+ }
+}
+
+export default function _asyncToGenerator(fn) {
+ return function () {
+ var self = this,
+ args = arguments;
+ return new Promise(function (resolve, reject) {
+ var gen = fn.apply(self, args);
+
+ function _next(value) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+ }
+
+ function _throw(err) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+ }
+
+ _next(undefined);
+ });
+ };
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js b/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js
new file mode 100644
index 0000000..ccca65e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js
@@ -0,0 +1,4 @@
+import AwaitValue from "./AwaitValue.js";
+export default function _awaitAsyncGenerator(value) {
+ return new AwaitValue(value);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js
new file mode 100644
index 0000000..4472adc
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js
@@ -0,0 +1,20 @@
+export default function _classApplyDescriptorDestructureSet(receiver, descriptor) {
+ if (descriptor.set) {
+ if (!("__destrObj" in descriptor)) {
+ descriptor.__destrObj = {
+ set value(v) {
+ descriptor.set.call(receiver, v);
+ }
+
+ };
+ }
+
+ return descriptor.__destrObj;
+ } else {
+ if (!descriptor.writable) {
+ throw new TypeError("attempted to set read only private field");
+ }
+
+ return descriptor;
+ }
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js
new file mode 100644
index 0000000..0fad169
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js
@@ -0,0 +1,7 @@
+export default function _classApplyDescriptorGet(receiver, descriptor) {
+ if (descriptor.get) {
+ return descriptor.get.call(receiver);
+ }
+
+ return descriptor.value;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js
new file mode 100644
index 0000000..f295f3e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js
@@ -0,0 +1,11 @@
+export default function _classApplyDescriptorSet(receiver, descriptor, value) {
+ if (descriptor.set) {
+ descriptor.set.call(receiver, value);
+ } else {
+ if (!descriptor.writable) {
+ throw new TypeError("attempted to set read only private field");
+ }
+
+ descriptor.value = value;
+ }
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classCallCheck.js b/node_modules/@babel/runtime/helpers/esm/classCallCheck.js
new file mode 100644
index 0000000..2f1738a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classCallCheck.js
@@ -0,0 +1,5 @@
+export default function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js
new file mode 100644
index 0000000..098ed30
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js
@@ -0,0 +1,5 @@
+export default function _classCheckPrivateStaticAccess(receiver, classConstructor) {
+ if (receiver !== classConstructor) {
+ throw new TypeError("Private static access of wrong provenance");
+ }
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js
new file mode 100644
index 0000000..0ef34b8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js
@@ -0,0 +1,5 @@
+export default function _classCheckPrivateStaticFieldDescriptor(descriptor, action) {
+ if (descriptor === undefined) {
+ throw new TypeError("attempted to " + action + " private static field before its declaration");
+ }
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js b/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js
new file mode 100644
index 0000000..8dabe9a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js
@@ -0,0 +1,7 @@
+export default function _classExtractFieldDescriptor(receiver, privateMap, action) {
+ if (!privateMap.has(receiver)) {
+ throw new TypeError("attempted to " + action + " private field on non-instance");
+ }
+
+ return privateMap.get(receiver);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js b/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js
new file mode 100644
index 0000000..f7b6dd5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js
@@ -0,0 +1,3 @@
+export default function _classNameTDZError(name) {
+ throw new Error("Class \"" + name + "\" cannot be referenced in computed property keys.");
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js
new file mode 100644
index 0000000..fb58833
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js
@@ -0,0 +1,6 @@
+import classApplyDescriptorDestructureSet from "./classApplyDescriptorDestructureSet.js";
+import classExtractFieldDescriptor from "./classExtractFieldDescriptor.js";
+export default function _classPrivateFieldDestructureSet(receiver, privateMap) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
+ return classApplyDescriptorDestructureSet(receiver, descriptor);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js
new file mode 100644
index 0000000..53cd137
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js
@@ -0,0 +1,6 @@
+import classApplyDescriptorGet from "./classApplyDescriptorGet.js";
+import classExtractFieldDescriptor from "./classExtractFieldDescriptor.js";
+export default function _classPrivateFieldGet(receiver, privateMap) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get");
+ return classApplyDescriptorGet(receiver, descriptor);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js
new file mode 100644
index 0000000..5b10916
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js
@@ -0,0 +1,7 @@
+export default function _classPrivateFieldBase(receiver, privateKey) {
+ if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
+ throw new TypeError("attempted to use private field on non-instance");
+ }
+
+ return receiver;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js
new file mode 100644
index 0000000..5b7e5ac
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js
@@ -0,0 +1,4 @@
+var id = 0;
+export default function _classPrivateFieldKey(name) {
+ return "__private_" + id++ + "_" + name;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js
new file mode 100644
index 0000000..ad91be4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorSet from "./classApplyDescriptorSet.js";
+import classExtractFieldDescriptor from "./classExtractFieldDescriptor.js";
+export default function _classPrivateFieldSet(receiver, privateMap, value) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
+ classApplyDescriptorSet(receiver, descriptor, value);
+ return value;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js
new file mode 100644
index 0000000..38b9d58
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js
@@ -0,0 +1,7 @@
+export default function _classPrivateMethodGet(receiver, privateSet, fn) {
+ if (!privateSet.has(receiver)) {
+ throw new TypeError("attempted to get private field on non-instance");
+ }
+
+ return fn;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js
new file mode 100644
index 0000000..2bbaf3a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js
@@ -0,0 +1,3 @@
+export default function _classPrivateMethodSet() {
+ throw new TypeError("attempted to reassign private method");
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js
new file mode 100644
index 0000000..77afcfb
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js
@@ -0,0 +1,8 @@
+import classApplyDescriptorDestructureSet from "./classApplyDescriptorDestructureSet.js";
+import classCheckPrivateStaticAccess from "./classCheckPrivateStaticAccess.js";
+import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js";
+export default function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "set");
+ return classApplyDescriptorDestructureSet(receiver, descriptor);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js
new file mode 100644
index 0000000..d253d31
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js
@@ -0,0 +1,8 @@
+import classApplyDescriptorGet from "./classApplyDescriptorGet.js";
+import classCheckPrivateStaticAccess from "./classCheckPrivateStaticAccess.js";
+import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js";
+export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "get");
+ return classApplyDescriptorGet(receiver, descriptor);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js
new file mode 100644
index 0000000..b0b0cc6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js
@@ -0,0 +1,9 @@
+import classApplyDescriptorSet from "./classApplyDescriptorSet.js";
+import classCheckPrivateStaticAccess from "./classCheckPrivateStaticAccess.js";
+import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js";
+export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "set");
+ classApplyDescriptorSet(receiver, descriptor, value);
+ return value;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js
new file mode 100644
index 0000000..fddc7b2
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js
@@ -0,0 +1,5 @@
+import classCheckPrivateStaticAccess from "./classCheckPrivateStaticAccess.js";
+export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ return method;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js
new file mode 100644
index 0000000..d5ab60a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js
@@ -0,0 +1,3 @@
+export default function _classStaticPrivateMethodSet() {
+ throw new TypeError("attempted to set read only static private field");
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/construct.js b/node_modules/@babel/runtime/helpers/esm/construct.js
new file mode 100644
index 0000000..0c39835
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/construct.js
@@ -0,0 +1,18 @@
+import setPrototypeOf from "./setPrototypeOf.js";
+import isNativeReflectConstruct from "./isNativeReflectConstruct.js";
+export default function _construct(Parent, args, Class) {
+ if (isNativeReflectConstruct()) {
+ _construct = Reflect.construct;
+ } else {
+ _construct = function _construct(Parent, args, Class) {
+ var a = [null];
+ a.push.apply(a, args);
+ var Constructor = Function.bind.apply(Parent, a);
+ var instance = new Constructor();
+ if (Class) setPrototypeOf(instance, Class.prototype);
+ return instance;
+ };
+ }
+
+ return _construct.apply(null, arguments);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createClass.js b/node_modules/@babel/runtime/helpers/esm/createClass.js
new file mode 100644
index 0000000..d6cf412
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createClass.js
@@ -0,0 +1,15 @@
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+}
+
+export default function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js
new file mode 100644
index 0000000..a7a2a50
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js
@@ -0,0 +1,57 @@
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+export default function _createForOfIteratorHelper(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+
+ if (!it) {
+ if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
+ if (it) o = it;
+ var i = 0;
+
+ var F = function F() {};
+
+ return {
+ s: F,
+ n: function n() {
+ if (i >= o.length) return {
+ done: true
+ };
+ return {
+ done: false,
+ value: o[i++]
+ };
+ },
+ e: function e(_e) {
+ throw _e;
+ },
+ f: F
+ };
+ }
+
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+
+ var normalCompletion = true,
+ didErr = false,
+ err;
+ return {
+ s: function s() {
+ it = it.call(o);
+ },
+ n: function n() {
+ var step = it.next();
+ normalCompletion = step.done;
+ return step;
+ },
+ e: function e(_e2) {
+ didErr = true;
+ err = _e2;
+ },
+ f: function f() {
+ try {
+ if (!normalCompletion && it["return"] != null) it["return"]();
+ } finally {
+ if (didErr) throw err;
+ }
+ }
+ };
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js
new file mode 100644
index 0000000..640ec68
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js
@@ -0,0 +1,21 @@
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+export default function _createForOfIteratorHelperLoose(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+ if (it) return (it = it.call(o)).next.bind(it);
+
+ if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
+ if (it) o = it;
+ var i = 0;
+ return function () {
+ if (i >= o.length) return {
+ done: true
+ };
+ return {
+ done: false,
+ value: o[i++]
+ };
+ };
+ }
+
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createSuper.js b/node_modules/@babel/runtime/helpers/esm/createSuper.js
new file mode 100644
index 0000000..ea5ea99
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createSuper.js
@@ -0,0 +1,19 @@
+import getPrototypeOf from "./getPrototypeOf.js";
+import isNativeReflectConstruct from "./isNativeReflectConstruct.js";
+import possibleConstructorReturn from "./possibleConstructorReturn.js";
+export default function _createSuper(Derived) {
+ var hasNativeReflectConstruct = isNativeReflectConstruct();
+ return function _createSuperInternal() {
+ var Super = getPrototypeOf(Derived),
+ result;
+
+ if (hasNativeReflectConstruct) {
+ var NewTarget = getPrototypeOf(this).constructor;
+ result = Reflect.construct(Super, arguments, NewTarget);
+ } else {
+ result = Super.apply(this, arguments);
+ }
+
+ return possibleConstructorReturn(this, result);
+ };
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/decorate.js b/node_modules/@babel/runtime/helpers/esm/decorate.js
new file mode 100644
index 0000000..daf56da
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/decorate.js
@@ -0,0 +1,396 @@
+import toArray from "./toArray.js";
+import toPropertyKey from "./toPropertyKey.js";
+export default function _decorate(decorators, factory, superClass, mixins) {
+ var api = _getDecoratorsApi();
+
+ if (mixins) {
+ for (var i = 0; i < mixins.length; i++) {
+ api = mixins[i](api);
+ }
+ }
+
+ var r = factory(function initialize(O) {
+ api.initializeInstanceElements(O, decorated.elements);
+ }, superClass);
+ var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators);
+ api.initializeClassElements(r.F, decorated.elements);
+ return api.runClassFinishers(r.F, decorated.finishers);
+}
+
+function _getDecoratorsApi() {
+ _getDecoratorsApi = function _getDecoratorsApi() {
+ return api;
+ };
+
+ var api = {
+ elementsDefinitionOrder: [["method"], ["field"]],
+ initializeInstanceElements: function initializeInstanceElements(O, elements) {
+ ["method", "field"].forEach(function (kind) {
+ elements.forEach(function (element) {
+ if (element.kind === kind && element.placement === "own") {
+ this.defineClassElement(O, element);
+ }
+ }, this);
+ }, this);
+ },
+ initializeClassElements: function initializeClassElements(F, elements) {
+ var proto = F.prototype;
+ ["method", "field"].forEach(function (kind) {
+ elements.forEach(function (element) {
+ var placement = element.placement;
+
+ if (element.kind === kind && (placement === "static" || placement === "prototype")) {
+ var receiver = placement === "static" ? F : proto;
+ this.defineClassElement(receiver, element);
+ }
+ }, this);
+ }, this);
+ },
+ defineClassElement: function defineClassElement(receiver, element) {
+ var descriptor = element.descriptor;
+
+ if (element.kind === "field") {
+ var initializer = element.initializer;
+ descriptor = {
+ enumerable: descriptor.enumerable,
+ writable: descriptor.writable,
+ configurable: descriptor.configurable,
+ value: initializer === void 0 ? void 0 : initializer.call(receiver)
+ };
+ }
+
+ Object.defineProperty(receiver, element.key, descriptor);
+ },
+ decorateClass: function decorateClass(elements, decorators) {
+ var newElements = [];
+ var finishers = [];
+ var placements = {
+ "static": [],
+ prototype: [],
+ own: []
+ };
+ elements.forEach(function (element) {
+ this.addElementPlacement(element, placements);
+ }, this);
+ elements.forEach(function (element) {
+ if (!_hasDecorators(element)) return newElements.push(element);
+ var elementFinishersExtras = this.decorateElement(element, placements);
+ newElements.push(elementFinishersExtras.element);
+ newElements.push.apply(newElements, elementFinishersExtras.extras);
+ finishers.push.apply(finishers, elementFinishersExtras.finishers);
+ }, this);
+
+ if (!decorators) {
+ return {
+ elements: newElements,
+ finishers: finishers
+ };
+ }
+
+ var result = this.decorateConstructor(newElements, decorators);
+ finishers.push.apply(finishers, result.finishers);
+ result.finishers = finishers;
+ return result;
+ },
+ addElementPlacement: function addElementPlacement(element, placements, silent) {
+ var keys = placements[element.placement];
+
+ if (!silent && keys.indexOf(element.key) !== -1) {
+ throw new TypeError("Duplicated element (" + element.key + ")");
+ }
+
+ keys.push(element.key);
+ },
+ decorateElement: function decorateElement(element, placements) {
+ var extras = [];
+ var finishers = [];
+
+ for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {
+ var keys = placements[element.placement];
+ keys.splice(keys.indexOf(element.key), 1);
+ var elementObject = this.fromElementDescriptor(element);
+ var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);
+ element = elementFinisherExtras.element;
+ this.addElementPlacement(element, placements);
+
+ if (elementFinisherExtras.finisher) {
+ finishers.push(elementFinisherExtras.finisher);
+ }
+
+ var newExtras = elementFinisherExtras.extras;
+
+ if (newExtras) {
+ for (var j = 0; j < newExtras.length; j++) {
+ this.addElementPlacement(newExtras[j], placements);
+ }
+
+ extras.push.apply(extras, newExtras);
+ }
+ }
+
+ return {
+ element: element,
+ finishers: finishers,
+ extras: extras
+ };
+ },
+ decorateConstructor: function decorateConstructor(elements, decorators) {
+ var finishers = [];
+
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var obj = this.fromClassDescriptor(elements);
+ var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj);
+
+ if (elementsAndFinisher.finisher !== undefined) {
+ finishers.push(elementsAndFinisher.finisher);
+ }
+
+ if (elementsAndFinisher.elements !== undefined) {
+ elements = elementsAndFinisher.elements;
+
+ for (var j = 0; j < elements.length - 1; j++) {
+ for (var k = j + 1; k < elements.length; k++) {
+ if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) {
+ throw new TypeError("Duplicated element (" + elements[j].key + ")");
+ }
+ }
+ }
+ }
+ }
+
+ return {
+ elements: elements,
+ finishers: finishers
+ };
+ },
+ fromElementDescriptor: function fromElementDescriptor(element) {
+ var obj = {
+ kind: element.kind,
+ key: element.key,
+ placement: element.placement,
+ descriptor: element.descriptor
+ };
+ var desc = {
+ value: "Descriptor",
+ configurable: true
+ };
+ Object.defineProperty(obj, Symbol.toStringTag, desc);
+ if (element.kind === "field") obj.initializer = element.initializer;
+ return obj;
+ },
+ toElementDescriptors: function toElementDescriptors(elementObjects) {
+ if (elementObjects === undefined) return;
+ return toArray(elementObjects).map(function (elementObject) {
+ var element = this.toElementDescriptor(elementObject);
+ this.disallowProperty(elementObject, "finisher", "An element descriptor");
+ this.disallowProperty(elementObject, "extras", "An element descriptor");
+ return element;
+ }, this);
+ },
+ toElementDescriptor: function toElementDescriptor(elementObject) {
+ var kind = String(elementObject.kind);
+
+ if (kind !== "method" && kind !== "field") {
+ throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"');
+ }
+
+ var key = toPropertyKey(elementObject.key);
+ var placement = String(elementObject.placement);
+
+ if (placement !== "static" && placement !== "prototype" && placement !== "own") {
+ throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"');
+ }
+
+ var descriptor = elementObject.descriptor;
+ this.disallowProperty(elementObject, "elements", "An element descriptor");
+ var element = {
+ kind: kind,
+ key: key,
+ placement: placement,
+ descriptor: Object.assign({}, descriptor)
+ };
+
+ if (kind !== "field") {
+ this.disallowProperty(elementObject, "initializer", "A method descriptor");
+ } else {
+ this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor");
+ this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor");
+ this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor");
+ element.initializer = elementObject.initializer;
+ }
+
+ return element;
+ },
+ toElementFinisherExtras: function toElementFinisherExtras(elementObject) {
+ var element = this.toElementDescriptor(elementObject);
+
+ var finisher = _optionalCallableProperty(elementObject, "finisher");
+
+ var extras = this.toElementDescriptors(elementObject.extras);
+ return {
+ element: element,
+ finisher: finisher,
+ extras: extras
+ };
+ },
+ fromClassDescriptor: function fromClassDescriptor(elements) {
+ var obj = {
+ kind: "class",
+ elements: elements.map(this.fromElementDescriptor, this)
+ };
+ var desc = {
+ value: "Descriptor",
+ configurable: true
+ };
+ Object.defineProperty(obj, Symbol.toStringTag, desc);
+ return obj;
+ },
+ toClassDescriptor: function toClassDescriptor(obj) {
+ var kind = String(obj.kind);
+
+ if (kind !== "class") {
+ throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"');
+ }
+
+ this.disallowProperty(obj, "key", "A class descriptor");
+ this.disallowProperty(obj, "placement", "A class descriptor");
+ this.disallowProperty(obj, "descriptor", "A class descriptor");
+ this.disallowProperty(obj, "initializer", "A class descriptor");
+ this.disallowProperty(obj, "extras", "A class descriptor");
+
+ var finisher = _optionalCallableProperty(obj, "finisher");
+
+ var elements = this.toElementDescriptors(obj.elements);
+ return {
+ elements: elements,
+ finisher: finisher
+ };
+ },
+ runClassFinishers: function runClassFinishers(constructor, finishers) {
+ for (var i = 0; i < finishers.length; i++) {
+ var newConstructor = (0, finishers[i])(constructor);
+
+ if (newConstructor !== undefined) {
+ if (typeof newConstructor !== "function") {
+ throw new TypeError("Finishers must return a constructor.");
+ }
+
+ constructor = newConstructor;
+ }
+ }
+
+ return constructor;
+ },
+ disallowProperty: function disallowProperty(obj, name, objectType) {
+ if (obj[name] !== undefined) {
+ throw new TypeError(objectType + " can't have a ." + name + " property.");
+ }
+ }
+ };
+ return api;
+}
+
+function _createElementDescriptor(def) {
+ var key = toPropertyKey(def.key);
+ var descriptor;
+
+ if (def.kind === "method") {
+ descriptor = {
+ value: def.value,
+ writable: true,
+ configurable: true,
+ enumerable: false
+ };
+ } else if (def.kind === "get") {
+ descriptor = {
+ get: def.value,
+ configurable: true,
+ enumerable: false
+ };
+ } else if (def.kind === "set") {
+ descriptor = {
+ set: def.value,
+ configurable: true,
+ enumerable: false
+ };
+ } else if (def.kind === "field") {
+ descriptor = {
+ configurable: true,
+ writable: true,
+ enumerable: true
+ };
+ }
+
+ var element = {
+ kind: def.kind === "field" ? "field" : "method",
+ key: key,
+ placement: def["static"] ? "static" : def.kind === "field" ? "own" : "prototype",
+ descriptor: descriptor
+ };
+ if (def.decorators) element.decorators = def.decorators;
+ if (def.kind === "field") element.initializer = def.value;
+ return element;
+}
+
+function _coalesceGetterSetter(element, other) {
+ if (element.descriptor.get !== undefined) {
+ other.descriptor.get = element.descriptor.get;
+ } else {
+ other.descriptor.set = element.descriptor.set;
+ }
+}
+
+function _coalesceClassElements(elements) {
+ var newElements = [];
+
+ var isSameElement = function isSameElement(other) {
+ return other.kind === "method" && other.key === element.key && other.placement === element.placement;
+ };
+
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i];
+ var other;
+
+ if (element.kind === "method" && (other = newElements.find(isSameElement))) {
+ if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {
+ if (_hasDecorators(element) || _hasDecorators(other)) {
+ throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated.");
+ }
+
+ other.descriptor = element.descriptor;
+ } else {
+ if (_hasDecorators(element)) {
+ if (_hasDecorators(other)) {
+ throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ").");
+ }
+
+ other.decorators = element.decorators;
+ }
+
+ _coalesceGetterSetter(element, other);
+ }
+ } else {
+ newElements.push(element);
+ }
+ }
+
+ return newElements;
+}
+
+function _hasDecorators(element) {
+ return element.decorators && element.decorators.length;
+}
+
+function _isDataDescriptor(desc) {
+ return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);
+}
+
+function _optionalCallableProperty(obj, name) {
+ var value = obj[name];
+
+ if (value !== undefined && typeof value !== "function") {
+ throw new TypeError("Expected '" + name + "' to be a function");
+ }
+
+ return value;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/defaults.js b/node_modules/@babel/runtime/helpers/esm/defaults.js
new file mode 100644
index 0000000..3de1d8e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/defaults.js
@@ -0,0 +1,14 @@
+export default function _defaults(obj, defaults) {
+ var keys = Object.getOwnPropertyNames(defaults);
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ var value = Object.getOwnPropertyDescriptor(defaults, key);
+
+ if (value && value.configurable && obj[key] === undefined) {
+ Object.defineProperty(obj, key, value);
+ }
+ }
+
+ return obj;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js b/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js
new file mode 100644
index 0000000..7981acd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js
@@ -0,0 +1,22 @@
+export default function _defineEnumerableProperties(obj, descs) {
+ for (var key in descs) {
+ var desc = descs[key];
+ desc.configurable = desc.enumerable = true;
+ if ("value" in desc) desc.writable = true;
+ Object.defineProperty(obj, key, desc);
+ }
+
+ if (Object.getOwnPropertySymbols) {
+ var objectSymbols = Object.getOwnPropertySymbols(descs);
+
+ for (var i = 0; i < objectSymbols.length; i++) {
+ var sym = objectSymbols[i];
+ var desc = descs[sym];
+ desc.configurable = desc.enumerable = true;
+ if ("value" in desc) desc.writable = true;
+ Object.defineProperty(obj, sym, desc);
+ }
+ }
+
+ return obj;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/defineProperty.js b/node_modules/@babel/runtime/helpers/esm/defineProperty.js
new file mode 100644
index 0000000..7cf6e59
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/defineProperty.js
@@ -0,0 +1,14 @@
+export default function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+
+ return obj;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/extends.js b/node_modules/@babel/runtime/helpers/esm/extends.js
new file mode 100644
index 0000000..b9b138d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/extends.js
@@ -0,0 +1,17 @@
+export default function _extends() {
+ _extends = Object.assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/get.js b/node_modules/@babel/runtime/helpers/esm/get.js
new file mode 100644
index 0000000..1bce020
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/get.js
@@ -0,0 +1,20 @@
+import superPropBase from "./superPropBase.js";
+export default function _get(target, property, receiver) {
+ if (typeof Reflect !== "undefined" && Reflect.get) {
+ _get = Reflect.get;
+ } else {
+ _get = function _get(target, property, receiver) {
+ var base = superPropBase(target, property);
+ if (!base) return;
+ var desc = Object.getOwnPropertyDescriptor(base, property);
+
+ if (desc.get) {
+ return desc.get.call(receiver);
+ }
+
+ return desc.value;
+ };
+ }
+
+ return _get(target, property, receiver || target);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js b/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
new file mode 100644
index 0000000..5abafe3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
@@ -0,0 +1,6 @@
+export default function _getPrototypeOf(o) {
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
+ return o.__proto__ || Object.getPrototypeOf(o);
+ };
+ return _getPrototypeOf(o);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/inherits.js b/node_modules/@babel/runtime/helpers/esm/inherits.js
new file mode 100644
index 0000000..aee0f10
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/inherits.js
@@ -0,0 +1,15 @@
+import setPrototypeOf from "./setPrototypeOf.js";
+export default function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) setPrototypeOf(subClass, superClass);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js b/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js
new file mode 100644
index 0000000..90bb796
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js
@@ -0,0 +1,6 @@
+import setPrototypeOf from "./setPrototypeOf.js";
+export default function _inheritsLoose(subClass, superClass) {
+ subClass.prototype = Object.create(superClass.prototype);
+ subClass.prototype.constructor = subClass;
+ setPrototypeOf(subClass, superClass);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js b/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js
new file mode 100644
index 0000000..26fdea0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js
@@ -0,0 +1,9 @@
+export default function _initializerDefineProperty(target, property, descriptor, context) {
+ if (!descriptor) return;
+ Object.defineProperty(target, property, {
+ enumerable: descriptor.enumerable,
+ configurable: descriptor.configurable,
+ writable: descriptor.writable,
+ value: descriptor.initializer ? descriptor.initializer.call(context) : void 0
+ });
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js b/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js
new file mode 100644
index 0000000..30d518c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js
@@ -0,0 +1,3 @@
+export default function _initializerWarningHelper(descriptor, context) {
+ throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.');
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/instanceof.js b/node_modules/@babel/runtime/helpers/esm/instanceof.js
new file mode 100644
index 0000000..8c43b71
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/instanceof.js
@@ -0,0 +1,7 @@
+export default function _instanceof(left, right) {
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
+ return !!right[Symbol.hasInstance](left);
+ } else {
+ return left instanceof right;
+ }
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js b/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js
new file mode 100644
index 0000000..c2df7b6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js
@@ -0,0 +1,5 @@
+export default function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ "default": obj
+ };
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js b/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js
new file mode 100644
index 0000000..662ff7e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js
@@ -0,0 +1,51 @@
+import _typeof from "@babel/runtime/helpers/typeof";
+
+function _getRequireWildcardCache(nodeInterop) {
+ if (typeof WeakMap !== "function") return null;
+ var cacheBabelInterop = new WeakMap();
+ var cacheNodeInterop = new WeakMap();
+ return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+ })(nodeInterop);
+}
+
+export default function _interopRequireWildcard(obj, nodeInterop) {
+ if (!nodeInterop && obj && obj.__esModule) {
+ return obj;
+ }
+
+ if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
+ return {
+ "default": obj
+ };
+ }
+
+ var cache = _getRequireWildcardCache(nodeInterop);
+
+ if (cache && cache.has(obj)) {
+ return cache.get(obj);
+ }
+
+ var newObj = {};
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+
+ for (var key in obj) {
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+
+ if (desc && (desc.get || desc.set)) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+
+ newObj["default"] = obj;
+
+ if (cache) {
+ cache.set(obj, newObj);
+ }
+
+ return newObj;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js b/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js
new file mode 100644
index 0000000..7b1bc82
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js
@@ -0,0 +1,3 @@
+export default function _isNativeFunction(fn) {
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js b/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js
new file mode 100644
index 0000000..0da1624
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js
@@ -0,0 +1,12 @@
+export default function _isNativeReflectConstruct() {
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+ if (Reflect.construct.sham) return false;
+ if (typeof Proxy === "function") return true;
+
+ try {
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
+ return true;
+ } catch (e) {
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/iterableToArray.js b/node_modules/@babel/runtime/helpers/esm/iterableToArray.js
new file mode 100644
index 0000000..cfe9fbd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/iterableToArray.js
@@ -0,0 +1,3 @@
+export default function _iterableToArray(iter) {
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
new file mode 100644
index 0000000..c72ca94
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
@@ -0,0 +1,29 @@
+export default function _iterableToArrayLimit(arr, i) {
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
+
+ if (_i == null) return;
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+
+ var _s, _e;
+
+ try {
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"] != null) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+
+ return _arr;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js
new file mode 100644
index 0000000..27c15e0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js
@@ -0,0 +1,14 @@
+export default function _iterableToArrayLimitLoose(arr, i) {
+ var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
+
+ if (_i == null) return;
+ var _arr = [];
+
+ for (_i = _i.call(arr), _step; !(_step = _i.next()).done;) {
+ _arr.push(_step.value);
+
+ if (i && _arr.length === i) break;
+ }
+
+ return _arr;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/jsx.js b/node_modules/@babel/runtime/helpers/esm/jsx.js
new file mode 100644
index 0000000..328fadf
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/jsx.js
@@ -0,0 +1,46 @@
+var REACT_ELEMENT_TYPE;
+export default function _createRawReactElement(type, props, key, children) {
+ if (!REACT_ELEMENT_TYPE) {
+ REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol["for"] && Symbol["for"]("react.element") || 0xeac7;
+ }
+
+ var defaultProps = type && type.defaultProps;
+ var childrenLength = arguments.length - 3;
+
+ if (!props && childrenLength !== 0) {
+ props = {
+ children: void 0
+ };
+ }
+
+ if (childrenLength === 1) {
+ props.children = children;
+ } else if (childrenLength > 1) {
+ var childArray = new Array(childrenLength);
+
+ for (var i = 0; i < childrenLength; i++) {
+ childArray[i] = arguments[i + 3];
+ }
+
+ props.children = childArray;
+ }
+
+ if (props && defaultProps) {
+ for (var propName in defaultProps) {
+ if (props[propName] === void 0) {
+ props[propName] = defaultProps[propName];
+ }
+ }
+ } else if (!props) {
+ props = defaultProps || {};
+ }
+
+ return {
+ $$typeof: REACT_ELEMENT_TYPE,
+ type: type,
+ key: key === undefined ? null : "" + key,
+ ref: null,
+ props: props,
+ _owner: null
+ };
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js b/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js
new file mode 100644
index 0000000..f687959
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js
@@ -0,0 +1,9 @@
+import arrayLikeToArray from "./arrayLikeToArray.js";
+export default function _maybeArrayLike(next, arr, i) {
+ if (arr && !Array.isArray(arr) && typeof arr.length === "number") {
+ var len = arr.length;
+ return arrayLikeToArray(arr, i !== void 0 && i < len ? i : len);
+ }
+
+ return next(arr, i);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js b/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js
new file mode 100644
index 0000000..d6cd864
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js
@@ -0,0 +1,5 @@
+export default function _newArrowCheck(innerThis, boundThis) {
+ if (innerThis !== boundThis) {
+ throw new TypeError("Cannot instantiate an arrow function");
+ }
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js b/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
new file mode 100644
index 0000000..b349d00
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
@@ -0,0 +1,3 @@
+export default function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js b/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
new file mode 100644
index 0000000..82d8296
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
@@ -0,0 +1,3 @@
+export default function _nonIterableSpread() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js b/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js
new file mode 100644
index 0000000..82b67d2
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js
@@ -0,0 +1,3 @@
+export default function _objectDestructuringEmpty(obj) {
+ if (obj == null) throw new TypeError("Cannot destructure undefined");
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectSpread.js b/node_modules/@babel/runtime/helpers/esm/objectSpread.js
new file mode 100644
index 0000000..8c38ca7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectSpread.js
@@ -0,0 +1,19 @@
+import defineProperty from "./defineProperty.js";
+export default function _objectSpread(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? Object(arguments[i]) : {};
+ var ownKeys = Object.keys(source);
+
+ if (typeof Object.getOwnPropertySymbols === 'function') {
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
+ }));
+ }
+
+ ownKeys.forEach(function (key) {
+ defineProperty(target, key, source[key]);
+ });
+ }
+
+ return target;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectSpread2.js b/node_modules/@babel/runtime/helpers/esm/objectSpread2.js
new file mode 100644
index 0000000..be42b4d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectSpread2.js
@@ -0,0 +1,39 @@
+import defineProperty from "./defineProperty.js";
+
+function ownKeys(object, enumerableOnly) {
+ var keys = Object.keys(object);
+
+ if (Object.getOwnPropertySymbols) {
+ var symbols = Object.getOwnPropertySymbols(object);
+
+ if (enumerableOnly) {
+ symbols = symbols.filter(function (sym) {
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+ });
+ }
+
+ keys.push.apply(keys, symbols);
+ }
+
+ return keys;
+}
+
+export default function _objectSpread2(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? arguments[i] : {};
+
+ if (i % 2) {
+ ownKeys(Object(source), true).forEach(function (key) {
+ defineProperty(target, key, source[key]);
+ });
+ } else if (Object.getOwnPropertyDescriptors) {
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+ } else {
+ ownKeys(Object(source)).forEach(function (key) {
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+ });
+ }
+ }
+
+ return target;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js b/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
new file mode 100644
index 0000000..0fef321
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
@@ -0,0 +1,19 @@
+import objectWithoutPropertiesLoose from "./objectWithoutPropertiesLoose.js";
+export default function _objectWithoutProperties(source, excluded) {
+ if (source == null) return {};
+ var target = objectWithoutPropertiesLoose(source, excluded);
+ var key, i;
+
+ if (Object.getOwnPropertySymbols) {
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
+
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
+ key = sourceSymbolKeys[i];
+ if (excluded.indexOf(key) >= 0) continue;
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
+ target[key] = source[key];
+ }
+ }
+
+ return target;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js b/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
new file mode 100644
index 0000000..c36815c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
@@ -0,0 +1,14 @@
+export default function _objectWithoutPropertiesLoose(source, excluded) {
+ if (source == null) return {};
+ var target = {};
+ var sourceKeys = Object.keys(source);
+ var key, i;
+
+ for (i = 0; i < sourceKeys.length; i++) {
+ key = sourceKeys[i];
+ if (excluded.indexOf(key) >= 0) continue;
+ target[key] = source[key];
+ }
+
+ return target;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/package.json b/node_modules/@babel/runtime/helpers/esm/package.json
new file mode 100644
index 0000000..aead43d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/package.json
@@ -0,0 +1,3 @@
+{
+ "type": "module"
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js b/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
new file mode 100644
index 0000000..8566e11
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
@@ -0,0 +1,11 @@
+import _typeof from "@babel/runtime/helpers/typeof";
+import assertThisInitialized from "./assertThisInitialized.js";
+export default function _possibleConstructorReturn(self, call) {
+ if (call && (_typeof(call) === "object" || typeof call === "function")) {
+ return call;
+ } else if (call !== void 0) {
+ throw new TypeError("Derived constructors may only return object or undefined");
+ }
+
+ return assertThisInitialized(self);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/readOnlyError.js b/node_modules/@babel/runtime/helpers/esm/readOnlyError.js
new file mode 100644
index 0000000..166e40e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/readOnlyError.js
@@ -0,0 +1,3 @@
+export default function _readOnlyError(name) {
+ throw new TypeError("\"" + name + "\" is read-only");
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/set.js b/node_modules/@babel/runtime/helpers/esm/set.js
new file mode 100644
index 0000000..9c54773
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/set.js
@@ -0,0 +1,51 @@
+import superPropBase from "./superPropBase.js";
+import defineProperty from "./defineProperty.js";
+
+function set(target, property, value, receiver) {
+ if (typeof Reflect !== "undefined" && Reflect.set) {
+ set = Reflect.set;
+ } else {
+ set = function set(target, property, value, receiver) {
+ var base = superPropBase(target, property);
+ var desc;
+
+ if (base) {
+ desc = Object.getOwnPropertyDescriptor(base, property);
+
+ if (desc.set) {
+ desc.set.call(receiver, value);
+ return true;
+ } else if (!desc.writable) {
+ return false;
+ }
+ }
+
+ desc = Object.getOwnPropertyDescriptor(receiver, property);
+
+ if (desc) {
+ if (!desc.writable) {
+ return false;
+ }
+
+ desc.value = value;
+ Object.defineProperty(receiver, property, desc);
+ } else {
+ defineProperty(receiver, property, value);
+ }
+
+ return true;
+ };
+ }
+
+ return set(target, property, value, receiver);
+}
+
+export default function _set(target, property, value, receiver, isStrict) {
+ var s = set(target, property, value, receiver || target);
+
+ if (!s && isStrict) {
+ throw new Error('failed to set property');
+ }
+
+ return value;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js b/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
new file mode 100644
index 0000000..e6ef03e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
@@ -0,0 +1,8 @@
+export default function _setPrototypeOf(o, p) {
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ };
+
+ return _setPrototypeOf(o, p);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js b/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js
new file mode 100644
index 0000000..cadd9bb
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js
@@ -0,0 +1,7 @@
+export default function _skipFirstGeneratorNext(fn) {
+ return function () {
+ var it = fn.apply(this, arguments);
+ it.next();
+ return it;
+ };
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/slicedToArray.js b/node_modules/@babel/runtime/helpers/esm/slicedToArray.js
new file mode 100644
index 0000000..618200b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/slicedToArray.js
@@ -0,0 +1,7 @@
+import arrayWithHoles from "./arrayWithHoles.js";
+import iterableToArrayLimit from "./iterableToArrayLimit.js";
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+import nonIterableRest from "./nonIterableRest.js";
+export default function _slicedToArray(arr, i) {
+ return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js b/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js
new file mode 100644
index 0000000..efc7429
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js
@@ -0,0 +1,7 @@
+import arrayWithHoles from "./arrayWithHoles.js";
+import iterableToArrayLimitLoose from "./iterableToArrayLimitLoose.js";
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+import nonIterableRest from "./nonIterableRest.js";
+export default function _slicedToArrayLoose(arr, i) {
+ return arrayWithHoles(arr) || iterableToArrayLimitLoose(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/superPropBase.js b/node_modules/@babel/runtime/helpers/esm/superPropBase.js
new file mode 100644
index 0000000..feffe6f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/superPropBase.js
@@ -0,0 +1,9 @@
+import getPrototypeOf from "./getPrototypeOf.js";
+export default function _superPropBase(object, property) {
+ while (!Object.prototype.hasOwnProperty.call(object, property)) {
+ object = getPrototypeOf(object);
+ if (object === null) break;
+ }
+
+ return object;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js
new file mode 100644
index 0000000..421f18a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js
@@ -0,0 +1,11 @@
+export default function _taggedTemplateLiteral(strings, raw) {
+ if (!raw) {
+ raw = strings.slice(0);
+ }
+
+ return Object.freeze(Object.defineProperties(strings, {
+ raw: {
+ value: Object.freeze(raw)
+ }
+ }));
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js
new file mode 100644
index 0000000..c8f081e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js
@@ -0,0 +1,8 @@
+export default function _taggedTemplateLiteralLoose(strings, raw) {
+ if (!raw) {
+ raw = strings.slice(0);
+ }
+
+ strings.raw = raw;
+ return strings;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/tdz.js b/node_modules/@babel/runtime/helpers/esm/tdz.js
new file mode 100644
index 0000000..d5d0adc
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/tdz.js
@@ -0,0 +1,3 @@
+export default function _tdzError(name) {
+ throw new ReferenceError(name + " is not defined - temporal dead zone");
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/temporalRef.js b/node_modules/@babel/runtime/helpers/esm/temporalRef.js
new file mode 100644
index 0000000..b25f7c4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/temporalRef.js
@@ -0,0 +1,5 @@
+import undef from "./temporalUndefined.js";
+import err from "./tdz.js";
+export default function _temporalRef(val, name) {
+ return val === undef ? err(name) : val;
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js b/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js
new file mode 100644
index 0000000..1a35717
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js
@@ -0,0 +1 @@
+export default function _temporalUndefined() {}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toArray.js b/node_modules/@babel/runtime/helpers/esm/toArray.js
new file mode 100644
index 0000000..ad7c871
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toArray.js
@@ -0,0 +1,7 @@
+import arrayWithHoles from "./arrayWithHoles.js";
+import iterableToArray from "./iterableToArray.js";
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+import nonIterableRest from "./nonIterableRest.js";
+export default function _toArray(arr) {
+ return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js b/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
new file mode 100644
index 0000000..bd91285
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
@@ -0,0 +1,7 @@
+import arrayWithoutHoles from "./arrayWithoutHoles.js";
+import iterableToArray from "./iterableToArray.js";
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+import nonIterableSpread from "./nonIterableSpread.js";
+export default function _toConsumableArray(arr) {
+ return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toPrimitive.js b/node_modules/@babel/runtime/helpers/esm/toPrimitive.js
new file mode 100644
index 0000000..4cb70a5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toPrimitive.js
@@ -0,0 +1,13 @@
+import _typeof from "@babel/runtime/helpers/typeof";
+export default function _toPrimitive(input, hint) {
+ if (_typeof(input) !== "object" || input === null) return input;
+ var prim = input[Symbol.toPrimitive];
+
+ if (prim !== undefined) {
+ var res = prim.call(input, hint || "default");
+ if (_typeof(res) !== "object") return res;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+
+ return (hint === "string" ? String : Number)(input);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js b/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
new file mode 100644
index 0000000..f1ba8a2
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
@@ -0,0 +1,6 @@
+import _typeof from "@babel/runtime/helpers/typeof";
+import toPrimitive from "./toPrimitive.js";
+export default function _toPropertyKey(arg) {
+ var key = toPrimitive(arg, "string");
+ return _typeof(key) === "symbol" ? key : String(key);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/typeof.js b/node_modules/@babel/runtime/helpers/esm/typeof.js
new file mode 100644
index 0000000..eb444f7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/typeof.js
@@ -0,0 +1,15 @@
+export default function _typeof(obj) {
+ "@babel/helpers - typeof";
+
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+ _typeof = function _typeof(obj) {
+ return typeof obj;
+ };
+ } else {
+ _typeof = function _typeof(obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+ }
+
+ return _typeof(obj);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js b/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
new file mode 100644
index 0000000..c0f63bd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
@@ -0,0 +1,9 @@
+import arrayLikeToArray from "./arrayLikeToArray.js";
+export default function _unsupportedIterableToArray(o, minLen) {
+ if (!o) return;
+ if (typeof o === "string") return arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor) n = o.constructor.name;
+ if (n === "Map" || n === "Set") return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js b/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js
new file mode 100644
index 0000000..723b2dd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js
@@ -0,0 +1,6 @@
+import AsyncGenerator from "./AsyncGenerator.js";
+export default function _wrapAsyncGenerator(fn) {
+ return function () {
+ return new AsyncGenerator(fn.apply(this, arguments));
+ };
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js b/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
new file mode 100644
index 0000000..512630d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
@@ -0,0 +1,37 @@
+import getPrototypeOf from "./getPrototypeOf.js";
+import setPrototypeOf from "./setPrototypeOf.js";
+import isNativeFunction from "./isNativeFunction.js";
+import construct from "./construct.js";
+export default function _wrapNativeSuper(Class) {
+ var _cache = typeof Map === "function" ? new Map() : undefined;
+
+ _wrapNativeSuper = function _wrapNativeSuper(Class) {
+ if (Class === null || !isNativeFunction(Class)) return Class;
+
+ if (typeof Class !== "function") {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ if (typeof _cache !== "undefined") {
+ if (_cache.has(Class)) return _cache.get(Class);
+
+ _cache.set(Class, Wrapper);
+ }
+
+ function Wrapper() {
+ return construct(Class, arguments, getPrototypeOf(this).constructor);
+ }
+
+ Wrapper.prototype = Object.create(Class.prototype, {
+ constructor: {
+ value: Wrapper,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ return setPrototypeOf(Wrapper, Class);
+ };
+
+ return _wrapNativeSuper(Class);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js b/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js
new file mode 100644
index 0000000..4d65336
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js
@@ -0,0 +1,65 @@
+import _typeof from "@babel/runtime/helpers/typeof";
+import setPrototypeOf from "./setPrototypeOf.js";
+import inherits from "./inherits.js";
+export default function _wrapRegExp() {
+ _wrapRegExp = function _wrapRegExp(re, groups) {
+ return new BabelRegExp(re, undefined, groups);
+ };
+
+ var _super = RegExp.prototype;
+
+ var _groups = new WeakMap();
+
+ function BabelRegExp(re, flags, groups) {
+ var _this = new RegExp(re, flags);
+
+ _groups.set(_this, groups || _groups.get(re));
+
+ return setPrototypeOf(_this, BabelRegExp.prototype);
+ }
+
+ inherits(BabelRegExp, RegExp);
+
+ BabelRegExp.prototype.exec = function (str) {
+ var result = _super.exec.call(this, str);
+
+ if (result) result.groups = buildGroups(result, this);
+ return result;
+ };
+
+ BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {
+ if (typeof substitution === "string") {
+ var groups = _groups.get(this);
+
+ return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) {
+ return "$" + groups[name];
+ }));
+ } else if (typeof substitution === "function") {
+ var _this = this;
+
+ return _super[Symbol.replace].call(this, str, function () {
+ var args = arguments;
+
+ if (_typeof(args[args.length - 1]) !== "object") {
+ args = [].slice.call(args);
+ args.push(buildGroups(args, _this));
+ }
+
+ return substitution.apply(this, args);
+ });
+ } else {
+ return _super[Symbol.replace].call(this, str, substitution);
+ }
+ };
+
+ function buildGroups(result, re) {
+ var g = _groups.get(re);
+
+ return Object.keys(g).reduce(function (groups, name) {
+ groups[name] = result[g[name]];
+ return groups;
+ }, Object.create(null));
+ }
+
+ return _wrapRegExp.apply(this, arguments);
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js b/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js
new file mode 100644
index 0000000..9170bd4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js
@@ -0,0 +1,3 @@
+export default function _writeOnlyError(name) {
+ throw new TypeError("\"" + name + "\" is write-only");
+}
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/extends.js b/node_modules/@babel/runtime/helpers/extends.js
new file mode 100644
index 0000000..eaf9547
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/extends.js
@@ -0,0 +1,21 @@
+function _extends() {
+ module.exports = _extends = Object.assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+ };
+
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
+ return _extends.apply(this, arguments);
+}
+
+module.exports = _extends;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/get.js b/node_modules/@babel/runtime/helpers/get.js
new file mode 100644
index 0000000..3ed600f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/get.js
@@ -0,0 +1,27 @@
+var superPropBase = require("./superPropBase.js");
+
+function _get(target, property, receiver) {
+ if (typeof Reflect !== "undefined" && Reflect.get) {
+ module.exports = _get = Reflect.get;
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
+ } else {
+ module.exports = _get = function _get(target, property, receiver) {
+ var base = superPropBase(target, property);
+ if (!base) return;
+ var desc = Object.getOwnPropertyDescriptor(base, property);
+
+ if (desc.get) {
+ return desc.get.call(receiver);
+ }
+
+ return desc.value;
+ };
+
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
+ }
+
+ return _get(target, property, receiver || target);
+}
+
+module.exports = _get;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/getPrototypeOf.js b/node_modules/@babel/runtime/helpers/getPrototypeOf.js
new file mode 100644
index 0000000..a6916eb
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/getPrototypeOf.js
@@ -0,0 +1,10 @@
+function _getPrototypeOf(o) {
+ module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
+ return o.__proto__ || Object.getPrototypeOf(o);
+ };
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
+ return _getPrototypeOf(o);
+}
+
+module.exports = _getPrototypeOf;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/inherits.js b/node_modules/@babel/runtime/helpers/inherits.js
new file mode 100644
index 0000000..3003e01
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/inherits.js
@@ -0,0 +1,19 @@
+var setPrototypeOf = require("./setPrototypeOf.js");
+
+function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) setPrototypeOf(subClass, superClass);
+}
+
+module.exports = _inherits;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/inheritsLoose.js b/node_modules/@babel/runtime/helpers/inheritsLoose.js
new file mode 100644
index 0000000..93e4305
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/inheritsLoose.js
@@ -0,0 +1,10 @@
+var setPrototypeOf = require("./setPrototypeOf.js");
+
+function _inheritsLoose(subClass, superClass) {
+ subClass.prototype = Object.create(superClass.prototype);
+ subClass.prototype.constructor = subClass;
+ setPrototypeOf(subClass, superClass);
+}
+
+module.exports = _inheritsLoose;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/initializerDefineProperty.js b/node_modules/@babel/runtime/helpers/initializerDefineProperty.js
new file mode 100644
index 0000000..6b1069e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/initializerDefineProperty.js
@@ -0,0 +1,12 @@
+function _initializerDefineProperty(target, property, descriptor, context) {
+ if (!descriptor) return;
+ Object.defineProperty(target, property, {
+ enumerable: descriptor.enumerable,
+ configurable: descriptor.configurable,
+ writable: descriptor.writable,
+ value: descriptor.initializer ? descriptor.initializer.call(context) : void 0
+ });
+}
+
+module.exports = _initializerDefineProperty;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/initializerWarningHelper.js b/node_modules/@babel/runtime/helpers/initializerWarningHelper.js
new file mode 100644
index 0000000..9d02886
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/initializerWarningHelper.js
@@ -0,0 +1,6 @@
+function _initializerWarningHelper(descriptor, context) {
+ throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.');
+}
+
+module.exports = _initializerWarningHelper;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/instanceof.js b/node_modules/@babel/runtime/helpers/instanceof.js
new file mode 100644
index 0000000..654ebc8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/instanceof.js
@@ -0,0 +1,10 @@
+function _instanceof(left, right) {
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
+ return !!right[Symbol.hasInstance](left);
+ } else {
+ return left instanceof right;
+ }
+}
+
+module.exports = _instanceof;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/interopRequireDefault.js b/node_modules/@babel/runtime/helpers/interopRequireDefault.js
new file mode 100644
index 0000000..6a21368
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/interopRequireDefault.js
@@ -0,0 +1,8 @@
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ "default": obj
+ };
+}
+
+module.exports = _interopRequireDefault;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/interopRequireWildcard.js b/node_modules/@babel/runtime/helpers/interopRequireWildcard.js
new file mode 100644
index 0000000..635f8bb
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/interopRequireWildcard.js
@@ -0,0 +1,54 @@
+var _typeof = require("@babel/runtime/helpers/typeof")["default"];
+
+function _getRequireWildcardCache(nodeInterop) {
+ if (typeof WeakMap !== "function") return null;
+ var cacheBabelInterop = new WeakMap();
+ var cacheNodeInterop = new WeakMap();
+ return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+ })(nodeInterop);
+}
+
+function _interopRequireWildcard(obj, nodeInterop) {
+ if (!nodeInterop && obj && obj.__esModule) {
+ return obj;
+ }
+
+ if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
+ return {
+ "default": obj
+ };
+ }
+
+ var cache = _getRequireWildcardCache(nodeInterop);
+
+ if (cache && cache.has(obj)) {
+ return cache.get(obj);
+ }
+
+ var newObj = {};
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+
+ for (var key in obj) {
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
+
+ if (desc && (desc.get || desc.set)) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+
+ newObj["default"] = obj;
+
+ if (cache) {
+ cache.set(obj, newObj);
+ }
+
+ return newObj;
+}
+
+module.exports = _interopRequireWildcard;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/isNativeFunction.js b/node_modules/@babel/runtime/helpers/isNativeFunction.js
new file mode 100644
index 0000000..50eb8f5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/isNativeFunction.js
@@ -0,0 +1,6 @@
+function _isNativeFunction(fn) {
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
+}
+
+module.exports = _isNativeFunction;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js b/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js
new file mode 100644
index 0000000..3a201a6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js
@@ -0,0 +1,15 @@
+function _isNativeReflectConstruct() {
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+ if (Reflect.construct.sham) return false;
+ if (typeof Proxy === "function") return true;
+
+ try {
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
+ return true;
+ } catch (e) {
+ return false;
+ }
+}
+
+module.exports = _isNativeReflectConstruct;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/iterableToArray.js b/node_modules/@babel/runtime/helpers/iterableToArray.js
new file mode 100644
index 0000000..03f955d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/iterableToArray.js
@@ -0,0 +1,6 @@
+function _iterableToArray(iter) {
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
+}
+
+module.exports = _iterableToArray;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js b/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js
new file mode 100644
index 0000000..da9cee0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js
@@ -0,0 +1,32 @@
+function _iterableToArrayLimit(arr, i) {
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
+
+ if (_i == null) return;
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+
+ var _s, _e;
+
+ try {
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"] != null) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+
+ return _arr;
+}
+
+module.exports = _iterableToArrayLimit;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js b/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js
new file mode 100644
index 0000000..fb05b12
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js
@@ -0,0 +1,17 @@
+function _iterableToArrayLimitLoose(arr, i) {
+ var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
+
+ if (_i == null) return;
+ var _arr = [];
+
+ for (_i = _i.call(arr), _step; !(_step = _i.next()).done;) {
+ _arr.push(_step.value);
+
+ if (i && _arr.length === i) break;
+ }
+
+ return _arr;
+}
+
+module.exports = _iterableToArrayLimitLoose;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/jsx.js b/node_modules/@babel/runtime/helpers/jsx.js
new file mode 100644
index 0000000..21ac847
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/jsx.js
@@ -0,0 +1,50 @@
+var REACT_ELEMENT_TYPE;
+
+function _createRawReactElement(type, props, key, children) {
+ if (!REACT_ELEMENT_TYPE) {
+ REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol["for"] && Symbol["for"]("react.element") || 0xeac7;
+ }
+
+ var defaultProps = type && type.defaultProps;
+ var childrenLength = arguments.length - 3;
+
+ if (!props && childrenLength !== 0) {
+ props = {
+ children: void 0
+ };
+ }
+
+ if (childrenLength === 1) {
+ props.children = children;
+ } else if (childrenLength > 1) {
+ var childArray = new Array(childrenLength);
+
+ for (var i = 0; i < childrenLength; i++) {
+ childArray[i] = arguments[i + 3];
+ }
+
+ props.children = childArray;
+ }
+
+ if (props && defaultProps) {
+ for (var propName in defaultProps) {
+ if (props[propName] === void 0) {
+ props[propName] = defaultProps[propName];
+ }
+ }
+ } else if (!props) {
+ props = defaultProps || {};
+ }
+
+ return {
+ $$typeof: REACT_ELEMENT_TYPE,
+ type: type,
+ key: key === undefined ? null : "" + key,
+ ref: null,
+ props: props,
+ _owner: null
+ };
+}
+
+module.exports = _createRawReactElement;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/maybeArrayLike.js b/node_modules/@babel/runtime/helpers/maybeArrayLike.js
new file mode 100644
index 0000000..3ab618b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/maybeArrayLike.js
@@ -0,0 +1,13 @@
+var arrayLikeToArray = require("./arrayLikeToArray.js");
+
+function _maybeArrayLike(next, arr, i) {
+ if (arr && !Array.isArray(arr) && typeof arr.length === "number") {
+ var len = arr.length;
+ return arrayLikeToArray(arr, i !== void 0 && i < len ? i : len);
+ }
+
+ return next(arr, i);
+}
+
+module.exports = _maybeArrayLike;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/newArrowCheck.js b/node_modules/@babel/runtime/helpers/newArrowCheck.js
new file mode 100644
index 0000000..8d7570b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/newArrowCheck.js
@@ -0,0 +1,8 @@
+function _newArrowCheck(innerThis, boundThis) {
+ if (innerThis !== boundThis) {
+ throw new TypeError("Cannot instantiate an arrow function");
+ }
+}
+
+module.exports = _newArrowCheck;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/nonIterableRest.js b/node_modules/@babel/runtime/helpers/nonIterableRest.js
new file mode 100644
index 0000000..22be4f5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/nonIterableRest.js
@@ -0,0 +1,6 @@
+function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+
+module.exports = _nonIterableRest;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/nonIterableSpread.js b/node_modules/@babel/runtime/helpers/nonIterableSpread.js
new file mode 100644
index 0000000..4ba722d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/nonIterableSpread.js
@@ -0,0 +1,6 @@
+function _nonIterableSpread() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+
+module.exports = _nonIterableSpread;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js b/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js
new file mode 100644
index 0000000..1bb88ac
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js
@@ -0,0 +1,6 @@
+function _objectDestructuringEmpty(obj) {
+ if (obj == null) throw new TypeError("Cannot destructure undefined");
+}
+
+module.exports = _objectDestructuringEmpty;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectSpread.js b/node_modules/@babel/runtime/helpers/objectSpread.js
new file mode 100644
index 0000000..00af209
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectSpread.js
@@ -0,0 +1,23 @@
+var defineProperty = require("./defineProperty.js");
+
+function _objectSpread(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? Object(arguments[i]) : {};
+ var ownKeys = Object.keys(source);
+
+ if (typeof Object.getOwnPropertySymbols === 'function') {
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
+ }));
+ }
+
+ ownKeys.forEach(function (key) {
+ defineProperty(target, key, source[key]);
+ });
+ }
+
+ return target;
+}
+
+module.exports = _objectSpread;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectSpread2.js b/node_modules/@babel/runtime/helpers/objectSpread2.js
new file mode 100644
index 0000000..337d30e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectSpread2.js
@@ -0,0 +1,42 @@
+var defineProperty = require("./defineProperty.js");
+
+function ownKeys(object, enumerableOnly) {
+ var keys = Object.keys(object);
+
+ if (Object.getOwnPropertySymbols) {
+ var symbols = Object.getOwnPropertySymbols(object);
+
+ if (enumerableOnly) {
+ symbols = symbols.filter(function (sym) {
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+ });
+ }
+
+ keys.push.apply(keys, symbols);
+ }
+
+ return keys;
+}
+
+function _objectSpread2(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? arguments[i] : {};
+
+ if (i % 2) {
+ ownKeys(Object(source), true).forEach(function (key) {
+ defineProperty(target, key, source[key]);
+ });
+ } else if (Object.getOwnPropertyDescriptors) {
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+ } else {
+ ownKeys(Object(source)).forEach(function (key) {
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+ });
+ }
+ }
+
+ return target;
+}
+
+module.exports = _objectSpread2;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectWithoutProperties.js b/node_modules/@babel/runtime/helpers/objectWithoutProperties.js
new file mode 100644
index 0000000..c000db7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectWithoutProperties.js
@@ -0,0 +1,23 @@
+var objectWithoutPropertiesLoose = require("./objectWithoutPropertiesLoose.js");
+
+function _objectWithoutProperties(source, excluded) {
+ if (source == null) return {};
+ var target = objectWithoutPropertiesLoose(source, excluded);
+ var key, i;
+
+ if (Object.getOwnPropertySymbols) {
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
+
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
+ key = sourceSymbolKeys[i];
+ if (excluded.indexOf(key) >= 0) continue;
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
+ target[key] = source[key];
+ }
+ }
+
+ return target;
+}
+
+module.exports = _objectWithoutProperties;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js b/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js
new file mode 100644
index 0000000..d9a73de
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js
@@ -0,0 +1,17 @@
+function _objectWithoutPropertiesLoose(source, excluded) {
+ if (source == null) return {};
+ var target = {};
+ var sourceKeys = Object.keys(source);
+ var key, i;
+
+ for (i = 0; i < sourceKeys.length; i++) {
+ key = sourceKeys[i];
+ if (excluded.indexOf(key) >= 0) continue;
+ target[key] = source[key];
+ }
+
+ return target;
+}
+
+module.exports = _objectWithoutPropertiesLoose;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js b/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js
new file mode 100644
index 0000000..21455d3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js
@@ -0,0 +1,16 @@
+var _typeof = require("@babel/runtime/helpers/typeof")["default"];
+
+var assertThisInitialized = require("./assertThisInitialized.js");
+
+function _possibleConstructorReturn(self, call) {
+ if (call && (_typeof(call) === "object" || typeof call === "function")) {
+ return call;
+ } else if (call !== void 0) {
+ throw new TypeError("Derived constructors may only return object or undefined");
+ }
+
+ return assertThisInitialized(self);
+}
+
+module.exports = _possibleConstructorReturn;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/readOnlyError.js b/node_modules/@babel/runtime/helpers/readOnlyError.js
new file mode 100644
index 0000000..e805f89
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/readOnlyError.js
@@ -0,0 +1,6 @@
+function _readOnlyError(name) {
+ throw new TypeError("\"" + name + "\" is read-only");
+}
+
+module.exports = _readOnlyError;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/set.js b/node_modules/@babel/runtime/helpers/set.js
new file mode 100644
index 0000000..b7d184d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/set.js
@@ -0,0 +1,55 @@
+var superPropBase = require("./superPropBase.js");
+
+var defineProperty = require("./defineProperty.js");
+
+function set(target, property, value, receiver) {
+ if (typeof Reflect !== "undefined" && Reflect.set) {
+ set = Reflect.set;
+ } else {
+ set = function set(target, property, value, receiver) {
+ var base = superPropBase(target, property);
+ var desc;
+
+ if (base) {
+ desc = Object.getOwnPropertyDescriptor(base, property);
+
+ if (desc.set) {
+ desc.set.call(receiver, value);
+ return true;
+ } else if (!desc.writable) {
+ return false;
+ }
+ }
+
+ desc = Object.getOwnPropertyDescriptor(receiver, property);
+
+ if (desc) {
+ if (!desc.writable) {
+ return false;
+ }
+
+ desc.value = value;
+ Object.defineProperty(receiver, property, desc);
+ } else {
+ defineProperty(receiver, property, value);
+ }
+
+ return true;
+ };
+ }
+
+ return set(target, property, value, receiver);
+}
+
+function _set(target, property, value, receiver, isStrict) {
+ var s = set(target, property, value, receiver || target);
+
+ if (!s && isStrict) {
+ throw new Error('failed to set property');
+ }
+
+ return value;
+}
+
+module.exports = _set;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/setPrototypeOf.js b/node_modules/@babel/runtime/helpers/setPrototypeOf.js
new file mode 100644
index 0000000..415797b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/setPrototypeOf.js
@@ -0,0 +1,12 @@
+function _setPrototypeOf(o, p) {
+ module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ };
+
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
+ return _setPrototypeOf(o, p);
+}
+
+module.exports = _setPrototypeOf;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js b/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js
new file mode 100644
index 0000000..ed60585
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js
@@ -0,0 +1,10 @@
+function _skipFirstGeneratorNext(fn) {
+ return function () {
+ var it = fn.apply(this, arguments);
+ it.next();
+ return it;
+ };
+}
+
+module.exports = _skipFirstGeneratorNext;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/slicedToArray.js b/node_modules/@babel/runtime/helpers/slicedToArray.js
new file mode 100644
index 0000000..101f404
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/slicedToArray.js
@@ -0,0 +1,14 @@
+var arrayWithHoles = require("./arrayWithHoles.js");
+
+var iterableToArrayLimit = require("./iterableToArrayLimit.js");
+
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+
+var nonIterableRest = require("./nonIterableRest.js");
+
+function _slicedToArray(arr, i) {
+ return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
+}
+
+module.exports = _slicedToArray;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js b/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js
new file mode 100644
index 0000000..188db63
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js
@@ -0,0 +1,14 @@
+var arrayWithHoles = require("./arrayWithHoles.js");
+
+var iterableToArrayLimitLoose = require("./iterableToArrayLimitLoose.js");
+
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+
+var nonIterableRest = require("./nonIterableRest.js");
+
+function _slicedToArrayLoose(arr, i) {
+ return arrayWithHoles(arr) || iterableToArrayLimitLoose(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
+}
+
+module.exports = _slicedToArrayLoose;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/superPropBase.js b/node_modules/@babel/runtime/helpers/superPropBase.js
new file mode 100644
index 0000000..ce12a88
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/superPropBase.js
@@ -0,0 +1,13 @@
+var getPrototypeOf = require("./getPrototypeOf.js");
+
+function _superPropBase(object, property) {
+ while (!Object.prototype.hasOwnProperty.call(object, property)) {
+ object = getPrototypeOf(object);
+ if (object === null) break;
+ }
+
+ return object;
+}
+
+module.exports = _superPropBase;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js b/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js
new file mode 100644
index 0000000..1a524b3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js
@@ -0,0 +1,14 @@
+function _taggedTemplateLiteral(strings, raw) {
+ if (!raw) {
+ raw = strings.slice(0);
+ }
+
+ return Object.freeze(Object.defineProperties(strings, {
+ raw: {
+ value: Object.freeze(raw)
+ }
+ }));
+}
+
+module.exports = _taggedTemplateLiteral;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js b/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js
new file mode 100644
index 0000000..ab78e62
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js
@@ -0,0 +1,11 @@
+function _taggedTemplateLiteralLoose(strings, raw) {
+ if (!raw) {
+ raw = strings.slice(0);
+ }
+
+ strings.raw = raw;
+ return strings;
+}
+
+module.exports = _taggedTemplateLiteralLoose;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/tdz.js b/node_modules/@babel/runtime/helpers/tdz.js
new file mode 100644
index 0000000..a5b35a6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/tdz.js
@@ -0,0 +1,6 @@
+function _tdzError(name) {
+ throw new ReferenceError(name + " is not defined - temporal dead zone");
+}
+
+module.exports = _tdzError;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/temporalRef.js b/node_modules/@babel/runtime/helpers/temporalRef.js
new file mode 100644
index 0000000..d4e9460
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/temporalRef.js
@@ -0,0 +1,10 @@
+var temporalUndefined = require("./temporalUndefined.js");
+
+var tdz = require("./tdz.js");
+
+function _temporalRef(val, name) {
+ return val === temporalUndefined ? tdz(name) : val;
+}
+
+module.exports = _temporalRef;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/temporalUndefined.js b/node_modules/@babel/runtime/helpers/temporalUndefined.js
new file mode 100644
index 0000000..aeae645
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/temporalUndefined.js
@@ -0,0 +1,4 @@
+function _temporalUndefined() {}
+
+module.exports = _temporalUndefined;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toArray.js b/node_modules/@babel/runtime/helpers/toArray.js
new file mode 100644
index 0000000..3b911bd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toArray.js
@@ -0,0 +1,14 @@
+var arrayWithHoles = require("./arrayWithHoles.js");
+
+var iterableToArray = require("./iterableToArray.js");
+
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+
+var nonIterableRest = require("./nonIterableRest.js");
+
+function _toArray(arr) {
+ return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();
+}
+
+module.exports = _toArray;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toConsumableArray.js b/node_modules/@babel/runtime/helpers/toConsumableArray.js
new file mode 100644
index 0000000..f084cd1
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toConsumableArray.js
@@ -0,0 +1,14 @@
+var arrayWithoutHoles = require("./arrayWithoutHoles.js");
+
+var iterableToArray = require("./iterableToArray.js");
+
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+
+var nonIterableSpread = require("./nonIterableSpread.js");
+
+function _toConsumableArray(arr) {
+ return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
+}
+
+module.exports = _toConsumableArray;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toPrimitive.js b/node_modules/@babel/runtime/helpers/toPrimitive.js
new file mode 100644
index 0000000..ac40338
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toPrimitive.js
@@ -0,0 +1,17 @@
+var _typeof = require("@babel/runtime/helpers/typeof")["default"];
+
+function _toPrimitive(input, hint) {
+ if (_typeof(input) !== "object" || input === null) return input;
+ var prim = input[Symbol.toPrimitive];
+
+ if (prim !== undefined) {
+ var res = prim.call(input, hint || "default");
+ if (_typeof(res) !== "object") return res;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+
+ return (hint === "string" ? String : Number)(input);
+}
+
+module.exports = _toPrimitive;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toPropertyKey.js b/node_modules/@babel/runtime/helpers/toPropertyKey.js
new file mode 100644
index 0000000..066b3f2
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toPropertyKey.js
@@ -0,0 +1,11 @@
+var _typeof = require("@babel/runtime/helpers/typeof")["default"];
+
+var toPrimitive = require("./toPrimitive.js");
+
+function _toPropertyKey(arg) {
+ var key = toPrimitive(arg, "string");
+ return _typeof(key) === "symbol" ? key : String(key);
+}
+
+module.exports = _toPropertyKey;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/typeof.js b/node_modules/@babel/runtime/helpers/typeof.js
new file mode 100644
index 0000000..02a5d8a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/typeof.js
@@ -0,0 +1,22 @@
+function _typeof(obj) {
+ "@babel/helpers - typeof";
+
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+ module.exports = _typeof = function _typeof(obj) {
+ return typeof obj;
+ };
+
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
+ } else {
+ module.exports = _typeof = function _typeof(obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
+ }
+
+ return _typeof(obj);
+}
+
+module.exports = _typeof;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js b/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js
new file mode 100644
index 0000000..11bca7b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js
@@ -0,0 +1,13 @@
+var arrayLikeToArray = require("./arrayLikeToArray.js");
+
+function _unsupportedIterableToArray(o, minLen) {
+ if (!o) return;
+ if (typeof o === "string") return arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor) n = o.constructor.name;
+ if (n === "Map" || n === "Set") return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
+}
+
+module.exports = _unsupportedIterableToArray;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js b/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js
new file mode 100644
index 0000000..057cd19
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js
@@ -0,0 +1,10 @@
+var AsyncGenerator = require("./AsyncGenerator.js");
+
+function _wrapAsyncGenerator(fn) {
+ return function () {
+ return new AsyncGenerator(fn.apply(this, arguments));
+ };
+}
+
+module.exports = _wrapAsyncGenerator;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/wrapNativeSuper.js b/node_modules/@babel/runtime/helpers/wrapNativeSuper.js
new file mode 100644
index 0000000..981c8dd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/wrapNativeSuper.js
@@ -0,0 +1,45 @@
+var getPrototypeOf = require("./getPrototypeOf.js");
+
+var setPrototypeOf = require("./setPrototypeOf.js");
+
+var isNativeFunction = require("./isNativeFunction.js");
+
+var construct = require("./construct.js");
+
+function _wrapNativeSuper(Class) {
+ var _cache = typeof Map === "function" ? new Map() : undefined;
+
+ module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {
+ if (Class === null || !isNativeFunction(Class)) return Class;
+
+ if (typeof Class !== "function") {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ if (typeof _cache !== "undefined") {
+ if (_cache.has(Class)) return _cache.get(Class);
+
+ _cache.set(Class, Wrapper);
+ }
+
+ function Wrapper() {
+ return construct(Class, arguments, getPrototypeOf(this).constructor);
+ }
+
+ Wrapper.prototype = Object.create(Class.prototype, {
+ constructor: {
+ value: Wrapper,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ return setPrototypeOf(Wrapper, Class);
+ };
+
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
+ return _wrapNativeSuper(Class);
+}
+
+module.exports = _wrapNativeSuper;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/wrapRegExp.js b/node_modules/@babel/runtime/helpers/wrapRegExp.js
new file mode 100644
index 0000000..e80a8b6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/wrapRegExp.js
@@ -0,0 +1,72 @@
+var _typeof = require("@babel/runtime/helpers/typeof")["default"];
+
+var setPrototypeOf = require("./setPrototypeOf.js");
+
+var inherits = require("./inherits.js");
+
+function _wrapRegExp() {
+ module.exports = _wrapRegExp = function _wrapRegExp(re, groups) {
+ return new BabelRegExp(re, undefined, groups);
+ };
+
+ module.exports["default"] = module.exports, module.exports.__esModule = true;
+ var _super = RegExp.prototype;
+
+ var _groups = new WeakMap();
+
+ function BabelRegExp(re, flags, groups) {
+ var _this = new RegExp(re, flags);
+
+ _groups.set(_this, groups || _groups.get(re));
+
+ return setPrototypeOf(_this, BabelRegExp.prototype);
+ }
+
+ inherits(BabelRegExp, RegExp);
+
+ BabelRegExp.prototype.exec = function (str) {
+ var result = _super.exec.call(this, str);
+
+ if (result) result.groups = buildGroups(result, this);
+ return result;
+ };
+
+ BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {
+ if (typeof substitution === "string") {
+ var groups = _groups.get(this);
+
+ return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) {
+ return "$" + groups[name];
+ }));
+ } else if (typeof substitution === "function") {
+ var _this = this;
+
+ return _super[Symbol.replace].call(this, str, function () {
+ var args = arguments;
+
+ if (_typeof(args[args.length - 1]) !== "object") {
+ args = [].slice.call(args);
+ args.push(buildGroups(args, _this));
+ }
+
+ return substitution.apply(this, args);
+ });
+ } else {
+ return _super[Symbol.replace].call(this, str, substitution);
+ }
+ };
+
+ function buildGroups(result, re) {
+ var g = _groups.get(re);
+
+ return Object.keys(g).reduce(function (groups, name) {
+ groups[name] = result[g[name]];
+ return groups;
+ }, Object.create(null));
+ }
+
+ return _wrapRegExp.apply(this, arguments);
+}
+
+module.exports = _wrapRegExp;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/writeOnlyError.js b/node_modules/@babel/runtime/helpers/writeOnlyError.js
new file mode 100644
index 0000000..6751a74
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/writeOnlyError.js
@@ -0,0 +1,6 @@
+function _writeOnlyError(name) {
+ throw new TypeError("\"" + name + "\" is write-only");
+}
+
+module.exports = _writeOnlyError;
+module.exports["default"] = module.exports, module.exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/package.json b/node_modules/@babel/runtime/package.json
new file mode 100644
index 0000000..b10b5c1
--- /dev/null
+++ b/node_modules/@babel/runtime/package.json
@@ -0,0 +1,856 @@
+{
+ "_args": [
+ [
+ "@babel/runtime@7.15.3",
+ "/home/other/discord_bot"
+ ]
+ ],
+ "_from": "@babel/runtime@7.15.3",
+ "_id": "@babel/runtime@7.15.3",
+ "_inBundle": false,
+ "_integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==",
+ "_location": "/@babel/runtime",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "@babel/runtime@7.15.3",
+ "name": "@babel/runtime",
+ "escapedName": "@babel%2fruntime",
+ "scope": "@babel",
+ "rawSpec": "7.15.3",
+ "saveSpec": null,
+ "fetchSpec": "7.15.3"
+ },
+ "_requiredBy": [
+ "/getstream"
+ ],
+ "_resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz",
+ "_spec": "7.15.3",
+ "_where": "/home/other/discord_bot",
+ "author": {
+ "name": "The Babel Team",
+ "url": "https://babel.dev/team"
+ },
+ "bugs": {
+ "url": "https://github.com/babel/babel/issues"
+ },
+ "dependencies": {
+ "regenerator-runtime": "^0.13.4"
+ },
+ "description": "babel's modular runtime helpers",
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "exports": {
+ "./helpers/jsx": [
+ {
+ "node": "./helpers/jsx.js",
+ "import": "./helpers/esm/jsx.js",
+ "default": "./helpers/jsx.js"
+ },
+ "./helpers/jsx.js"
+ ],
+ "./helpers/esm/jsx": "./helpers/esm/jsx.js",
+ "./helpers/objectSpread2": [
+ {
+ "node": "./helpers/objectSpread2.js",
+ "import": "./helpers/esm/objectSpread2.js",
+ "default": "./helpers/objectSpread2.js"
+ },
+ "./helpers/objectSpread2.js"
+ ],
+ "./helpers/esm/objectSpread2": "./helpers/esm/objectSpread2.js",
+ "./helpers/typeof": [
+ {
+ "node": "./helpers/typeof.js",
+ "import": "./helpers/esm/typeof.js",
+ "default": "./helpers/typeof.js"
+ },
+ "./helpers/typeof.js"
+ ],
+ "./helpers/esm/typeof": "./helpers/esm/typeof.js",
+ "./helpers/wrapRegExp": [
+ {
+ "node": "./helpers/wrapRegExp.js",
+ "import": "./helpers/esm/wrapRegExp.js",
+ "default": "./helpers/wrapRegExp.js"
+ },
+ "./helpers/wrapRegExp.js"
+ ],
+ "./helpers/esm/wrapRegExp": "./helpers/esm/wrapRegExp.js",
+ "./helpers/asyncIterator": [
+ {
+ "node": "./helpers/asyncIterator.js",
+ "import": "./helpers/esm/asyncIterator.js",
+ "default": "./helpers/asyncIterator.js"
+ },
+ "./helpers/asyncIterator.js"
+ ],
+ "./helpers/esm/asyncIterator": "./helpers/esm/asyncIterator.js",
+ "./helpers/AwaitValue": [
+ {
+ "node": "./helpers/AwaitValue.js",
+ "import": "./helpers/esm/AwaitValue.js",
+ "default": "./helpers/AwaitValue.js"
+ },
+ "./helpers/AwaitValue.js"
+ ],
+ "./helpers/esm/AwaitValue": "./helpers/esm/AwaitValue.js",
+ "./helpers/AsyncGenerator": [
+ {
+ "node": "./helpers/AsyncGenerator.js",
+ "import": "./helpers/esm/AsyncGenerator.js",
+ "default": "./helpers/AsyncGenerator.js"
+ },
+ "./helpers/AsyncGenerator.js"
+ ],
+ "./helpers/esm/AsyncGenerator": "./helpers/esm/AsyncGenerator.js",
+ "./helpers/wrapAsyncGenerator": [
+ {
+ "node": "./helpers/wrapAsyncGenerator.js",
+ "import": "./helpers/esm/wrapAsyncGenerator.js",
+ "default": "./helpers/wrapAsyncGenerator.js"
+ },
+ "./helpers/wrapAsyncGenerator.js"
+ ],
+ "./helpers/esm/wrapAsyncGenerator": "./helpers/esm/wrapAsyncGenerator.js",
+ "./helpers/awaitAsyncGenerator": [
+ {
+ "node": "./helpers/awaitAsyncGenerator.js",
+ "import": "./helpers/esm/awaitAsyncGenerator.js",
+ "default": "./helpers/awaitAsyncGenerator.js"
+ },
+ "./helpers/awaitAsyncGenerator.js"
+ ],
+ "./helpers/esm/awaitAsyncGenerator": "./helpers/esm/awaitAsyncGenerator.js",
+ "./helpers/asyncGeneratorDelegate": [
+ {
+ "node": "./helpers/asyncGeneratorDelegate.js",
+ "import": "./helpers/esm/asyncGeneratorDelegate.js",
+ "default": "./helpers/asyncGeneratorDelegate.js"
+ },
+ "./helpers/asyncGeneratorDelegate.js"
+ ],
+ "./helpers/esm/asyncGeneratorDelegate": "./helpers/esm/asyncGeneratorDelegate.js",
+ "./helpers/asyncToGenerator": [
+ {
+ "node": "./helpers/asyncToGenerator.js",
+ "import": "./helpers/esm/asyncToGenerator.js",
+ "default": "./helpers/asyncToGenerator.js"
+ },
+ "./helpers/asyncToGenerator.js"
+ ],
+ "./helpers/esm/asyncToGenerator": "./helpers/esm/asyncToGenerator.js",
+ "./helpers/classCallCheck": [
+ {
+ "node": "./helpers/classCallCheck.js",
+ "import": "./helpers/esm/classCallCheck.js",
+ "default": "./helpers/classCallCheck.js"
+ },
+ "./helpers/classCallCheck.js"
+ ],
+ "./helpers/esm/classCallCheck": "./helpers/esm/classCallCheck.js",
+ "./helpers/createClass": [
+ {
+ "node": "./helpers/createClass.js",
+ "import": "./helpers/esm/createClass.js",
+ "default": "./helpers/createClass.js"
+ },
+ "./helpers/createClass.js"
+ ],
+ "./helpers/esm/createClass": "./helpers/esm/createClass.js",
+ "./helpers/defineEnumerableProperties": [
+ {
+ "node": "./helpers/defineEnumerableProperties.js",
+ "import": "./helpers/esm/defineEnumerableProperties.js",
+ "default": "./helpers/defineEnumerableProperties.js"
+ },
+ "./helpers/defineEnumerableProperties.js"
+ ],
+ "./helpers/esm/defineEnumerableProperties": "./helpers/esm/defineEnumerableProperties.js",
+ "./helpers/defaults": [
+ {
+ "node": "./helpers/defaults.js",
+ "import": "./helpers/esm/defaults.js",
+ "default": "./helpers/defaults.js"
+ },
+ "./helpers/defaults.js"
+ ],
+ "./helpers/esm/defaults": "./helpers/esm/defaults.js",
+ "./helpers/defineProperty": [
+ {
+ "node": "./helpers/defineProperty.js",
+ "import": "./helpers/esm/defineProperty.js",
+ "default": "./helpers/defineProperty.js"
+ },
+ "./helpers/defineProperty.js"
+ ],
+ "./helpers/esm/defineProperty": "./helpers/esm/defineProperty.js",
+ "./helpers/extends": [
+ {
+ "node": "./helpers/extends.js",
+ "import": "./helpers/esm/extends.js",
+ "default": "./helpers/extends.js"
+ },
+ "./helpers/extends.js"
+ ],
+ "./helpers/esm/extends": "./helpers/esm/extends.js",
+ "./helpers/objectSpread": [
+ {
+ "node": "./helpers/objectSpread.js",
+ "import": "./helpers/esm/objectSpread.js",
+ "default": "./helpers/objectSpread.js"
+ },
+ "./helpers/objectSpread.js"
+ ],
+ "./helpers/esm/objectSpread": "./helpers/esm/objectSpread.js",
+ "./helpers/inherits": [
+ {
+ "node": "./helpers/inherits.js",
+ "import": "./helpers/esm/inherits.js",
+ "default": "./helpers/inherits.js"
+ },
+ "./helpers/inherits.js"
+ ],
+ "./helpers/esm/inherits": "./helpers/esm/inherits.js",
+ "./helpers/inheritsLoose": [
+ {
+ "node": "./helpers/inheritsLoose.js",
+ "import": "./helpers/esm/inheritsLoose.js",
+ "default": "./helpers/inheritsLoose.js"
+ },
+ "./helpers/inheritsLoose.js"
+ ],
+ "./helpers/esm/inheritsLoose": "./helpers/esm/inheritsLoose.js",
+ "./helpers/getPrototypeOf": [
+ {
+ "node": "./helpers/getPrototypeOf.js",
+ "import": "./helpers/esm/getPrototypeOf.js",
+ "default": "./helpers/getPrototypeOf.js"
+ },
+ "./helpers/getPrototypeOf.js"
+ ],
+ "./helpers/esm/getPrototypeOf": "./helpers/esm/getPrototypeOf.js",
+ "./helpers/setPrototypeOf": [
+ {
+ "node": "./helpers/setPrototypeOf.js",
+ "import": "./helpers/esm/setPrototypeOf.js",
+ "default": "./helpers/setPrototypeOf.js"
+ },
+ "./helpers/setPrototypeOf.js"
+ ],
+ "./helpers/esm/setPrototypeOf": "./helpers/esm/setPrototypeOf.js",
+ "./helpers/isNativeReflectConstruct": [
+ {
+ "node": "./helpers/isNativeReflectConstruct.js",
+ "import": "./helpers/esm/isNativeReflectConstruct.js",
+ "default": "./helpers/isNativeReflectConstruct.js"
+ },
+ "./helpers/isNativeReflectConstruct.js"
+ ],
+ "./helpers/esm/isNativeReflectConstruct": "./helpers/esm/isNativeReflectConstruct.js",
+ "./helpers/construct": [
+ {
+ "node": "./helpers/construct.js",
+ "import": "./helpers/esm/construct.js",
+ "default": "./helpers/construct.js"
+ },
+ "./helpers/construct.js"
+ ],
+ "./helpers/esm/construct": "./helpers/esm/construct.js",
+ "./helpers/isNativeFunction": [
+ {
+ "node": "./helpers/isNativeFunction.js",
+ "import": "./helpers/esm/isNativeFunction.js",
+ "default": "./helpers/isNativeFunction.js"
+ },
+ "./helpers/isNativeFunction.js"
+ ],
+ "./helpers/esm/isNativeFunction": "./helpers/esm/isNativeFunction.js",
+ "./helpers/wrapNativeSuper": [
+ {
+ "node": "./helpers/wrapNativeSuper.js",
+ "import": "./helpers/esm/wrapNativeSuper.js",
+ "default": "./helpers/wrapNativeSuper.js"
+ },
+ "./helpers/wrapNativeSuper.js"
+ ],
+ "./helpers/esm/wrapNativeSuper": "./helpers/esm/wrapNativeSuper.js",
+ "./helpers/instanceof": [
+ {
+ "node": "./helpers/instanceof.js",
+ "import": "./helpers/esm/instanceof.js",
+ "default": "./helpers/instanceof.js"
+ },
+ "./helpers/instanceof.js"
+ ],
+ "./helpers/esm/instanceof": "./helpers/esm/instanceof.js",
+ "./helpers/interopRequireDefault": [
+ {
+ "node": "./helpers/interopRequireDefault.js",
+ "import": "./helpers/esm/interopRequireDefault.js",
+ "default": "./helpers/interopRequireDefault.js"
+ },
+ "./helpers/interopRequireDefault.js"
+ ],
+ "./helpers/esm/interopRequireDefault": "./helpers/esm/interopRequireDefault.js",
+ "./helpers/interopRequireWildcard": [
+ {
+ "node": "./helpers/interopRequireWildcard.js",
+ "import": "./helpers/esm/interopRequireWildcard.js",
+ "default": "./helpers/interopRequireWildcard.js"
+ },
+ "./helpers/interopRequireWildcard.js"
+ ],
+ "./helpers/esm/interopRequireWildcard": "./helpers/esm/interopRequireWildcard.js",
+ "./helpers/newArrowCheck": [
+ {
+ "node": "./helpers/newArrowCheck.js",
+ "import": "./helpers/esm/newArrowCheck.js",
+ "default": "./helpers/newArrowCheck.js"
+ },
+ "./helpers/newArrowCheck.js"
+ ],
+ "./helpers/esm/newArrowCheck": "./helpers/esm/newArrowCheck.js",
+ "./helpers/objectDestructuringEmpty": [
+ {
+ "node": "./helpers/objectDestructuringEmpty.js",
+ "import": "./helpers/esm/objectDestructuringEmpty.js",
+ "default": "./helpers/objectDestructuringEmpty.js"
+ },
+ "./helpers/objectDestructuringEmpty.js"
+ ],
+ "./helpers/esm/objectDestructuringEmpty": "./helpers/esm/objectDestructuringEmpty.js",
+ "./helpers/objectWithoutPropertiesLoose": [
+ {
+ "node": "./helpers/objectWithoutPropertiesLoose.js",
+ "import": "./helpers/esm/objectWithoutPropertiesLoose.js",
+ "default": "./helpers/objectWithoutPropertiesLoose.js"
+ },
+ "./helpers/objectWithoutPropertiesLoose.js"
+ ],
+ "./helpers/esm/objectWithoutPropertiesLoose": "./helpers/esm/objectWithoutPropertiesLoose.js",
+ "./helpers/objectWithoutProperties": [
+ {
+ "node": "./helpers/objectWithoutProperties.js",
+ "import": "./helpers/esm/objectWithoutProperties.js",
+ "default": "./helpers/objectWithoutProperties.js"
+ },
+ "./helpers/objectWithoutProperties.js"
+ ],
+ "./helpers/esm/objectWithoutProperties": "./helpers/esm/objectWithoutProperties.js",
+ "./helpers/assertThisInitialized": [
+ {
+ "node": "./helpers/assertThisInitialized.js",
+ "import": "./helpers/esm/assertThisInitialized.js",
+ "default": "./helpers/assertThisInitialized.js"
+ },
+ "./helpers/assertThisInitialized.js"
+ ],
+ "./helpers/esm/assertThisInitialized": "./helpers/esm/assertThisInitialized.js",
+ "./helpers/possibleConstructorReturn": [
+ {
+ "node": "./helpers/possibleConstructorReturn.js",
+ "import": "./helpers/esm/possibleConstructorReturn.js",
+ "default": "./helpers/possibleConstructorReturn.js"
+ },
+ "./helpers/possibleConstructorReturn.js"
+ ],
+ "./helpers/esm/possibleConstructorReturn": "./helpers/esm/possibleConstructorReturn.js",
+ "./helpers/createSuper": [
+ {
+ "node": "./helpers/createSuper.js",
+ "import": "./helpers/esm/createSuper.js",
+ "default": "./helpers/createSuper.js"
+ },
+ "./helpers/createSuper.js"
+ ],
+ "./helpers/esm/createSuper": "./helpers/esm/createSuper.js",
+ "./helpers/superPropBase": [
+ {
+ "node": "./helpers/superPropBase.js",
+ "import": "./helpers/esm/superPropBase.js",
+ "default": "./helpers/superPropBase.js"
+ },
+ "./helpers/superPropBase.js"
+ ],
+ "./helpers/esm/superPropBase": "./helpers/esm/superPropBase.js",
+ "./helpers/get": [
+ {
+ "node": "./helpers/get.js",
+ "import": "./helpers/esm/get.js",
+ "default": "./helpers/get.js"
+ },
+ "./helpers/get.js"
+ ],
+ "./helpers/esm/get": "./helpers/esm/get.js",
+ "./helpers/set": [
+ {
+ "node": "./helpers/set.js",
+ "import": "./helpers/esm/set.js",
+ "default": "./helpers/set.js"
+ },
+ "./helpers/set.js"
+ ],
+ "./helpers/esm/set": "./helpers/esm/set.js",
+ "./helpers/taggedTemplateLiteral": [
+ {
+ "node": "./helpers/taggedTemplateLiteral.js",
+ "import": "./helpers/esm/taggedTemplateLiteral.js",
+ "default": "./helpers/taggedTemplateLiteral.js"
+ },
+ "./helpers/taggedTemplateLiteral.js"
+ ],
+ "./helpers/esm/taggedTemplateLiteral": "./helpers/esm/taggedTemplateLiteral.js",
+ "./helpers/taggedTemplateLiteralLoose": [
+ {
+ "node": "./helpers/taggedTemplateLiteralLoose.js",
+ "import": "./helpers/esm/taggedTemplateLiteralLoose.js",
+ "default": "./helpers/taggedTemplateLiteralLoose.js"
+ },
+ "./helpers/taggedTemplateLiteralLoose.js"
+ ],
+ "./helpers/esm/taggedTemplateLiteralLoose": "./helpers/esm/taggedTemplateLiteralLoose.js",
+ "./helpers/readOnlyError": [
+ {
+ "node": "./helpers/readOnlyError.js",
+ "import": "./helpers/esm/readOnlyError.js",
+ "default": "./helpers/readOnlyError.js"
+ },
+ "./helpers/readOnlyError.js"
+ ],
+ "./helpers/esm/readOnlyError": "./helpers/esm/readOnlyError.js",
+ "./helpers/writeOnlyError": [
+ {
+ "node": "./helpers/writeOnlyError.js",
+ "import": "./helpers/esm/writeOnlyError.js",
+ "default": "./helpers/writeOnlyError.js"
+ },
+ "./helpers/writeOnlyError.js"
+ ],
+ "./helpers/esm/writeOnlyError": "./helpers/esm/writeOnlyError.js",
+ "./helpers/classNameTDZError": [
+ {
+ "node": "./helpers/classNameTDZError.js",
+ "import": "./helpers/esm/classNameTDZError.js",
+ "default": "./helpers/classNameTDZError.js"
+ },
+ "./helpers/classNameTDZError.js"
+ ],
+ "./helpers/esm/classNameTDZError": "./helpers/esm/classNameTDZError.js",
+ "./helpers/temporalUndefined": [
+ {
+ "node": "./helpers/temporalUndefined.js",
+ "import": "./helpers/esm/temporalUndefined.js",
+ "default": "./helpers/temporalUndefined.js"
+ },
+ "./helpers/temporalUndefined.js"
+ ],
+ "./helpers/esm/temporalUndefined": "./helpers/esm/temporalUndefined.js",
+ "./helpers/tdz": [
+ {
+ "node": "./helpers/tdz.js",
+ "import": "./helpers/esm/tdz.js",
+ "default": "./helpers/tdz.js"
+ },
+ "./helpers/tdz.js"
+ ],
+ "./helpers/esm/tdz": "./helpers/esm/tdz.js",
+ "./helpers/temporalRef": [
+ {
+ "node": "./helpers/temporalRef.js",
+ "import": "./helpers/esm/temporalRef.js",
+ "default": "./helpers/temporalRef.js"
+ },
+ "./helpers/temporalRef.js"
+ ],
+ "./helpers/esm/temporalRef": "./helpers/esm/temporalRef.js",
+ "./helpers/slicedToArray": [
+ {
+ "node": "./helpers/slicedToArray.js",
+ "import": "./helpers/esm/slicedToArray.js",
+ "default": "./helpers/slicedToArray.js"
+ },
+ "./helpers/slicedToArray.js"
+ ],
+ "./helpers/esm/slicedToArray": "./helpers/esm/slicedToArray.js",
+ "./helpers/slicedToArrayLoose": [
+ {
+ "node": "./helpers/slicedToArrayLoose.js",
+ "import": "./helpers/esm/slicedToArrayLoose.js",
+ "default": "./helpers/slicedToArrayLoose.js"
+ },
+ "./helpers/slicedToArrayLoose.js"
+ ],
+ "./helpers/esm/slicedToArrayLoose": "./helpers/esm/slicedToArrayLoose.js",
+ "./helpers/toArray": [
+ {
+ "node": "./helpers/toArray.js",
+ "import": "./helpers/esm/toArray.js",
+ "default": "./helpers/toArray.js"
+ },
+ "./helpers/toArray.js"
+ ],
+ "./helpers/esm/toArray": "./helpers/esm/toArray.js",
+ "./helpers/toConsumableArray": [
+ {
+ "node": "./helpers/toConsumableArray.js",
+ "import": "./helpers/esm/toConsumableArray.js",
+ "default": "./helpers/toConsumableArray.js"
+ },
+ "./helpers/toConsumableArray.js"
+ ],
+ "./helpers/esm/toConsumableArray": "./helpers/esm/toConsumableArray.js",
+ "./helpers/arrayWithoutHoles": [
+ {
+ "node": "./helpers/arrayWithoutHoles.js",
+ "import": "./helpers/esm/arrayWithoutHoles.js",
+ "default": "./helpers/arrayWithoutHoles.js"
+ },
+ "./helpers/arrayWithoutHoles.js"
+ ],
+ "./helpers/esm/arrayWithoutHoles": "./helpers/esm/arrayWithoutHoles.js",
+ "./helpers/arrayWithHoles": [
+ {
+ "node": "./helpers/arrayWithHoles.js",
+ "import": "./helpers/esm/arrayWithHoles.js",
+ "default": "./helpers/arrayWithHoles.js"
+ },
+ "./helpers/arrayWithHoles.js"
+ ],
+ "./helpers/esm/arrayWithHoles": "./helpers/esm/arrayWithHoles.js",
+ "./helpers/maybeArrayLike": [
+ {
+ "node": "./helpers/maybeArrayLike.js",
+ "import": "./helpers/esm/maybeArrayLike.js",
+ "default": "./helpers/maybeArrayLike.js"
+ },
+ "./helpers/maybeArrayLike.js"
+ ],
+ "./helpers/esm/maybeArrayLike": "./helpers/esm/maybeArrayLike.js",
+ "./helpers/iterableToArray": [
+ {
+ "node": "./helpers/iterableToArray.js",
+ "import": "./helpers/esm/iterableToArray.js",
+ "default": "./helpers/iterableToArray.js"
+ },
+ "./helpers/iterableToArray.js"
+ ],
+ "./helpers/esm/iterableToArray": "./helpers/esm/iterableToArray.js",
+ "./helpers/iterableToArrayLimit": [
+ {
+ "node": "./helpers/iterableToArrayLimit.js",
+ "import": "./helpers/esm/iterableToArrayLimit.js",
+ "default": "./helpers/iterableToArrayLimit.js"
+ },
+ "./helpers/iterableToArrayLimit.js"
+ ],
+ "./helpers/esm/iterableToArrayLimit": "./helpers/esm/iterableToArrayLimit.js",
+ "./helpers/iterableToArrayLimitLoose": [
+ {
+ "node": "./helpers/iterableToArrayLimitLoose.js",
+ "import": "./helpers/esm/iterableToArrayLimitLoose.js",
+ "default": "./helpers/iterableToArrayLimitLoose.js"
+ },
+ "./helpers/iterableToArrayLimitLoose.js"
+ ],
+ "./helpers/esm/iterableToArrayLimitLoose": "./helpers/esm/iterableToArrayLimitLoose.js",
+ "./helpers/unsupportedIterableToArray": [
+ {
+ "node": "./helpers/unsupportedIterableToArray.js",
+ "import": "./helpers/esm/unsupportedIterableToArray.js",
+ "default": "./helpers/unsupportedIterableToArray.js"
+ },
+ "./helpers/unsupportedIterableToArray.js"
+ ],
+ "./helpers/esm/unsupportedIterableToArray": "./helpers/esm/unsupportedIterableToArray.js",
+ "./helpers/arrayLikeToArray": [
+ {
+ "node": "./helpers/arrayLikeToArray.js",
+ "import": "./helpers/esm/arrayLikeToArray.js",
+ "default": "./helpers/arrayLikeToArray.js"
+ },
+ "./helpers/arrayLikeToArray.js"
+ ],
+ "./helpers/esm/arrayLikeToArray": "./helpers/esm/arrayLikeToArray.js",
+ "./helpers/nonIterableSpread": [
+ {
+ "node": "./helpers/nonIterableSpread.js",
+ "import": "./helpers/esm/nonIterableSpread.js",
+ "default": "./helpers/nonIterableSpread.js"
+ },
+ "./helpers/nonIterableSpread.js"
+ ],
+ "./helpers/esm/nonIterableSpread": "./helpers/esm/nonIterableSpread.js",
+ "./helpers/nonIterableRest": [
+ {
+ "node": "./helpers/nonIterableRest.js",
+ "import": "./helpers/esm/nonIterableRest.js",
+ "default": "./helpers/nonIterableRest.js"
+ },
+ "./helpers/nonIterableRest.js"
+ ],
+ "./helpers/esm/nonIterableRest": "./helpers/esm/nonIterableRest.js",
+ "./helpers/createForOfIteratorHelper": [
+ {
+ "node": "./helpers/createForOfIteratorHelper.js",
+ "import": "./helpers/esm/createForOfIteratorHelper.js",
+ "default": "./helpers/createForOfIteratorHelper.js"
+ },
+ "./helpers/createForOfIteratorHelper.js"
+ ],
+ "./helpers/esm/createForOfIteratorHelper": "./helpers/esm/createForOfIteratorHelper.js",
+ "./helpers/createForOfIteratorHelperLoose": [
+ {
+ "node": "./helpers/createForOfIteratorHelperLoose.js",
+ "import": "./helpers/esm/createForOfIteratorHelperLoose.js",
+ "default": "./helpers/createForOfIteratorHelperLoose.js"
+ },
+ "./helpers/createForOfIteratorHelperLoose.js"
+ ],
+ "./helpers/esm/createForOfIteratorHelperLoose": "./helpers/esm/createForOfIteratorHelperLoose.js",
+ "./helpers/skipFirstGeneratorNext": [
+ {
+ "node": "./helpers/skipFirstGeneratorNext.js",
+ "import": "./helpers/esm/skipFirstGeneratorNext.js",
+ "default": "./helpers/skipFirstGeneratorNext.js"
+ },
+ "./helpers/skipFirstGeneratorNext.js"
+ ],
+ "./helpers/esm/skipFirstGeneratorNext": "./helpers/esm/skipFirstGeneratorNext.js",
+ "./helpers/toPrimitive": [
+ {
+ "node": "./helpers/toPrimitive.js",
+ "import": "./helpers/esm/toPrimitive.js",
+ "default": "./helpers/toPrimitive.js"
+ },
+ "./helpers/toPrimitive.js"
+ ],
+ "./helpers/esm/toPrimitive": "./helpers/esm/toPrimitive.js",
+ "./helpers/toPropertyKey": [
+ {
+ "node": "./helpers/toPropertyKey.js",
+ "import": "./helpers/esm/toPropertyKey.js",
+ "default": "./helpers/toPropertyKey.js"
+ },
+ "./helpers/toPropertyKey.js"
+ ],
+ "./helpers/esm/toPropertyKey": "./helpers/esm/toPropertyKey.js",
+ "./helpers/initializerWarningHelper": [
+ {
+ "node": "./helpers/initializerWarningHelper.js",
+ "import": "./helpers/esm/initializerWarningHelper.js",
+ "default": "./helpers/initializerWarningHelper.js"
+ },
+ "./helpers/initializerWarningHelper.js"
+ ],
+ "./helpers/esm/initializerWarningHelper": "./helpers/esm/initializerWarningHelper.js",
+ "./helpers/initializerDefineProperty": [
+ {
+ "node": "./helpers/initializerDefineProperty.js",
+ "import": "./helpers/esm/initializerDefineProperty.js",
+ "default": "./helpers/initializerDefineProperty.js"
+ },
+ "./helpers/initializerDefineProperty.js"
+ ],
+ "./helpers/esm/initializerDefineProperty": "./helpers/esm/initializerDefineProperty.js",
+ "./helpers/applyDecoratedDescriptor": [
+ {
+ "node": "./helpers/applyDecoratedDescriptor.js",
+ "import": "./helpers/esm/applyDecoratedDescriptor.js",
+ "default": "./helpers/applyDecoratedDescriptor.js"
+ },
+ "./helpers/applyDecoratedDescriptor.js"
+ ],
+ "./helpers/esm/applyDecoratedDescriptor": "./helpers/esm/applyDecoratedDescriptor.js",
+ "./helpers/classPrivateFieldLooseKey": [
+ {
+ "node": "./helpers/classPrivateFieldLooseKey.js",
+ "import": "./helpers/esm/classPrivateFieldLooseKey.js",
+ "default": "./helpers/classPrivateFieldLooseKey.js"
+ },
+ "./helpers/classPrivateFieldLooseKey.js"
+ ],
+ "./helpers/esm/classPrivateFieldLooseKey": "./helpers/esm/classPrivateFieldLooseKey.js",
+ "./helpers/classPrivateFieldLooseBase": [
+ {
+ "node": "./helpers/classPrivateFieldLooseBase.js",
+ "import": "./helpers/esm/classPrivateFieldLooseBase.js",
+ "default": "./helpers/classPrivateFieldLooseBase.js"
+ },
+ "./helpers/classPrivateFieldLooseBase.js"
+ ],
+ "./helpers/esm/classPrivateFieldLooseBase": "./helpers/esm/classPrivateFieldLooseBase.js",
+ "./helpers/classPrivateFieldGet": [
+ {
+ "node": "./helpers/classPrivateFieldGet.js",
+ "import": "./helpers/esm/classPrivateFieldGet.js",
+ "default": "./helpers/classPrivateFieldGet.js"
+ },
+ "./helpers/classPrivateFieldGet.js"
+ ],
+ "./helpers/esm/classPrivateFieldGet": "./helpers/esm/classPrivateFieldGet.js",
+ "./helpers/classPrivateFieldSet": [
+ {
+ "node": "./helpers/classPrivateFieldSet.js",
+ "import": "./helpers/esm/classPrivateFieldSet.js",
+ "default": "./helpers/classPrivateFieldSet.js"
+ },
+ "./helpers/classPrivateFieldSet.js"
+ ],
+ "./helpers/esm/classPrivateFieldSet": "./helpers/esm/classPrivateFieldSet.js",
+ "./helpers/classPrivateFieldDestructureSet": [
+ {
+ "node": "./helpers/classPrivateFieldDestructureSet.js",
+ "import": "./helpers/esm/classPrivateFieldDestructureSet.js",
+ "default": "./helpers/classPrivateFieldDestructureSet.js"
+ },
+ "./helpers/classPrivateFieldDestructureSet.js"
+ ],
+ "./helpers/esm/classPrivateFieldDestructureSet": "./helpers/esm/classPrivateFieldDestructureSet.js",
+ "./helpers/classExtractFieldDescriptor": [
+ {
+ "node": "./helpers/classExtractFieldDescriptor.js",
+ "import": "./helpers/esm/classExtractFieldDescriptor.js",
+ "default": "./helpers/classExtractFieldDescriptor.js"
+ },
+ "./helpers/classExtractFieldDescriptor.js"
+ ],
+ "./helpers/esm/classExtractFieldDescriptor": "./helpers/esm/classExtractFieldDescriptor.js",
+ "./helpers/classStaticPrivateFieldSpecGet": [
+ {
+ "node": "./helpers/classStaticPrivateFieldSpecGet.js",
+ "import": "./helpers/esm/classStaticPrivateFieldSpecGet.js",
+ "default": "./helpers/classStaticPrivateFieldSpecGet.js"
+ },
+ "./helpers/classStaticPrivateFieldSpecGet.js"
+ ],
+ "./helpers/esm/classStaticPrivateFieldSpecGet": "./helpers/esm/classStaticPrivateFieldSpecGet.js",
+ "./helpers/classStaticPrivateFieldSpecSet": [
+ {
+ "node": "./helpers/classStaticPrivateFieldSpecSet.js",
+ "import": "./helpers/esm/classStaticPrivateFieldSpecSet.js",
+ "default": "./helpers/classStaticPrivateFieldSpecSet.js"
+ },
+ "./helpers/classStaticPrivateFieldSpecSet.js"
+ ],
+ "./helpers/esm/classStaticPrivateFieldSpecSet": "./helpers/esm/classStaticPrivateFieldSpecSet.js",
+ "./helpers/classStaticPrivateMethodGet": [
+ {
+ "node": "./helpers/classStaticPrivateMethodGet.js",
+ "import": "./helpers/esm/classStaticPrivateMethodGet.js",
+ "default": "./helpers/classStaticPrivateMethodGet.js"
+ },
+ "./helpers/classStaticPrivateMethodGet.js"
+ ],
+ "./helpers/esm/classStaticPrivateMethodGet": "./helpers/esm/classStaticPrivateMethodGet.js",
+ "./helpers/classStaticPrivateMethodSet": [
+ {
+ "node": "./helpers/classStaticPrivateMethodSet.js",
+ "import": "./helpers/esm/classStaticPrivateMethodSet.js",
+ "default": "./helpers/classStaticPrivateMethodSet.js"
+ },
+ "./helpers/classStaticPrivateMethodSet.js"
+ ],
+ "./helpers/esm/classStaticPrivateMethodSet": "./helpers/esm/classStaticPrivateMethodSet.js",
+ "./helpers/classApplyDescriptorGet": [
+ {
+ "node": "./helpers/classApplyDescriptorGet.js",
+ "import": "./helpers/esm/classApplyDescriptorGet.js",
+ "default": "./helpers/classApplyDescriptorGet.js"
+ },
+ "./helpers/classApplyDescriptorGet.js"
+ ],
+ "./helpers/esm/classApplyDescriptorGet": "./helpers/esm/classApplyDescriptorGet.js",
+ "./helpers/classApplyDescriptorSet": [
+ {
+ "node": "./helpers/classApplyDescriptorSet.js",
+ "import": "./helpers/esm/classApplyDescriptorSet.js",
+ "default": "./helpers/classApplyDescriptorSet.js"
+ },
+ "./helpers/classApplyDescriptorSet.js"
+ ],
+ "./helpers/esm/classApplyDescriptorSet": "./helpers/esm/classApplyDescriptorSet.js",
+ "./helpers/classApplyDescriptorDestructureSet": [
+ {
+ "node": "./helpers/classApplyDescriptorDestructureSet.js",
+ "import": "./helpers/esm/classApplyDescriptorDestructureSet.js",
+ "default": "./helpers/classApplyDescriptorDestructureSet.js"
+ },
+ "./helpers/classApplyDescriptorDestructureSet.js"
+ ],
+ "./helpers/esm/classApplyDescriptorDestructureSet": "./helpers/esm/classApplyDescriptorDestructureSet.js",
+ "./helpers/classStaticPrivateFieldDestructureSet": [
+ {
+ "node": "./helpers/classStaticPrivateFieldDestructureSet.js",
+ "import": "./helpers/esm/classStaticPrivateFieldDestructureSet.js",
+ "default": "./helpers/classStaticPrivateFieldDestructureSet.js"
+ },
+ "./helpers/classStaticPrivateFieldDestructureSet.js"
+ ],
+ "./helpers/esm/classStaticPrivateFieldDestructureSet": "./helpers/esm/classStaticPrivateFieldDestructureSet.js",
+ "./helpers/classCheckPrivateStaticAccess": [
+ {
+ "node": "./helpers/classCheckPrivateStaticAccess.js",
+ "import": "./helpers/esm/classCheckPrivateStaticAccess.js",
+ "default": "./helpers/classCheckPrivateStaticAccess.js"
+ },
+ "./helpers/classCheckPrivateStaticAccess.js"
+ ],
+ "./helpers/esm/classCheckPrivateStaticAccess": "./helpers/esm/classCheckPrivateStaticAccess.js",
+ "./helpers/classCheckPrivateStaticFieldDescriptor": [
+ {
+ "node": "./helpers/classCheckPrivateStaticFieldDescriptor.js",
+ "import": "./helpers/esm/classCheckPrivateStaticFieldDescriptor.js",
+ "default": "./helpers/classCheckPrivateStaticFieldDescriptor.js"
+ },
+ "./helpers/classCheckPrivateStaticFieldDescriptor.js"
+ ],
+ "./helpers/esm/classCheckPrivateStaticFieldDescriptor": "./helpers/esm/classCheckPrivateStaticFieldDescriptor.js",
+ "./helpers/decorate": [
+ {
+ "node": "./helpers/decorate.js",
+ "import": "./helpers/esm/decorate.js",
+ "default": "./helpers/decorate.js"
+ },
+ "./helpers/decorate.js"
+ ],
+ "./helpers/esm/decorate": "./helpers/esm/decorate.js",
+ "./helpers/classPrivateMethodGet": [
+ {
+ "node": "./helpers/classPrivateMethodGet.js",
+ "import": "./helpers/esm/classPrivateMethodGet.js",
+ "default": "./helpers/classPrivateMethodGet.js"
+ },
+ "./helpers/classPrivateMethodGet.js"
+ ],
+ "./helpers/esm/classPrivateMethodGet": "./helpers/esm/classPrivateMethodGet.js",
+ "./helpers/classPrivateMethodSet": [
+ {
+ "node": "./helpers/classPrivateMethodSet.js",
+ "import": "./helpers/esm/classPrivateMethodSet.js",
+ "default": "./helpers/classPrivateMethodSet.js"
+ },
+ "./helpers/classPrivateMethodSet.js"
+ ],
+ "./helpers/esm/classPrivateMethodSet": "./helpers/esm/classPrivateMethodSet.js",
+ "./package": "./package.json",
+ "./package.json": "./package.json",
+ "./regenerator": "./regenerator/index.js",
+ "./regenerator/*.js": "./regenerator/*.js",
+ "./regenerator/": "./regenerator/"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-runtime",
+ "license": "MIT",
+ "name": "@babel/runtime",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/babel/babel.git",
+ "directory": "packages/babel-runtime"
+ },
+ "version": "7.15.3"
+}
diff --git a/node_modules/@babel/runtime/regenerator/index.js b/node_modules/@babel/runtime/regenerator/index.js
new file mode 100644
index 0000000..9fd4158
--- /dev/null
+++ b/node_modules/@babel/runtime/regenerator/index.js
@@ -0,0 +1 @@
+module.exports = require("regenerator-runtime");
diff --git a/node_modules/@discordjs/builders/CHANGELOG.md b/node_modules/@discordjs/builders/CHANGELOG.md
new file mode 100644
index 0000000..eb8000d
--- /dev/null
+++ b/node_modules/@discordjs/builders/CHANGELOG.md
@@ -0,0 +1,233 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+# [@discordjs/builders@1.5.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@1.4.0...@discordjs/builders@1.5.0) - (2023-03-12)
+
+## Documentation
+
+- **EmbedBuilder#spliceFields:** Fix a typo (#9159) ([4367ab9](https://github.com/discordjs/discord.js/commit/4367ab930227048868db3ed8437f6c4507ff32e1))
+- Fix version export (#9049) ([8b70f49](https://github.com/discordjs/discord.js/commit/8b70f497a1207e30edebdecd12b926c981c13d28))
+
+## Features
+
+- **website:** Add support for source file links (#9048) ([f6506e9](https://github.com/discordjs/discord.js/commit/f6506e99c496683ee0ab67db0726b105b929af38))
+- **StringSelectMenu:** Add `spliceOptions()` (#8937) ([a6941d5](https://github.com/discordjs/discord.js/commit/a6941d536ce24ed2b5446a154cbc886b2b97c63a))
+- Add support for nsfw commands (#7976) ([7a51344](https://github.com/discordjs/discord.js/commit/7a5134459c5f06864bf74631d83b96d9c21b72d8))
+- Add `@discordjs/formatters` (#8889) ([3fca638](https://github.com/discordjs/discord.js/commit/3fca638a8470dcea2f79ddb9f18526dbc0017c88))
+
+## Styling
+
+- Run prettier (#9041) ([2798ba1](https://github.com/discordjs/discord.js/commit/2798ba1eb3d734f0cf2eeccd2e16cfba6804873b))
+
+# [@discordjs/builders@1.4.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@1.3.0...@discordjs/builders@1.4.0) - (2022-11-28)
+
+## Bug Fixes
+
+- Pin @types/node version ([9d8179c](https://github.com/discordjs/discord.js/commit/9d8179c6a78e1c7f9976f852804055964d5385d4))
+
+## Features
+
+- New select menus (#8793) ([5152abf](https://github.com/discordjs/discord.js/commit/5152abf7285581abf7689e9050fdc56c4abb1e2b))
+- Allow punctuation characters in context menus (#8783) ([b521366](https://github.com/discordjs/discord.js/commit/b5213664fa66746daab1673ebe2adf2db3d1522c))
+
+## Typings
+
+- **Formatters:** Allow boolean in `formatEmoji` (#8823) ([ec37f13](https://github.com/discordjs/discord.js/commit/ec37f137fd4fca0fdbdb8a5c83abf32362a8f285))
+
+# [@discordjs/builders@1.3.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@1.2.0...@discordjs/builders@1.3.0) - (2022-10-08)
+
+## Bug Fixes
+
+- Allow adding forums to `channelTypes` (#8658) ([b1e190c](https://github.com/discordjs/discord.js/commit/b1e190c4f0773a1a739625f5b41026f593515370))
+- **SlashCommandBuilder:** Missing methods in subcommand builder (#8583) ([1c5b78f](https://github.com/discordjs/discord.js/commit/1c5b78fd2130f09c951459cf4c2d637f46c3c2c9))
+- Footer / sidebar / deprecation alert ([ba3e0ed](https://github.com/discordjs/discord.js/commit/ba3e0ed348258fe8e51eefb4aa7379a1230616a9))
+
+## Documentation
+
+- **builders/components:** Document constructors (#8636) ([8444576](https://github.com/discordjs/discord.js/commit/8444576f45da5fdddbf8ba2d91b4cb31a3b51c04))
+- Change name (#8604) ([dd5a089](https://github.com/discordjs/discord.js/commit/dd5a08944c258a847fc4377f1d5e953264ab47d0))
+- Use remarks instead of `Note` in descriptions (#8597) ([f3ce4a7](https://github.com/discordjs/discord.js/commit/f3ce4a75d0c4eafc89a1f0ce9f4964bcbcdae6da))
+
+## Features
+
+- Web-components (#8715) ([0ac3e76](https://github.com/discordjs/discord.js/commit/0ac3e766bd9dbdeb106483fa4bb085d74de346a2))
+- Add `@discordjs/util` (#8591) ([b2ec865](https://github.com/discordjs/discord.js/commit/b2ec865765bf94181473864a627fb63ea8173fd3))
+- Add `chatInputApplicationCommandMention` formatter (#8546) ([d08a57c](https://github.com/discordjs/discord.js/commit/d08a57cadd9d69a734077cc1902d931ab10336db))
+
+## Refactor
+
+- Replace usage of deprecated `ChannelType`s (#8625) ([669c3cd](https://github.com/discordjs/discord.js/commit/669c3cd2566eac68ef38ab522dd6378ba761e8b3))
+- Website components (#8600) ([c334157](https://github.com/discordjs/discord.js/commit/c3341570d983aea9ecc419979d5a01de658c9d67))
+- Use `eslint-config-neon` for packages. (#8579) ([edadb9f](https://github.com/discordjs/discord.js/commit/edadb9fe5dfd9ff51a3cfc9b25cb242d3f9f5241))
+
+## Testing
+
+- Rename incorrect test (#8596) ([ce991dd](https://github.com/discordjs/discord.js/commit/ce991dd1d883f6785b5f4b4b3ac80ef21cb304e7))
+
+## Typings
+
+- **interactions:** Fix `{Slash,ContextMenu}CommandBuilder#toJSON` (#8568) ([b7eb96d](https://github.com/discordjs/discord.js/commit/b7eb96d45670616521fbcca28a657793d91605c7))
+
+# [@discordjs/builders@1.2.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@1.1.0...@discordjs/builders@1.2.0) - (2022-08-22)
+
+## Features
+
+- **website:** Show `constructor` information (#8540) ([e42fd16](https://github.com/discordjs/discord.js/commit/e42fd1636973b10dd7ed6fb4280ee1a4a8f82007))
+- **website:** Show descriptions for `@typeParam` blocks (#8523) ([e475b63](https://github.com/discordjs/discord.js/commit/e475b63f257f6261d73cb89fee9ecbcdd84e2a6b))
+- **website:** Show parameter descriptions (#8519) ([7f415a2](https://github.com/discordjs/discord.js/commit/7f415a2502bf7ce2025dbcfed9017b0635a19966))
+- **WebSocketShard:** Support new resume url (#8480) ([bc06cc6](https://github.com/discordjs/discord.js/commit/bc06cc638d2f57ab5c600e8cdb6afc8eb2180166))
+
+## Refactor
+
+- Docs design (#8487) ([4ab1d09](https://github.com/discordjs/discord.js/commit/4ab1d09997a18879a9eb9bda39df6f15aa22557e))
+
+# [@discordjs/builders@1.1.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.16.0...@discordjs/builders@1.1.0) - (2022-07-29)
+
+## Bug Fixes
+
+- Use proper format for `@link` text (#8384) ([2655639](https://github.com/discordjs/discord.js/commit/26556390a3800e954974a00c1328ff47d3e67e9a))
+- **Formatters:** Add newline in `codeBlock` (#8369) ([5d8bd03](https://github.com/discordjs/discord.js/commit/5d8bd030d60ef364de3ef5f9963da8bda5c4efd4))
+- **selectMenu:** Allow json to be used for select menu options (#8322) ([6a2d0d8](https://github.com/discordjs/discord.js/commit/6a2d0d8e96d157d5b85cee7f17bffdfff4240074))
+
+## Documentation
+
+- Use link tags (#8382) ([5494791](https://github.com/discordjs/discord.js/commit/549479131318c659f86f0eb18578d597e22522d3))
+
+## Features
+
+- Add channel & message URL formatters (#8371) ([a7deb8f](https://github.com/discordjs/discord.js/commit/a7deb8f89830ead6185c5fb46a49688b6d209ed1))
+
+## Testing
+
+- **builders:** Improve coverage (#8274) ([b7e6238](https://github.com/discordjs/discord.js/commit/b7e62380f2e6b9324d6bba9b9eaa5315080bf66a))
+
+# [@discordjs/builders@0.16.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.15.0...@discordjs/builders@0.16.0) - (2022-07-17)
+
+## Bug Fixes
+
+- Slash command name regex (#8265) ([32f9056](https://github.com/discordjs/discord.js/commit/32f9056b15edede3bab07de96afb4b56d3a9ecca))
+- **TextInputBuilder:** Parse `custom_id`, `label`, and `style` (#8216) ([2d9dfa3](https://github.com/discordjs/discord.js/commit/2d9dfa3c6ea4bb972da2f7e088d148b798c866d9))
+
+## Documentation
+
+- Add codecov coverage badge to readmes (#8226) ([f6db285](https://github.com/discordjs/discord.js/commit/f6db285c073898a749fe4591cbd4463d1896daf5))
+
+## Features
+
+- **builder:** Add max min length in string option (#8214) ([96c8d21](https://github.com/discordjs/discord.js/commit/96c8d21f95eb366c46ae23505ba9054f44821b25))
+- Codecov (#8219) ([f10f4cd](https://github.com/discordjs/discord.js/commit/f10f4cdcd88ca6be7ec735ed3a415ba13da83db0))
+- **docgen:** Update typedoc ([b3346f4](https://github.com/discordjs/discord.js/commit/b3346f4b9b3d4f96443506643d4631dc1c6d7b21))
+- Website (#8043) ([127931d](https://github.com/discordjs/discord.js/commit/127931d1df7a2a5c27923c2f2151dbf3824e50cc))
+- **docgen:** Typescript support ([3279b40](https://github.com/discordjs/discord.js/commit/3279b40912e6aa61507bedb7db15a2b8668de44b))
+- Docgen package (#8029) ([8b979c0](https://github.com/discordjs/discord.js/commit/8b979c0245c42fd824d8e98745ee869f5360fc86))
+
+## Refactor
+
+- **builder:** Remove `unsafe*Builder`s (#8074) ([a4d1862](https://github.com/discordjs/discord.js/commit/a4d18629828234f43f03d1bd4851d4b727c6903b))
+- Remove @sindresorhus/is as it's now esm only (#8133) ([c6f285b](https://github.com/discordjs/discord.js/commit/c6f285b7b089b004776fbeb444fe973a68d158d8))
+- Move all the config files to root (#8033) ([769ea0b](https://github.com/discordjs/discord.js/commit/769ea0bfe78c4f1d413c6b397c604ffe91e39c6a))
+
+## Typings
+
+- Remove expect error (#8242) ([7e6dbaa](https://github.com/discordjs/discord.js/commit/7e6dbaaed900c07d1a04e23bbbf9cd0d1b0501c5))
+- **builder:** Remove casting (#8241) ([8198da5](https://github.com/discordjs/discord.js/commit/8198da5cd0898e06954615a2287853321e7ebbd4))
+
+# [@discordjs/builders@0.15.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.14.0...@discordjs/builders@0.15.0) - (2022-06-06)
+
+## Features
+
+- Allow builders to accept rest params and arrays (#7874) ([ad75be9](https://github.com/discordjs/discord.js/commit/ad75be9a9cf90c8624495df99b75177e6c24022f))
+- Use vitest instead of jest for more speed ([8d8e6c0](https://github.com/discordjs/discord.js/commit/8d8e6c03decd7352a2aa180f6e5bc1a13602539b))
+- Add scripts package for locally used scripts ([f2ae1f9](https://github.com/discordjs/discord.js/commit/f2ae1f9348bfd893332a9060f71a8a5f272a1b8b))
+
+# [@discordjs/builders@0.14.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.13.0...@discordjs/builders@0.14.0) - (2022-06-04)
+
+## Bug Fixes
+
+- **builders:** Leftover invalid null type ([8a7cd10](https://github.com/discordjs/discord.js/commit/8a7cd10554a2a71cd2fe7f6a177b5f4f43464348))
+- **SlashCommandBuilder:** Import `Permissions` correctly (#7921) ([7ce641d](https://github.com/discordjs/discord.js/commit/7ce641d33a4af6586d5e7beffbe7d38619dcf1a2))
+- Add localizations for subcommand builders and option choices (#7862) ([c1b5e73](https://github.com/discordjs/discord.js/commit/c1b5e731daa9cbbfca03a046e47cb1221ee1ed7c))
+
+## Features
+
+- Export types from `interactions/slashCommands/mixins` (#7942) ([68d5169](https://github.com/discordjs/discord.js/commit/68d5169f66c96f8fe5be17a1c01cdd5155607ab2))
+- **builders:** Add new command permissions v2 (#7861) ([de3f157](https://github.com/discordjs/discord.js/commit/de3f1573f07dda294cc0fbb1ca4b659eb2388a12))
+- **builders:** Improve embed errors and predicates (#7795) ([ec8d87f](https://github.com/discordjs/discord.js/commit/ec8d87f93272cc9987f9613735c0361680c4ed1e))
+
+## Refactor
+
+- Use arrays instead of rest parameters for builders (#7759) ([29293d7](https://github.com/discordjs/discord.js/commit/29293d7bbb5ed463e52e5a5853817e5a09cf265b))
+
+## Styling
+
+- Cleanup tests and tsup configs ([6b8ef20](https://github.com/discordjs/discord.js/commit/6b8ef20cb3af5b5cfd176dd0aa0a1a1e98551629))
+
+# [@discordjs/builders@0.13.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.12.0...@discordjs/builders@0.13.0) - (2022-04-17)
+
+## Bug Fixes
+
+- Validate select menu options (#7566) ([b1d63d9](https://github.com/discordjs/discord.js/commit/b1d63d919a61f309ac89f27016b0f148678dac2b))
+- **SelectMenu:** Set `placeholder` max to 150 (#7538) ([dcd4797](https://github.com/discordjs/discord.js/commit/dcd479767b6ec980a373f2ea1f22754f41661c1e))
+- Only check `instanceof Component` once (#7546) ([0aa4851](https://github.com/discordjs/discord.js/commit/0aa48516a4e33497e8e8dc50da164a57cdee09d3))
+- **builders:** Allow negative min/max value of number/integer option (#7484) ([3baa340](https://github.com/discordjs/discord.js/commit/3baa340821b8ecf8a16253bc0917a1033250d7c9))
+- **components:** SetX should take rest parameters (#7461) ([3617359](https://github.com/discordjs/discord.js/commit/36173590a712f041b087b7882054805a8bd42dae))
+- Unsafe embed builder field normalization (#7418) ([b936103](https://github.com/discordjs/discord.js/commit/b936103395121cb21a8c616f669ddab1d2efb0f1))
+- Fix some typos (#7393) ([92a04f4](https://github.com/discordjs/discord.js/commit/92a04f4d98f6c6760214034cc8f5a1eaa78893c7))
+- **builders:** Make type optional in constructor (#7391) ([4abb28c](https://github.com/discordjs/discord.js/commit/4abb28c0a1256c57a60369a6b8ec9e98c265b489))
+- Don't create new instances of builders classes (#7343) ([d6b56d0](https://github.com/discordjs/discord.js/commit/d6b56d0080c4c5f8ace731f1e8bcae0c9d3fb5a5))
+
+## Documentation
+
+- Completely fix builders example link (#7543) ([1a14c0c](https://github.com/discordjs/discord.js/commit/1a14c0ca562ea173d363a770a0437209f461fd23))
+- Add slash command builders example, fixes #7338 (#7339) ([3ae6f3c](https://github.com/discordjs/discord.js/commit/3ae6f3c313091151245d6e6b52337b459ecfc765))
+
+## Features
+
+- Slash command localization for builders (#7683) ([40b9a1d](https://github.com/discordjs/discord.js/commit/40b9a1d67d0b508ec593e030913acd8161cd17f8))
+- Add API v10 support (#7477) ([72577c4](https://github.com/discordjs/discord.js/commit/72577c4bfd02524a27afb6ff4aebba9301a690d3))
+- Add support for module: NodeNext in TS and ESM (#7598) ([8f1986a](https://github.com/discordjs/discord.js/commit/8f1986a6aa98365e09b00e84ad5f9f354ab61f3d))
+- Add Modals and Text Inputs (#7023) ([ed92015](https://github.com/discordjs/discord.js/commit/ed920156344233241a21b0c0b99736a3a855c23c))
+- Add missing `v13` component methods (#7466) ([f7257f0](https://github.com/discordjs/discord.js/commit/f7257f07655076eabfe355cb6a53260b39ca9670))
+- **builders:** Add attachment command option type (#7203) ([ae0f35f](https://github.com/discordjs/discord.js/commit/ae0f35f51d68dfa5a7dc43d161ef9365171debdb))
+- **components:** Add unsafe message component builders (#7387) ([6b6222b](https://github.com/discordjs/discord.js/commit/6b6222bf513d1ee8cd98fba0ad313def560b864f))
+- **embed:** Add setFields (#7322) ([bcc5cda](https://github.com/discordjs/discord.js/commit/bcc5cda8a902ddb28c7e3578e0f29b4272832624))
+
+## Refactor
+
+- Remove nickname parsing (#7736) ([78a3afc](https://github.com/discordjs/discord.js/commit/78a3afcd7fdac358e06764cc0d675e1215c785f3))
+- Replace zod with shapeshift (#7547) ([3c0bbac](https://github.com/discordjs/discord.js/commit/3c0bbac82fa9988af4a62ff00c66d149fbe6b921))
+- Remove store channels (#7634) ([aedddb8](https://github.com/discordjs/discord.js/commit/aedddb875e740e1f1bd77f06ce1b361fd3b7bc36))
+- Allow builders to accept emoji strings (#7616) ([fb9a9c2](https://github.com/discordjs/discord.js/commit/fb9a9c221121ee1c7986f9c775b77b9691a0ae15))
+- Don't return builders from API data (#7584) ([549716e](https://github.com/discordjs/discord.js/commit/549716e4fcec89ca81216a6d22aa8e623175e37a))
+- Remove obsolete builder methods (#7590) ([10607db](https://github.com/discordjs/discord.js/commit/10607dbdafe257c5cbf5b952b7eecec4919e8b4a))
+- **Embed:** Remove add field (#7522) ([8478d2f](https://github.com/discordjs/discord.js/commit/8478d2f4de9ac013733850cbbc67902f7c5abc55))
+- Make `data` public in builders (#7486) ([ba31203](https://github.com/discordjs/discord.js/commit/ba31203a0ad96e0a00f8312c397889351e4c5cfd))
+- **embed:** Remove array support in favor of rest params (#7498) ([b3fa2ec](https://github.com/discordjs/discord.js/commit/b3fa2ece402839008738ad3adce3db958445838d))
+- **components:** Default set boolean methods to true (#7502) ([b122149](https://github.com/discordjs/discord.js/commit/b12214922cea2f43afbe6b1555a74a3c8e16f798))
+- Make public builder props getters (#7422) ([e8252ed](https://github.com/discordjs/discord.js/commit/e8252ed3b981a4b7e4013f12efadd2f5d9318d3e))
+- **builders-methods:** Make methods consistent (#7395) ([f495364](https://github.com/discordjs/discord.js/commit/f4953647ff9f39127978c73bf8a62c08462802ca))
+- Remove conditional autocomplete option return types (#7396) ([0909824](https://github.com/discordjs/discord.js/commit/09098240bfb13b8afafa4ab549f06d236e0ff1c9))
+- **embed:** Mark properties as readonly (#7332) ([31768fc](https://github.com/discordjs/discord.js/commit/31768fcd69ed5b4566a340bda89ce881418e8272))
+
+## Typings
+
+- Fix regressions (#7649) ([5748dbe](https://github.com/discordjs/discord.js/commit/5748dbe08783beb80c526de38ccd105eb0e82664))
+
+# [@discordjs/builders@0.12.0](https://github.com/discordjs/discord.js/compare/@discordjs/builders@0.11.0...@discordjs/builders@0.12.0) - (2022-01-24)
+
+## Bug Fixes
+
+- **builders:** Dont export `Button` component stuff twice (#7289) ([86d9d06](https://github.com/discordjs/discord.js/commit/86d9d0674347c08d056cd054cb4ce4253195bf94))
+
+## Documentation
+
+- **SlashCommandSubcommands:** Updating old links from Discord developer portal (#7224) ([bd7a6f2](https://github.com/discordjs/discord.js/commit/bd7a6f265212624199fb0b2ddc8ece39759c63de))
+
+## Features
+
+- Add components to /builders (#7195) ([2bb40fd](https://github.com/discordjs/discord.js/commit/2bb40fd767cf5918e3ba422ff73082734bfa05b0))
+
+## Typings
+
+- Make `required` a boolean (#7307) ([c10afea](https://github.com/discordjs/discord.js/commit/c10afeadc702ab98bec5e077b3b92494a9596f9c))
diff --git a/node_modules/@discordjs/builders/LICENSE b/node_modules/@discordjs/builders/LICENSE
new file mode 100644
index 0000000..cbe9c65
--- /dev/null
+++ b/node_modules/@discordjs/builders/LICENSE
@@ -0,0 +1,191 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ Copyright 2021 Noel Buechler
+ Copyright 2021 Vlad Frangu
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/node_modules/@discordjs/builders/README.md b/node_modules/@discordjs/builders/README.md
new file mode 100644
index 0000000..59508dd
--- /dev/null
+++ b/node_modules/@discordjs/builders/README.md
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Installation
+
+**Node.js 16.9.0 or newer is required.**
+
+```sh-session
+npm install @discordjs/builders
+yarn add @discordjs/builders
+pnpm add @discordjs/builders
+```
+
+## Examples
+
+Here are some examples for the builders and utilities you can find in this package:
+
+- [Slash Command Builders][example]
+
+## Links
+
+- [Website][website] ([source][website-source])
+- [Documentation][documentation]
+- [Guide][guide] ([source][guide-source])
+ See also the [Update Guide][guide-update], including updated and removed items in the library.
+- [discord.js Discord server][discord]
+- [Discord API Discord server][discord-api]
+- [GitHub][source]
+- [npm][npm]
+- [Related libraries][related-libs]
+
+## Contributing
+
+Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
+[documentation][documentation].
+See [the contribution guide][contributing] if you'd like to submit a PR.
+
+## Help
+
+If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle
+nudge in the right direction, please don't hesitate to join our official [discord.js Server][discord].
+
+[example]: https://github.com/discordjs/discord.js/blob/main/packages/builders/docs/examples/Slash%20Command%20Builders.md
+[website]: https://discord.js.org/
+[website-source]: https://github.com/discordjs/discord.js/tree/main/apps/website
+[documentation]: https://discord.js.org/#/docs/builders
+[guide]: https://discordjs.guide/
+[guide-source]: https://github.com/discordjs/guide
+[guide-update]: https://discordjs.guide/additional-info/changes-in-v14.html
+[discord]: https://discord.gg/djs
+[discord-api]: https://discord.gg/discord-api
+[source]: https://github.com/discordjs/discord.js/tree/main/packages/builders
+[npm]: https://www.npmjs.com/package/@discordjs/builders
+[related-libs]: https://discord.com/developers/docs/topics/community-resources#libraries
+[contributing]: https://github.com/discordjs/discord.js/blob/main/.github/CONTRIBUTING.md
diff --git a/node_modules/@discordjs/builders/dist/index.d.ts b/node_modules/@discordjs/builders/dist/index.d.ts
new file mode 100644
index 0000000..b648419
--- /dev/null
+++ b/node_modules/@discordjs/builders/dist/index.d.ts
@@ -0,0 +1,1564 @@
+import * as _sapphire_shapeshift from '@sapphire/shapeshift';
+import { APIEmbedField, APIEmbedAuthor, APIEmbedFooter, APIEmbedImage, APIEmbed, APISelectMenuOption, APIMessageComponentEmoji, ButtonStyle, ChannelType, APIActionRowComponent, APIActionRowComponentTypes, APIBaseComponent, ComponentType, APIButtonComponent, APISelectMenuComponent, APIChannelSelectComponent, APIMentionableSelectComponent, APIRoleSelectComponent, APIStringSelectComponent, APIUserSelectComponent, APITextInputComponent, TextInputStyle, APIMessageActionRowComponent, APIModalActionRowComponent, APIModalComponent, APIMessageComponent, APIModalInteractionResponseCallbackData, LocalizationMap, LocaleString, ApplicationCommandOptionType, APIApplicationCommandBasicOption, APIApplicationCommandAttachmentOption, APIApplicationCommandBooleanOption, APIApplicationCommandChannelOption, APIApplicationCommandOptionChoice, APIApplicationCommandIntegerOption, APIApplicationCommandMentionableOption, APIApplicationCommandNumberOption, APIApplicationCommandRoleOption, APIApplicationCommandStringOption, APIApplicationCommandUserOption, APIApplicationCommandSubcommandGroupOption, APIApplicationCommandSubcommandOption, Permissions, RESTPostAPIChatInputApplicationCommandsJSONBody, APIApplicationCommandOption, Locale, RESTPostAPIContextMenuApplicationCommandsJSONBody, ApplicationCommandType } from 'discord-api-types/v10';
+export * from '@discordjs/formatters';
+import { JSONEncodable, Equatable } from '@discordjs/util';
+export * from '@discordjs/util';
+
+declare const fieldNamePredicate: _sapphire_shapeshift.StringValidator;
+declare const fieldValuePredicate: _sapphire_shapeshift.StringValidator;
+declare const fieldInlinePredicate: _sapphire_shapeshift.UnionValidator;
+declare const embedFieldPredicate: _sapphire_shapeshift.ObjectValidator<{
+ name: string;
+ value: string;
+ inline: boolean | undefined;
+}, _sapphire_shapeshift.UndefinedToOptional<{
+ name: string;
+ value: string;
+ inline: boolean | undefined;
+}>>;
+declare const embedFieldsArrayPredicate: _sapphire_shapeshift.ArrayValidator<_sapphire_shapeshift.UndefinedToOptional<{
+ name: string;
+ value: string;
+ inline: boolean | undefined;
+}>[], _sapphire_shapeshift.UndefinedToOptional<{
+ name: string;
+ value: string;
+ inline: boolean | undefined;
+}>>;
+declare const fieldLengthPredicate: _sapphire_shapeshift.NumberValidator;
+declare function validateFieldLength(amountAdding: number, fields?: APIEmbedField[]): void;
+declare const authorNamePredicate: _sapphire_shapeshift.UnionValidator;
+declare const imageURLPredicate: _sapphire_shapeshift.UnionValidator;
+declare const urlPredicate: _sapphire_shapeshift.UnionValidator;
+declare const embedAuthorPredicate: _sapphire_shapeshift.ObjectValidator<{
+ name: string | null;
+ iconURL: string | null | undefined;
+ url: string | null | undefined;
+}, _sapphire_shapeshift.UndefinedToOptional<{
+ name: string | null;
+ iconURL: string | null | undefined;
+ url: string | null | undefined;
+}>>;
+declare const RGBPredicate: _sapphire_shapeshift.NumberValidator;
+declare const colorPredicate: _sapphire_shapeshift.UnionValidator;
+declare const descriptionPredicate: _sapphire_shapeshift.UnionValidator;
+declare const footerTextPredicate: _sapphire_shapeshift.UnionValidator;
+declare const embedFooterPredicate: _sapphire_shapeshift.ObjectValidator<{
+ text: string | null;
+ iconURL: string | null | undefined;
+}, _sapphire_shapeshift.UndefinedToOptional<{
+ text: string | null;
+ iconURL: string | null | undefined;
+}>>;
+declare const timestampPredicate: _sapphire_shapeshift.UnionValidator;
+declare const titlePredicate: _sapphire_shapeshift.UnionValidator;
+
+declare const Assertions$5_RGBPredicate: typeof RGBPredicate;
+declare const Assertions$5_authorNamePredicate: typeof authorNamePredicate;
+declare const Assertions$5_colorPredicate: typeof colorPredicate;
+declare const Assertions$5_descriptionPredicate: typeof descriptionPredicate;
+declare const Assertions$5_embedAuthorPredicate: typeof embedAuthorPredicate;
+declare const Assertions$5_embedFieldPredicate: typeof embedFieldPredicate;
+declare const Assertions$5_embedFieldsArrayPredicate: typeof embedFieldsArrayPredicate;
+declare const Assertions$5_embedFooterPredicate: typeof embedFooterPredicate;
+declare const Assertions$5_fieldInlinePredicate: typeof fieldInlinePredicate;
+declare const Assertions$5_fieldLengthPredicate: typeof fieldLengthPredicate;
+declare const Assertions$5_fieldNamePredicate: typeof fieldNamePredicate;
+declare const Assertions$5_fieldValuePredicate: typeof fieldValuePredicate;
+declare const Assertions$5_footerTextPredicate: typeof footerTextPredicate;
+declare const Assertions$5_imageURLPredicate: typeof imageURLPredicate;
+declare const Assertions$5_timestampPredicate: typeof timestampPredicate;
+declare const Assertions$5_titlePredicate: typeof titlePredicate;
+declare const Assertions$5_urlPredicate: typeof urlPredicate;
+declare const Assertions$5_validateFieldLength: typeof validateFieldLength;
+declare namespace Assertions$5 {
+ export {
+ Assertions$5_RGBPredicate as RGBPredicate,
+ Assertions$5_authorNamePredicate as authorNamePredicate,
+ Assertions$5_colorPredicate as colorPredicate,
+ Assertions$5_descriptionPredicate as descriptionPredicate,
+ Assertions$5_embedAuthorPredicate as embedAuthorPredicate,
+ Assertions$5_embedFieldPredicate as embedFieldPredicate,
+ Assertions$5_embedFieldsArrayPredicate as embedFieldsArrayPredicate,
+ Assertions$5_embedFooterPredicate as embedFooterPredicate,
+ Assertions$5_fieldInlinePredicate as fieldInlinePredicate,
+ Assertions$5_fieldLengthPredicate as fieldLengthPredicate,
+ Assertions$5_fieldNamePredicate as fieldNamePredicate,
+ Assertions$5_fieldValuePredicate as fieldValuePredicate,
+ Assertions$5_footerTextPredicate as footerTextPredicate,
+ Assertions$5_imageURLPredicate as imageURLPredicate,
+ Assertions$5_timestampPredicate as timestampPredicate,
+ Assertions$5_titlePredicate as titlePredicate,
+ Assertions$5_urlPredicate as urlPredicate,
+ Assertions$5_validateFieldLength as validateFieldLength,
+ };
+}
+
+declare function normalizeArray(arr: RestOrArray): T[];
+type RestOrArray = T[] | [T[]];
+
+type RGBTuple = [red: number, green: number, blue: number];
+interface IconData {
+ /**
+ * The URL of the icon
+ */
+ iconURL?: string;
+ /**
+ * The proxy URL of the icon
+ */
+ proxyIconURL?: string;
+}
+type EmbedAuthorData = IconData & Omit;
+type EmbedAuthorOptions = Omit;
+type EmbedFooterData = IconData & Omit;
+type EmbedFooterOptions = Omit;
+interface EmbedImageData extends Omit {
+ /**
+ * The proxy URL for the image
+ */
+ proxyURL?: string;
+}
+/**
+ * Represents a embed in a message (image/video preview, rich embed, etc.)
+ */
+declare class EmbedBuilder {
+ readonly data: APIEmbed;
+ constructor(data?: APIEmbed);
+ /**
+ * Appends fields to the embed
+ *
+ * @remarks
+ * This method accepts either an array of fields or a variable number of field parameters.
+ * The maximum amount of fields that can be added is 25.
+ * @example
+ * Using an array
+ * ```ts
+ * const fields: APIEmbedField[] = ...;
+ * const embed = new EmbedBuilder()
+ * .addFields(fields);
+ * ```
+ * @example
+ * Using rest parameters (variadic)
+ * ```ts
+ * const embed = new EmbedBuilder()
+ * .addFields(
+ * { name: 'Field 1', value: 'Value 1' },
+ * { name: 'Field 2', value: 'Value 2' },
+ * );
+ * ```
+ * @param fields - The fields to add
+ */
+ addFields(...fields: RestOrArray): this;
+ /**
+ * Removes, replaces, or inserts fields in the embed.
+ *
+ * @remarks
+ * This method behaves similarly
+ * to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice | Array.prototype.splice}.
+ * The maximum amount of fields that can be added is 25.
+ *
+ * It's useful for modifying and adjusting order of the already-existing fields of an embed.
+ * @example
+ * Remove the first field
+ * ```ts
+ * embed.spliceFields(0, 1);
+ * ```
+ * @example
+ * Remove the first n fields
+ * ```ts
+ * const n = 4
+ * embed.spliceFields(0, n);
+ * ```
+ * @example
+ * Remove the last field
+ * ```ts
+ * embed.spliceFields(-1, 1);
+ * ```
+ * @param index - The index to start at
+ * @param deleteCount - The number of fields to remove
+ * @param fields - The replacing field objects
+ */
+ spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this;
+ /**
+ * Sets the embed's fields
+ *
+ * @remarks
+ * This method is an alias for {@link EmbedBuilder.spliceFields}. More specifically,
+ * it splices the entire array of fields, replacing them with the provided fields.
+ *
+ * You can set a maximum of 25 fields.
+ * @param fields - The fields to set
+ */
+ setFields(...fields: RestOrArray): this;
+ /**
+ * Sets the author of this embed
+ *
+ * @param options - The options for the author
+ */
+ setAuthor(options: EmbedAuthorOptions | null): this;
+ /**
+ * Sets the color of this embed
+ *
+ * @param color - The color of the embed
+ */
+ setColor(color: RGBTuple | number | null): this;
+ /**
+ * Sets the description of this embed
+ *
+ * @param description - The description
+ */
+ setDescription(description: string | null): this;
+ /**
+ * Sets the footer of this embed
+ *
+ * @param options - The options for the footer
+ */
+ setFooter(options: EmbedFooterOptions | null): this;
+ /**
+ * Sets the image of this embed
+ *
+ * @param url - The URL of the image
+ */
+ setImage(url: string | null): this;
+ /**
+ * Sets the thumbnail of this embed
+ *
+ * @param url - The URL of the thumbnail
+ */
+ setThumbnail(url: string | null): this;
+ /**
+ * Sets the timestamp of this embed
+ *
+ * @param timestamp - The timestamp or date
+ */
+ setTimestamp(timestamp?: Date | number | null): this;
+ /**
+ * Sets the title of this embed
+ *
+ * @param title - The title
+ */
+ setTitle(title: string | null): this;
+ /**
+ * Sets the URL of this embed
+ *
+ * @param url - The URL
+ */
+ setURL(url: string | null): this;
+ /**
+ * Transforms the embed to a plain object
+ */
+ toJSON(): APIEmbed;
+}
+
+/**
+ * Represents an option within a string select menu component
+ */
+declare class StringSelectMenuOptionBuilder implements JSONEncodable {
+ data: Partial;
+ /**
+ * Creates a new string select menu option from API data
+ *
+ * @param data - The API data to create this string select menu option with
+ * @example
+ * Creating a string select menu option from an API data object
+ * ```ts
+ * const selectMenuOption = new SelectMenuOptionBuilder({
+ * label: 'catchy label',
+ * value: '1',
+ * });
+ * ```
+ * @example
+ * Creating a string select menu option using setters and API data
+ * ```ts
+ * const selectMenuOption = new SelectMenuOptionBuilder({
+ * default: true,
+ * value: '1',
+ * })
+ * .setLabel('woah')
+ * ```
+ */
+ constructor(data?: Partial);
+ /**
+ * Sets the label of this option
+ *
+ * @param label - The label to show on this option
+ */
+ setLabel(label: string): this;
+ /**
+ * Sets the value of this option
+ *
+ * @param value - The value of this option
+ */
+ setValue(value: string): this;
+ /**
+ * Sets the description of this option
+ *
+ * @param description - The description of this option
+ */
+ setDescription(description: string): this;
+ /**
+ * Sets whether this option is selected by default
+ *
+ * @param isDefault - Whether this option is selected by default
+ */
+ setDefault(isDefault?: boolean): this;
+ /**
+ * Sets the emoji to display on this option
+ *
+ * @param emoji - The emoji to display on this option
+ */
+ setEmoji(emoji: APIMessageComponentEmoji): this;
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON(): APISelectMenuOption;
+}
+
+declare const customIdValidator: _sapphire_shapeshift.StringValidator;
+declare const emojiValidator: _sapphire_shapeshift.ObjectValidator<{
+ name?: string | undefined;
+ id?: string | undefined;
+ animated?: boolean | undefined;
+}, _sapphire_shapeshift.UndefinedToOptional<{
+ name?: string | undefined;
+ id?: string | undefined;
+ animated?: boolean | undefined;
+}>>;
+declare const disabledValidator: _sapphire_shapeshift.BooleanValidator;
+declare const buttonLabelValidator: _sapphire_shapeshift.StringValidator;
+declare const buttonStyleValidator: _sapphire_shapeshift.NativeEnumValidator;
+declare const placeholderValidator$1: _sapphire_shapeshift.StringValidator;
+declare const minMaxValidator: _sapphire_shapeshift.NumberValidator;
+declare const labelValueDescriptionValidator: _sapphire_shapeshift.StringValidator;
+declare const jsonOptionValidator: _sapphire_shapeshift.ObjectValidator<{
+ label: string;
+ value: string;
+ description: string | undefined;
+ emoji: _sapphire_shapeshift.UndefinedToOptional<{
+ name?: string | undefined;
+ id?: string | undefined;
+ animated?: boolean | undefined;
+ }> | undefined;
+ default: boolean | undefined;
+}, _sapphire_shapeshift.UndefinedToOptional<{
+ label: string;
+ value: string;
+ description: string | undefined;
+ emoji: _sapphire_shapeshift.UndefinedToOptional<{
+ name?: string | undefined;
+ id?: string | undefined;
+ animated?: boolean | undefined;
+ }> | undefined;
+ default: boolean | undefined;
+}>>;
+declare const optionValidator: _sapphire_shapeshift.InstanceValidator;
+declare const optionsValidator: _sapphire_shapeshift.ArrayValidator;
+declare const optionsLengthValidator: _sapphire_shapeshift.NumberValidator;
+declare function validateRequiredSelectMenuParameters(options: StringSelectMenuOptionBuilder[], customId?: string): void;
+declare const defaultValidator: _sapphire_shapeshift.BooleanValidator;
+declare function validateRequiredSelectMenuOptionParameters(label?: string, value?: string): void;
+declare const channelTypesValidator: _sapphire_shapeshift.ArrayValidator;
+declare const urlValidator: _sapphire_shapeshift.StringValidator;
+declare function validateRequiredButtonParameters(style?: ButtonStyle, label?: string, emoji?: APIMessageComponentEmoji, customId?: string, url?: string): void;
+
+declare const Assertions$4_buttonLabelValidator: typeof buttonLabelValidator;
+declare const Assertions$4_buttonStyleValidator: typeof buttonStyleValidator;
+declare const Assertions$4_channelTypesValidator: typeof channelTypesValidator;
+declare const Assertions$4_customIdValidator: typeof customIdValidator;
+declare const Assertions$4_defaultValidator: typeof defaultValidator;
+declare const Assertions$4_disabledValidator: typeof disabledValidator;
+declare const Assertions$4_emojiValidator: typeof emojiValidator;
+declare const Assertions$4_jsonOptionValidator: typeof jsonOptionValidator;
+declare const Assertions$4_labelValueDescriptionValidator: typeof labelValueDescriptionValidator;
+declare const Assertions$4_minMaxValidator: typeof minMaxValidator;
+declare const Assertions$4_optionValidator: typeof optionValidator;
+declare const Assertions$4_optionsLengthValidator: typeof optionsLengthValidator;
+declare const Assertions$4_optionsValidator: typeof optionsValidator;
+declare const Assertions$4_urlValidator: typeof urlValidator;
+declare const Assertions$4_validateRequiredButtonParameters: typeof validateRequiredButtonParameters;
+declare const Assertions$4_validateRequiredSelectMenuOptionParameters: typeof validateRequiredSelectMenuOptionParameters;
+declare const Assertions$4_validateRequiredSelectMenuParameters: typeof validateRequiredSelectMenuParameters;
+declare namespace Assertions$4 {
+ export {
+ Assertions$4_buttonLabelValidator as buttonLabelValidator,
+ Assertions$4_buttonStyleValidator as buttonStyleValidator,
+ Assertions$4_channelTypesValidator as channelTypesValidator,
+ Assertions$4_customIdValidator as customIdValidator,
+ Assertions$4_defaultValidator as defaultValidator,
+ Assertions$4_disabledValidator as disabledValidator,
+ Assertions$4_emojiValidator as emojiValidator,
+ Assertions$4_jsonOptionValidator as jsonOptionValidator,
+ Assertions$4_labelValueDescriptionValidator as labelValueDescriptionValidator,
+ Assertions$4_minMaxValidator as minMaxValidator,
+ Assertions$4_optionValidator as optionValidator,
+ Assertions$4_optionsLengthValidator as optionsLengthValidator,
+ Assertions$4_optionsValidator as optionsValidator,
+ placeholderValidator$1 as placeholderValidator,
+ Assertions$4_urlValidator as urlValidator,
+ Assertions$4_validateRequiredButtonParameters as validateRequiredButtonParameters,
+ Assertions$4_validateRequiredSelectMenuOptionParameters as validateRequiredSelectMenuOptionParameters,
+ Assertions$4_validateRequiredSelectMenuParameters as validateRequiredSelectMenuParameters,
+ };
+}
+
+type AnyAPIActionRowComponent = APIActionRowComponent | APIActionRowComponentTypes;
+/**
+ * Represents a discord component
+ *
+ * @typeParam DataType - The type of internal API data that is stored within the component
+ */
+declare abstract class ComponentBuilder> = APIBaseComponent> implements JSONEncodable {
+ /**
+ * The API data associated with this component
+ */
+ readonly data: Partial;
+ /**
+ * Serializes this component to an API-compatible JSON object
+ *
+ * @remarks
+ * This method runs validations on the data before serializing it.
+ * As such, it may throw an error if the data is invalid.
+ */
+ abstract toJSON(): AnyAPIActionRowComponent;
+ constructor(data: Partial);
+}
+
+/**
+ * Represents a button component
+ */
+declare class ButtonBuilder extends ComponentBuilder {
+ /**
+ * Creates a new button from API data
+ *
+ * @param data - The API data to create this button with
+ * @example
+ * Creating a button from an API data object
+ * ```ts
+ * const button = new ButtonBuilder({
+ * custom_id: 'a cool button',
+ * style: ButtonStyle.Primary,
+ * label: 'Click Me',
+ * emoji: {
+ * name: 'smile',
+ * id: '123456789012345678',
+ * },
+ * });
+ * ```
+ * @example
+ * Creating a button using setters and API data
+ * ```ts
+ * const button = new ButtonBuilder({
+ * style: ButtonStyle.Secondary,
+ * label: 'Click Me',
+ * })
+ * .setEmoji({ name: '🙂' })
+ * .setCustomId('another cool button');
+ * ```
+ */
+ constructor(data?: Partial);
+ /**
+ * Sets the style of this button
+ *
+ * @param style - The style of the button
+ */
+ setStyle(style: ButtonStyle): this;
+ /**
+ * Sets the URL for this button
+ *
+ * @remarks
+ * This method is only available to buttons using the `Link` button style.
+ * Only three types of URL schemes are currently supported: `https://`, `http://` and `discord://`
+ * @param url - The URL to open when this button is clicked
+ */
+ setURL(url: string): this;
+ /**
+ * Sets the custom id for this button
+ *
+ * @remarks
+ * This method is only applicable to buttons that are not using the `Link` button style.
+ * @param customId - The custom id to use for this button
+ */
+ setCustomId(customId: string): this;
+ /**
+ * Sets the emoji to display on this button
+ *
+ * @param emoji - The emoji to display on this button
+ */
+ setEmoji(emoji: APIMessageComponentEmoji): this;
+ /**
+ * Sets whether this button is disabled
+ *
+ * @param disabled - Whether to disable this button
+ */
+ setDisabled(disabled?: boolean): this;
+ /**
+ * Sets the label for this button
+ *
+ * @param label - The label to display on this button
+ */
+ setLabel(label: string): this;
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON(): APIButtonComponent;
+}
+
+declare class BaseSelectMenuBuilder extends ComponentBuilder {
+ /**
+ * Sets the placeholder for this select menu
+ *
+ * @param placeholder - The placeholder to use for this select menu
+ */
+ setPlaceholder(placeholder: string): this;
+ /**
+ * Sets the minimum values that must be selected in the select menu
+ *
+ * @param minValues - The minimum values that must be selected
+ */
+ setMinValues(minValues: number): this;
+ /**
+ * Sets the maximum values that must be selected in the select menu
+ *
+ * @param maxValues - The maximum values that must be selected
+ */
+ setMaxValues(maxValues: number): this;
+ /**
+ * Sets the custom id for this select menu
+ *
+ * @param customId - The custom id to use for this select menu
+ */
+ setCustomId(customId: string): this;
+ /**
+ * Sets whether this select menu is disabled
+ *
+ * @param disabled - Whether this select menu is disabled
+ */
+ setDisabled(disabled?: boolean): this;
+ toJSON(): SelectMenuType;
+}
+
+declare class ChannelSelectMenuBuilder extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new ChannelSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new ChannelSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .addChannelTypes(ChannelType.GuildText, ChannelType.GuildAnnouncement)
+ * .setMinValues(2)
+ * ```
+ */
+ constructor(data?: Partial);
+ addChannelTypes(...types: RestOrArray): this;
+ setChannelTypes(...types: RestOrArray): this;
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON(): APIChannelSelectComponent;
+}
+
+declare class MentionableSelectMenuBuilder extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new MentionableSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new MentionableSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * ```
+ */
+ constructor(data?: Partial);
+}
+
+declare class RoleSelectMenuBuilder extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new RoleSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new RoleSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * ```
+ */
+ constructor(data?: Partial);
+}
+
+/**
+ * Represents a string select menu component
+ */
+declare class StringSelectMenuBuilder extends BaseSelectMenuBuilder {
+ /**
+ * The options within this select menu
+ */
+ readonly options: StringSelectMenuOptionBuilder[];
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new StringSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * options: [
+ * { label: 'option 1', value: '1' },
+ * { label: 'option 2', value: '2' },
+ * { label: 'option 3', value: '3' },
+ * ],
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new StringSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * .addOptions({
+ * label: 'Catchy',
+ * value: 'catch',
+ * });
+ * ```
+ */
+ constructor(data?: Partial);
+ /**
+ * Adds options to this select menu
+ *
+ * @param options - The options to add to this select menu
+ * @returns
+ */
+ addOptions(...options: RestOrArray): this;
+ /**
+ * Sets the options on this select menu
+ *
+ * @param options - The options to set on this select menu
+ */
+ setOptions(...options: RestOrArray): this;
+ /**
+ * Removes, replaces, or inserts options in the string select menu.
+ *
+ * @remarks
+ * This method behaves similarly
+ * to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice | Array.prototype.splice}.
+ *
+ * It's useful for modifying and adjusting order of the already-existing options of a string select menu.
+ * @example
+ * Remove the first option
+ * ```ts
+ * selectMenu.spliceOptions(0, 1);
+ * ```
+ * @example
+ * Remove the first n option
+ * ```ts
+ * const n = 4
+ * selectMenu.spliceOptions(0, n);
+ * ```
+ * @example
+ * Remove the last option
+ * ```ts
+ * selectMenu.spliceOptions(-1, 1);
+ * ```
+ * @param index - The index to start at
+ * @param deleteCount - The number of options to remove
+ * @param options - The replacing option objects or builders
+ */
+ spliceOptions(index: number, deleteCount: number, ...options: RestOrArray): this;
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON(): APIStringSelectComponent;
+}
+
+declare class UserSelectMenuBuilder extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new UserSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new UserSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * ```
+ */
+ constructor(data?: Partial);
+}
+
+declare class TextInputBuilder extends ComponentBuilder implements Equatable> {
+ /**
+ * Creates a new text input from API data
+ *
+ * @param data - The API data to create this text input with
+ * @example
+ * Creating a select menu option from an API data object
+ * ```ts
+ * const textInput = new TextInputBuilder({
+ * custom_id: 'a cool select menu',
+ * label: 'Type something',
+ * style: TextInputStyle.Short,
+ * });
+ * ```
+ * @example
+ * Creating a select menu option using setters and API data
+ * ```ts
+ * const textInput = new TextInputBuilder({
+ * label: 'Type something else',
+ * })
+ * .setCustomId('woah')
+ * .setStyle(TextInputStyle.Paragraph);
+ * ```
+ */
+ constructor(data?: APITextInputComponent & {
+ type?: ComponentType.TextInput;
+ });
+ /**
+ * Sets the custom id for this text input
+ *
+ * @param customId - The custom id of this text input
+ */
+ setCustomId(customId: string): this;
+ /**
+ * Sets the label for this text input
+ *
+ * @param label - The label for this text input
+ */
+ setLabel(label: string): this;
+ /**
+ * Sets the style for this text input
+ *
+ * @param style - The style for this text input
+ */
+ setStyle(style: TextInputStyle): this;
+ /**
+ * Sets the minimum length of text for this text input
+ *
+ * @param minLength - The minimum length of text for this text input
+ */
+ setMinLength(minLength: number): this;
+ /**
+ * Sets the maximum length of text for this text input
+ *
+ * @param maxLength - The maximum length of text for this text input
+ */
+ setMaxLength(maxLength: number): this;
+ /**
+ * Sets the placeholder of this text input
+ *
+ * @param placeholder - The placeholder of this text input
+ */
+ setPlaceholder(placeholder: string): this;
+ /**
+ * Sets the value of this text input
+ *
+ * @param value - The value for this text input
+ */
+ setValue(value: string): this;
+ /**
+ * Sets whether this text input is required
+ *
+ * @param required - Whether this text input is required
+ */
+ setRequired(required?: boolean): this;
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON(): APITextInputComponent;
+ /**
+ * {@inheritDoc Equatable.equals}
+ */
+ equals(other: APITextInputComponent | JSONEncodable): boolean;
+}
+
+type MessageComponentBuilder = ActionRowBuilder | MessageActionRowComponentBuilder;
+type ModalComponentBuilder = ActionRowBuilder | ModalActionRowComponentBuilder;
+type MessageActionRowComponentBuilder = ButtonBuilder | ChannelSelectMenuBuilder | MentionableSelectMenuBuilder | RoleSelectMenuBuilder | StringSelectMenuBuilder | UserSelectMenuBuilder;
+type ModalActionRowComponentBuilder = TextInputBuilder;
+type AnyComponentBuilder = MessageActionRowComponentBuilder | ModalActionRowComponentBuilder;
+/**
+ * Represents an action row component
+ *
+ * @typeParam T - The types of components this action row holds
+ */
+declare class ActionRowBuilder extends ComponentBuilder> {
+ /**
+ * The components within this action row
+ */
+ readonly components: T[];
+ /**
+ * Creates a new action row from API data
+ *
+ * @param data - The API data to create this action row with
+ * @example
+ * Creating an action row from an API data object
+ * ```ts
+ * const actionRow = new ActionRowBuilder({
+ * components: [
+ * {
+ * custom_id: "custom id",
+ * label: "Type something",
+ * style: TextInputStyle.Short,
+ * type: ComponentType.TextInput,
+ * },
+ * ],
+ * });
+ * ```
+ * @example
+ * Creating an action row using setters and API data
+ * ```ts
+ * const actionRow = new ActionRowBuilder({
+ * components: [
+ * {
+ * custom_id: "custom id",
+ * label: "Click me",
+ * style: ButtonStyle.Primary,
+ * type: ComponentType.Button,
+ * },
+ * ],
+ * })
+ * .addComponents(button2, button3);
+ * ```
+ */
+ constructor({ components, ...data }?: Partial>);
+ /**
+ * Adds components to this action row.
+ *
+ * @param components - The components to add to this action row.
+ */
+ addComponents(...components: RestOrArray): this;
+ /**
+ * Sets the components in this action row
+ *
+ * @param components - The components to set this row to
+ */
+ setComponents(...components: RestOrArray): this;
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON(): APIActionRowComponent>;
+}
+
+interface MappedComponentTypes {
+ [ComponentType.ActionRow]: ActionRowBuilder;
+ [ComponentType.Button]: ButtonBuilder;
+ [ComponentType.StringSelect]: StringSelectMenuBuilder;
+ [ComponentType.TextInput]: TextInputBuilder;
+ [ComponentType.UserSelect]: UserSelectMenuBuilder;
+ [ComponentType.RoleSelect]: RoleSelectMenuBuilder;
+ [ComponentType.MentionableSelect]: MentionableSelectMenuBuilder;
+ [ComponentType.ChannelSelect]: ChannelSelectMenuBuilder;
+}
+/**
+ * Factory for creating components from API data
+ *
+ * @param data - The api data to transform to a component class
+ */
+declare function createComponentBuilder(data: (APIModalComponent | APIMessageComponent) & {
+ type: T;
+}): MappedComponentTypes[T];
+declare function createComponentBuilder(data: C): C;
+
+declare const textInputStyleValidator: _sapphire_shapeshift.NativeEnumValidator;
+declare const minLengthValidator: _sapphire_shapeshift.NumberValidator;
+declare const maxLengthValidator: _sapphire_shapeshift.NumberValidator;
+declare const requiredValidator: _sapphire_shapeshift.BooleanValidator;
+declare const valueValidator: _sapphire_shapeshift.StringValidator;
+declare const placeholderValidator: _sapphire_shapeshift.StringValidator;
+declare const labelValidator: _sapphire_shapeshift.StringValidator;
+declare function validateRequiredParameters$3(customId?: string, style?: TextInputStyle, label?: string): void;
+
+declare const Assertions$3_labelValidator: typeof labelValidator;
+declare const Assertions$3_maxLengthValidator: typeof maxLengthValidator;
+declare const Assertions$3_minLengthValidator: typeof minLengthValidator;
+declare const Assertions$3_placeholderValidator: typeof placeholderValidator;
+declare const Assertions$3_requiredValidator: typeof requiredValidator;
+declare const Assertions$3_textInputStyleValidator: typeof textInputStyleValidator;
+declare const Assertions$3_valueValidator: typeof valueValidator;
+declare namespace Assertions$3 {
+ export {
+ Assertions$3_labelValidator as labelValidator,
+ Assertions$3_maxLengthValidator as maxLengthValidator,
+ Assertions$3_minLengthValidator as minLengthValidator,
+ Assertions$3_placeholderValidator as placeholderValidator,
+ Assertions$3_requiredValidator as requiredValidator,
+ Assertions$3_textInputStyleValidator as textInputStyleValidator,
+ validateRequiredParameters$3 as validateRequiredParameters,
+ Assertions$3_valueValidator as valueValidator,
+ };
+}
+
+declare class ModalBuilder implements JSONEncodable {
+ readonly data: Partial;
+ readonly components: ActionRowBuilder[];
+ constructor({ components, ...data }?: Partial);
+ /**
+ * Sets the title of the modal
+ *
+ * @param title - The title of the modal
+ */
+ setTitle(title: string): this;
+ /**
+ * Sets the custom id of the modal
+ *
+ * @param customId - The custom id of this modal
+ */
+ setCustomId(customId: string): this;
+ /**
+ * Adds components to this modal
+ *
+ * @param components - The components to add to this modal
+ */
+ addComponents(...components: RestOrArray | APIActionRowComponent>): this;
+ /**
+ * Sets the components in this modal
+ *
+ * @param components - The components to set this modal to
+ */
+ setComponents(...components: RestOrArray>): this;
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON(): APIModalInteractionResponseCallbackData;
+}
+
+declare const titleValidator: _sapphire_shapeshift.StringValidator;
+declare const componentsValidator: _sapphire_shapeshift.ArrayValidator<[ActionRowBuilder, ...ActionRowBuilder[]], ActionRowBuilder>;
+declare function validateRequiredParameters$2(customId?: string, title?: string, components?: ActionRowBuilder[]): void;
+
+declare const Assertions$2_componentsValidator: typeof componentsValidator;
+declare const Assertions$2_titleValidator: typeof titleValidator;
+declare namespace Assertions$2 {
+ export {
+ Assertions$2_componentsValidator as componentsValidator,
+ Assertions$2_titleValidator as titleValidator,
+ validateRequiredParameters$2 as validateRequiredParameters,
+ };
+}
+
+declare class SharedNameAndDescription {
+ readonly name: string;
+ readonly name_localizations?: LocalizationMap;
+ readonly description: string;
+ readonly description_localizations?: LocalizationMap;
+ /**
+ * Sets the name
+ *
+ * @param name - The name
+ */
+ setName(name: string): this;
+ /**
+ * Sets the description
+ *
+ * @param description - The description
+ */
+ setDescription(description: string): this;
+ /**
+ * Sets a name localization
+ *
+ * @param locale - The locale to set a description for
+ * @param localizedName - The localized description for the given locale
+ */
+ setNameLocalization(locale: LocaleString, localizedName: string | null): this;
+ /**
+ * Sets the name localizations
+ *
+ * @param localizedNames - The dictionary of localized descriptions to set
+ */
+ setNameLocalizations(localizedNames: LocalizationMap | null): this;
+ /**
+ * Sets a description localization
+ *
+ * @param locale - The locale to set a description for
+ * @param localizedDescription - The localized description for the given locale
+ */
+ setDescriptionLocalization(locale: LocaleString, localizedDescription: string | null): this;
+ /**
+ * Sets the description localizations
+ *
+ * @param localizedDescriptions - The dictionary of localized descriptions to set
+ */
+ setDescriptionLocalizations(localizedDescriptions: LocalizationMap | null): this;
+}
+
+declare abstract class ApplicationCommandOptionBase extends SharedNameAndDescription {
+ abstract readonly type: ApplicationCommandOptionType;
+ readonly required: boolean;
+ /**
+ * Marks the option as required
+ *
+ * @param required - If this option should be required
+ */
+ setRequired(required: boolean): this;
+ abstract toJSON(): APIApplicationCommandBasicOption;
+ protected runRequiredValidations(): void;
+}
+
+declare class SlashCommandAttachmentOption extends ApplicationCommandOptionBase {
+ readonly type: ApplicationCommandOptionType.Attachment;
+ toJSON(): APIApplicationCommandAttachmentOption;
+}
+
+declare class SlashCommandBooleanOption extends ApplicationCommandOptionBase {
+ readonly type: ApplicationCommandOptionType.Boolean;
+ toJSON(): APIApplicationCommandBooleanOption;
+}
+
+declare const allowedChannelTypes: readonly [ChannelType.GuildText, ChannelType.GuildVoice, ChannelType.GuildCategory, ChannelType.GuildAnnouncement, ChannelType.AnnouncementThread, ChannelType.PublicThread, ChannelType.PrivateThread, ChannelType.GuildStageVoice, ChannelType.GuildForum];
+type ApplicationCommandOptionAllowedChannelTypes = (typeof allowedChannelTypes)[number];
+declare class ApplicationCommandOptionChannelTypesMixin {
+ readonly channel_types?: ApplicationCommandOptionAllowedChannelTypes[];
+ /**
+ * Adds channel types to this option
+ *
+ * @param channelTypes - The channel types to add
+ */
+ addChannelTypes(...channelTypes: ApplicationCommandOptionAllowedChannelTypes[]): this;
+}
+
+declare class SlashCommandChannelOption extends ApplicationCommandOptionBase {
+ readonly type: ApplicationCommandOptionType.Channel;
+ toJSON(): APIApplicationCommandChannelOption;
+}
+interface SlashCommandChannelOption extends ApplicationCommandOptionChannelTypesMixin {
+}
+
+declare abstract class ApplicationCommandNumericOptionMinMaxValueMixin {
+ readonly max_value?: number;
+ readonly min_value?: number;
+ /**
+ * Sets the maximum number value of this option
+ *
+ * @param max - The maximum value this option can be
+ */
+ abstract setMaxValue(max: number): this;
+ /**
+ * Sets the minimum number value of this option
+ *
+ * @param min - The minimum value this option can be
+ */
+ abstract setMinValue(min: number): this;
+}
+
+declare class ApplicationCommandOptionWithChoicesAndAutocompleteMixin {
+ readonly choices?: APIApplicationCommandOptionChoice[];
+ readonly autocomplete?: boolean;
+ readonly type: ApplicationCommandOptionType;
+ /**
+ * Adds multiple choices for this option
+ *
+ * @param choices - The choices to add
+ */
+ addChoices(...choices: APIApplicationCommandOptionChoice[]): this;
+ setChoices[]>(...choices: Input): this;
+ /**
+ * Marks the option as autocompletable
+ *
+ * @param autocomplete - If this option should be autocompletable
+ */
+ setAutocomplete(autocomplete: boolean): this;
+}
+
+declare class SlashCommandIntegerOption extends ApplicationCommandOptionBase implements ApplicationCommandNumericOptionMinMaxValueMixin {
+ readonly type: ApplicationCommandOptionType.Integer;
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}
+ */
+ setMaxValue(max: number): this;
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMinValue}
+ */
+ setMinValue(min: number): this;
+ toJSON(): APIApplicationCommandIntegerOption;
+}
+interface SlashCommandIntegerOption extends ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin {
+}
+
+declare class SlashCommandMentionableOption extends ApplicationCommandOptionBase {
+ readonly type: ApplicationCommandOptionType.Mentionable;
+ toJSON(): APIApplicationCommandMentionableOption;
+}
+
+declare class SlashCommandNumberOption extends ApplicationCommandOptionBase implements ApplicationCommandNumericOptionMinMaxValueMixin {
+ readonly type: ApplicationCommandOptionType.Number;
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}
+ */
+ setMaxValue(max: number): this;
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMinValue}
+ */
+ setMinValue(min: number): this;
+ toJSON(): APIApplicationCommandNumberOption;
+}
+interface SlashCommandNumberOption extends ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin {
+}
+
+declare class SlashCommandRoleOption extends ApplicationCommandOptionBase {
+ readonly type: ApplicationCommandOptionType.Role;
+ toJSON(): APIApplicationCommandRoleOption;
+}
+
+declare class SlashCommandStringOption extends ApplicationCommandOptionBase {
+ readonly type: ApplicationCommandOptionType.String;
+ readonly max_length?: number;
+ readonly min_length?: number;
+ /**
+ * Sets the maximum length of this string option.
+ *
+ * @param max - The maximum length this option can be
+ */
+ setMaxLength(max: number): this;
+ /**
+ * Sets the minimum length of this string option.
+ *
+ * @param min - The minimum length this option can be
+ */
+ setMinLength(min: number): this;
+ toJSON(): APIApplicationCommandStringOption;
+}
+interface SlashCommandStringOption extends ApplicationCommandOptionWithChoicesAndAutocompleteMixin {
+}
+
+declare class SlashCommandUserOption extends ApplicationCommandOptionBase {
+ readonly type: ApplicationCommandOptionType.User;
+ toJSON(): APIApplicationCommandUserOption;
+}
+
+declare class SharedSlashCommandOptions {
+ readonly options: ToAPIApplicationCommandOptions[];
+ /**
+ * Adds a boolean option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addBooleanOption(input: SlashCommandBooleanOption | ((builder: SlashCommandBooleanOption) => SlashCommandBooleanOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this;
+ /**
+ * Adds a user option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addUserOption(input: SlashCommandUserOption | ((builder: SlashCommandUserOption) => SlashCommandUserOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this;
+ /**
+ * Adds a channel option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addChannelOption(input: SlashCommandChannelOption | ((builder: SlashCommandChannelOption) => SlashCommandChannelOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this;
+ /**
+ * Adds a role option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addRoleOption(input: SlashCommandRoleOption | ((builder: SlashCommandRoleOption) => SlashCommandRoleOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this;
+ /**
+ * Adds an attachment option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addAttachmentOption(input: SlashCommandAttachmentOption | ((builder: SlashCommandAttachmentOption) => SlashCommandAttachmentOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this;
+ /**
+ * Adds a mentionable option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addMentionableOption(input: SlashCommandMentionableOption | ((builder: SlashCommandMentionableOption) => SlashCommandMentionableOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this;
+ /**
+ * Adds a string option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addStringOption(input: Omit | Omit | SlashCommandStringOption | ((builder: SlashCommandStringOption) => Omit | Omit | SlashCommandStringOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this;
+ /**
+ * Adds an integer option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addIntegerOption(input: Omit | Omit | SlashCommandIntegerOption | ((builder: SlashCommandIntegerOption) => Omit | Omit | SlashCommandIntegerOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this;
+ /**
+ * Adds a number option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addNumberOption(input: Omit | Omit | SlashCommandNumberOption | ((builder: SlashCommandNumberOption) => Omit | Omit | SlashCommandNumberOption)): ShouldOmitSubcommandFunctions extends true ? Omit : this;
+ private _sharedAddOptionMethod;
+}
+
+/**
+ * Represents a folder for subcommands
+ *
+ * For more information, go to https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups
+ */
+declare class SlashCommandSubcommandGroupBuilder implements ToAPIApplicationCommandOptions {
+ /**
+ * The name of this subcommand group
+ */
+ readonly name: string;
+ /**
+ * The description of this subcommand group
+ */
+ readonly description: string;
+ /**
+ * The subcommands part of this subcommand group
+ */
+ readonly options: SlashCommandSubcommandBuilder[];
+ /**
+ * Adds a new subcommand to this group
+ *
+ * @param input - A function that returns a subcommand builder, or an already built builder
+ */
+ addSubcommand(input: SlashCommandSubcommandBuilder | ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder)): this;
+ toJSON(): APIApplicationCommandSubcommandGroupOption;
+}
+interface SlashCommandSubcommandGroupBuilder extends SharedNameAndDescription {
+}
+/**
+ * Represents a subcommand
+ *
+ * For more information, go to https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups
+ */
+declare class SlashCommandSubcommandBuilder implements ToAPIApplicationCommandOptions {
+ /**
+ * The name of this subcommand
+ */
+ readonly name: string;
+ /**
+ * The description of this subcommand
+ */
+ readonly description: string;
+ /**
+ * The options of this subcommand
+ */
+ readonly options: ApplicationCommandOptionBase[];
+ toJSON(): APIApplicationCommandSubcommandOption;
+}
+interface SlashCommandSubcommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {
+}
+
+declare class SlashCommandBuilder {
+ /**
+ * The name of this slash command
+ */
+ readonly name: string;
+ /**
+ * The localized names for this command
+ */
+ readonly name_localizations?: LocalizationMap;
+ /**
+ * The description of this slash command
+ */
+ readonly description: string;
+ /**
+ * The localized descriptions for this command
+ */
+ readonly description_localizations?: LocalizationMap;
+ /**
+ * The options of this slash command
+ */
+ readonly options: ToAPIApplicationCommandOptions[];
+ /**
+ * Whether the command is enabled by default when the app is added to a guild
+ *
+ * @deprecated This property is deprecated and will be removed in the future.
+ * You should use {@link (SlashCommandBuilder:class).setDefaultMemberPermissions} or {@link (SlashCommandBuilder:class).setDMPermission} instead.
+ */
+ readonly default_permission: boolean | undefined;
+ /**
+ * Set of permissions represented as a bit set for the command
+ */
+ readonly default_member_permissions: Permissions | null | undefined;
+ /**
+ * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ */
+ readonly dm_permission: boolean | undefined;
+ /**
+ * Whether this command is NSFW
+ */
+ readonly nsfw: boolean | undefined;
+ /**
+ * Returns the final data that should be sent to Discord.
+ *
+ * @remarks
+ * This method runs validations on the data before serializing it.
+ * As such, it may throw an error if the data is invalid.
+ */
+ toJSON(): RESTPostAPIChatInputApplicationCommandsJSONBody;
+ /**
+ * Sets whether the command is enabled by default when the application is added to a guild.
+ *
+ * @remarks
+ * If set to `false`, you will have to later `PUT` the permissions for this command.
+ * @param value - Whether or not to enable this command by default
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ * @deprecated Use {@link (SlashCommandBuilder:class).setDefaultMemberPermissions} or {@link (SlashCommandBuilder:class).setDMPermission} instead.
+ */
+ setDefaultPermission(value: boolean): this;
+ /**
+ * Sets the default permissions a member should have in order to run the command.
+ *
+ * @remarks
+ * You can set this to `'0'` to disable the command by default.
+ * @param permissions - The permissions bit field to set
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined): this;
+ /**
+ * Sets if the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ *
+ * @param enabled - If the command should be enabled in DMs
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDMPermission(enabled: boolean | null | undefined): this;
+ /**
+ * Sets whether this command is NSFW
+ *
+ * @param nsfw - Whether this command is NSFW
+ */
+ setNSFW(nsfw?: boolean): this;
+ /**
+ * Adds a new subcommand group to this command
+ *
+ * @param input - A function that returns a subcommand group builder, or an already built builder
+ */
+ addSubcommandGroup(input: SlashCommandSubcommandGroupBuilder | ((subcommandGroup: SlashCommandSubcommandGroupBuilder) => SlashCommandSubcommandGroupBuilder)): SlashCommandSubcommandsOnlyBuilder;
+ /**
+ * Adds a new subcommand to this command
+ *
+ * @param input - A function that returns a subcommand builder, or an already built builder
+ */
+ addSubcommand(input: SlashCommandSubcommandBuilder | ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder)): SlashCommandSubcommandsOnlyBuilder;
+}
+interface SlashCommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {
+}
+interface SlashCommandSubcommandsOnlyBuilder extends Omit> {
+}
+interface SlashCommandOptionsOnlyBuilder extends SharedNameAndDescription, SharedSlashCommandOptions, Pick {
+}
+interface ToAPIApplicationCommandOptions {
+ toJSON(): APIApplicationCommandOption;
+}
+
+declare function validateName$1(name: unknown): asserts name is string;
+declare function validateDescription(description: unknown): asserts description is string;
+declare function validateLocale(locale: unknown): Locale;
+declare function validateMaxOptionsLength(options: unknown): asserts options is ToAPIApplicationCommandOptions[];
+declare function validateRequiredParameters$1(name: string, description: string, options: ToAPIApplicationCommandOptions[]): void;
+declare function validateDefaultPermission$1(value: unknown): asserts value is boolean;
+declare function validateRequired(required: unknown): asserts required is boolean;
+declare function validateChoicesLength(amountAdding: number, choices?: APIApplicationCommandOptionChoice[]): void;
+declare function assertReturnOfBuilder(input: unknown, ExpectedInstanceOf: new () => T): asserts input is T;
+declare const localizationMapPredicate: _sapphire_shapeshift.UnionValidator<_sapphire_shapeshift.UndefinedToOptional>> | null | undefined>;
+declare function validateLocalizationMap(value: unknown): asserts value is LocalizationMap;
+declare function validateDMPermission$1(value: unknown): asserts value is boolean | null | undefined;
+declare function validateDefaultMemberPermissions$1(permissions: unknown): string | null | undefined;
+declare function validateNSFW(value: unknown): asserts value is boolean;
+
+declare const Assertions$1_assertReturnOfBuilder: typeof assertReturnOfBuilder;
+declare const Assertions$1_localizationMapPredicate: typeof localizationMapPredicate;
+declare const Assertions$1_validateChoicesLength: typeof validateChoicesLength;
+declare const Assertions$1_validateDescription: typeof validateDescription;
+declare const Assertions$1_validateLocale: typeof validateLocale;
+declare const Assertions$1_validateLocalizationMap: typeof validateLocalizationMap;
+declare const Assertions$1_validateMaxOptionsLength: typeof validateMaxOptionsLength;
+declare const Assertions$1_validateNSFW: typeof validateNSFW;
+declare const Assertions$1_validateRequired: typeof validateRequired;
+declare namespace Assertions$1 {
+ export {
+ Assertions$1_assertReturnOfBuilder as assertReturnOfBuilder,
+ Assertions$1_localizationMapPredicate as localizationMapPredicate,
+ Assertions$1_validateChoicesLength as validateChoicesLength,
+ validateDMPermission$1 as validateDMPermission,
+ validateDefaultMemberPermissions$1 as validateDefaultMemberPermissions,
+ validateDefaultPermission$1 as validateDefaultPermission,
+ Assertions$1_validateDescription as validateDescription,
+ Assertions$1_validateLocale as validateLocale,
+ Assertions$1_validateLocalizationMap as validateLocalizationMap,
+ Assertions$1_validateMaxOptionsLength as validateMaxOptionsLength,
+ Assertions$1_validateNSFW as validateNSFW,
+ validateName$1 as validateName,
+ Assertions$1_validateRequired as validateRequired,
+ validateRequiredParameters$1 as validateRequiredParameters,
+ };
+}
+
+declare class ContextMenuCommandBuilder {
+ /**
+ * The name of this context menu command
+ */
+ readonly name: string;
+ /**
+ * The localized names for this command
+ */
+ readonly name_localizations?: LocalizationMap;
+ /**
+ * The type of this context menu command
+ */
+ readonly type: ContextMenuCommandType;
+ /**
+ * Whether the command is enabled by default when the app is added to a guild
+ *
+ * @deprecated This property is deprecated and will be removed in the future.
+ * You should use {@link ContextMenuCommandBuilder.setDefaultMemberPermissions} or {@link ContextMenuCommandBuilder.setDMPermission} instead.
+ */
+ readonly default_permission: boolean | undefined;
+ /**
+ * Set of permissions represented as a bit set for the command
+ */
+ readonly default_member_permissions: Permissions | null | undefined;
+ /**
+ * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ */
+ readonly dm_permission: boolean | undefined;
+ /**
+ * Sets the name
+ *
+ * @param name - The name
+ */
+ setName(name: string): this;
+ /**
+ * Sets the type
+ *
+ * @param type - The type
+ */
+ setType(type: ContextMenuCommandType): this;
+ /**
+ * Sets whether the command is enabled by default when the application is added to a guild.
+ *
+ * @remarks
+ * If set to `false`, you will have to later `PUT` the permissions for this command.
+ * @param value - Whether or not to enable this command by default
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ * @deprecated Use {@link ContextMenuCommandBuilder.setDefaultMemberPermissions} or {@link ContextMenuCommandBuilder.setDMPermission} instead.
+ */
+ setDefaultPermission(value: boolean): this;
+ /**
+ * Sets the default permissions a member should have in order to run the command.
+ *
+ * @remarks
+ * You can set this to `'0'` to disable the command by default.
+ * @param permissions - The permissions bit field to set
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined): this;
+ /**
+ * Sets if the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ *
+ * @param enabled - If the command should be enabled in DMs
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDMPermission(enabled: boolean | null | undefined): this;
+ /**
+ * Sets a name localization
+ *
+ * @param locale - The locale to set a description for
+ * @param localizedName - The localized description for the given locale
+ */
+ setNameLocalization(locale: LocaleString, localizedName: string | null): this;
+ /**
+ * Sets the name localizations
+ *
+ * @param localizedNames - The dictionary of localized descriptions to set
+ */
+ setNameLocalizations(localizedNames: LocalizationMap | null): this;
+ /**
+ * Returns the final data that should be sent to Discord.
+ *
+ * @remarks
+ * This method runs validations on the data before serializing it.
+ * As such, it may throw an error if the data is invalid.
+ */
+ toJSON(): RESTPostAPIContextMenuApplicationCommandsJSONBody;
+}
+type ContextMenuCommandType = ApplicationCommandType.Message | ApplicationCommandType.User;
+
+declare function validateDefaultPermission(value: unknown): asserts value is boolean;
+declare function validateName(name: unknown): asserts name is string;
+declare function validateType(type: unknown): asserts type is ContextMenuCommandType;
+declare function validateRequiredParameters(name: string, type: number): void;
+declare function validateDMPermission(value: unknown): asserts value is boolean | null | undefined;
+declare function validateDefaultMemberPermissions(permissions: unknown): string | null | undefined;
+
+declare const Assertions_validateDMPermission: typeof validateDMPermission;
+declare const Assertions_validateDefaultMemberPermissions: typeof validateDefaultMemberPermissions;
+declare const Assertions_validateDefaultPermission: typeof validateDefaultPermission;
+declare const Assertions_validateName: typeof validateName;
+declare const Assertions_validateRequiredParameters: typeof validateRequiredParameters;
+declare const Assertions_validateType: typeof validateType;
+declare namespace Assertions {
+ export {
+ Assertions_validateDMPermission as validateDMPermission,
+ Assertions_validateDefaultMemberPermissions as validateDefaultMemberPermissions,
+ Assertions_validateDefaultPermission as validateDefaultPermission,
+ Assertions_validateName as validateName,
+ Assertions_validateRequiredParameters as validateRequiredParameters,
+ Assertions_validateType as validateType,
+ };
+}
+
+declare function embedLength(data: APIEmbed): number;
+
+declare const enableValidators: () => boolean;
+declare const disableValidators: () => boolean;
+declare const isValidationEnabled: () => boolean;
+
+/**
+ * The {@link https://github.com/discordjs/discord.js/blob/main/packages/builders/#readme | @discordjs/builders} version
+ * that you are currently using.
+ */
+declare const version: string;
+
+export { ActionRowBuilder, AnyAPIActionRowComponent, AnyComponentBuilder, ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionAllowedChannelTypes, ApplicationCommandOptionBase, ApplicationCommandOptionChannelTypesMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin, BaseSelectMenuBuilder, ButtonBuilder, ChannelSelectMenuBuilder, Assertions$4 as ComponentAssertions, ComponentBuilder, Assertions as ContextMenuCommandAssertions, ContextMenuCommandBuilder, ContextMenuCommandType, Assertions$5 as EmbedAssertions, EmbedAuthorData, EmbedAuthorOptions, EmbedBuilder, EmbedFooterData, EmbedFooterOptions, EmbedImageData, IconData, MappedComponentTypes, MentionableSelectMenuBuilder, MessageActionRowComponentBuilder, MessageComponentBuilder, ModalActionRowComponentBuilder, Assertions$2 as ModalAssertions, ModalBuilder, ModalComponentBuilder, RGBTuple, RestOrArray, RoleSelectMenuBuilder, StringSelectMenuBuilder as SelectMenuBuilder, StringSelectMenuOptionBuilder as SelectMenuOptionBuilder, SharedNameAndDescription, SharedSlashCommandOptions, Assertions$1 as SlashCommandAssertions, SlashCommandAttachmentOption, SlashCommandBooleanOption, SlashCommandBuilder, SlashCommandChannelOption, SlashCommandIntegerOption, SlashCommandMentionableOption, SlashCommandNumberOption, SlashCommandOptionsOnlyBuilder, SlashCommandRoleOption, SlashCommandStringOption, SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder, SlashCommandSubcommandsOnlyBuilder, SlashCommandUserOption, StringSelectMenuBuilder, StringSelectMenuOptionBuilder, Assertions$3 as TextInputAssertions, TextInputBuilder, ToAPIApplicationCommandOptions, UserSelectMenuBuilder, createComponentBuilder, disableValidators, embedLength, enableValidators, isValidationEnabled, normalizeArray, version };
diff --git a/node_modules/@discordjs/builders/dist/index.js b/node_modules/@discordjs/builders/dist/index.js
new file mode 100644
index 0000000..992fe9f
--- /dev/null
+++ b/node_modules/@discordjs/builders/dist/index.js
@@ -0,0 +1,2446 @@
+"use strict";
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
+var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
+));
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+
+// src/index.ts
+var src_exports = {};
+__export(src_exports, {
+ ActionRowBuilder: () => ActionRowBuilder,
+ ApplicationCommandNumericOptionMinMaxValueMixin: () => ApplicationCommandNumericOptionMinMaxValueMixin,
+ ApplicationCommandOptionBase: () => ApplicationCommandOptionBase,
+ ApplicationCommandOptionChannelTypesMixin: () => ApplicationCommandOptionChannelTypesMixin,
+ ApplicationCommandOptionWithChoicesAndAutocompleteMixin: () => ApplicationCommandOptionWithChoicesAndAutocompleteMixin,
+ BaseSelectMenuBuilder: () => BaseSelectMenuBuilder,
+ ButtonBuilder: () => ButtonBuilder,
+ ChannelSelectMenuBuilder: () => ChannelSelectMenuBuilder,
+ ComponentAssertions: () => Assertions_exports2,
+ ComponentBuilder: () => ComponentBuilder,
+ ContextMenuCommandAssertions: () => Assertions_exports6,
+ ContextMenuCommandBuilder: () => ContextMenuCommandBuilder,
+ EmbedAssertions: () => Assertions_exports,
+ EmbedBuilder: () => EmbedBuilder,
+ MentionableSelectMenuBuilder: () => MentionableSelectMenuBuilder,
+ ModalAssertions: () => Assertions_exports4,
+ ModalBuilder: () => ModalBuilder,
+ RoleSelectMenuBuilder: () => RoleSelectMenuBuilder,
+ SelectMenuBuilder: () => StringSelectMenuBuilder,
+ SelectMenuOptionBuilder: () => StringSelectMenuOptionBuilder,
+ SharedNameAndDescription: () => SharedNameAndDescription,
+ SharedSlashCommandOptions: () => SharedSlashCommandOptions,
+ SlashCommandAssertions: () => Assertions_exports5,
+ SlashCommandAttachmentOption: () => SlashCommandAttachmentOption,
+ SlashCommandBooleanOption: () => SlashCommandBooleanOption,
+ SlashCommandBuilder: () => SlashCommandBuilder,
+ SlashCommandChannelOption: () => SlashCommandChannelOption,
+ SlashCommandIntegerOption: () => SlashCommandIntegerOption,
+ SlashCommandMentionableOption: () => SlashCommandMentionableOption,
+ SlashCommandNumberOption: () => SlashCommandNumberOption,
+ SlashCommandRoleOption: () => SlashCommandRoleOption,
+ SlashCommandStringOption: () => SlashCommandStringOption,
+ SlashCommandSubcommandBuilder: () => SlashCommandSubcommandBuilder,
+ SlashCommandSubcommandGroupBuilder: () => SlashCommandSubcommandGroupBuilder,
+ SlashCommandUserOption: () => SlashCommandUserOption,
+ StringSelectMenuBuilder: () => StringSelectMenuBuilder,
+ StringSelectMenuOptionBuilder: () => StringSelectMenuOptionBuilder,
+ TextInputAssertions: () => Assertions_exports3,
+ TextInputBuilder: () => TextInputBuilder,
+ UserSelectMenuBuilder: () => UserSelectMenuBuilder,
+ createComponentBuilder: () => createComponentBuilder,
+ disableValidators: () => disableValidators,
+ embedLength: () => embedLength,
+ enableValidators: () => enableValidators,
+ isValidationEnabled: () => isValidationEnabled,
+ normalizeArray: () => normalizeArray,
+ version: () => version
+});
+module.exports = __toCommonJS(src_exports);
+
+// src/messages/embed/Assertions.ts
+var Assertions_exports = {};
+__export(Assertions_exports, {
+ RGBPredicate: () => RGBPredicate,
+ authorNamePredicate: () => authorNamePredicate,
+ colorPredicate: () => colorPredicate,
+ descriptionPredicate: () => descriptionPredicate,
+ embedAuthorPredicate: () => embedAuthorPredicate,
+ embedFieldPredicate: () => embedFieldPredicate,
+ embedFieldsArrayPredicate: () => embedFieldsArrayPredicate,
+ embedFooterPredicate: () => embedFooterPredicate,
+ fieldInlinePredicate: () => fieldInlinePredicate,
+ fieldLengthPredicate: () => fieldLengthPredicate,
+ fieldNamePredicate: () => fieldNamePredicate,
+ fieldValuePredicate: () => fieldValuePredicate,
+ footerTextPredicate: () => footerTextPredicate,
+ imageURLPredicate: () => imageURLPredicate,
+ timestampPredicate: () => timestampPredicate,
+ titlePredicate: () => titlePredicate,
+ urlPredicate: () => urlPredicate,
+ validateFieldLength: () => validateFieldLength
+});
+var import_shapeshift = require("@sapphire/shapeshift");
+
+// src/util/validation.ts
+var validate = true;
+var enableValidators = /* @__PURE__ */ __name(() => validate = true, "enableValidators");
+var disableValidators = /* @__PURE__ */ __name(() => validate = false, "disableValidators");
+var isValidationEnabled = /* @__PURE__ */ __name(() => validate, "isValidationEnabled");
+
+// src/messages/embed/Assertions.ts
+var fieldNamePredicate = import_shapeshift.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(256).setValidationEnabled(isValidationEnabled);
+var fieldValuePredicate = import_shapeshift.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(1024).setValidationEnabled(isValidationEnabled);
+var fieldInlinePredicate = import_shapeshift.s.boolean.optional;
+var embedFieldPredicate = import_shapeshift.s.object({
+ name: fieldNamePredicate,
+ value: fieldValuePredicate,
+ inline: fieldInlinePredicate
+}).setValidationEnabled(isValidationEnabled);
+var embedFieldsArrayPredicate = embedFieldPredicate.array.setValidationEnabled(isValidationEnabled);
+var fieldLengthPredicate = import_shapeshift.s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
+function validateFieldLength(amountAdding, fields) {
+ fieldLengthPredicate.parse((fields?.length ?? 0) + amountAdding);
+}
+__name(validateFieldLength, "validateFieldLength");
+var authorNamePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);
+var imageURLPredicate = import_shapeshift.s.string.url({
+ allowedProtocols: [
+ "http:",
+ "https:",
+ "attachment:"
+ ]
+}).nullish.setValidationEnabled(isValidationEnabled);
+var urlPredicate = import_shapeshift.s.string.url({
+ allowedProtocols: [
+ "http:",
+ "https:"
+ ]
+}).nullish.setValidationEnabled(isValidationEnabled);
+var embedAuthorPredicate = import_shapeshift.s.object({
+ name: authorNamePredicate,
+ iconURL: imageURLPredicate,
+ url: urlPredicate
+}).setValidationEnabled(isValidationEnabled);
+var RGBPredicate = import_shapeshift.s.number.int.greaterThanOrEqual(0).lessThanOrEqual(255).setValidationEnabled(isValidationEnabled);
+var colorPredicate = import_shapeshift.s.number.int.greaterThanOrEqual(0).lessThanOrEqual(16777215).or(import_shapeshift.s.tuple([
+ RGBPredicate,
+ RGBPredicate,
+ RGBPredicate
+])).nullable.setValidationEnabled(isValidationEnabled);
+var descriptionPredicate = import_shapeshift.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(4096).nullable.setValidationEnabled(isValidationEnabled);
+var footerTextPredicate = import_shapeshift.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(2048).nullable.setValidationEnabled(isValidationEnabled);
+var embedFooterPredicate = import_shapeshift.s.object({
+ text: footerTextPredicate,
+ iconURL: imageURLPredicate
+}).setValidationEnabled(isValidationEnabled);
+var timestampPredicate = import_shapeshift.s.union(import_shapeshift.s.number, import_shapeshift.s.date).nullable.setValidationEnabled(isValidationEnabled);
+var titlePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);
+
+// src/util/normalizeArray.ts
+function normalizeArray(arr) {
+ if (Array.isArray(arr[0]))
+ return arr[0];
+ return arr;
+}
+__name(normalizeArray, "normalizeArray");
+
+// src/messages/embed/Embed.ts
+var EmbedBuilder = class {
+ constructor(data = {}) {
+ this.data = {
+ ...data
+ };
+ if (data.timestamp)
+ this.data.timestamp = new Date(data.timestamp).toISOString();
+ }
+ /**
+ * Appends fields to the embed
+ *
+ * @remarks
+ * This method accepts either an array of fields or a variable number of field parameters.
+ * The maximum amount of fields that can be added is 25.
+ * @example
+ * Using an array
+ * ```ts
+ * const fields: APIEmbedField[] = ...;
+ * const embed = new EmbedBuilder()
+ * .addFields(fields);
+ * ```
+ * @example
+ * Using rest parameters (variadic)
+ * ```ts
+ * const embed = new EmbedBuilder()
+ * .addFields(
+ * { name: 'Field 1', value: 'Value 1' },
+ * { name: 'Field 2', value: 'Value 2' },
+ * );
+ * ```
+ * @param fields - The fields to add
+ */
+ addFields(...fields) {
+ fields = normalizeArray(fields);
+ validateFieldLength(fields.length, this.data.fields);
+ embedFieldsArrayPredicate.parse(fields);
+ if (this.data.fields)
+ this.data.fields.push(...fields);
+ else
+ this.data.fields = fields;
+ return this;
+ }
+ /**
+ * Removes, replaces, or inserts fields in the embed.
+ *
+ * @remarks
+ * This method behaves similarly
+ * to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice | Array.prototype.splice}.
+ * The maximum amount of fields that can be added is 25.
+ *
+ * It's useful for modifying and adjusting order of the already-existing fields of an embed.
+ * @example
+ * Remove the first field
+ * ```ts
+ * embed.spliceFields(0, 1);
+ * ```
+ * @example
+ * Remove the first n fields
+ * ```ts
+ * const n = 4
+ * embed.spliceFields(0, n);
+ * ```
+ * @example
+ * Remove the last field
+ * ```ts
+ * embed.spliceFields(-1, 1);
+ * ```
+ * @param index - The index to start at
+ * @param deleteCount - The number of fields to remove
+ * @param fields - The replacing field objects
+ */
+ spliceFields(index, deleteCount, ...fields) {
+ validateFieldLength(fields.length - deleteCount, this.data.fields);
+ embedFieldsArrayPredicate.parse(fields);
+ if (this.data.fields)
+ this.data.fields.splice(index, deleteCount, ...fields);
+ else
+ this.data.fields = fields;
+ return this;
+ }
+ /**
+ * Sets the embed's fields
+ *
+ * @remarks
+ * This method is an alias for {@link EmbedBuilder.spliceFields}. More specifically,
+ * it splices the entire array of fields, replacing them with the provided fields.
+ *
+ * You can set a maximum of 25 fields.
+ * @param fields - The fields to set
+ */
+ setFields(...fields) {
+ this.spliceFields(0, this.data.fields?.length ?? 0, ...normalizeArray(fields));
+ return this;
+ }
+ /**
+ * Sets the author of this embed
+ *
+ * @param options - The options for the author
+ */
+ setAuthor(options) {
+ if (options === null) {
+ this.data.author = void 0;
+ return this;
+ }
+ embedAuthorPredicate.parse(options);
+ this.data.author = {
+ name: options.name,
+ url: options.url,
+ icon_url: options.iconURL
+ };
+ return this;
+ }
+ /**
+ * Sets the color of this embed
+ *
+ * @param color - The color of the embed
+ */
+ setColor(color) {
+ colorPredicate.parse(color);
+ if (Array.isArray(color)) {
+ const [red, green, blue] = color;
+ this.data.color = (red << 16) + (green << 8) + blue;
+ return this;
+ }
+ this.data.color = color ?? void 0;
+ return this;
+ }
+ /**
+ * Sets the description of this embed
+ *
+ * @param description - The description
+ */
+ setDescription(description) {
+ descriptionPredicate.parse(description);
+ this.data.description = description ?? void 0;
+ return this;
+ }
+ /**
+ * Sets the footer of this embed
+ *
+ * @param options - The options for the footer
+ */
+ setFooter(options) {
+ if (options === null) {
+ this.data.footer = void 0;
+ return this;
+ }
+ embedFooterPredicate.parse(options);
+ this.data.footer = {
+ text: options.text,
+ icon_url: options.iconURL
+ };
+ return this;
+ }
+ /**
+ * Sets the image of this embed
+ *
+ * @param url - The URL of the image
+ */
+ setImage(url) {
+ imageURLPredicate.parse(url);
+ this.data.image = url ? {
+ url
+ } : void 0;
+ return this;
+ }
+ /**
+ * Sets the thumbnail of this embed
+ *
+ * @param url - The URL of the thumbnail
+ */
+ setThumbnail(url) {
+ imageURLPredicate.parse(url);
+ this.data.thumbnail = url ? {
+ url
+ } : void 0;
+ return this;
+ }
+ /**
+ * Sets the timestamp of this embed
+ *
+ * @param timestamp - The timestamp or date
+ */
+ setTimestamp(timestamp = Date.now()) {
+ timestampPredicate.parse(timestamp);
+ this.data.timestamp = timestamp ? new Date(timestamp).toISOString() : void 0;
+ return this;
+ }
+ /**
+ * Sets the title of this embed
+ *
+ * @param title - The title
+ */
+ setTitle(title) {
+ titlePredicate.parse(title);
+ this.data.title = title ?? void 0;
+ return this;
+ }
+ /**
+ * Sets the URL of this embed
+ *
+ * @param url - The URL
+ */
+ setURL(url) {
+ urlPredicate.parse(url);
+ this.data.url = url ?? void 0;
+ return this;
+ }
+ /**
+ * Transforms the embed to a plain object
+ */
+ toJSON() {
+ return {
+ ...this.data
+ };
+ }
+};
+__name(EmbedBuilder, "EmbedBuilder");
+
+// src/index.ts
+__reExport(src_exports, require("@discordjs/formatters"), module.exports);
+
+// src/components/Assertions.ts
+var Assertions_exports2 = {};
+__export(Assertions_exports2, {
+ buttonLabelValidator: () => buttonLabelValidator,
+ buttonStyleValidator: () => buttonStyleValidator,
+ channelTypesValidator: () => channelTypesValidator,
+ customIdValidator: () => customIdValidator,
+ defaultValidator: () => defaultValidator,
+ disabledValidator: () => disabledValidator,
+ emojiValidator: () => emojiValidator,
+ jsonOptionValidator: () => jsonOptionValidator,
+ labelValueDescriptionValidator: () => labelValueDescriptionValidator,
+ minMaxValidator: () => minMaxValidator,
+ optionValidator: () => optionValidator,
+ optionsLengthValidator: () => optionsLengthValidator,
+ optionsValidator: () => optionsValidator,
+ placeholderValidator: () => placeholderValidator,
+ urlValidator: () => urlValidator,
+ validateRequiredButtonParameters: () => validateRequiredButtonParameters,
+ validateRequiredSelectMenuOptionParameters: () => validateRequiredSelectMenuOptionParameters,
+ validateRequiredSelectMenuParameters: () => validateRequiredSelectMenuParameters
+});
+var import_shapeshift2 = require("@sapphire/shapeshift");
+var import_v10 = require("discord-api-types/v10");
+
+// src/components/selectMenu/StringSelectMenuOption.ts
+var StringSelectMenuOptionBuilder = class {
+ /**
+ * Creates a new string select menu option from API data
+ *
+ * @param data - The API data to create this string select menu option with
+ * @example
+ * Creating a string select menu option from an API data object
+ * ```ts
+ * const selectMenuOption = new SelectMenuOptionBuilder({
+ * label: 'catchy label',
+ * value: '1',
+ * });
+ * ```
+ * @example
+ * Creating a string select menu option using setters and API data
+ * ```ts
+ * const selectMenuOption = new SelectMenuOptionBuilder({
+ * default: true,
+ * value: '1',
+ * })
+ * .setLabel('woah')
+ * ```
+ */
+ constructor(data = {}) {
+ this.data = data;
+ }
+ /**
+ * Sets the label of this option
+ *
+ * @param label - The label to show on this option
+ */
+ setLabel(label) {
+ this.data.label = labelValueDescriptionValidator.parse(label);
+ return this;
+ }
+ /**
+ * Sets the value of this option
+ *
+ * @param value - The value of this option
+ */
+ setValue(value) {
+ this.data.value = labelValueDescriptionValidator.parse(value);
+ return this;
+ }
+ /**
+ * Sets the description of this option
+ *
+ * @param description - The description of this option
+ */
+ setDescription(description) {
+ this.data.description = labelValueDescriptionValidator.parse(description);
+ return this;
+ }
+ /**
+ * Sets whether this option is selected by default
+ *
+ * @param isDefault - Whether this option is selected by default
+ */
+ setDefault(isDefault = true) {
+ this.data.default = defaultValidator.parse(isDefault);
+ return this;
+ }
+ /**
+ * Sets the emoji to display on this option
+ *
+ * @param emoji - The emoji to display on this option
+ */
+ setEmoji(emoji) {
+ this.data.emoji = emojiValidator.parse(emoji);
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ validateRequiredSelectMenuOptionParameters(this.data.label, this.data.value);
+ return {
+ ...this.data
+ };
+ }
+};
+__name(StringSelectMenuOptionBuilder, "StringSelectMenuOptionBuilder");
+
+// src/components/Assertions.ts
+var customIdValidator = import_shapeshift2.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
+var emojiValidator = import_shapeshift2.s.object({
+ id: import_shapeshift2.s.string,
+ name: import_shapeshift2.s.string,
+ animated: import_shapeshift2.s.boolean
+}).partial.strict.setValidationEnabled(isValidationEnabled);
+var disabledValidator = import_shapeshift2.s.boolean;
+var buttonLabelValidator = import_shapeshift2.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(80).setValidationEnabled(isValidationEnabled);
+var buttonStyleValidator = import_shapeshift2.s.nativeEnum(import_v10.ButtonStyle);
+var placeholderValidator = import_shapeshift2.s.string.lengthLessThanOrEqual(150).setValidationEnabled(isValidationEnabled);
+var minMaxValidator = import_shapeshift2.s.number.int.greaterThanOrEqual(0).lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
+var labelValueDescriptionValidator = import_shapeshift2.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
+var jsonOptionValidator = import_shapeshift2.s.object({
+ label: labelValueDescriptionValidator,
+ value: labelValueDescriptionValidator,
+ description: labelValueDescriptionValidator.optional,
+ emoji: emojiValidator.optional,
+ default: import_shapeshift2.s.boolean.optional
+}).setValidationEnabled(isValidationEnabled);
+var optionValidator = import_shapeshift2.s.instance(StringSelectMenuOptionBuilder).setValidationEnabled(isValidationEnabled);
+var optionsValidator = optionValidator.array.lengthGreaterThanOrEqual(0).setValidationEnabled(isValidationEnabled);
+var optionsLengthValidator = import_shapeshift2.s.number.int.greaterThanOrEqual(0).lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
+function validateRequiredSelectMenuParameters(options, customId) {
+ customIdValidator.parse(customId);
+ optionsValidator.parse(options);
+}
+__name(validateRequiredSelectMenuParameters, "validateRequiredSelectMenuParameters");
+var defaultValidator = import_shapeshift2.s.boolean;
+function validateRequiredSelectMenuOptionParameters(label, value) {
+ labelValueDescriptionValidator.parse(label);
+ labelValueDescriptionValidator.parse(value);
+}
+__name(validateRequiredSelectMenuOptionParameters, "validateRequiredSelectMenuOptionParameters");
+var channelTypesValidator = import_shapeshift2.s.nativeEnum(import_v10.ChannelType).array.setValidationEnabled(isValidationEnabled);
+var urlValidator = import_shapeshift2.s.string.url({
+ allowedProtocols: [
+ "http:",
+ "https:",
+ "discord:"
+ ]
+}).setValidationEnabled(isValidationEnabled);
+function validateRequiredButtonParameters(style, label, emoji, customId, url) {
+ if (url && customId) {
+ throw new RangeError("URL and custom id are mutually exclusive");
+ }
+ if (!label && !emoji) {
+ throw new RangeError("Buttons must have a label and/or an emoji");
+ }
+ if (style === import_v10.ButtonStyle.Link) {
+ if (!url) {
+ throw new RangeError("Link buttons must have a url");
+ }
+ } else if (url) {
+ throw new RangeError("Non-link buttons cannot have a url");
+ }
+}
+__name(validateRequiredButtonParameters, "validateRequiredButtonParameters");
+
+// src/components/ActionRow.ts
+var import_v1011 = require("discord-api-types/v10");
+
+// src/components/Component.ts
+var ComponentBuilder = class {
+ constructor(data) {
+ this.data = data;
+ }
+};
+__name(ComponentBuilder, "ComponentBuilder");
+
+// src/components/Components.ts
+var import_v1010 = require("discord-api-types/v10");
+
+// src/components/button/Button.ts
+var import_v102 = require("discord-api-types/v10");
+var ButtonBuilder = class extends ComponentBuilder {
+ /**
+ * Creates a new button from API data
+ *
+ * @param data - The API data to create this button with
+ * @example
+ * Creating a button from an API data object
+ * ```ts
+ * const button = new ButtonBuilder({
+ * custom_id: 'a cool button',
+ * style: ButtonStyle.Primary,
+ * label: 'Click Me',
+ * emoji: {
+ * name: 'smile',
+ * id: '123456789012345678',
+ * },
+ * });
+ * ```
+ * @example
+ * Creating a button using setters and API data
+ * ```ts
+ * const button = new ButtonBuilder({
+ * style: ButtonStyle.Secondary,
+ * label: 'Click Me',
+ * })
+ * .setEmoji({ name: '🙂' })
+ * .setCustomId('another cool button');
+ * ```
+ */
+ constructor(data) {
+ super({
+ type: import_v102.ComponentType.Button,
+ ...data
+ });
+ }
+ /**
+ * Sets the style of this button
+ *
+ * @param style - The style of the button
+ */
+ setStyle(style) {
+ this.data.style = buttonStyleValidator.parse(style);
+ return this;
+ }
+ /**
+ * Sets the URL for this button
+ *
+ * @remarks
+ * This method is only available to buttons using the `Link` button style.
+ * Only three types of URL schemes are currently supported: `https://`, `http://` and `discord://`
+ * @param url - The URL to open when this button is clicked
+ */
+ setURL(url) {
+ this.data.url = urlValidator.parse(url);
+ return this;
+ }
+ /**
+ * Sets the custom id for this button
+ *
+ * @remarks
+ * This method is only applicable to buttons that are not using the `Link` button style.
+ * @param customId - The custom id to use for this button
+ */
+ setCustomId(customId) {
+ this.data.custom_id = customIdValidator.parse(customId);
+ return this;
+ }
+ /**
+ * Sets the emoji to display on this button
+ *
+ * @param emoji - The emoji to display on this button
+ */
+ setEmoji(emoji) {
+ this.data.emoji = emojiValidator.parse(emoji);
+ return this;
+ }
+ /**
+ * Sets whether this button is disabled
+ *
+ * @param disabled - Whether to disable this button
+ */
+ setDisabled(disabled = true) {
+ this.data.disabled = disabledValidator.parse(disabled);
+ return this;
+ }
+ /**
+ * Sets the label for this button
+ *
+ * @param label - The label to display on this button
+ */
+ setLabel(label) {
+ this.data.label = buttonLabelValidator.parse(label);
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ validateRequiredButtonParameters(this.data.style, this.data.label, this.data.emoji, this.data.custom_id, this.data.url);
+ return {
+ ...this.data
+ };
+ }
+};
+__name(ButtonBuilder, "ButtonBuilder");
+
+// src/components/selectMenu/ChannelSelectMenu.ts
+var import_v103 = require("discord-api-types/v10");
+
+// src/components/selectMenu/BaseSelectMenu.ts
+var BaseSelectMenuBuilder = class extends ComponentBuilder {
+ /**
+ * Sets the placeholder for this select menu
+ *
+ * @param placeholder - The placeholder to use for this select menu
+ */
+ setPlaceholder(placeholder) {
+ this.data.placeholder = placeholderValidator.parse(placeholder);
+ return this;
+ }
+ /**
+ * Sets the minimum values that must be selected in the select menu
+ *
+ * @param minValues - The minimum values that must be selected
+ */
+ setMinValues(minValues) {
+ this.data.min_values = minMaxValidator.parse(minValues);
+ return this;
+ }
+ /**
+ * Sets the maximum values that must be selected in the select menu
+ *
+ * @param maxValues - The maximum values that must be selected
+ */
+ setMaxValues(maxValues) {
+ this.data.max_values = minMaxValidator.parse(maxValues);
+ return this;
+ }
+ /**
+ * Sets the custom id for this select menu
+ *
+ * @param customId - The custom id to use for this select menu
+ */
+ setCustomId(customId) {
+ this.data.custom_id = customIdValidator.parse(customId);
+ return this;
+ }
+ /**
+ * Sets whether this select menu is disabled
+ *
+ * @param disabled - Whether this select menu is disabled
+ */
+ setDisabled(disabled = true) {
+ this.data.disabled = disabledValidator.parse(disabled);
+ return this;
+ }
+ toJSON() {
+ customIdValidator.parse(this.data.custom_id);
+ return {
+ ...this.data
+ };
+ }
+};
+__name(BaseSelectMenuBuilder, "BaseSelectMenuBuilder");
+
+// src/components/selectMenu/ChannelSelectMenu.ts
+var ChannelSelectMenuBuilder = class extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new ChannelSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new ChannelSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .addChannelTypes(ChannelType.GuildText, ChannelType.GuildAnnouncement)
+ * .setMinValues(2)
+ * ```
+ */
+ constructor(data) {
+ super({
+ ...data,
+ type: import_v103.ComponentType.ChannelSelect
+ });
+ }
+ addChannelTypes(...types) {
+ types = normalizeArray(types);
+ this.data.channel_types ??= [];
+ this.data.channel_types.push(...channelTypesValidator.parse(types));
+ return this;
+ }
+ setChannelTypes(...types) {
+ types = normalizeArray(types);
+ this.data.channel_types ??= [];
+ this.data.channel_types.splice(0, this.data.channel_types.length, ...channelTypesValidator.parse(types));
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ customIdValidator.parse(this.data.custom_id);
+ return {
+ ...this.data
+ };
+ }
+};
+__name(ChannelSelectMenuBuilder, "ChannelSelectMenuBuilder");
+
+// src/components/selectMenu/MentionableSelectMenu.ts
+var import_v104 = require("discord-api-types/v10");
+var MentionableSelectMenuBuilder = class extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new MentionableSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new MentionableSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * ```
+ */
+ constructor(data) {
+ super({
+ ...data,
+ type: import_v104.ComponentType.MentionableSelect
+ });
+ }
+};
+__name(MentionableSelectMenuBuilder, "MentionableSelectMenuBuilder");
+
+// src/components/selectMenu/RoleSelectMenu.ts
+var import_v105 = require("discord-api-types/v10");
+var RoleSelectMenuBuilder = class extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new RoleSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new RoleSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * ```
+ */
+ constructor(data) {
+ super({
+ ...data,
+ type: import_v105.ComponentType.RoleSelect
+ });
+ }
+};
+__name(RoleSelectMenuBuilder, "RoleSelectMenuBuilder");
+
+// src/components/selectMenu/StringSelectMenu.ts
+var import_v106 = require("discord-api-types/v10");
+var StringSelectMenuBuilder = class extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new StringSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * options: [
+ * { label: 'option 1', value: '1' },
+ * { label: 'option 2', value: '2' },
+ * { label: 'option 3', value: '3' },
+ * ],
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new StringSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * .addOptions({
+ * label: 'Catchy',
+ * value: 'catch',
+ * });
+ * ```
+ */
+ constructor(data) {
+ const { options, ...initData } = data ?? {};
+ super({
+ ...initData,
+ type: import_v106.ComponentType.StringSelect
+ });
+ this.options = options?.map((option) => new StringSelectMenuOptionBuilder(option)) ?? [];
+ }
+ /**
+ * Adds options to this select menu
+ *
+ * @param options - The options to add to this select menu
+ * @returns
+ */
+ addOptions(...options) {
+ options = normalizeArray(options);
+ optionsLengthValidator.parse(this.options.length + options.length);
+ this.options.push(...options.map((option) => option instanceof StringSelectMenuOptionBuilder ? option : new StringSelectMenuOptionBuilder(jsonOptionValidator.parse(option))));
+ return this;
+ }
+ /**
+ * Sets the options on this select menu
+ *
+ * @param options - The options to set on this select menu
+ */
+ setOptions(...options) {
+ return this.spliceOptions(0, this.options.length, ...options);
+ }
+ /**
+ * Removes, replaces, or inserts options in the string select menu.
+ *
+ * @remarks
+ * This method behaves similarly
+ * to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice | Array.prototype.splice}.
+ *
+ * It's useful for modifying and adjusting order of the already-existing options of a string select menu.
+ * @example
+ * Remove the first option
+ * ```ts
+ * selectMenu.spliceOptions(0, 1);
+ * ```
+ * @example
+ * Remove the first n option
+ * ```ts
+ * const n = 4
+ * selectMenu.spliceOptions(0, n);
+ * ```
+ * @example
+ * Remove the last option
+ * ```ts
+ * selectMenu.spliceOptions(-1, 1);
+ * ```
+ * @param index - The index to start at
+ * @param deleteCount - The number of options to remove
+ * @param options - The replacing option objects or builders
+ */
+ spliceOptions(index, deleteCount, ...options) {
+ options = normalizeArray(options);
+ const clone = [
+ ...this.options
+ ];
+ clone.splice(index, deleteCount, ...options.map((option) => option instanceof StringSelectMenuOptionBuilder ? option : new StringSelectMenuOptionBuilder(jsonOptionValidator.parse(option))));
+ optionsLengthValidator.parse(clone.length);
+ this.options.splice(0, this.options.length, ...clone);
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ validateRequiredSelectMenuParameters(this.options, this.data.custom_id);
+ return {
+ ...this.data,
+ options: this.options.map((option) => option.toJSON())
+ };
+ }
+};
+__name(StringSelectMenuBuilder, "StringSelectMenuBuilder");
+
+// src/components/selectMenu/UserSelectMenu.ts
+var import_v107 = require("discord-api-types/v10");
+var UserSelectMenuBuilder = class extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new UserSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new UserSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * ```
+ */
+ constructor(data) {
+ super({
+ ...data,
+ type: import_v107.ComponentType.UserSelect
+ });
+ }
+};
+__name(UserSelectMenuBuilder, "UserSelectMenuBuilder");
+
+// src/components/textInput/TextInput.ts
+var import_util = require("@discordjs/util");
+var import_v109 = require("discord-api-types/v10");
+var import_fast_deep_equal = __toESM(require("fast-deep-equal"));
+
+// src/components/textInput/Assertions.ts
+var Assertions_exports3 = {};
+__export(Assertions_exports3, {
+ labelValidator: () => labelValidator,
+ maxLengthValidator: () => maxLengthValidator,
+ minLengthValidator: () => minLengthValidator,
+ placeholderValidator: () => placeholderValidator2,
+ requiredValidator: () => requiredValidator,
+ textInputStyleValidator: () => textInputStyleValidator,
+ validateRequiredParameters: () => validateRequiredParameters,
+ valueValidator: () => valueValidator
+});
+var import_shapeshift3 = require("@sapphire/shapeshift");
+var import_v108 = require("discord-api-types/v10");
+var textInputStyleValidator = import_shapeshift3.s.nativeEnum(import_v108.TextInputStyle);
+var minLengthValidator = import_shapeshift3.s.number.int.greaterThanOrEqual(0).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
+var maxLengthValidator = import_shapeshift3.s.number.int.greaterThanOrEqual(1).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
+var requiredValidator = import_shapeshift3.s.boolean;
+var valueValidator = import_shapeshift3.s.string.lengthLessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
+var placeholderValidator2 = import_shapeshift3.s.string.lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
+var labelValidator = import_shapeshift3.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled);
+function validateRequiredParameters(customId, style, label) {
+ customIdValidator.parse(customId);
+ textInputStyleValidator.parse(style);
+ labelValidator.parse(label);
+}
+__name(validateRequiredParameters, "validateRequiredParameters");
+
+// src/components/textInput/TextInput.ts
+var TextInputBuilder = class extends ComponentBuilder {
+ /**
+ * Creates a new text input from API data
+ *
+ * @param data - The API data to create this text input with
+ * @example
+ * Creating a select menu option from an API data object
+ * ```ts
+ * const textInput = new TextInputBuilder({
+ * custom_id: 'a cool select menu',
+ * label: 'Type something',
+ * style: TextInputStyle.Short,
+ * });
+ * ```
+ * @example
+ * Creating a select menu option using setters and API data
+ * ```ts
+ * const textInput = new TextInputBuilder({
+ * label: 'Type something else',
+ * })
+ * .setCustomId('woah')
+ * .setStyle(TextInputStyle.Paragraph);
+ * ```
+ */
+ constructor(data) {
+ super({
+ type: import_v109.ComponentType.TextInput,
+ ...data
+ });
+ }
+ /**
+ * Sets the custom id for this text input
+ *
+ * @param customId - The custom id of this text input
+ */
+ setCustomId(customId) {
+ this.data.custom_id = customIdValidator.parse(customId);
+ return this;
+ }
+ /**
+ * Sets the label for this text input
+ *
+ * @param label - The label for this text input
+ */
+ setLabel(label) {
+ this.data.label = labelValidator.parse(label);
+ return this;
+ }
+ /**
+ * Sets the style for this text input
+ *
+ * @param style - The style for this text input
+ */
+ setStyle(style) {
+ this.data.style = textInputStyleValidator.parse(style);
+ return this;
+ }
+ /**
+ * Sets the minimum length of text for this text input
+ *
+ * @param minLength - The minimum length of text for this text input
+ */
+ setMinLength(minLength) {
+ this.data.min_length = minLengthValidator.parse(minLength);
+ return this;
+ }
+ /**
+ * Sets the maximum length of text for this text input
+ *
+ * @param maxLength - The maximum length of text for this text input
+ */
+ setMaxLength(maxLength) {
+ this.data.max_length = maxLengthValidator.parse(maxLength);
+ return this;
+ }
+ /**
+ * Sets the placeholder of this text input
+ *
+ * @param placeholder - The placeholder of this text input
+ */
+ setPlaceholder(placeholder) {
+ this.data.placeholder = placeholderValidator2.parse(placeholder);
+ return this;
+ }
+ /**
+ * Sets the value of this text input
+ *
+ * @param value - The value for this text input
+ */
+ setValue(value) {
+ this.data.value = valueValidator.parse(value);
+ return this;
+ }
+ /**
+ * Sets whether this text input is required
+ *
+ * @param required - Whether this text input is required
+ */
+ setRequired(required = true) {
+ this.data.required = requiredValidator.parse(required);
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ validateRequiredParameters(this.data.custom_id, this.data.style, this.data.label);
+ return {
+ ...this.data
+ };
+ }
+ /**
+ * {@inheritDoc Equatable.equals}
+ */
+ equals(other) {
+ if ((0, import_util.isJSONEncodable)(other)) {
+ return (0, import_fast_deep_equal.default)(other.toJSON(), this.data);
+ }
+ return (0, import_fast_deep_equal.default)(other, this.data);
+ }
+};
+__name(TextInputBuilder, "TextInputBuilder");
+
+// src/components/Components.ts
+function createComponentBuilder(data) {
+ if (data instanceof ComponentBuilder) {
+ return data;
+ }
+ switch (data.type) {
+ case import_v1010.ComponentType.ActionRow:
+ return new ActionRowBuilder(data);
+ case import_v1010.ComponentType.Button:
+ return new ButtonBuilder(data);
+ case import_v1010.ComponentType.StringSelect:
+ return new StringSelectMenuBuilder(data);
+ case import_v1010.ComponentType.TextInput:
+ return new TextInputBuilder(data);
+ case import_v1010.ComponentType.UserSelect:
+ return new UserSelectMenuBuilder(data);
+ case import_v1010.ComponentType.RoleSelect:
+ return new RoleSelectMenuBuilder(data);
+ case import_v1010.ComponentType.MentionableSelect:
+ return new MentionableSelectMenuBuilder(data);
+ case import_v1010.ComponentType.ChannelSelect:
+ return new ChannelSelectMenuBuilder(data);
+ default:
+ throw new Error(`Cannot properly serialize component type: ${data.type}`);
+ }
+}
+__name(createComponentBuilder, "createComponentBuilder");
+
+// src/components/ActionRow.ts
+var ActionRowBuilder = class extends ComponentBuilder {
+ /**
+ * Creates a new action row from API data
+ *
+ * @param data - The API data to create this action row with
+ * @example
+ * Creating an action row from an API data object
+ * ```ts
+ * const actionRow = new ActionRowBuilder({
+ * components: [
+ * {
+ * custom_id: "custom id",
+ * label: "Type something",
+ * style: TextInputStyle.Short,
+ * type: ComponentType.TextInput,
+ * },
+ * ],
+ * });
+ * ```
+ * @example
+ * Creating an action row using setters and API data
+ * ```ts
+ * const actionRow = new ActionRowBuilder({
+ * components: [
+ * {
+ * custom_id: "custom id",
+ * label: "Click me",
+ * style: ButtonStyle.Primary,
+ * type: ComponentType.Button,
+ * },
+ * ],
+ * })
+ * .addComponents(button2, button3);
+ * ```
+ */
+ constructor({ components, ...data } = {}) {
+ super({
+ type: import_v1011.ComponentType.ActionRow,
+ ...data
+ });
+ this.components = components?.map((component) => createComponentBuilder(component)) ?? [];
+ }
+ /**
+ * Adds components to this action row.
+ *
+ * @param components - The components to add to this action row.
+ */
+ addComponents(...components) {
+ this.components.push(...normalizeArray(components));
+ return this;
+ }
+ /**
+ * Sets the components in this action row
+ *
+ * @param components - The components to set this row to
+ */
+ setComponents(...components) {
+ this.components.splice(0, this.components.length, ...normalizeArray(components));
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ return {
+ ...this.data,
+ components: this.components.map((component) => component.toJSON())
+ };
+ }
+};
+__name(ActionRowBuilder, "ActionRowBuilder");
+
+// src/interactions/modals/Assertions.ts
+var Assertions_exports4 = {};
+__export(Assertions_exports4, {
+ componentsValidator: () => componentsValidator,
+ titleValidator: () => titleValidator,
+ validateRequiredParameters: () => validateRequiredParameters2
+});
+var import_shapeshift4 = require("@sapphire/shapeshift");
+var titleValidator = import_shapeshift4.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled);
+var componentsValidator = import_shapeshift4.s.instance(ActionRowBuilder).array.lengthGreaterThanOrEqual(1).setValidationEnabled(isValidationEnabled);
+function validateRequiredParameters2(customId, title, components) {
+ customIdValidator.parse(customId);
+ titleValidator.parse(title);
+ componentsValidator.parse(components);
+}
+__name(validateRequiredParameters2, "validateRequiredParameters");
+
+// src/interactions/modals/Modal.ts
+var ModalBuilder = class {
+ components = [];
+ constructor({ components, ...data } = {}) {
+ this.data = {
+ ...data
+ };
+ this.components = components?.map((component) => createComponentBuilder(component)) ?? [];
+ }
+ /**
+ * Sets the title of the modal
+ *
+ * @param title - The title of the modal
+ */
+ setTitle(title) {
+ this.data.title = titleValidator.parse(title);
+ return this;
+ }
+ /**
+ * Sets the custom id of the modal
+ *
+ * @param customId - The custom id of this modal
+ */
+ setCustomId(customId) {
+ this.data.custom_id = customIdValidator.parse(customId);
+ return this;
+ }
+ /**
+ * Adds components to this modal
+ *
+ * @param components - The components to add to this modal
+ */
+ addComponents(...components) {
+ this.components.push(...normalizeArray(components).map((component) => component instanceof ActionRowBuilder ? component : new ActionRowBuilder(component)));
+ return this;
+ }
+ /**
+ * Sets the components in this modal
+ *
+ * @param components - The components to set this modal to
+ */
+ setComponents(...components) {
+ this.components.splice(0, this.components.length, ...normalizeArray(components));
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ validateRequiredParameters2(this.data.custom_id, this.data.title, this.components);
+ return {
+ ...this.data,
+ components: this.components.map((component) => component.toJSON())
+ };
+ }
+};
+__name(ModalBuilder, "ModalBuilder");
+
+// src/interactions/slashCommands/Assertions.ts
+var Assertions_exports5 = {};
+__export(Assertions_exports5, {
+ assertReturnOfBuilder: () => assertReturnOfBuilder,
+ localizationMapPredicate: () => localizationMapPredicate,
+ validateChoicesLength: () => validateChoicesLength,
+ validateDMPermission: () => validateDMPermission,
+ validateDefaultMemberPermissions: () => validateDefaultMemberPermissions,
+ validateDefaultPermission: () => validateDefaultPermission,
+ validateDescription: () => validateDescription,
+ validateLocale: () => validateLocale,
+ validateLocalizationMap: () => validateLocalizationMap,
+ validateMaxOptionsLength: () => validateMaxOptionsLength,
+ validateNSFW: () => validateNSFW,
+ validateName: () => validateName,
+ validateRequired: () => validateRequired,
+ validateRequiredParameters: () => validateRequiredParameters3
+});
+var import_shapeshift5 = require("@sapphire/shapeshift");
+var import_v1012 = require("discord-api-types/v10");
+var namePredicate = import_shapeshift5.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/^[\p{Ll}\p{Lm}\p{Lo}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+$/u).setValidationEnabled(isValidationEnabled);
+function validateName(name) {
+ namePredicate.parse(name);
+}
+__name(validateName, "validateName");
+var descriptionPredicate2 = import_shapeshift5.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
+var localePredicate = import_shapeshift5.s.nativeEnum(import_v1012.Locale);
+function validateDescription(description) {
+ descriptionPredicate2.parse(description);
+}
+__name(validateDescription, "validateDescription");
+var maxArrayLengthPredicate = import_shapeshift5.s.unknown.array.lengthLessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
+function validateLocale(locale) {
+ return localePredicate.parse(locale);
+}
+__name(validateLocale, "validateLocale");
+function validateMaxOptionsLength(options) {
+ maxArrayLengthPredicate.parse(options);
+}
+__name(validateMaxOptionsLength, "validateMaxOptionsLength");
+function validateRequiredParameters3(name, description, options) {
+ validateName(name);
+ validateDescription(description);
+ validateMaxOptionsLength(options);
+}
+__name(validateRequiredParameters3, "validateRequiredParameters");
+var booleanPredicate = import_shapeshift5.s.boolean;
+function validateDefaultPermission(value) {
+ booleanPredicate.parse(value);
+}
+__name(validateDefaultPermission, "validateDefaultPermission");
+function validateRequired(required) {
+ booleanPredicate.parse(required);
+}
+__name(validateRequired, "validateRequired");
+var choicesLengthPredicate = import_shapeshift5.s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
+function validateChoicesLength(amountAdding, choices) {
+ choicesLengthPredicate.parse((choices?.length ?? 0) + amountAdding);
+}
+__name(validateChoicesLength, "validateChoicesLength");
+function assertReturnOfBuilder(input, ExpectedInstanceOf) {
+ import_shapeshift5.s.instance(ExpectedInstanceOf).parse(input);
+}
+__name(assertReturnOfBuilder, "assertReturnOfBuilder");
+var localizationMapPredicate = import_shapeshift5.s.object(Object.fromEntries(Object.values(import_v1012.Locale).map((locale) => [
+ locale,
+ import_shapeshift5.s.string.nullish
+]))).strict.nullish.setValidationEnabled(isValidationEnabled);
+function validateLocalizationMap(value) {
+ localizationMapPredicate.parse(value);
+}
+__name(validateLocalizationMap, "validateLocalizationMap");
+var dmPermissionPredicate = import_shapeshift5.s.boolean.nullish;
+function validateDMPermission(value) {
+ dmPermissionPredicate.parse(value);
+}
+__name(validateDMPermission, "validateDMPermission");
+var memberPermissionPredicate = import_shapeshift5.s.union(import_shapeshift5.s.bigint.transform((value) => value.toString()), import_shapeshift5.s.number.safeInt.transform((value) => value.toString()), import_shapeshift5.s.string.regex(/^\d+$/)).nullish;
+function validateDefaultMemberPermissions(permissions) {
+ return memberPermissionPredicate.parse(permissions);
+}
+__name(validateDefaultMemberPermissions, "validateDefaultMemberPermissions");
+function validateNSFW(value) {
+ booleanPredicate.parse(value);
+}
+__name(validateNSFW, "validateNSFW");
+
+// src/interactions/slashCommands/SlashCommandBuilder.ts
+var import_ts_mixer6 = require("ts-mixer");
+
+// src/interactions/slashCommands/SlashCommandSubcommands.ts
+var import_v1024 = require("discord-api-types/v10");
+var import_ts_mixer5 = require("ts-mixer");
+
+// src/interactions/slashCommands/mixins/NameAndDescription.ts
+var SharedNameAndDescription = class {
+ /**
+ * Sets the name
+ *
+ * @param name - The name
+ */
+ setName(name) {
+ validateName(name);
+ Reflect.set(this, "name", name);
+ return this;
+ }
+ /**
+ * Sets the description
+ *
+ * @param description - The description
+ */
+ setDescription(description) {
+ validateDescription(description);
+ Reflect.set(this, "description", description);
+ return this;
+ }
+ /**
+ * Sets a name localization
+ *
+ * @param locale - The locale to set a description for
+ * @param localizedName - The localized description for the given locale
+ */
+ setNameLocalization(locale, localizedName) {
+ if (!this.name_localizations) {
+ Reflect.set(this, "name_localizations", {});
+ }
+ const parsedLocale = validateLocale(locale);
+ if (localizedName === null) {
+ this.name_localizations[parsedLocale] = null;
+ return this;
+ }
+ validateName(localizedName);
+ this.name_localizations[parsedLocale] = localizedName;
+ return this;
+ }
+ /**
+ * Sets the name localizations
+ *
+ * @param localizedNames - The dictionary of localized descriptions to set
+ */
+ setNameLocalizations(localizedNames) {
+ if (localizedNames === null) {
+ Reflect.set(this, "name_localizations", null);
+ return this;
+ }
+ Reflect.set(this, "name_localizations", {});
+ for (const args of Object.entries(localizedNames)) {
+ this.setNameLocalization(...args);
+ }
+ return this;
+ }
+ /**
+ * Sets a description localization
+ *
+ * @param locale - The locale to set a description for
+ * @param localizedDescription - The localized description for the given locale
+ */
+ setDescriptionLocalization(locale, localizedDescription) {
+ if (!this.description_localizations) {
+ Reflect.set(this, "description_localizations", {});
+ }
+ const parsedLocale = validateLocale(locale);
+ if (localizedDescription === null) {
+ this.description_localizations[parsedLocale] = null;
+ return this;
+ }
+ validateDescription(localizedDescription);
+ this.description_localizations[parsedLocale] = localizedDescription;
+ return this;
+ }
+ /**
+ * Sets the description localizations
+ *
+ * @param localizedDescriptions - The dictionary of localized descriptions to set
+ */
+ setDescriptionLocalizations(localizedDescriptions) {
+ if (localizedDescriptions === null) {
+ Reflect.set(this, "description_localizations", null);
+ return this;
+ }
+ Reflect.set(this, "description_localizations", {});
+ for (const args of Object.entries(localizedDescriptions)) {
+ this.setDescriptionLocalization(...args);
+ }
+ return this;
+ }
+};
+__name(SharedNameAndDescription, "SharedNameAndDescription");
+
+// src/interactions/slashCommands/options/attachment.ts
+var import_v1013 = require("discord-api-types/v10");
+
+// src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts
+var ApplicationCommandOptionBase = class extends SharedNameAndDescription {
+ required = false;
+ /**
+ * Marks the option as required
+ *
+ * @param required - If this option should be required
+ */
+ setRequired(required) {
+ validateRequired(required);
+ Reflect.set(this, "required", required);
+ return this;
+ }
+ runRequiredValidations() {
+ validateRequiredParameters3(this.name, this.description, []);
+ validateLocalizationMap(this.name_localizations);
+ validateLocalizationMap(this.description_localizations);
+ validateRequired(this.required);
+ }
+};
+__name(ApplicationCommandOptionBase, "ApplicationCommandOptionBase");
+
+// src/interactions/slashCommands/options/attachment.ts
+var SlashCommandAttachmentOption = class extends ApplicationCommandOptionBase {
+ type = import_v1013.ApplicationCommandOptionType.Attachment;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+};
+__name(SlashCommandAttachmentOption, "SlashCommandAttachmentOption");
+
+// src/interactions/slashCommands/options/boolean.ts
+var import_v1014 = require("discord-api-types/v10");
+var SlashCommandBooleanOption = class extends ApplicationCommandOptionBase {
+ type = import_v1014.ApplicationCommandOptionType.Boolean;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+};
+__name(SlashCommandBooleanOption, "SlashCommandBooleanOption");
+
+// src/interactions/slashCommands/options/channel.ts
+var import_v1016 = require("discord-api-types/v10");
+var import_ts_mixer = require("ts-mixer");
+
+// src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts
+var import_shapeshift6 = require("@sapphire/shapeshift");
+var import_v1015 = require("discord-api-types/v10");
+var allowedChannelTypes = [
+ import_v1015.ChannelType.GuildText,
+ import_v1015.ChannelType.GuildVoice,
+ import_v1015.ChannelType.GuildCategory,
+ import_v1015.ChannelType.GuildAnnouncement,
+ import_v1015.ChannelType.AnnouncementThread,
+ import_v1015.ChannelType.PublicThread,
+ import_v1015.ChannelType.PrivateThread,
+ import_v1015.ChannelType.GuildStageVoice,
+ import_v1015.ChannelType.GuildForum
+];
+var channelTypesPredicate = import_shapeshift6.s.array(import_shapeshift6.s.union(...allowedChannelTypes.map((type) => import_shapeshift6.s.literal(type))));
+var ApplicationCommandOptionChannelTypesMixin = class {
+ /**
+ * Adds channel types to this option
+ *
+ * @param channelTypes - The channel types to add
+ */
+ addChannelTypes(...channelTypes) {
+ if (this.channel_types === void 0) {
+ Reflect.set(this, "channel_types", []);
+ }
+ this.channel_types.push(...channelTypesPredicate.parse(channelTypes));
+ return this;
+ }
+};
+__name(ApplicationCommandOptionChannelTypesMixin, "ApplicationCommandOptionChannelTypesMixin");
+
+// src/interactions/slashCommands/options/channel.ts
+var __decorate = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var SlashCommandChannelOption = /* @__PURE__ */ __name(class SlashCommandChannelOption2 extends ApplicationCommandOptionBase {
+ type = import_v1016.ApplicationCommandOptionType.Channel;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+}, "SlashCommandChannelOption");
+SlashCommandChannelOption = __decorate([
+ (0, import_ts_mixer.mix)(ApplicationCommandOptionChannelTypesMixin)
+], SlashCommandChannelOption);
+
+// src/interactions/slashCommands/options/integer.ts
+var import_shapeshift8 = require("@sapphire/shapeshift");
+var import_v1018 = require("discord-api-types/v10");
+var import_ts_mixer2 = require("ts-mixer");
+
+// src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts
+var ApplicationCommandNumericOptionMinMaxValueMixin = class {
+};
+__name(ApplicationCommandNumericOptionMinMaxValueMixin, "ApplicationCommandNumericOptionMinMaxValueMixin");
+
+// src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.ts
+var import_shapeshift7 = require("@sapphire/shapeshift");
+var import_v1017 = require("discord-api-types/v10");
+var stringPredicate = import_shapeshift7.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100);
+var numberPredicate = import_shapeshift7.s.number.greaterThan(Number.NEGATIVE_INFINITY).lessThan(Number.POSITIVE_INFINITY);
+var choicesPredicate = import_shapeshift7.s.object({
+ name: stringPredicate,
+ name_localizations: localizationMapPredicate,
+ value: import_shapeshift7.s.union(stringPredicate, numberPredicate)
+}).array;
+var booleanPredicate2 = import_shapeshift7.s.boolean;
+var ApplicationCommandOptionWithChoicesAndAutocompleteMixin = class {
+ /**
+ * Adds multiple choices for this option
+ *
+ * @param choices - The choices to add
+ */
+ addChoices(...choices) {
+ if (choices.length > 0 && this.autocomplete) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ choicesPredicate.parse(choices);
+ if (this.choices === void 0) {
+ Reflect.set(this, "choices", []);
+ }
+ validateChoicesLength(choices.length, this.choices);
+ for (const { name, name_localizations, value } of choices) {
+ if (this.type === import_v1017.ApplicationCommandOptionType.String) {
+ stringPredicate.parse(value);
+ } else {
+ numberPredicate.parse(value);
+ }
+ this.choices.push({
+ name,
+ name_localizations,
+ value
+ });
+ }
+ return this;
+ }
+ setChoices(...choices) {
+ if (choices.length > 0 && this.autocomplete) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ choicesPredicate.parse(choices);
+ Reflect.set(this, "choices", []);
+ this.addChoices(...choices);
+ return this;
+ }
+ /**
+ * Marks the option as autocompletable
+ *
+ * @param autocomplete - If this option should be autocompletable
+ */
+ setAutocomplete(autocomplete) {
+ booleanPredicate2.parse(autocomplete);
+ if (autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ Reflect.set(this, "autocomplete", autocomplete);
+ return this;
+ }
+};
+__name(ApplicationCommandOptionWithChoicesAndAutocompleteMixin, "ApplicationCommandOptionWithChoicesAndAutocompleteMixin");
+
+// src/interactions/slashCommands/options/integer.ts
+var __decorate2 = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var numberValidator = import_shapeshift8.s.number.int;
+var SlashCommandIntegerOption = /* @__PURE__ */ __name(class SlashCommandIntegerOption2 extends ApplicationCommandOptionBase {
+ type = import_v1018.ApplicationCommandOptionType.Integer;
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}
+ */
+ setMaxValue(max) {
+ numberValidator.parse(max);
+ Reflect.set(this, "max_value", max);
+ return this;
+ }
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMinValue}
+ */
+ setMinValue(min) {
+ numberValidator.parse(min);
+ Reflect.set(this, "min_value", min);
+ return this;
+ }
+ toJSON() {
+ this.runRequiredValidations();
+ if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ return {
+ ...this
+ };
+ }
+}, "SlashCommandIntegerOption");
+SlashCommandIntegerOption = __decorate2([
+ (0, import_ts_mixer2.mix)(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)
+], SlashCommandIntegerOption);
+
+// src/interactions/slashCommands/options/mentionable.ts
+var import_v1019 = require("discord-api-types/v10");
+var SlashCommandMentionableOption = class extends ApplicationCommandOptionBase {
+ type = import_v1019.ApplicationCommandOptionType.Mentionable;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+};
+__name(SlashCommandMentionableOption, "SlashCommandMentionableOption");
+
+// src/interactions/slashCommands/options/number.ts
+var import_shapeshift9 = require("@sapphire/shapeshift");
+var import_v1020 = require("discord-api-types/v10");
+var import_ts_mixer3 = require("ts-mixer");
+var __decorate3 = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var numberValidator2 = import_shapeshift9.s.number;
+var SlashCommandNumberOption = /* @__PURE__ */ __name(class SlashCommandNumberOption2 extends ApplicationCommandOptionBase {
+ type = import_v1020.ApplicationCommandOptionType.Number;
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}
+ */
+ setMaxValue(max) {
+ numberValidator2.parse(max);
+ Reflect.set(this, "max_value", max);
+ return this;
+ }
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMinValue}
+ */
+ setMinValue(min) {
+ numberValidator2.parse(min);
+ Reflect.set(this, "min_value", min);
+ return this;
+ }
+ toJSON() {
+ this.runRequiredValidations();
+ if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ return {
+ ...this
+ };
+ }
+}, "SlashCommandNumberOption");
+SlashCommandNumberOption = __decorate3([
+ (0, import_ts_mixer3.mix)(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)
+], SlashCommandNumberOption);
+
+// src/interactions/slashCommands/options/role.ts
+var import_v1021 = require("discord-api-types/v10");
+var SlashCommandRoleOption = class extends ApplicationCommandOptionBase {
+ type = import_v1021.ApplicationCommandOptionType.Role;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+};
+__name(SlashCommandRoleOption, "SlashCommandRoleOption");
+
+// src/interactions/slashCommands/options/string.ts
+var import_shapeshift10 = require("@sapphire/shapeshift");
+var import_v1022 = require("discord-api-types/v10");
+var import_ts_mixer4 = require("ts-mixer");
+var __decorate4 = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var minLengthValidator2 = import_shapeshift10.s.number.greaterThanOrEqual(0).lessThanOrEqual(6e3);
+var maxLengthValidator2 = import_shapeshift10.s.number.greaterThanOrEqual(1).lessThanOrEqual(6e3);
+var SlashCommandStringOption = /* @__PURE__ */ __name(class SlashCommandStringOption2 extends ApplicationCommandOptionBase {
+ type = import_v1022.ApplicationCommandOptionType.String;
+ /**
+ * Sets the maximum length of this string option.
+ *
+ * @param max - The maximum length this option can be
+ */
+ setMaxLength(max) {
+ maxLengthValidator2.parse(max);
+ Reflect.set(this, "max_length", max);
+ return this;
+ }
+ /**
+ * Sets the minimum length of this string option.
+ *
+ * @param min - The minimum length this option can be
+ */
+ setMinLength(min) {
+ minLengthValidator2.parse(min);
+ Reflect.set(this, "min_length", min);
+ return this;
+ }
+ toJSON() {
+ this.runRequiredValidations();
+ if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ return {
+ ...this
+ };
+ }
+}, "SlashCommandStringOption");
+SlashCommandStringOption = __decorate4([
+ (0, import_ts_mixer4.mix)(ApplicationCommandOptionWithChoicesAndAutocompleteMixin)
+], SlashCommandStringOption);
+
+// src/interactions/slashCommands/options/user.ts
+var import_v1023 = require("discord-api-types/v10");
+var SlashCommandUserOption = class extends ApplicationCommandOptionBase {
+ type = import_v1023.ApplicationCommandOptionType.User;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+};
+__name(SlashCommandUserOption, "SlashCommandUserOption");
+
+// src/interactions/slashCommands/mixins/SharedSlashCommandOptions.ts
+var SharedSlashCommandOptions = class {
+ /**
+ * Adds a boolean option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addBooleanOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandBooleanOption);
+ }
+ /**
+ * Adds a user option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addUserOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandUserOption);
+ }
+ /**
+ * Adds a channel option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addChannelOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandChannelOption);
+ }
+ /**
+ * Adds a role option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addRoleOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandRoleOption);
+ }
+ /**
+ * Adds an attachment option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addAttachmentOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandAttachmentOption);
+ }
+ /**
+ * Adds a mentionable option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addMentionableOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandMentionableOption);
+ }
+ /**
+ * Adds a string option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addStringOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandStringOption);
+ }
+ /**
+ * Adds an integer option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addIntegerOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandIntegerOption);
+ }
+ /**
+ * Adds a number option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addNumberOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandNumberOption);
+ }
+ _sharedAddOptionMethod(input, Instance) {
+ const { options } = this;
+ validateMaxOptionsLength(options);
+ const result = typeof input === "function" ? input(new Instance()) : input;
+ assertReturnOfBuilder(result, Instance);
+ options.push(result);
+ return this;
+ }
+};
+__name(SharedSlashCommandOptions, "SharedSlashCommandOptions");
+
+// src/interactions/slashCommands/SlashCommandSubcommands.ts
+var __decorate5 = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var SlashCommandSubcommandGroupBuilder = /* @__PURE__ */ __name(class SlashCommandSubcommandGroupBuilder2 {
+ /**
+ * The name of this subcommand group
+ */
+ name = void 0;
+ /**
+ * The description of this subcommand group
+ */
+ description = void 0;
+ /**
+ * The subcommands part of this subcommand group
+ */
+ options = [];
+ /**
+ * Adds a new subcommand to this group
+ *
+ * @param input - A function that returns a subcommand builder, or an already built builder
+ */
+ addSubcommand(input) {
+ const { options } = this;
+ validateMaxOptionsLength(options);
+ const result = typeof input === "function" ? input(new SlashCommandSubcommandBuilder()) : input;
+ assertReturnOfBuilder(result, SlashCommandSubcommandBuilder);
+ options.push(result);
+ return this;
+ }
+ toJSON() {
+ validateRequiredParameters3(this.name, this.description, this.options);
+ return {
+ type: import_v1024.ApplicationCommandOptionType.SubcommandGroup,
+ name: this.name,
+ name_localizations: this.name_localizations,
+ description: this.description,
+ description_localizations: this.description_localizations,
+ options: this.options.map((option) => option.toJSON())
+ };
+ }
+}, "SlashCommandSubcommandGroupBuilder");
+SlashCommandSubcommandGroupBuilder = __decorate5([
+ (0, import_ts_mixer5.mix)(SharedNameAndDescription)
+], SlashCommandSubcommandGroupBuilder);
+var SlashCommandSubcommandBuilder = /* @__PURE__ */ __name(class SlashCommandSubcommandBuilder2 {
+ /**
+ * The name of this subcommand
+ */
+ name = void 0;
+ /**
+ * The description of this subcommand
+ */
+ description = void 0;
+ /**
+ * The options of this subcommand
+ */
+ options = [];
+ toJSON() {
+ validateRequiredParameters3(this.name, this.description, this.options);
+ return {
+ type: import_v1024.ApplicationCommandOptionType.Subcommand,
+ name: this.name,
+ name_localizations: this.name_localizations,
+ description: this.description,
+ description_localizations: this.description_localizations,
+ options: this.options.map((option) => option.toJSON())
+ };
+ }
+}, "SlashCommandSubcommandBuilder");
+SlashCommandSubcommandBuilder = __decorate5([
+ (0, import_ts_mixer5.mix)(SharedNameAndDescription, SharedSlashCommandOptions)
+], SlashCommandSubcommandBuilder);
+
+// src/interactions/slashCommands/SlashCommandBuilder.ts
+var __decorate6 = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var SlashCommandBuilder = /* @__PURE__ */ __name(class SlashCommandBuilder2 {
+ /**
+ * The name of this slash command
+ */
+ name = void 0;
+ /**
+ * The description of this slash command
+ */
+ description = void 0;
+ /**
+ * The options of this slash command
+ */
+ options = [];
+ /**
+ * Whether the command is enabled by default when the app is added to a guild
+ *
+ * @deprecated This property is deprecated and will be removed in the future.
+ * You should use {@link (SlashCommandBuilder:class).setDefaultMemberPermissions} or {@link (SlashCommandBuilder:class).setDMPermission} instead.
+ */
+ default_permission = void 0;
+ /**
+ * Set of permissions represented as a bit set for the command
+ */
+ default_member_permissions = void 0;
+ /**
+ * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ */
+ dm_permission = void 0;
+ /**
+ * Whether this command is NSFW
+ */
+ nsfw = void 0;
+ /**
+ * Returns the final data that should be sent to Discord.
+ *
+ * @remarks
+ * This method runs validations on the data before serializing it.
+ * As such, it may throw an error if the data is invalid.
+ */
+ toJSON() {
+ validateRequiredParameters3(this.name, this.description, this.options);
+ validateLocalizationMap(this.name_localizations);
+ validateLocalizationMap(this.description_localizations);
+ return {
+ ...this,
+ options: this.options.map((option) => option.toJSON())
+ };
+ }
+ /**
+ * Sets whether the command is enabled by default when the application is added to a guild.
+ *
+ * @remarks
+ * If set to `false`, you will have to later `PUT` the permissions for this command.
+ * @param value - Whether or not to enable this command by default
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ * @deprecated Use {@link (SlashCommandBuilder:class).setDefaultMemberPermissions} or {@link (SlashCommandBuilder:class).setDMPermission} instead.
+ */
+ setDefaultPermission(value) {
+ validateDefaultPermission(value);
+ Reflect.set(this, "default_permission", value);
+ return this;
+ }
+ /**
+ * Sets the default permissions a member should have in order to run the command.
+ *
+ * @remarks
+ * You can set this to `'0'` to disable the command by default.
+ * @param permissions - The permissions bit field to set
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDefaultMemberPermissions(permissions) {
+ const permissionValue = validateDefaultMemberPermissions(permissions);
+ Reflect.set(this, "default_member_permissions", permissionValue);
+ return this;
+ }
+ /**
+ * Sets if the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ *
+ * @param enabled - If the command should be enabled in DMs
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDMPermission(enabled) {
+ validateDMPermission(enabled);
+ Reflect.set(this, "dm_permission", enabled);
+ return this;
+ }
+ /**
+ * Sets whether this command is NSFW
+ *
+ * @param nsfw - Whether this command is NSFW
+ */
+ setNSFW(nsfw = true) {
+ validateNSFW(nsfw);
+ Reflect.set(this, "nsfw", nsfw);
+ return this;
+ }
+ /**
+ * Adds a new subcommand group to this command
+ *
+ * @param input - A function that returns a subcommand group builder, or an already built builder
+ */
+ addSubcommandGroup(input) {
+ const { options } = this;
+ validateMaxOptionsLength(options);
+ const result = typeof input === "function" ? input(new SlashCommandSubcommandGroupBuilder()) : input;
+ assertReturnOfBuilder(result, SlashCommandSubcommandGroupBuilder);
+ options.push(result);
+ return this;
+ }
+ /**
+ * Adds a new subcommand to this command
+ *
+ * @param input - A function that returns a subcommand builder, or an already built builder
+ */
+ addSubcommand(input) {
+ const { options } = this;
+ validateMaxOptionsLength(options);
+ const result = typeof input === "function" ? input(new SlashCommandSubcommandBuilder()) : input;
+ assertReturnOfBuilder(result, SlashCommandSubcommandBuilder);
+ options.push(result);
+ return this;
+ }
+}, "SlashCommandBuilder");
+SlashCommandBuilder = __decorate6([
+ (0, import_ts_mixer6.mix)(SharedSlashCommandOptions, SharedNameAndDescription)
+], SlashCommandBuilder);
+
+// src/interactions/contextMenuCommands/Assertions.ts
+var Assertions_exports6 = {};
+__export(Assertions_exports6, {
+ validateDMPermission: () => validateDMPermission2,
+ validateDefaultMemberPermissions: () => validateDefaultMemberPermissions2,
+ validateDefaultPermission: () => validateDefaultPermission2,
+ validateName: () => validateName2,
+ validateRequiredParameters: () => validateRequiredParameters4,
+ validateType: () => validateType
+});
+var import_shapeshift11 = require("@sapphire/shapeshift");
+var import_v1025 = require("discord-api-types/v10");
+var namePredicate2 = import_shapeshift11.s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/^( *[\p{P}\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}]+ *)+$/u).setValidationEnabled(isValidationEnabled);
+var typePredicate = import_shapeshift11.s.union(import_shapeshift11.s.literal(import_v1025.ApplicationCommandType.User), import_shapeshift11.s.literal(import_v1025.ApplicationCommandType.Message)).setValidationEnabled(isValidationEnabled);
+var booleanPredicate3 = import_shapeshift11.s.boolean;
+function validateDefaultPermission2(value) {
+ booleanPredicate3.parse(value);
+}
+__name(validateDefaultPermission2, "validateDefaultPermission");
+function validateName2(name) {
+ namePredicate2.parse(name);
+}
+__name(validateName2, "validateName");
+function validateType(type) {
+ typePredicate.parse(type);
+}
+__name(validateType, "validateType");
+function validateRequiredParameters4(name, type) {
+ validateName2(name);
+ validateType(type);
+}
+__name(validateRequiredParameters4, "validateRequiredParameters");
+var dmPermissionPredicate2 = import_shapeshift11.s.boolean.nullish;
+function validateDMPermission2(value) {
+ dmPermissionPredicate2.parse(value);
+}
+__name(validateDMPermission2, "validateDMPermission");
+var memberPermissionPredicate2 = import_shapeshift11.s.union(import_shapeshift11.s.bigint.transform((value) => value.toString()), import_shapeshift11.s.number.safeInt.transform((value) => value.toString()), import_shapeshift11.s.string.regex(/^\d+$/)).nullish;
+function validateDefaultMemberPermissions2(permissions) {
+ return memberPermissionPredicate2.parse(permissions);
+}
+__name(validateDefaultMemberPermissions2, "validateDefaultMemberPermissions");
+
+// src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts
+var ContextMenuCommandBuilder = class {
+ /**
+ * The name of this context menu command
+ */
+ name = void 0;
+ /**
+ * The type of this context menu command
+ */
+ type = void 0;
+ /**
+ * Whether the command is enabled by default when the app is added to a guild
+ *
+ * @deprecated This property is deprecated and will be removed in the future.
+ * You should use {@link ContextMenuCommandBuilder.setDefaultMemberPermissions} or {@link ContextMenuCommandBuilder.setDMPermission} instead.
+ */
+ default_permission = void 0;
+ /**
+ * Set of permissions represented as a bit set for the command
+ */
+ default_member_permissions = void 0;
+ /**
+ * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ */
+ dm_permission = void 0;
+ /**
+ * Sets the name
+ *
+ * @param name - The name
+ */
+ setName(name) {
+ validateName2(name);
+ Reflect.set(this, "name", name);
+ return this;
+ }
+ /**
+ * Sets the type
+ *
+ * @param type - The type
+ */
+ setType(type) {
+ validateType(type);
+ Reflect.set(this, "type", type);
+ return this;
+ }
+ /**
+ * Sets whether the command is enabled by default when the application is added to a guild.
+ *
+ * @remarks
+ * If set to `false`, you will have to later `PUT` the permissions for this command.
+ * @param value - Whether or not to enable this command by default
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ * @deprecated Use {@link ContextMenuCommandBuilder.setDefaultMemberPermissions} or {@link ContextMenuCommandBuilder.setDMPermission} instead.
+ */
+ setDefaultPermission(value) {
+ validateDefaultPermission2(value);
+ Reflect.set(this, "default_permission", value);
+ return this;
+ }
+ /**
+ * Sets the default permissions a member should have in order to run the command.
+ *
+ * @remarks
+ * You can set this to `'0'` to disable the command by default.
+ * @param permissions - The permissions bit field to set
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDefaultMemberPermissions(permissions) {
+ const permissionValue = validateDefaultMemberPermissions2(permissions);
+ Reflect.set(this, "default_member_permissions", permissionValue);
+ return this;
+ }
+ /**
+ * Sets if the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ *
+ * @param enabled - If the command should be enabled in DMs
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDMPermission(enabled) {
+ validateDMPermission2(enabled);
+ Reflect.set(this, "dm_permission", enabled);
+ return this;
+ }
+ /**
+ * Sets a name localization
+ *
+ * @param locale - The locale to set a description for
+ * @param localizedName - The localized description for the given locale
+ */
+ setNameLocalization(locale, localizedName) {
+ if (!this.name_localizations) {
+ Reflect.set(this, "name_localizations", {});
+ }
+ const parsedLocale = validateLocale(locale);
+ if (localizedName === null) {
+ this.name_localizations[parsedLocale] = null;
+ return this;
+ }
+ validateName2(localizedName);
+ this.name_localizations[parsedLocale] = localizedName;
+ return this;
+ }
+ /**
+ * Sets the name localizations
+ *
+ * @param localizedNames - The dictionary of localized descriptions to set
+ */
+ setNameLocalizations(localizedNames) {
+ if (localizedNames === null) {
+ Reflect.set(this, "name_localizations", null);
+ return this;
+ }
+ Reflect.set(this, "name_localizations", {});
+ for (const args of Object.entries(localizedNames))
+ this.setNameLocalization(...args);
+ return this;
+ }
+ /**
+ * Returns the final data that should be sent to Discord.
+ *
+ * @remarks
+ * This method runs validations on the data before serializing it.
+ * As such, it may throw an error if the data is invalid.
+ */
+ toJSON() {
+ validateRequiredParameters4(this.name, this.type);
+ validateLocalizationMap(this.name_localizations);
+ return {
+ ...this
+ };
+ }
+};
+__name(ContextMenuCommandBuilder, "ContextMenuCommandBuilder");
+
+// src/util/componentUtil.ts
+function embedLength(data) {
+ return (data.title?.length ?? 0) + (data.description?.length ?? 0) + (data.fields?.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) ?? 0) + (data.footer?.text.length ?? 0) + (data.author?.name.length ?? 0);
+}
+__name(embedLength, "embedLength");
+
+// src/index.ts
+__reExport(src_exports, require("@discordjs/util"), module.exports);
+var version = "[VI]{{inject}}[/VI]";
+// Annotate the CommonJS export names for ESM import in node:
+0 && (module.exports = {
+ ActionRowBuilder,
+ ApplicationCommandNumericOptionMinMaxValueMixin,
+ ApplicationCommandOptionBase,
+ ApplicationCommandOptionChannelTypesMixin,
+ ApplicationCommandOptionWithChoicesAndAutocompleteMixin,
+ BaseSelectMenuBuilder,
+ ButtonBuilder,
+ ChannelSelectMenuBuilder,
+ ComponentAssertions,
+ ComponentBuilder,
+ ContextMenuCommandAssertions,
+ ContextMenuCommandBuilder,
+ EmbedAssertions,
+ EmbedBuilder,
+ MentionableSelectMenuBuilder,
+ ModalAssertions,
+ ModalBuilder,
+ RoleSelectMenuBuilder,
+ SelectMenuBuilder,
+ SelectMenuOptionBuilder,
+ SharedNameAndDescription,
+ SharedSlashCommandOptions,
+ SlashCommandAssertions,
+ SlashCommandAttachmentOption,
+ SlashCommandBooleanOption,
+ SlashCommandBuilder,
+ SlashCommandChannelOption,
+ SlashCommandIntegerOption,
+ SlashCommandMentionableOption,
+ SlashCommandNumberOption,
+ SlashCommandRoleOption,
+ SlashCommandStringOption,
+ SlashCommandSubcommandBuilder,
+ SlashCommandSubcommandGroupBuilder,
+ SlashCommandUserOption,
+ StringSelectMenuBuilder,
+ StringSelectMenuOptionBuilder,
+ TextInputAssertions,
+ TextInputBuilder,
+ UserSelectMenuBuilder,
+ createComponentBuilder,
+ disableValidators,
+ embedLength,
+ enableValidators,
+ isValidationEnabled,
+ normalizeArray,
+ version
+});
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@discordjs/builders/dist/index.js.map b/node_modules/@discordjs/builders/dist/index.js.map
new file mode 100644
index 0000000..423fbbe
--- /dev/null
+++ b/node_modules/@discordjs/builders/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.ts","../src/messages/embed/Assertions.ts","../src/util/validation.ts","../src/util/normalizeArray.ts","../src/messages/embed/Embed.ts","../src/components/Assertions.ts","../src/components/selectMenu/StringSelectMenuOption.ts","../src/components/ActionRow.ts","../src/components/Component.ts","../src/components/Components.ts","../src/components/button/Button.ts","../src/components/selectMenu/ChannelSelectMenu.ts","../src/components/selectMenu/BaseSelectMenu.ts","../src/components/selectMenu/MentionableSelectMenu.ts","../src/components/selectMenu/RoleSelectMenu.ts","../src/components/selectMenu/StringSelectMenu.ts","../src/components/selectMenu/UserSelectMenu.ts","../src/components/textInput/TextInput.ts","../src/components/textInput/Assertions.ts","../src/interactions/modals/Assertions.ts","../src/interactions/modals/Modal.ts","../src/interactions/slashCommands/Assertions.ts","../src/interactions/slashCommands/SlashCommandBuilder.ts","../src/interactions/slashCommands/SlashCommandSubcommands.ts","../src/interactions/slashCommands/mixins/NameAndDescription.ts","../src/interactions/slashCommands/options/attachment.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts","../src/interactions/slashCommands/options/boolean.ts","../src/interactions/slashCommands/options/channel.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts","../src/interactions/slashCommands/options/integer.ts","../src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.ts","../src/interactions/slashCommands/options/mentionable.ts","../src/interactions/slashCommands/options/number.ts","../src/interactions/slashCommands/options/role.ts","../src/interactions/slashCommands/options/string.ts","../src/interactions/slashCommands/options/user.ts","../src/interactions/slashCommands/mixins/SharedSlashCommandOptions.ts","../src/interactions/contextMenuCommands/Assertions.ts","../src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts","../src/util/componentUtil.ts"],"sourcesContent":["export * as EmbedAssertions from './messages/embed/Assertions.js';\nexport * from './messages/embed/Embed.js';\n// TODO: Consider removing this dep in the next major version\nexport * from '@discordjs/formatters';\n\nexport * as ComponentAssertions from './components/Assertions.js';\nexport * from './components/ActionRow.js';\nexport * from './components/button/Button.js';\nexport * from './components/Component.js';\nexport * from './components/Components.js';\nexport * from './components/textInput/TextInput.js';\nexport * as TextInputAssertions from './components/textInput/Assertions.js';\nexport * from './interactions/modals/Modal.js';\nexport * as ModalAssertions from './interactions/modals/Assertions.js';\n\nexport * from './components/selectMenu/BaseSelectMenu.js';\nexport * from './components/selectMenu/ChannelSelectMenu.js';\nexport * from './components/selectMenu/MentionableSelectMenu.js';\nexport * from './components/selectMenu/RoleSelectMenu.js';\nexport * from './components/selectMenu/StringSelectMenu.js';\n// TODO: Remove those aliases in v2\nexport {\n\t/**\n\t * @deprecated Will be removed in the next major version, use {@link StringSelectMenuBuilder} instead.\n\t */\n\tStringSelectMenuBuilder as SelectMenuBuilder,\n} from './components/selectMenu/StringSelectMenu.js';\nexport {\n\t/**\n\t * @deprecated Will be removed in the next major version, use {@link StringSelectMenuOptionBuilder} instead.\n\t */\n\tStringSelectMenuOptionBuilder as SelectMenuOptionBuilder,\n} from './components/selectMenu/StringSelectMenuOption.js';\nexport * from './components/selectMenu/StringSelectMenuOption.js';\nexport * from './components/selectMenu/UserSelectMenu.js';\n\nexport * as SlashCommandAssertions from './interactions/slashCommands/Assertions.js';\nexport * from './interactions/slashCommands/SlashCommandBuilder.js';\nexport * from './interactions/slashCommands/SlashCommandSubcommands.js';\nexport * from './interactions/slashCommands/options/boolean.js';\nexport * from './interactions/slashCommands/options/channel.js';\nexport * from './interactions/slashCommands/options/integer.js';\nexport * from './interactions/slashCommands/options/mentionable.js';\nexport * from './interactions/slashCommands/options/number.js';\nexport * from './interactions/slashCommands/options/role.js';\nexport * from './interactions/slashCommands/options/attachment.js';\nexport * from './interactions/slashCommands/options/string.js';\nexport * from './interactions/slashCommands/options/user.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionBase.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.js';\nexport * from './interactions/slashCommands/mixins/NameAndDescription.js';\nexport * from './interactions/slashCommands/mixins/SharedSlashCommandOptions.js';\n\nexport * as ContextMenuCommandAssertions from './interactions/contextMenuCommands/Assertions.js';\nexport * from './interactions/contextMenuCommands/ContextMenuCommandBuilder.js';\n\nexport * from './util/componentUtil.js';\nexport * from './util/normalizeArray.js';\nexport * from './util/validation.js';\nexport * from '@discordjs/util';\n\n/**\n * The {@link https://github.com/discordjs/discord.js/blob/main/packages/builders/#readme | @discordjs/builders} version\n * that you are currently using.\n */\n// This needs to explicitly be `string` so it is not typed as a \"const string\" that gets injected by esbuild\nexport const version = '[VI]{{inject}}[/VI]' as string;\n","import { s } from '@sapphire/shapeshift';\nimport type { APIEmbedField } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation.js';\n\nexport const fieldNamePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(256)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const fieldValuePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(1_024)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const fieldInlinePredicate = s.boolean.optional;\n\nexport const embedFieldPredicate = s\n\t.object({\n\t\tname: fieldNamePredicate,\n\t\tvalue: fieldValuePredicate,\n\t\tinline: fieldInlinePredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const embedFieldsArrayPredicate = embedFieldPredicate.array.setValidationEnabled(isValidationEnabled);\n\nexport const fieldLengthPredicate = s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\n\nexport function validateFieldLength(amountAdding: number, fields?: APIEmbedField[]): void {\n\tfieldLengthPredicate.parse((fields?.length ?? 0) + amountAdding);\n}\n\nexport const authorNamePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const imageURLPredicate = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:', 'attachment:'],\n\t})\n\t.nullish.setValidationEnabled(isValidationEnabled);\n\nexport const urlPredicate = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:'],\n\t})\n\t.nullish.setValidationEnabled(isValidationEnabled);\n\nexport const embedAuthorPredicate = s\n\t.object({\n\t\tname: authorNamePredicate,\n\t\ticonURL: imageURLPredicate,\n\t\turl: urlPredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const RGBPredicate = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(255)\n\t.setValidationEnabled(isValidationEnabled);\nexport const colorPredicate = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(0xffffff)\n\t.or(s.tuple([RGBPredicate, RGBPredicate, RGBPredicate]))\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const descriptionPredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(4_096)\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const footerTextPredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(2_048)\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const embedFooterPredicate = s\n\t.object({\n\t\ttext: footerTextPredicate,\n\t\ticonURL: imageURLPredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const timestampPredicate = s.union(s.number, s.date).nullable.setValidationEnabled(isValidationEnabled);\n\nexport const titlePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);\n","let validate = true;\n\nexport const enableValidators = () => (validate = true);\nexport const disableValidators = () => (validate = false);\nexport const isValidationEnabled = () => validate;\n","export function normalizeArray(arr: RestOrArray): T[] {\n\tif (Array.isArray(arr[0])) return arr[0];\n\treturn arr as T[];\n}\n\nexport type RestOrArray = T[] | [T[]];\n","import type { APIEmbed, APIEmbedAuthor, APIEmbedField, APIEmbedFooter, APIEmbedImage } from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport {\n\tcolorPredicate,\n\tdescriptionPredicate,\n\tembedAuthorPredicate,\n\tembedFieldsArrayPredicate,\n\tembedFooterPredicate,\n\timageURLPredicate,\n\ttimestampPredicate,\n\ttitlePredicate,\n\turlPredicate,\n\tvalidateFieldLength,\n} from './Assertions.js';\n\nexport type RGBTuple = [red: number, green: number, blue: number];\n\nexport interface IconData {\n\t/**\n\t * The URL of the icon\n\t */\n\ticonURL?: string;\n\t/**\n\t * The proxy URL of the icon\n\t */\n\tproxyIconURL?: string;\n}\n\nexport type EmbedAuthorData = IconData & Omit;\n\nexport type EmbedAuthorOptions = Omit;\n\nexport type EmbedFooterData = IconData & Omit;\n\nexport type EmbedFooterOptions = Omit;\n\nexport interface EmbedImageData extends Omit {\n\t/**\n\t * The proxy URL for the image\n\t */\n\tproxyURL?: string;\n}\n/**\n * Represents a embed in a message (image/video preview, rich embed, etc.)\n */\nexport class EmbedBuilder {\n\tpublic readonly data: APIEmbed;\n\n\tpublic constructor(data: APIEmbed = {}) {\n\t\tthis.data = { ...data };\n\t\tif (data.timestamp) this.data.timestamp = new Date(data.timestamp).toISOString();\n\t}\n\n\t/**\n\t * Appends fields to the embed\n\t *\n\t * @remarks\n\t * This method accepts either an array of fields or a variable number of field parameters.\n\t * The maximum amount of fields that can be added is 25.\n\t * @example\n\t * Using an array\n\t * ```ts\n\t * const fields: APIEmbedField[] = ...;\n\t * const embed = new EmbedBuilder()\n\t * \t.addFields(fields);\n\t * ```\n\t * @example\n\t * Using rest parameters (variadic)\n\t * ```ts\n\t * const embed = new EmbedBuilder()\n\t * \t.addFields(\n\t * \t\t{ name: 'Field 1', value: 'Value 1' },\n\t * \t\t{ name: 'Field 2', value: 'Value 2' },\n\t * \t);\n\t * ```\n\t * @param fields - The fields to add\n\t */\n\tpublic addFields(...fields: RestOrArray): this {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tfields = normalizeArray(fields);\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(fields.length, this.data.fields);\n\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\n\t\tif (this.data.fields) this.data.fields.push(...fields);\n\t\telse this.data.fields = fields;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts fields in the embed.\n\t *\n\t * @remarks\n\t * This method behaves similarly\n\t * to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice | Array.prototype.splice}.\n\t * The maximum amount of fields that can be added is 25.\n\t *\n\t * It's useful for modifying and adjusting order of the already-existing fields of an embed.\n\t * @example\n\t * Remove the first field\n\t * ```ts\n\t * embed.spliceFields(0, 1);\n\t * ```\n\t * @example\n\t * Remove the first n fields\n\t * ```ts\n\t * const n = 4\n\t * embed.spliceFields(0, n);\n\t * ```\n\t * @example\n\t * Remove the last field\n\t * ```ts\n\t * embed.spliceFields(-1, 1);\n\t * ```\n\t * @param index - The index to start at\n\t * @param deleteCount - The number of fields to remove\n\t * @param fields - The replacing field objects\n\t */\n\tpublic spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this {\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(fields.length - deleteCount, this.data.fields);\n\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\t\tif (this.data.fields) this.data.fields.splice(index, deleteCount, ...fields);\n\t\telse this.data.fields = fields;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the embed's fields\n\t *\n\t * @remarks\n\t * This method is an alias for {@link EmbedBuilder.spliceFields}. More specifically,\n\t * it splices the entire array of fields, replacing them with the provided fields.\n\t *\n\t * You can set a maximum of 25 fields.\n\t * @param fields - The fields to set\n\t */\n\tpublic setFields(...fields: RestOrArray) {\n\t\tthis.spliceFields(0, this.data.fields?.length ?? 0, ...normalizeArray(fields));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the author of this embed\n\t *\n\t * @param options - The options for the author\n\t */\n\n\tpublic setAuthor(options: EmbedAuthorOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.data.author = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Data assertions\n\t\tembedAuthorPredicate.parse(options);\n\n\t\tthis.data.author = { name: options.name, url: options.url, icon_url: options.iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the color of this embed\n\t *\n\t * @param color - The color of the embed\n\t */\n\tpublic setColor(color: RGBTuple | number | null): this {\n\t\t// Data assertions\n\t\tcolorPredicate.parse(color);\n\n\t\tif (Array.isArray(color)) {\n\t\t\tconst [red, green, blue] = color;\n\t\t\tthis.data.color = (red << 16) + (green << 8) + blue;\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.data.color = color ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this embed\n\t *\n\t * @param description - The description\n\t */\n\tpublic setDescription(description: string | null): this {\n\t\t// Data assertions\n\t\tdescriptionPredicate.parse(description);\n\n\t\tthis.data.description = description ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the footer of this embed\n\t *\n\t * @param options - The options for the footer\n\t */\n\tpublic setFooter(options: EmbedFooterOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.data.footer = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Data assertions\n\t\tembedFooterPredicate.parse(options);\n\n\t\tthis.data.footer = { text: options.text, icon_url: options.iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the image of this embed\n\t *\n\t * @param url - The URL of the image\n\t */\n\tpublic setImage(url: string | null): this {\n\t\t// Data assertions\n\t\timageURLPredicate.parse(url);\n\n\t\tthis.data.image = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the thumbnail of this embed\n\t *\n\t * @param url - The URL of the thumbnail\n\t */\n\tpublic setThumbnail(url: string | null): this {\n\t\t// Data assertions\n\t\timageURLPredicate.parse(url);\n\n\t\tthis.data.thumbnail = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the timestamp of this embed\n\t *\n\t * @param timestamp - The timestamp or date\n\t */\n\tpublic setTimestamp(timestamp: Date | number | null = Date.now()): this {\n\t\t// Data assertions\n\t\ttimestampPredicate.parse(timestamp);\n\n\t\tthis.data.timestamp = timestamp ? new Date(timestamp).toISOString() : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the title of this embed\n\t *\n\t * @param title - The title\n\t */\n\tpublic setTitle(title: string | null): this {\n\t\t// Data assertions\n\t\ttitlePredicate.parse(title);\n\n\t\tthis.data.title = title ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL of this embed\n\t *\n\t * @param url - The URL\n\t */\n\tpublic setURL(url: string | null): this {\n\t\t// Data assertions\n\t\turlPredicate.parse(url);\n\n\t\tthis.data.url = url ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Transforms the embed to a plain object\n\t */\n\tpublic toJSON(): APIEmbed {\n\t\treturn { ...this.data };\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ButtonStyle, ChannelType, type APIMessageComponentEmoji } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../util/validation.js';\nimport { StringSelectMenuOptionBuilder } from './selectMenu/StringSelectMenuOption.js';\n\nexport const customIdValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const emojiValidator = s\n\t.object({\n\t\tid: s.string,\n\t\tname: s.string,\n\t\tanimated: s.boolean,\n\t})\n\t.partial.strict.setValidationEnabled(isValidationEnabled);\n\nexport const disabledValidator = s.boolean;\n\nexport const buttonLabelValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(80)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const buttonStyleValidator = s.nativeEnum(ButtonStyle);\n\nexport const placeholderValidator = s.string.lengthLessThanOrEqual(150).setValidationEnabled(isValidationEnabled);\nexport const minMaxValidator = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(25)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const labelValueDescriptionValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const jsonOptionValidator = s\n\t.object({\n\t\tlabel: labelValueDescriptionValidator,\n\t\tvalue: labelValueDescriptionValidator,\n\t\tdescription: labelValueDescriptionValidator.optional,\n\t\temoji: emojiValidator.optional,\n\t\tdefault: s.boolean.optional,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const optionValidator = s.instance(StringSelectMenuOptionBuilder).setValidationEnabled(isValidationEnabled);\n\nexport const optionsValidator = optionValidator.array\n\t.lengthGreaterThanOrEqual(0)\n\t.setValidationEnabled(isValidationEnabled);\nexport const optionsLengthValidator = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(25)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredSelectMenuParameters(options: StringSelectMenuOptionBuilder[], customId?: string) {\n\tcustomIdValidator.parse(customId);\n\toptionsValidator.parse(options);\n}\n\nexport const defaultValidator = s.boolean;\n\nexport function validateRequiredSelectMenuOptionParameters(label?: string, value?: string) {\n\tlabelValueDescriptionValidator.parse(label);\n\tlabelValueDescriptionValidator.parse(value);\n}\n\nexport const channelTypesValidator = s.nativeEnum(ChannelType).array.setValidationEnabled(isValidationEnabled);\n\nexport const urlValidator = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:', 'discord:'],\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredButtonParameters(\n\tstyle?: ButtonStyle,\n\tlabel?: string,\n\temoji?: APIMessageComponentEmoji,\n\tcustomId?: string,\n\turl?: string,\n) {\n\tif (url && customId) {\n\t\tthrow new RangeError('URL and custom id are mutually exclusive');\n\t}\n\n\tif (!label && !emoji) {\n\t\tthrow new RangeError('Buttons must have a label and/or an emoji');\n\t}\n\n\tif (style === ButtonStyle.Link) {\n\t\tif (!url) {\n\t\t\tthrow new RangeError('Link buttons must have a url');\n\t\t}\n\t} else if (url) {\n\t\tthrow new RangeError('Non-link buttons cannot have a url');\n\t}\n}\n","import type { JSONEncodable } from '@discordjs/util';\nimport type { APIMessageComponentEmoji, APISelectMenuOption } from 'discord-api-types/v10';\nimport {\n\tdefaultValidator,\n\temojiValidator,\n\tlabelValueDescriptionValidator,\n\tvalidateRequiredSelectMenuOptionParameters,\n} from '../Assertions.js';\n\n/**\n * Represents an option within a string select menu component\n */\nexport class StringSelectMenuOptionBuilder implements JSONEncodable {\n\t/**\n\t * Creates a new string select menu option from API data\n\t *\n\t * @param data - The API data to create this string select menu option with\n\t * @example\n\t * Creating a string select menu option from an API data object\n\t * ```ts\n\t * const selectMenuOption = new SelectMenuOptionBuilder({\n\t * \tlabel: 'catchy label',\n\t * \tvalue: '1',\n\t * });\n\t * ```\n\t * @example\n\t * Creating a string select menu option using setters and API data\n\t * ```ts\n\t * const selectMenuOption = new SelectMenuOptionBuilder({\n\t * \tdefault: true,\n\t * \tvalue: '1',\n\t * })\n\t * \t.setLabel('woah')\n\t * ```\n\t */\n\tpublic constructor(public data: Partial = {}) {}\n\n\t/**\n\t * Sets the label of this option\n\t *\n\t * @param label - The label to show on this option\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = labelValueDescriptionValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the value of this option\n\t *\n\t * @param value - The value of this option\n\t */\n\tpublic setValue(value: string) {\n\t\tthis.data.value = labelValueDescriptionValidator.parse(value);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this option\n\t *\n\t * @param description - The description of this option\n\t */\n\tpublic setDescription(description: string) {\n\t\tthis.data.description = labelValueDescriptionValidator.parse(description);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this option is selected by default\n\t *\n\t * @param isDefault - Whether this option is selected by default\n\t */\n\tpublic setDefault(isDefault = true) {\n\t\tthis.data.default = defaultValidator.parse(isDefault);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the emoji to display on this option\n\t *\n\t * @param emoji - The emoji to display on this option\n\t */\n\tpublic setEmoji(emoji: APIMessageComponentEmoji) {\n\t\tthis.data.emoji = emojiValidator.parse(emoji);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APISelectMenuOption {\n\t\tvalidateRequiredSelectMenuOptionParameters(this.data.label, this.data.value);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APISelectMenuOption;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport {\n\ttype APIActionRowComponent,\n\tComponentType,\n\ttype APIMessageActionRowComponent,\n\ttype APIModalActionRowComponent,\n\ttype APIActionRowComponentTypes,\n} from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../util/normalizeArray.js';\nimport { ComponentBuilder } from './Component.js';\nimport { createComponentBuilder } from './Components.js';\nimport type { ButtonBuilder } from './button/Button.js';\nimport type { ChannelSelectMenuBuilder } from './selectMenu/ChannelSelectMenu.js';\nimport type { MentionableSelectMenuBuilder } from './selectMenu/MentionableSelectMenu.js';\nimport type { RoleSelectMenuBuilder } from './selectMenu/RoleSelectMenu.js';\nimport type { StringSelectMenuBuilder } from './selectMenu/StringSelectMenu.js';\nimport type { UserSelectMenuBuilder } from './selectMenu/UserSelectMenu.js';\nimport type { TextInputBuilder } from './textInput/TextInput.js';\n\nexport type MessageComponentBuilder =\n\t| ActionRowBuilder\n\t| MessageActionRowComponentBuilder;\nexport type ModalComponentBuilder = ActionRowBuilder | ModalActionRowComponentBuilder;\nexport type MessageActionRowComponentBuilder =\n\t| ButtonBuilder\n\t| ChannelSelectMenuBuilder\n\t| MentionableSelectMenuBuilder\n\t| RoleSelectMenuBuilder\n\t| StringSelectMenuBuilder\n\t| UserSelectMenuBuilder;\nexport type ModalActionRowComponentBuilder = TextInputBuilder;\nexport type AnyComponentBuilder = MessageActionRowComponentBuilder | ModalActionRowComponentBuilder;\n\n/**\n * Represents an action row component\n *\n * @typeParam T - The types of components this action row holds\n */\nexport class ActionRowBuilder extends ComponentBuilder<\n\tAPIActionRowComponent\n> {\n\t/**\n\t * The components within this action row\n\t */\n\tpublic readonly components: T[];\n\n\t/**\n\t * Creates a new action row from API data\n\t *\n\t * @param data - The API data to create this action row with\n\t * @example\n\t * Creating an action row from an API data object\n\t * ```ts\n\t * const actionRow = new ActionRowBuilder({\n\t * \tcomponents: [\n\t * \t\t{\n\t * \t\t\tcustom_id: \"custom id\",\n\t * \t\t\tlabel: \"Type something\",\n\t * \t\t\tstyle: TextInputStyle.Short,\n\t * \t\t\ttype: ComponentType.TextInput,\n\t * \t\t},\n\t * \t],\n\t * });\n\t * ```\n\t * @example\n\t * Creating an action row using setters and API data\n\t * ```ts\n\t * const actionRow = new ActionRowBuilder({\n\t * \tcomponents: [\n\t * \t\t{\n\t * \t\t\tcustom_id: \"custom id\",\n\t * \t\t\tlabel: \"Click me\",\n\t * \t\t\tstyle: ButtonStyle.Primary,\n\t * \t\t\ttype: ComponentType.Button,\n\t * \t\t},\n\t * \t],\n\t * })\n\t * \t.addComponents(button2, button3);\n\t * ```\n\t */\n\tpublic constructor({ components, ...data }: Partial> = {}) {\n\t\tsuper({ type: ComponentType.ActionRow, ...data });\n\t\tthis.components = (components?.map((component) => createComponentBuilder(component)) ?? []) as T[];\n\t}\n\n\t/**\n\t * Adds components to this action row.\n\t *\n\t * @param components - The components to add to this action row.\n\t */\n\tpublic addComponents(...components: RestOrArray) {\n\t\tthis.components.push(...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the components in this action row\n\t *\n\t * @param components - The components to set this row to\n\t */\n\tpublic setComponents(...components: RestOrArray) {\n\t\tthis.components.splice(0, this.components.length, ...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APIActionRowComponent> {\n\t\treturn {\n\t\t\t...this.data,\n\t\t\tcomponents: this.components.map((component) => component.toJSON()),\n\t\t} as APIActionRowComponent>;\n\t}\n}\n","import type { JSONEncodable } from '@discordjs/util';\nimport type {\n\tAPIActionRowComponent,\n\tAPIActionRowComponentTypes,\n\tAPIBaseComponent,\n\tComponentType,\n} from 'discord-api-types/v10';\n\nexport type AnyAPIActionRowComponent = APIActionRowComponent | APIActionRowComponentTypes;\n\n/**\n * Represents a discord component\n *\n * @typeParam DataType - The type of internal API data that is stored within the component\n */\nexport abstract class ComponentBuilder<\n\tDataType extends Partial> = APIBaseComponent,\n> implements JSONEncodable\n{\n\t/**\n\t * The API data associated with this component\n\t */\n\tpublic readonly data: Partial;\n\n\t/**\n\t * Serializes this component to an API-compatible JSON object\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic abstract toJSON(): AnyAPIActionRowComponent;\n\n\tpublic constructor(data: Partial) {\n\t\tthis.data = data;\n\t}\n}\n","import { ComponentType, type APIMessageComponent, type APIModalComponent } from 'discord-api-types/v10';\nimport {\n\tActionRowBuilder,\n\ttype AnyComponentBuilder,\n\ttype MessageComponentBuilder,\n\ttype ModalComponentBuilder,\n} from './ActionRow.js';\nimport { ComponentBuilder } from './Component.js';\nimport { ButtonBuilder } from './button/Button.js';\nimport { ChannelSelectMenuBuilder } from './selectMenu/ChannelSelectMenu.js';\nimport { MentionableSelectMenuBuilder } from './selectMenu/MentionableSelectMenu.js';\nimport { RoleSelectMenuBuilder } from './selectMenu/RoleSelectMenu.js';\nimport { StringSelectMenuBuilder } from './selectMenu/StringSelectMenu.js';\nimport { UserSelectMenuBuilder } from './selectMenu/UserSelectMenu.js';\nimport { TextInputBuilder } from './textInput/TextInput.js';\n\nexport interface MappedComponentTypes {\n\t[ComponentType.ActionRow]: ActionRowBuilder;\n\t[ComponentType.Button]: ButtonBuilder;\n\t[ComponentType.StringSelect]: StringSelectMenuBuilder;\n\t[ComponentType.TextInput]: TextInputBuilder;\n\t[ComponentType.UserSelect]: UserSelectMenuBuilder;\n\t[ComponentType.RoleSelect]: RoleSelectMenuBuilder;\n\t[ComponentType.MentionableSelect]: MentionableSelectMenuBuilder;\n\t[ComponentType.ChannelSelect]: ChannelSelectMenuBuilder;\n}\n\n/**\n * Factory for creating components from API data\n *\n * @param data - The api data to transform to a component class\n */\nexport function createComponentBuilder(\n\t// eslint-disable-next-line @typescript-eslint/sort-type-union-intersection-members\n\tdata: (APIModalComponent | APIMessageComponent) & { type: T },\n): MappedComponentTypes[T];\nexport function createComponentBuilder(data: C): C;\nexport function createComponentBuilder(\n\tdata: APIMessageComponent | APIModalComponent | MessageComponentBuilder,\n): ComponentBuilder {\n\tif (data instanceof ComponentBuilder) {\n\t\treturn data;\n\t}\n\n\tswitch (data.type) {\n\t\tcase ComponentType.ActionRow:\n\t\t\treturn new ActionRowBuilder(data);\n\t\tcase ComponentType.Button:\n\t\t\treturn new ButtonBuilder(data);\n\t\tcase ComponentType.StringSelect:\n\t\t\treturn new StringSelectMenuBuilder(data);\n\t\tcase ComponentType.TextInput:\n\t\t\treturn new TextInputBuilder(data);\n\t\tcase ComponentType.UserSelect:\n\t\t\treturn new UserSelectMenuBuilder(data);\n\t\tcase ComponentType.RoleSelect:\n\t\t\treturn new RoleSelectMenuBuilder(data);\n\t\tcase ComponentType.MentionableSelect:\n\t\t\treturn new MentionableSelectMenuBuilder(data);\n\t\tcase ComponentType.ChannelSelect:\n\t\t\treturn new ChannelSelectMenuBuilder(data);\n\t\tdefault:\n\t\t\t// @ts-expect-error: This case can still occur if we get a newer unsupported component type\n\t\t\tthrow new Error(`Cannot properly serialize component type: ${data.type}`);\n\t}\n}\n","import {\n\tComponentType,\n\ttype APIMessageComponentEmoji,\n\ttype APIButtonComponent,\n\ttype APIButtonComponentWithURL,\n\ttype APIButtonComponentWithCustomId,\n\ttype ButtonStyle,\n} from 'discord-api-types/v10';\nimport {\n\tbuttonLabelValidator,\n\tbuttonStyleValidator,\n\tcustomIdValidator,\n\tdisabledValidator,\n\temojiValidator,\n\turlValidator,\n\tvalidateRequiredButtonParameters,\n} from '../Assertions.js';\nimport { ComponentBuilder } from '../Component.js';\n\n/**\n * Represents a button component\n */\nexport class ButtonBuilder extends ComponentBuilder {\n\t/**\n\t * Creates a new button from API data\n\t *\n\t * @param data - The API data to create this button with\n\t * @example\n\t * Creating a button from an API data object\n\t * ```ts\n\t * const button = new ButtonBuilder({\n\t * \tcustom_id: 'a cool button',\n\t * \tstyle: ButtonStyle.Primary,\n\t * \tlabel: 'Click Me',\n\t * \temoji: {\n\t * \t\tname: 'smile',\n\t * \t\tid: '123456789012345678',\n\t * \t},\n\t * });\n\t * ```\n\t * @example\n\t * Creating a button using setters and API data\n\t * ```ts\n\t * const button = new ButtonBuilder({\n\t * \tstyle: ButtonStyle.Secondary,\n\t * \tlabel: 'Click Me',\n\t * })\n\t * \t.setEmoji({ name: '🙂' })\n\t * \t.setCustomId('another cool button');\n\t * ```\n\t */\n\tpublic constructor(data?: Partial) {\n\t\tsuper({ type: ComponentType.Button, ...data });\n\t}\n\n\t/**\n\t * Sets the style of this button\n\t *\n\t * @param style - The style of the button\n\t */\n\tpublic setStyle(style: ButtonStyle) {\n\t\tthis.data.style = buttonStyleValidator.parse(style);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL for this button\n\t *\n\t * @remarks\n\t * This method is only available to buttons using the `Link` button style.\n\t * Only three types of URL schemes are currently supported: `https://`, `http://` and `discord://`\n\t * @param url - The URL to open when this button is clicked\n\t */\n\tpublic setURL(url: string) {\n\t\t(this.data as APIButtonComponentWithURL).url = urlValidator.parse(url);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id for this button\n\t *\n\t * @remarks\n\t * This method is only applicable to buttons that are not using the `Link` button style.\n\t * @param customId - The custom id to use for this button\n\t */\n\tpublic setCustomId(customId: string) {\n\t\t(this.data as APIButtonComponentWithCustomId).custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the emoji to display on this button\n\t *\n\t * @param emoji - The emoji to display on this button\n\t */\n\tpublic setEmoji(emoji: APIMessageComponentEmoji) {\n\t\tthis.data.emoji = emojiValidator.parse(emoji);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this button is disabled\n\t *\n\t * @param disabled - Whether to disable this button\n\t */\n\tpublic setDisabled(disabled = true) {\n\t\tthis.data.disabled = disabledValidator.parse(disabled);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the label for this button\n\t *\n\t * @param label - The label to display on this button\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = buttonLabelValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APIButtonComponent {\n\t\tvalidateRequiredButtonParameters(\n\t\t\tthis.data.style,\n\t\t\tthis.data.label,\n\t\t\tthis.data.emoji,\n\t\t\t(this.data as APIButtonComponentWithCustomId).custom_id,\n\t\t\t(this.data as APIButtonComponentWithURL).url,\n\t\t);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APIButtonComponent;\n\t}\n}\n","import type { APIChannelSelectComponent, ChannelType } from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport { channelTypesValidator, customIdValidator } from '../Assertions.js';\nimport { BaseSelectMenuBuilder } from './BaseSelectMenu.js';\n\nexport class ChannelSelectMenuBuilder extends BaseSelectMenuBuilder {\n\t/**\n\t * Creates a new select menu from API data\n\t *\n\t * @param data - The API data to create this select menu with\n\t * @example\n\t * Creating a select menu from an API data object\n\t * ```ts\n\t * const selectMenu = new ChannelSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tplaceholder: 'select an option',\n\t * \tmax_values: 2,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu using setters and API data\n\t * ```ts\n\t * const selectMenu = new ChannelSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * })\n\t * \t.addChannelTypes(ChannelType.GuildText, ChannelType.GuildAnnouncement)\n\t * \t.setMinValues(2)\n\t * ```\n\t */\n\tpublic constructor(data?: Partial) {\n\t\tsuper({ ...data, type: ComponentType.ChannelSelect });\n\t}\n\n\tpublic addChannelTypes(...types: RestOrArray) {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\ttypes = normalizeArray(types);\n\n\t\tthis.data.channel_types ??= [];\n\t\tthis.data.channel_types.push(...channelTypesValidator.parse(types));\n\t\treturn this;\n\t}\n\n\tpublic setChannelTypes(...types: RestOrArray) {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\ttypes = normalizeArray(types);\n\n\t\tthis.data.channel_types ??= [];\n\t\tthis.data.channel_types.splice(0, this.data.channel_types.length, ...channelTypesValidator.parse(types));\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic override toJSON(): APIChannelSelectComponent {\n\t\tcustomIdValidator.parse(this.data.custom_id);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APIChannelSelectComponent;\n\t}\n}\n","import type { APISelectMenuComponent } from 'discord-api-types/v10';\nimport { customIdValidator, disabledValidator, minMaxValidator, placeholderValidator } from '../Assertions.js';\nimport { ComponentBuilder } from '../Component.js';\n\nexport class BaseSelectMenuBuilder<\n\tSelectMenuType extends APISelectMenuComponent,\n> extends ComponentBuilder {\n\t/**\n\t * Sets the placeholder for this select menu\n\t *\n\t * @param placeholder - The placeholder to use for this select menu\n\t */\n\tpublic setPlaceholder(placeholder: string) {\n\t\tthis.data.placeholder = placeholderValidator.parse(placeholder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum values that must be selected in the select menu\n\t *\n\t * @param minValues - The minimum values that must be selected\n\t */\n\tpublic setMinValues(minValues: number) {\n\t\tthis.data.min_values = minMaxValidator.parse(minValues);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the maximum values that must be selected in the select menu\n\t *\n\t * @param maxValues - The maximum values that must be selected\n\t */\n\tpublic setMaxValues(maxValues: number) {\n\t\tthis.data.max_values = minMaxValidator.parse(maxValues);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id for this select menu\n\t *\n\t * @param customId - The custom id to use for this select menu\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this select menu is disabled\n\t *\n\t * @param disabled - Whether this select menu is disabled\n\t */\n\tpublic setDisabled(disabled = true) {\n\t\tthis.data.disabled = disabledValidator.parse(disabled);\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): SelectMenuType {\n\t\tcustomIdValidator.parse(this.data.custom_id);\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as SelectMenuType;\n\t}\n}\n","import type { APIMentionableSelectComponent } from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { BaseSelectMenuBuilder } from './BaseSelectMenu.js';\n\nexport class MentionableSelectMenuBuilder extends BaseSelectMenuBuilder {\n\t/**\n\t * Creates a new select menu from API data\n\t *\n\t * @param data - The API data to create this select menu with\n\t * @example\n\t * Creating a select menu from an API data object\n\t * ```ts\n\t * const selectMenu = new MentionableSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tplaceholder: 'select an option',\n\t * \tmax_values: 2,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu using setters and API data\n\t * ```ts\n\t * const selectMenu = new MentionableSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * })\n\t * \t.setMinValues(1)\n\t * ```\n\t */\n\tpublic constructor(data?: Partial) {\n\t\tsuper({ ...data, type: ComponentType.MentionableSelect });\n\t}\n}\n","import type { APIRoleSelectComponent } from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { BaseSelectMenuBuilder } from './BaseSelectMenu.js';\n\nexport class RoleSelectMenuBuilder extends BaseSelectMenuBuilder {\n\t/**\n\t * Creates a new select menu from API data\n\t *\n\t * @param data - The API data to create this select menu with\n\t * @example\n\t * Creating a select menu from an API data object\n\t * ```ts\n\t * const selectMenu = new RoleSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tplaceholder: 'select an option',\n\t * \tmax_values: 2,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu using setters and API data\n\t * ```ts\n\t * const selectMenu = new RoleSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * })\n\t * \t.setMinValues(1)\n\t * ```\n\t */\n\tpublic constructor(data?: Partial) {\n\t\tsuper({ ...data, type: ComponentType.RoleSelect });\n\t}\n}\n","import type { APIStringSelectComponent } from 'discord-api-types/v10';\nimport { ComponentType, type APISelectMenuOption } from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport { jsonOptionValidator, optionsLengthValidator, validateRequiredSelectMenuParameters } from '../Assertions.js';\nimport { BaseSelectMenuBuilder } from './BaseSelectMenu.js';\nimport { StringSelectMenuOptionBuilder } from './StringSelectMenuOption.js';\n\n/**\n * Represents a string select menu component\n */\nexport class StringSelectMenuBuilder extends BaseSelectMenuBuilder {\n\t/**\n\t * The options within this select menu\n\t */\n\tpublic readonly options: StringSelectMenuOptionBuilder[];\n\n\t/**\n\t * Creates a new select menu from API data\n\t *\n\t * @param data - The API data to create this select menu with\n\t * @example\n\t * Creating a select menu from an API data object\n\t * ```ts\n\t * const selectMenu = new StringSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tplaceholder: 'select an option',\n\t * \tmax_values: 2,\n\t * \toptions: [\n\t * \t\t{ label: 'option 1', value: '1' },\n\t * \t\t{ label: 'option 2', value: '2' },\n\t * \t\t{ label: 'option 3', value: '3' },\n\t * \t],\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu using setters and API data\n\t * ```ts\n\t * const selectMenu = new StringSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * })\n\t * \t.setMinValues(1)\n\t * \t.addOptions({\n\t * \t\tlabel: 'Catchy',\n\t * \t\tvalue: 'catch',\n\t * \t});\n\t * ```\n\t */\n\tpublic constructor(data?: Partial) {\n\t\tconst { options, ...initData } = data ?? {};\n\t\tsuper({ ...initData, type: ComponentType.StringSelect });\n\t\tthis.options = options?.map((option: APISelectMenuOption) => new StringSelectMenuOptionBuilder(option)) ?? [];\n\t}\n\n\t/**\n\t * Adds options to this select menu\n\t *\n\t * @param options - The options to add to this select menu\n\t * @returns\n\t */\n\tpublic addOptions(...options: RestOrArray) {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\toptions = normalizeArray(options);\n\t\toptionsLengthValidator.parse(this.options.length + options.length);\n\t\tthis.options.push(\n\t\t\t...options.map((option) =>\n\t\t\t\toption instanceof StringSelectMenuOptionBuilder\n\t\t\t\t\t? option\n\t\t\t\t\t: new StringSelectMenuOptionBuilder(jsonOptionValidator.parse(option)),\n\t\t\t),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the options on this select menu\n\t *\n\t * @param options - The options to set on this select menu\n\t */\n\tpublic setOptions(...options: RestOrArray) {\n\t\treturn this.spliceOptions(0, this.options.length, ...options);\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts options in the string select menu.\n\t *\n\t * @remarks\n\t * This method behaves similarly\n\t * to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice | Array.prototype.splice}.\n\t *\n\t * It's useful for modifying and adjusting order of the already-existing options of a string select menu.\n\t * @example\n\t * Remove the first option\n\t * ```ts\n\t * selectMenu.spliceOptions(0, 1);\n\t * ```\n\t * @example\n\t * Remove the first n option\n\t * ```ts\n\t * const n = 4\n\t * selectMenu.spliceOptions(0, n);\n\t * ```\n\t * @example\n\t * Remove the last option\n\t * ```ts\n\t * selectMenu.spliceOptions(-1, 1);\n\t * ```\n\t * @param index - The index to start at\n\t * @param deleteCount - The number of options to remove\n\t * @param options - The replacing option objects or builders\n\t */\n\tpublic spliceOptions(\n\t\tindex: number,\n\t\tdeleteCount: number,\n\t\t...options: RestOrArray\n\t) {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\toptions = normalizeArray(options);\n\n\t\tconst clone = [...this.options];\n\n\t\tclone.splice(\n\t\t\tindex,\n\t\t\tdeleteCount,\n\t\t\t...options.map((option) =>\n\t\t\t\toption instanceof StringSelectMenuOptionBuilder\n\t\t\t\t\t? option\n\t\t\t\t\t: new StringSelectMenuOptionBuilder(jsonOptionValidator.parse(option)),\n\t\t\t),\n\t\t);\n\n\t\toptionsLengthValidator.parse(clone.length);\n\n\t\tthis.options.splice(0, this.options.length, ...clone);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic override toJSON(): APIStringSelectComponent {\n\t\tvalidateRequiredSelectMenuParameters(this.options, this.data.custom_id);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t} as APIStringSelectComponent;\n\t}\n}\n","import type { APIUserSelectComponent } from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { BaseSelectMenuBuilder } from './BaseSelectMenu.js';\n\nexport class UserSelectMenuBuilder extends BaseSelectMenuBuilder {\n\t/**\n\t * Creates a new select menu from API data\n\t *\n\t * @param data - The API data to create this select menu with\n\t * @example\n\t * Creating a select menu from an API data object\n\t * ```ts\n\t * const selectMenu = new UserSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tplaceholder: 'select an option',\n\t * \tmax_values: 2,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu using setters and API data\n\t * ```ts\n\t * const selectMenu = new UserSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * })\n\t * \t.setMinValues(1)\n\t * ```\n\t */\n\tpublic constructor(data?: Partial) {\n\t\tsuper({ ...data, type: ComponentType.UserSelect });\n\t}\n}\n","import { isJSONEncodable, type Equatable, type JSONEncodable } from '@discordjs/util';\nimport { ComponentType, type TextInputStyle, type APITextInputComponent } from 'discord-api-types/v10';\nimport isEqual from 'fast-deep-equal';\nimport { customIdValidator } from '../Assertions.js';\nimport { ComponentBuilder } from '../Component.js';\nimport {\n\tmaxLengthValidator,\n\tminLengthValidator,\n\tplaceholderValidator,\n\trequiredValidator,\n\tvalueValidator,\n\tvalidateRequiredParameters,\n\tlabelValidator,\n\ttextInputStyleValidator,\n} from './Assertions.js';\n\nexport class TextInputBuilder\n\textends ComponentBuilder\n\timplements Equatable>\n{\n\t/**\n\t * Creates a new text input from API data\n\t *\n\t * @param data - The API data to create this text input with\n\t * @example\n\t * Creating a select menu option from an API data object\n\t * ```ts\n\t * const textInput = new TextInputBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tlabel: 'Type something',\n\t * \tstyle: TextInputStyle.Short,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu option using setters and API data\n\t * ```ts\n\t * const textInput = new TextInputBuilder({\n\t * \tlabel: 'Type something else',\n\t * })\n\t * \t.setCustomId('woah')\n\t * \t.setStyle(TextInputStyle.Paragraph);\n\t * ```\n\t */\n\tpublic constructor(data?: APITextInputComponent & { type?: ComponentType.TextInput }) {\n\t\tsuper({ type: ComponentType.TextInput, ...data });\n\t}\n\n\t/**\n\t * Sets the custom id for this text input\n\t *\n\t * @param customId - The custom id of this text input\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the label for this text input\n\t *\n\t * @param label - The label for this text input\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = labelValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the style for this text input\n\t *\n\t * @param style - The style for this text input\n\t */\n\tpublic setStyle(style: TextInputStyle) {\n\t\tthis.data.style = textInputStyleValidator.parse(style);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum length of text for this text input\n\t *\n\t * @param minLength - The minimum length of text for this text input\n\t */\n\tpublic setMinLength(minLength: number) {\n\t\tthis.data.min_length = minLengthValidator.parse(minLength);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the maximum length of text for this text input\n\t *\n\t * @param maxLength - The maximum length of text for this text input\n\t */\n\tpublic setMaxLength(maxLength: number) {\n\t\tthis.data.max_length = maxLengthValidator.parse(maxLength);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the placeholder of this text input\n\t *\n\t * @param placeholder - The placeholder of this text input\n\t */\n\tpublic setPlaceholder(placeholder: string) {\n\t\tthis.data.placeholder = placeholderValidator.parse(placeholder);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the value of this text input\n\t *\n\t * @param value - The value for this text input\n\t */\n\tpublic setValue(value: string) {\n\t\tthis.data.value = valueValidator.parse(value);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this text input is required\n\t *\n\t * @param required - Whether this text input is required\n\t */\n\tpublic setRequired(required = true) {\n\t\tthis.data.required = requiredValidator.parse(required);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APITextInputComponent {\n\t\tvalidateRequiredParameters(this.data.custom_id, this.data.style, this.data.label);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APITextInputComponent;\n\t}\n\n\t/**\n\t * {@inheritDoc Equatable.equals}\n\t */\n\tpublic equals(other: APITextInputComponent | JSONEncodable): boolean {\n\t\tif (isJSONEncodable(other)) {\n\t\t\treturn isEqual(other.toJSON(), this.data);\n\t\t}\n\n\t\treturn isEqual(other, this.data);\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { TextInputStyle } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation.js';\nimport { customIdValidator } from '../Assertions.js';\n\nexport const textInputStyleValidator = s.nativeEnum(TextInputStyle);\nexport const minLengthValidator = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(4_000)\n\t.setValidationEnabled(isValidationEnabled);\nexport const maxLengthValidator = s.number.int\n\t.greaterThanOrEqual(1)\n\t.lessThanOrEqual(4_000)\n\t.setValidationEnabled(isValidationEnabled);\nexport const requiredValidator = s.boolean;\nexport const valueValidator = s.string.lengthLessThanOrEqual(4_000).setValidationEnabled(isValidationEnabled);\nexport const placeholderValidator = s.string.lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);\nexport const labelValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(45)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredParameters(customId?: string, style?: TextInputStyle, label?: string) {\n\tcustomIdValidator.parse(customId);\n\ttextInputStyleValidator.parse(style);\n\tlabelValidator.parse(label);\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ActionRowBuilder, type ModalActionRowComponentBuilder } from '../../components/ActionRow.js';\nimport { customIdValidator } from '../../components/Assertions.js';\nimport { isValidationEnabled } from '../../util/validation.js';\n\nexport const titleValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(45)\n\t.setValidationEnabled(isValidationEnabled);\nexport const componentsValidator = s\n\t.instance(ActionRowBuilder)\n\t.array.lengthGreaterThanOrEqual(1)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredParameters(\n\tcustomId?: string,\n\ttitle?: string,\n\tcomponents?: ActionRowBuilder[],\n) {\n\tcustomIdValidator.parse(customId);\n\ttitleValidator.parse(title);\n\tcomponentsValidator.parse(components);\n}\n","import type { JSONEncodable } from '@discordjs/util';\nimport type {\n\tAPIActionRowComponent,\n\tAPIModalActionRowComponent,\n\tAPIModalInteractionResponseCallbackData,\n} from 'discord-api-types/v10';\nimport { ActionRowBuilder, type ModalActionRowComponentBuilder } from '../../components/ActionRow.js';\nimport { customIdValidator } from '../../components/Assertions.js';\nimport { createComponentBuilder } from '../../components/Components.js';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport { titleValidator, validateRequiredParameters } from './Assertions.js';\n\nexport class ModalBuilder implements JSONEncodable {\n\tpublic readonly data: Partial;\n\n\tpublic readonly components: ActionRowBuilder[] = [];\n\n\tpublic constructor({ components, ...data }: Partial = {}) {\n\t\tthis.data = { ...data };\n\t\tthis.components = (components?.map((component) => createComponentBuilder(component)) ??\n\t\t\t[]) as ActionRowBuilder[];\n\t}\n\n\t/**\n\t * Sets the title of the modal\n\t *\n\t * @param title - The title of the modal\n\t */\n\tpublic setTitle(title: string) {\n\t\tthis.data.title = titleValidator.parse(title);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id of the modal\n\t *\n\t * @param customId - The custom id of this modal\n\t */\n\tpublic setCustomId(customId: string) {\n\t\tthis.data.custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds components to this modal\n\t *\n\t * @param components - The components to add to this modal\n\t */\n\tpublic addComponents(\n\t\t...components: RestOrArray<\n\t\t\tActionRowBuilder | APIActionRowComponent\n\t\t>\n\t) {\n\t\tthis.components.push(\n\t\t\t...normalizeArray(components).map((component) =>\n\t\t\t\tcomponent instanceof ActionRowBuilder\n\t\t\t\t\t? component\n\t\t\t\t\t: new ActionRowBuilder(component),\n\t\t\t),\n\t\t);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the components in this modal\n\t *\n\t * @param components - The components to set this modal to\n\t */\n\tpublic setComponents(...components: RestOrArray>) {\n\t\tthis.components.splice(0, this.components.length, ...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APIModalInteractionResponseCallbackData {\n\t\tvalidateRequiredParameters(this.data.custom_id, this.data.title, this.components);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t\tcomponents: this.components.map((component) => component.toJSON()),\n\t\t} as APIModalInteractionResponseCallbackData;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { Locale, type APIApplicationCommandOptionChoice, type LocalizationMap } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation.js';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder.js';\nimport type { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands.js';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase.js';\n\nconst namePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(32)\n\t.regex(/^[\\p{Ll}\\p{Lm}\\p{Lo}\\p{N}\\p{sc=Devanagari}\\p{sc=Thai}_-]+$/u)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nconst descriptionPredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\nconst localePredicate = s.nativeEnum(Locale);\n\nexport function validateDescription(description: unknown): asserts description is string {\n\tdescriptionPredicate.parse(description);\n}\n\nconst maxArrayLengthPredicate = s.unknown.array.lengthLessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\nexport function validateLocale(locale: unknown) {\n\treturn localePredicate.parse(locale);\n}\n\nexport function validateMaxOptionsLength(options: unknown): asserts options is ToAPIApplicationCommandOptions[] {\n\tmaxArrayLengthPredicate.parse(options);\n}\n\nexport function validateRequiredParameters(\n\tname: string,\n\tdescription: string,\n\toptions: ToAPIApplicationCommandOptions[],\n) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert description conditions\n\tvalidateDescription(description);\n\n\t// Assert options conditions\n\tvalidateMaxOptionsLength(options);\n}\n\nconst booleanPredicate = s.boolean;\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n\nexport function validateRequired(required: unknown): asserts required is boolean {\n\tbooleanPredicate.parse(required);\n}\n\nconst choicesLengthPredicate = s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\n\nexport function validateChoicesLength(amountAdding: number, choices?: APIApplicationCommandOptionChoice[]): void {\n\tchoicesLengthPredicate.parse((choices?.length ?? 0) + amountAdding);\n}\n\nexport function assertReturnOfBuilder<\n\tT extends ApplicationCommandOptionBase | SlashCommandSubcommandBuilder | SlashCommandSubcommandGroupBuilder,\n>(input: unknown, ExpectedInstanceOf: new () => T): asserts input is T {\n\ts.instance(ExpectedInstanceOf).parse(input);\n}\n\nexport const localizationMapPredicate = s\n\t.object(Object.fromEntries(Object.values(Locale).map((locale) => [locale, s.string.nullish])))\n\t.strict.nullish.setValidationEnabled(isValidationEnabled);\n\nexport function validateLocalizationMap(value: unknown): asserts value is LocalizationMap {\n\tlocalizationMapPredicate.parse(value);\n}\n\nconst dmPermissionPredicate = s.boolean.nullish;\n\nexport function validateDMPermission(value: unknown): asserts value is boolean | null | undefined {\n\tdmPermissionPredicate.parse(value);\n}\n\nconst memberPermissionPredicate = s.union(\n\ts.bigint.transform((value) => value.toString()),\n\ts.number.safeInt.transform((value) => value.toString()),\n\ts.string.regex(/^\\d+$/),\n).nullish;\n\nexport function validateDefaultMemberPermissions(permissions: unknown) {\n\treturn memberPermissionPredicate.parse(permissions);\n}\n\nexport function validateNSFW(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n","import type {\n\tAPIApplicationCommandOption,\n\tLocalizationMap,\n\tPermissions,\n\tRESTPostAPIChatInputApplicationCommandsJSONBody,\n} from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport {\n\tassertReturnOfBuilder,\n\tvalidateDefaultMemberPermissions,\n\tvalidateDefaultPermission,\n\tvalidateLocalizationMap,\n\tvalidateDMPermission,\n\tvalidateMaxOptionsLength,\n\tvalidateRequiredParameters,\n\tvalidateNSFW,\n} from './Assertions.js';\nimport { SlashCommandSubcommandBuilder, SlashCommandSubcommandGroupBuilder } from './SlashCommandSubcommands.js';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription.js';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions.js';\n\n@mix(SharedSlashCommandOptions, SharedNameAndDescription)\nexport class SlashCommandBuilder {\n\t/**\n\t * The name of this slash command\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The localized names for this command\n\t */\n\tpublic readonly name_localizations?: LocalizationMap;\n\n\t/**\n\t * The description of this slash command\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The localized descriptions for this command\n\t */\n\tpublic readonly description_localizations?: LocalizationMap;\n\n\t/**\n\t * The options of this slash command\n\t */\n\tpublic readonly options: ToAPIApplicationCommandOptions[] = [];\n\n\t/**\n\t * Whether the command is enabled by default when the app is added to a guild\n\t *\n\t * @deprecated This property is deprecated and will be removed in the future.\n\t * You should use {@link (SlashCommandBuilder:class).setDefaultMemberPermissions} or {@link (SlashCommandBuilder:class).setDMPermission} instead.\n\t */\n\tpublic readonly default_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Set of permissions represented as a bit set for the command\n\t */\n\tpublic readonly default_member_permissions: Permissions | null | undefined = undefined;\n\n\t/**\n\t * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t */\n\tpublic readonly dm_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Whether this command is NSFW\n\t */\n\tpublic readonly nsfw: boolean | undefined = undefined;\n\n\t/**\n\t * Returns the final data that should be sent to Discord.\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic toJSON(): RESTPostAPIChatInputApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\tvalidateLocalizationMap(this.name_localizations);\n\t\tvalidateLocalizationMap(this.description_localizations);\n\n\t\treturn {\n\t\t\t...this,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * @remarks\n\t * If set to `false`, you will have to later `PUT` the permissions for this command.\n\t * @param value - Whether or not to enable this command by default\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t * @deprecated Use {@link (SlashCommandBuilder:class).setDefaultMemberPermissions} or {@link (SlashCommandBuilder:class).setDMPermission} instead.\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'default_permission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the default permissions a member should have in order to run the command.\n\t *\n\t * @remarks\n\t * You can set this to `'0'` to disable the command by default.\n\t * @param permissions - The permissions bit field to set\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined) {\n\t\t// Assert the value and parse it\n\t\tconst permissionValue = validateDefaultMemberPermissions(permissions);\n\n\t\tReflect.set(this, 'default_member_permissions', permissionValue);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets if the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t *\n\t * @param enabled - If the command should be enabled in DMs\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDMPermission(enabled: boolean | null | undefined) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDMPermission(enabled);\n\n\t\tReflect.set(this, 'dm_permission', enabled);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this command is NSFW\n\t *\n\t * @param nsfw - Whether this command is NSFW\n\t */\n\tpublic setNSFW(nsfw = true) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateNSFW(nsfw);\n\t\tReflect.set(this, 'nsfw', nsfw);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds a new subcommand group to this command\n\t *\n\t * @param input - A function that returns a subcommand group builder, or an already built builder\n\t */\n\tpublic addSubcommandGroup(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandGroupBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandGroupBuilder) => SlashCommandSubcommandGroupBuilder),\n\t): SlashCommandSubcommandsOnlyBuilder {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandGroupBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandGroupBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds a new subcommand to this command\n\t *\n\t * @param input - A function that returns a subcommand builder, or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t): SlashCommandSubcommandsOnlyBuilder {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n}\n\nexport interface SlashCommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {}\n\nexport interface SlashCommandSubcommandsOnlyBuilder\n\textends Omit> {}\n\nexport interface SlashCommandOptionsOnlyBuilder\n\textends SharedNameAndDescription,\n\t\tSharedSlashCommandOptions,\n\t\tPick {}\n\nexport interface ToAPIApplicationCommandOptions {\n\ttoJSON(): APIApplicationCommandOption;\n}\n","import {\n\tApplicationCommandOptionType,\n\ttype APIApplicationCommandSubcommandGroupOption,\n\ttype APIApplicationCommandSubcommandOption,\n} from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { assertReturnOfBuilder, validateMaxOptionsLength, validateRequiredParameters } from './Assertions.js';\nimport type { ToAPIApplicationCommandOptions } from './SlashCommandBuilder.js';\nimport type { ApplicationCommandOptionBase } from './mixins/ApplicationCommandOptionBase.js';\nimport { SharedNameAndDescription } from './mixins/NameAndDescription.js';\nimport { SharedSlashCommandOptions } from './mixins/SharedSlashCommandOptions.js';\n\n/**\n * Represents a folder for subcommands\n *\n * For more information, go to https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups\n */\n@mix(SharedNameAndDescription)\nexport class SlashCommandSubcommandGroupBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand group\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand group\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The subcommands part of this subcommand group\n\t */\n\tpublic readonly options: SlashCommandSubcommandBuilder[] = [];\n\n\t/**\n\t * Adds a new subcommand to this group\n\t *\n\t * @param input - A function that returns a subcommand builder, or an already built builder\n\t */\n\tpublic addSubcommand(\n\t\tinput:\n\t\t\t| SlashCommandSubcommandBuilder\n\t\t\t| ((subcommandGroup: SlashCommandSubcommandBuilder) => SlashCommandSubcommandBuilder),\n\t) {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\tconst result = typeof input === 'function' ? input(new SlashCommandSubcommandBuilder()) : input;\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\tassertReturnOfBuilder(result, SlashCommandSubcommandBuilder);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandSubcommandGroupOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.SubcommandGroup,\n\t\t\tname: this.name,\n\t\t\tname_localizations: this.name_localizations,\n\t\t\tdescription: this.description,\n\t\t\tdescription_localizations: this.description_localizations,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandGroupBuilder extends SharedNameAndDescription {}\n\n/**\n * Represents a subcommand\n *\n * For more information, go to https://discord.com/developers/docs/interactions/application-commands#subcommands-and-subcommand-groups\n */\n@mix(SharedNameAndDescription, SharedSlashCommandOptions)\nexport class SlashCommandSubcommandBuilder implements ToAPIApplicationCommandOptions {\n\t/**\n\t * The name of this subcommand\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The description of this subcommand\n\t */\n\tpublic readonly description: string = undefined!;\n\n\t/**\n\t * The options of this subcommand\n\t */\n\tpublic readonly options: ApplicationCommandOptionBase[] = [];\n\n\tpublic toJSON(): APIApplicationCommandSubcommandOption {\n\t\tvalidateRequiredParameters(this.name, this.description, this.options);\n\n\t\treturn {\n\t\t\ttype: ApplicationCommandOptionType.Subcommand,\n\t\t\tname: this.name,\n\t\t\tname_localizations: this.name_localizations,\n\t\t\tdescription: this.description,\n\t\t\tdescription_localizations: this.description_localizations,\n\t\t\toptions: this.options.map((option) => option.toJSON()),\n\t\t};\n\t}\n}\n\nexport interface SlashCommandSubcommandBuilder extends SharedNameAndDescription, SharedSlashCommandOptions {}\n","import type { LocaleString, LocalizationMap } from 'discord-api-types/v10';\nimport { validateDescription, validateLocale, validateName } from '../Assertions.js';\n\nexport class SharedNameAndDescription {\n\tpublic readonly name!: string;\n\n\tpublic readonly name_localizations?: LocalizationMap;\n\n\tpublic readonly description!: string;\n\n\tpublic readonly description_localizations?: LocalizationMap;\n\n\t/**\n\t * Sets the name\n\t *\n\t * @param name - The name\n\t */\n\tpublic setName(name: string): this {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description\n\t *\n\t * @param description - The description\n\t */\n\tpublic setDescription(description: string) {\n\t\t// Assert the description matches the conditions\n\t\tvalidateDescription(description);\n\n\t\tReflect.set(this, 'description', description);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a name localization\n\t *\n\t * @param locale - The locale to set a description for\n\t * @param localizedName - The localized description for the given locale\n\t */\n\tpublic setNameLocalization(locale: LocaleString, localizedName: string | null) {\n\t\tif (!this.name_localizations) {\n\t\t\tReflect.set(this, 'name_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedName === null) {\n\t\t\tthis.name_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateName(localizedName);\n\n\t\tthis.name_localizations![parsedLocale] = localizedName;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the name localizations\n\t *\n\t * @param localizedNames - The dictionary of localized descriptions to set\n\t */\n\tpublic setNameLocalizations(localizedNames: LocalizationMap | null) {\n\t\tif (localizedNames === null) {\n\t\t\tReflect.set(this, 'name_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'name_localizations', {});\n\n\t\tfor (const args of Object.entries(localizedNames)) {\n\t\t\tthis.setNameLocalization(...(args as [LocaleString, string | null]));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a description localization\n\t *\n\t * @param locale - The locale to set a description for\n\t * @param localizedDescription - The localized description for the given locale\n\t */\n\tpublic setDescriptionLocalization(locale: LocaleString, localizedDescription: string | null) {\n\t\tif (!this.description_localizations) {\n\t\t\tReflect.set(this, 'description_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedDescription === null) {\n\t\t\tthis.description_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateDescription(localizedDescription);\n\n\t\tthis.description_localizations![parsedLocale] = localizedDescription;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description localizations\n\t *\n\t * @param localizedDescriptions - The dictionary of localized descriptions to set\n\t */\n\tpublic setDescriptionLocalizations(localizedDescriptions: LocalizationMap | null) {\n\t\tif (localizedDescriptions === null) {\n\t\t\tReflect.set(this, 'description_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'description_localizations', {});\n\t\tfor (const args of Object.entries(localizedDescriptions)) {\n\t\t\tthis.setDescriptionLocalization(...(args as [LocaleString, string | null]));\n\t\t}\n\n\t\treturn this;\n\t}\n}\n","import { ApplicationCommandOptionType, type APIApplicationCommandAttachmentOption } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\n\nexport class SlashCommandAttachmentOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Attachment as const;\n\n\tpublic toJSON(): APIApplicationCommandAttachmentOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import type { APIApplicationCommandBasicOption, ApplicationCommandOptionType } from 'discord-api-types/v10';\nimport { validateRequiredParameters, validateRequired, validateLocalizationMap } from '../Assertions.js';\nimport { SharedNameAndDescription } from './NameAndDescription.js';\n\nexport abstract class ApplicationCommandOptionBase extends SharedNameAndDescription {\n\tpublic abstract readonly type: ApplicationCommandOptionType;\n\n\tpublic readonly required: boolean = false;\n\n\t/**\n\t * Marks the option as required\n\t *\n\t * @param required - If this option should be required\n\t */\n\tpublic setRequired(required: boolean) {\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(required);\n\n\t\tReflect.set(this, 'required', required);\n\n\t\treturn this;\n\t}\n\n\tpublic abstract toJSON(): APIApplicationCommandBasicOption;\n\n\tprotected runRequiredValidations() {\n\t\tvalidateRequiredParameters(this.name, this.description, []);\n\n\t\t// Validate localizations\n\t\tvalidateLocalizationMap(this.name_localizations);\n\t\tvalidateLocalizationMap(this.description_localizations);\n\n\t\t// Assert that you actually passed a boolean\n\t\tvalidateRequired(this.required);\n\t}\n}\n","import { ApplicationCommandOptionType, type APIApplicationCommandBooleanOption } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\n\nexport class SlashCommandBooleanOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.Boolean as const;\n\n\tpublic toJSON(): APIApplicationCommandBooleanOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { ApplicationCommandOptionType, type APIApplicationCommandChannelOption } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\nimport { ApplicationCommandOptionChannelTypesMixin } from '../mixins/ApplicationCommandOptionChannelTypesMixin.js';\n\n@mix(ApplicationCommandOptionChannelTypesMixin)\nexport class SlashCommandChannelOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Channel as const;\n\n\tpublic toJSON(): APIApplicationCommandChannelOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandChannelOption extends ApplicationCommandOptionChannelTypesMixin {}\n","import { s } from '@sapphire/shapeshift';\nimport { ChannelType } from 'discord-api-types/v10';\n\n// Only allow valid channel types to be used. (This can't be dynamic because const enums are erased at runtime)\nconst allowedChannelTypes = [\n\tChannelType.GuildText,\n\tChannelType.GuildVoice,\n\tChannelType.GuildCategory,\n\tChannelType.GuildAnnouncement,\n\tChannelType.AnnouncementThread,\n\tChannelType.PublicThread,\n\tChannelType.PrivateThread,\n\tChannelType.GuildStageVoice,\n\tChannelType.GuildForum,\n] as const;\n\nexport type ApplicationCommandOptionAllowedChannelTypes = (typeof allowedChannelTypes)[number];\n\nconst channelTypesPredicate = s.array(s.union(...allowedChannelTypes.map((type) => s.literal(type))));\n\nexport class ApplicationCommandOptionChannelTypesMixin {\n\tpublic readonly channel_types?: ApplicationCommandOptionAllowedChannelTypes[];\n\n\t/**\n\t * Adds channel types to this option\n\t *\n\t * @param channelTypes - The channel types to add\n\t */\n\tpublic addChannelTypes(...channelTypes: ApplicationCommandOptionAllowedChannelTypes[]) {\n\t\tif (this.channel_types === undefined) {\n\t\t\tReflect.set(this, 'channel_types', []);\n\t\t}\n\n\t\tthis.channel_types!.push(...channelTypesPredicate.parse(channelTypes));\n\n\t\treturn this;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandOptionType, type APIApplicationCommandIntegerOption } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin.js';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.js';\n\nconst numberValidator = s.number.int;\n\n@mix(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandIntegerOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\tpublic readonly type = ApplicationCommandOptionType.Integer as const;\n\n\t/**\n\t * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}\n\t */\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'max_value', max);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMinValue}\n\t */\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'min_value', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandIntegerOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandIntegerOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","export abstract class ApplicationCommandNumericOptionMinMaxValueMixin {\n\tpublic readonly max_value?: number;\n\n\tpublic readonly min_value?: number;\n\n\t/**\n\t * Sets the maximum number value of this option\n\t *\n\t * @param max - The maximum value this option can be\n\t */\n\tpublic abstract setMaxValue(max: number): this;\n\n\t/**\n\t * Sets the minimum number value of this option\n\t *\n\t * @param min - The minimum value this option can be\n\t */\n\tpublic abstract setMinValue(min: number): this;\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandOptionType, type APIApplicationCommandOptionChoice } from 'discord-api-types/v10';\nimport { localizationMapPredicate, validateChoicesLength } from '../Assertions.js';\n\nconst stringPredicate = s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100);\nconst numberPredicate = s.number.greaterThan(Number.NEGATIVE_INFINITY).lessThan(Number.POSITIVE_INFINITY);\nconst choicesPredicate = s.object({\n\tname: stringPredicate,\n\tname_localizations: localizationMapPredicate,\n\tvalue: s.union(stringPredicate, numberPredicate),\n}).array;\nconst booleanPredicate = s.boolean;\n\nexport class ApplicationCommandOptionWithChoicesAndAutocompleteMixin {\n\tpublic readonly choices?: APIApplicationCommandOptionChoice[];\n\n\tpublic readonly autocomplete?: boolean;\n\n\t// Since this is present and this is a mixin, this is needed\n\tpublic readonly type!: ApplicationCommandOptionType;\n\n\t/**\n\t * Adds multiple choices for this option\n\t *\n\t * @param choices - The choices to add\n\t */\n\tpublic addChoices(...choices: APIApplicationCommandOptionChoice[]): this {\n\t\tif (choices.length > 0 && this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(choices);\n\n\t\tif (this.choices === undefined) {\n\t\t\tReflect.set(this, 'choices', []);\n\t\t}\n\n\t\tvalidateChoicesLength(choices.length, this.choices);\n\n\t\tfor (const { name, name_localizations, value } of choices) {\n\t\t\t// Validate the value\n\t\t\tif (this.type === ApplicationCommandOptionType.String) {\n\t\t\t\tstringPredicate.parse(value);\n\t\t\t} else {\n\t\t\t\tnumberPredicate.parse(value);\n\t\t\t}\n\n\t\t\tthis.choices!.push({ name, name_localizations, value });\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tpublic setChoices[]>(...choices: Input): this {\n\t\tif (choices.length > 0 && this.autocomplete) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tchoicesPredicate.parse(choices);\n\n\t\tReflect.set(this, 'choices', []);\n\t\tthis.addChoices(...choices);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Marks the option as autocompletable\n\t *\n\t * @param autocomplete - If this option should be autocompletable\n\t */\n\tpublic setAutocomplete(autocomplete: boolean): this {\n\t\t// Assert that you actually passed a boolean\n\t\tbooleanPredicate.parse(autocomplete);\n\n\t\tif (autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\tReflect.set(this, 'autocomplete', autocomplete);\n\n\t\treturn this;\n\t}\n}\n","import { ApplicationCommandOptionType, type APIApplicationCommandMentionableOption } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\n\nexport class SlashCommandMentionableOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.Mentionable as const;\n\n\tpublic toJSON(): APIApplicationCommandMentionableOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandOptionType, type APIApplicationCommandNumberOption } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandNumericOptionMinMaxValueMixin } from '../mixins/ApplicationCommandNumericOptionMinMaxValueMixin.js';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.js';\n\nconst numberValidator = s.number;\n\n@mix(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandNumberOption\n\textends ApplicationCommandOptionBase\n\timplements ApplicationCommandNumericOptionMinMaxValueMixin\n{\n\tpublic readonly type = ApplicationCommandOptionType.Number as const;\n\n\t/**\n\t * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}\n\t */\n\tpublic setMaxValue(max: number): this {\n\t\tnumberValidator.parse(max);\n\n\t\tReflect.set(this, 'max_value', max);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMinValue}\n\t */\n\tpublic setMinValue(min: number): this {\n\t\tnumberValidator.parse(min);\n\n\t\tReflect.set(this, 'min_value', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandNumberOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandNumberOption\n\textends ApplicationCommandNumericOptionMinMaxValueMixin,\n\t\tApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","import { ApplicationCommandOptionType, type APIApplicationCommandRoleOption } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\n\nexport class SlashCommandRoleOption extends ApplicationCommandOptionBase {\n\tpublic override readonly type = ApplicationCommandOptionType.Role as const;\n\n\tpublic toJSON(): APIApplicationCommandRoleOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandOptionType, type APIApplicationCommandStringOption } from 'discord-api-types/v10';\nimport { mix } from 'ts-mixer';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\nimport { ApplicationCommandOptionWithChoicesAndAutocompleteMixin } from '../mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.js';\n\nconst minLengthValidator = s.number.greaterThanOrEqual(0).lessThanOrEqual(6_000);\nconst maxLengthValidator = s.number.greaterThanOrEqual(1).lessThanOrEqual(6_000);\n\n@mix(ApplicationCommandOptionWithChoicesAndAutocompleteMixin)\nexport class SlashCommandStringOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.String as const;\n\n\tpublic readonly max_length?: number;\n\n\tpublic readonly min_length?: number;\n\n\t/**\n\t * Sets the maximum length of this string option.\n\t *\n\t * @param max - The maximum length this option can be\n\t */\n\tpublic setMaxLength(max: number): this {\n\t\tmaxLengthValidator.parse(max);\n\n\t\tReflect.set(this, 'max_length', max);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the minimum length of this string option.\n\t *\n\t * @param min - The minimum length this option can be\n\t */\n\tpublic setMinLength(min: number): this {\n\t\tminLengthValidator.parse(min);\n\n\t\tReflect.set(this, 'min_length', min);\n\n\t\treturn this;\n\t}\n\n\tpublic toJSON(): APIApplicationCommandStringOption {\n\t\tthis.runRequiredValidations();\n\n\t\tif (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {\n\t\t\tthrow new RangeError('Autocomplete and choices are mutually exclusive to each other.');\n\t\t}\n\n\t\treturn { ...this };\n\t}\n}\n\nexport interface SlashCommandStringOption extends ApplicationCommandOptionWithChoicesAndAutocompleteMixin {}\n","import { ApplicationCommandOptionType, type APIApplicationCommandUserOption } from 'discord-api-types/v10';\nimport { ApplicationCommandOptionBase } from '../mixins/ApplicationCommandOptionBase.js';\n\nexport class SlashCommandUserOption extends ApplicationCommandOptionBase {\n\tpublic readonly type = ApplicationCommandOptionType.User as const;\n\n\tpublic toJSON(): APIApplicationCommandUserOption {\n\t\tthis.runRequiredValidations();\n\n\t\treturn { ...this };\n\t}\n}\n","import { assertReturnOfBuilder, validateMaxOptionsLength } from '../Assertions.js';\nimport type { ToAPIApplicationCommandOptions } from '../SlashCommandBuilder';\nimport { SlashCommandAttachmentOption } from '../options/attachment.js';\nimport { SlashCommandBooleanOption } from '../options/boolean.js';\nimport { SlashCommandChannelOption } from '../options/channel.js';\nimport { SlashCommandIntegerOption } from '../options/integer.js';\nimport { SlashCommandMentionableOption } from '../options/mentionable.js';\nimport { SlashCommandNumberOption } from '../options/number.js';\nimport { SlashCommandRoleOption } from '../options/role.js';\nimport { SlashCommandStringOption } from '../options/string.js';\nimport { SlashCommandUserOption } from '../options/user.js';\nimport type { ApplicationCommandOptionBase } from './ApplicationCommandOptionBase.js';\n\nexport class SharedSlashCommandOptions {\n\tpublic readonly options!: ToAPIApplicationCommandOptions[];\n\n\t/**\n\t * Adds a boolean option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addBooleanOption(\n\t\tinput: SlashCommandBooleanOption | ((builder: SlashCommandBooleanOption) => SlashCommandBooleanOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandBooleanOption);\n\t}\n\n\t/**\n\t * Adds a user option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addUserOption(input: SlashCommandUserOption | ((builder: SlashCommandUserOption) => SlashCommandUserOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandUserOption);\n\t}\n\n\t/**\n\t * Adds a channel option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addChannelOption(\n\t\tinput: SlashCommandChannelOption | ((builder: SlashCommandChannelOption) => SlashCommandChannelOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandChannelOption);\n\t}\n\n\t/**\n\t * Adds a role option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addRoleOption(input: SlashCommandRoleOption | ((builder: SlashCommandRoleOption) => SlashCommandRoleOption)) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandRoleOption);\n\t}\n\n\t/**\n\t * Adds an attachment option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addAttachmentOption(\n\t\tinput: SlashCommandAttachmentOption | ((builder: SlashCommandAttachmentOption) => SlashCommandAttachmentOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandAttachmentOption);\n\t}\n\n\t/**\n\t * Adds a mentionable option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addMentionableOption(\n\t\tinput: SlashCommandMentionableOption | ((builder: SlashCommandMentionableOption) => SlashCommandMentionableOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandMentionableOption);\n\t}\n\n\t/**\n\t * Adds a string option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addStringOption(\n\t\tinput:\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| SlashCommandStringOption\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandStringOption,\n\t\t\t ) =>\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit\n\t\t\t\t\t| SlashCommandStringOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandStringOption);\n\t}\n\n\t/**\n\t * Adds an integer option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addIntegerOption(\n\t\tinput:\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| SlashCommandIntegerOption\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandIntegerOption,\n\t\t\t ) =>\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit\n\t\t\t\t\t| SlashCommandIntegerOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandIntegerOption);\n\t}\n\n\t/**\n\t * Adds a number option\n\t *\n\t * @param input - A function that returns an option builder, or an already built builder\n\t */\n\tpublic addNumberOption(\n\t\tinput:\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| SlashCommandNumberOption\n\t\t\t| ((\n\t\t\t\t\tbuilder: SlashCommandNumberOption,\n\t\t\t ) =>\n\t\t\t\t\t| Omit\n\t\t\t\t\t| Omit\n\t\t\t\t\t| SlashCommandNumberOption),\n\t) {\n\t\treturn this._sharedAddOptionMethod(input, SlashCommandNumberOption);\n\t}\n\n\tprivate _sharedAddOptionMethod(\n\t\tinput:\n\t\t\t| Omit\n\t\t\t| Omit\n\t\t\t| T\n\t\t\t| ((builder: T) => Omit | Omit | T),\n\t\tInstance: new () => T,\n\t): ShouldOmitSubcommandFunctions extends true ? Omit : this {\n\t\tconst { options } = this;\n\n\t\t// First, assert options conditions - we cannot have more than 25 options\n\t\tvalidateMaxOptionsLength(options);\n\n\t\t// Get the final result\n\t\tconst result = typeof input === 'function' ? input(new Instance()) : input;\n\n\t\tassertReturnOfBuilder(result, Instance);\n\n\t\t// Push it\n\t\toptions.push(result);\n\n\t\treturn this;\n\t}\n}\n","import { s } from '@sapphire/shapeshift';\nimport { ApplicationCommandType } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation.js';\nimport type { ContextMenuCommandType } from './ContextMenuCommandBuilder.js';\n\nconst namePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(32)\n\t// eslint-disable-next-line prefer-named-capture-group, unicorn/no-unsafe-regex\n\t.regex(/^( *[\\p{P}\\p{L}\\p{N}\\p{sc=Devanagari}\\p{sc=Thai}]+ *)+$/u)\n\t.setValidationEnabled(isValidationEnabled);\nconst typePredicate = s\n\t.union(s.literal(ApplicationCommandType.User), s.literal(ApplicationCommandType.Message))\n\t.setValidationEnabled(isValidationEnabled);\nconst booleanPredicate = s.boolean;\n\nexport function validateDefaultPermission(value: unknown): asserts value is boolean {\n\tbooleanPredicate.parse(value);\n}\n\nexport function validateName(name: unknown): asserts name is string {\n\tnamePredicate.parse(name);\n}\n\nexport function validateType(type: unknown): asserts type is ContextMenuCommandType {\n\ttypePredicate.parse(type);\n}\n\nexport function validateRequiredParameters(name: string, type: number) {\n\t// Assert name matches all conditions\n\tvalidateName(name);\n\n\t// Assert type is valid\n\tvalidateType(type);\n}\n\nconst dmPermissionPredicate = s.boolean.nullish;\n\nexport function validateDMPermission(value: unknown): asserts value is boolean | null | undefined {\n\tdmPermissionPredicate.parse(value);\n}\n\nconst memberPermissionPredicate = s.union(\n\ts.bigint.transform((value) => value.toString()),\n\ts.number.safeInt.transform((value) => value.toString()),\n\ts.string.regex(/^\\d+$/),\n).nullish;\n\nexport function validateDefaultMemberPermissions(permissions: unknown) {\n\treturn memberPermissionPredicate.parse(permissions);\n}\n","import type {\n\tApplicationCommandType,\n\tLocaleString,\n\tLocalizationMap,\n\tPermissions,\n\tRESTPostAPIContextMenuApplicationCommandsJSONBody,\n} from 'discord-api-types/v10';\nimport { validateLocale, validateLocalizationMap } from '../slashCommands/Assertions.js';\nimport {\n\tvalidateRequiredParameters,\n\tvalidateName,\n\tvalidateType,\n\tvalidateDefaultPermission,\n\tvalidateDefaultMemberPermissions,\n\tvalidateDMPermission,\n} from './Assertions.js';\n\nexport class ContextMenuCommandBuilder {\n\t/**\n\t * The name of this context menu command\n\t */\n\tpublic readonly name: string = undefined!;\n\n\t/**\n\t * The localized names for this command\n\t */\n\tpublic readonly name_localizations?: LocalizationMap;\n\n\t/**\n\t * The type of this context menu command\n\t */\n\tpublic readonly type: ContextMenuCommandType = undefined!;\n\n\t/**\n\t * Whether the command is enabled by default when the app is added to a guild\n\t *\n\t * @deprecated This property is deprecated and will be removed in the future.\n\t * You should use {@link ContextMenuCommandBuilder.setDefaultMemberPermissions} or {@link ContextMenuCommandBuilder.setDMPermission} instead.\n\t */\n\tpublic readonly default_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Set of permissions represented as a bit set for the command\n\t */\n\tpublic readonly default_member_permissions: Permissions | null | undefined = undefined;\n\n\t/**\n\t * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t */\n\tpublic readonly dm_permission: boolean | undefined = undefined;\n\n\t/**\n\t * Sets the name\n\t *\n\t * @param name - The name\n\t */\n\tpublic setName(name: string) {\n\t\t// Assert the name matches the conditions\n\t\tvalidateName(name);\n\n\t\tReflect.set(this, 'name', name);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the type\n\t *\n\t * @param type - The type\n\t */\n\tpublic setType(type: ContextMenuCommandType) {\n\t\t// Assert the type is valid\n\t\tvalidateType(type);\n\n\t\tReflect.set(this, 'type', type);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether the command is enabled by default when the application is added to a guild.\n\t *\n\t * @remarks\n\t * If set to `false`, you will have to later `PUT` the permissions for this command.\n\t * @param value - Whether or not to enable this command by default\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t * @deprecated Use {@link ContextMenuCommandBuilder.setDefaultMemberPermissions} or {@link ContextMenuCommandBuilder.setDMPermission} instead.\n\t */\n\tpublic setDefaultPermission(value: boolean) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDefaultPermission(value);\n\n\t\tReflect.set(this, 'default_permission', value);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the default permissions a member should have in order to run the command.\n\t *\n\t * @remarks\n\t * You can set this to `'0'` to disable the command by default.\n\t * @param permissions - The permissions bit field to set\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDefaultMemberPermissions(permissions: Permissions | bigint | number | null | undefined) {\n\t\t// Assert the value and parse it\n\t\tconst permissionValue = validateDefaultMemberPermissions(permissions);\n\n\t\tReflect.set(this, 'default_member_permissions', permissionValue);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets if the command is available in DMs with the application, only for globally-scoped commands.\n\t * By default, commands are visible.\n\t *\n\t * @param enabled - If the command should be enabled in DMs\n\t * @see https://discord.com/developers/docs/interactions/application-commands#permissions\n\t */\n\tpublic setDMPermission(enabled: boolean | null | undefined) {\n\t\t// Assert the value matches the conditions\n\t\tvalidateDMPermission(enabled);\n\n\t\tReflect.set(this, 'dm_permission', enabled);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets a name localization\n\t *\n\t * @param locale - The locale to set a description for\n\t * @param localizedName - The localized description for the given locale\n\t */\n\tpublic setNameLocalization(locale: LocaleString, localizedName: string | null) {\n\t\tif (!this.name_localizations) {\n\t\t\tReflect.set(this, 'name_localizations', {});\n\t\t}\n\n\t\tconst parsedLocale = validateLocale(locale);\n\n\t\tif (localizedName === null) {\n\t\t\tthis.name_localizations![parsedLocale] = null;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalidateName(localizedName);\n\n\t\tthis.name_localizations![parsedLocale] = localizedName;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the name localizations\n\t *\n\t * @param localizedNames - The dictionary of localized descriptions to set\n\t */\n\tpublic setNameLocalizations(localizedNames: LocalizationMap | null) {\n\t\tif (localizedNames === null) {\n\t\t\tReflect.set(this, 'name_localizations', null);\n\t\t\treturn this;\n\t\t}\n\n\t\tReflect.set(this, 'name_localizations', {});\n\n\t\tfor (const args of Object.entries(localizedNames))\n\t\t\tthis.setNameLocalization(...(args as [LocaleString, string | null]));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns the final data that should be sent to Discord.\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic toJSON(): RESTPostAPIContextMenuApplicationCommandsJSONBody {\n\t\tvalidateRequiredParameters(this.name, this.type);\n\n\t\tvalidateLocalizationMap(this.name_localizations);\n\n\t\treturn { ...this };\n\t}\n}\n\nexport type ContextMenuCommandType = ApplicationCommandType.Message | ApplicationCommandType.User;\n","import type { APIEmbed } from 'discord-api-types/v10';\n\nexport function embedLength(data: APIEmbed) {\n\treturn (\n\t\t(data.title?.length ?? 0) +\n\t\t(data.description?.length ?? 0) +\n\t\t(data.fields?.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) ?? 0) +\n\t\t(data.footer?.text.length ?? 0) +\n\t\t(data.author?.name.length ?? 0)\n\t);\n}\n"],"mappings":"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","names":["Assertions_exports","validate","enableValidators","disableValidators","isValidationEnabled","fieldNamePredicate","s","string","lengthGreaterThanOrEqual","lengthLessThanOrEqual","setValidationEnabled","isValidationEnabled","fieldValuePredicate","fieldInlinePredicate","boolean","optional","embedFieldPredicate","object","name","value","inline","embedFieldsArrayPredicate","array","fieldLengthPredicate","number","lessThanOrEqual","validateFieldLength","amountAdding","fields","parse","length","authorNamePredicate","nullable","imageURLPredicate","url","allowedProtocols","nullish","urlPredicate","embedAuthorPredicate","iconURL","RGBPredicate","int","greaterThanOrEqual","colorPredicate","or","tuple","descriptionPredicate","footerTextPredicate","embedFooterPredicate","text","timestampPredicate","union","date","titlePredicate","normalizeArray","arr","Array","isArray","EmbedBuilder","data","timestamp","Date","toISOString","addFields","fields","normalizeArray","validateFieldLength","length","embedFieldsArrayPredicate","parse","push","spliceFields","index","deleteCount","splice","setFields","setAuthor","options","author","undefined","embedAuthorPredicate","name","url","icon_url","iconURL","setColor","color","colorPredicate","Array","isArray","red","green","blue","setDescription","description","descriptionPredicate","setFooter","footer","embedFooterPredicate","text","setImage","imageURLPredicate","image","setThumbnail","thumbnail","setTimestamp","now","timestampPredicate","setTitle","title","titlePredicate","setURL","urlPredicate","toJSON","Assertions_exports","import_shapeshift","StringSelectMenuOptionBuilder","data","setLabel","label","labelValueDescriptionValidator","parse","setValue","value","setDescription","description","setDefault","isDefault","default","defaultValidator","setEmoji","emoji","emojiValidator","toJSON","validateRequiredSelectMenuOptionParameters","customIdValidator","s","string","lengthGreaterThanOrEqual","lengthLessThanOrEqual","setValidationEnabled","isValidationEnabled","emojiValidator","object","id","name","animated","boolean","partial","strict","disabledValidator","buttonLabelValidator","buttonStyleValidator","nativeEnum","ButtonStyle","placeholderValidator","minMaxValidator","number","int","greaterThanOrEqual","lessThanOrEqual","labelValueDescriptionValidator","jsonOptionValidator","label","value","description","optional","emoji","default","optionValidator","instance","StringSelectMenuOptionBuilder","optionsValidator","array","optionsLengthValidator","validateRequiredSelectMenuParameters","options","customId","parse","defaultValidator","validateRequiredSelectMenuOptionParameters","channelTypesValidator","ChannelType","urlValidator","url","allowedProtocols","validateRequiredButtonParameters","style","RangeError","Link","import_v10","ComponentBuilder","data","import_v10","import_v10","ButtonBuilder","ComponentBuilder","data","type","ComponentType","Button","setStyle","style","buttonStyleValidator","parse","setURL","url","urlValidator","setCustomId","customId","custom_id","customIdValidator","setEmoji","emoji","emojiValidator","setDisabled","disabled","disabledValidator","setLabel","label","buttonLabelValidator","toJSON","validateRequiredButtonParameters","import_v10","BaseSelectMenuBuilder","ComponentBuilder","setPlaceholder","placeholder","data","placeholderValidator","parse","setMinValues","minValues","min_values","minMaxValidator","setMaxValues","maxValues","max_values","setCustomId","customId","custom_id","customIdValidator","setDisabled","disabled","disabledValidator","toJSON","ChannelSelectMenuBuilder","BaseSelectMenuBuilder","data","type","ComponentType","ChannelSelect","addChannelTypes","types","normalizeArray","channel_types","push","channelTypesValidator","parse","setChannelTypes","splice","length","toJSON","customIdValidator","custom_id","import_v10","MentionableSelectMenuBuilder","BaseSelectMenuBuilder","data","type","ComponentType","MentionableSelect","import_v10","RoleSelectMenuBuilder","BaseSelectMenuBuilder","data","type","ComponentType","RoleSelect","import_v10","StringSelectMenuBuilder","BaseSelectMenuBuilder","data","options","initData","type","ComponentType","StringSelect","map","option","StringSelectMenuOptionBuilder","addOptions","normalizeArray","optionsLengthValidator","parse","length","push","jsonOptionValidator","setOptions","spliceOptions","index","deleteCount","clone","splice","toJSON","validateRequiredSelectMenuParameters","custom_id","import_v10","UserSelectMenuBuilder","BaseSelectMenuBuilder","data","type","ComponentType","UserSelect","import_v10","Assertions_exports","placeholderValidator","import_shapeshift","import_v10","textInputStyleValidator","s","nativeEnum","TextInputStyle","minLengthValidator","number","int","greaterThanOrEqual","lessThanOrEqual","setValidationEnabled","isValidationEnabled","maxLengthValidator","requiredValidator","boolean","valueValidator","string","lengthLessThanOrEqual","placeholderValidator","labelValidator","lengthGreaterThanOrEqual","validateRequiredParameters","customId","style","label","customIdValidator","parse","TextInputBuilder","ComponentBuilder","data","type","ComponentType","TextInput","setCustomId","customId","custom_id","customIdValidator","parse","setLabel","label","labelValidator","setStyle","style","textInputStyleValidator","setMinLength","minLength","min_length","minLengthValidator","setMaxLength","maxLength","max_length","maxLengthValidator","setPlaceholder","placeholder","placeholderValidator","setValue","value","valueValidator","setRequired","required","requiredValidator","toJSON","validateRequiredParameters","equals","other","isJSONEncodable","isEqual","createComponentBuilder","data","ComponentBuilder","type","ComponentType","ActionRow","ActionRowBuilder","Button","ButtonBuilder","StringSelect","StringSelectMenuBuilder","TextInput","TextInputBuilder","UserSelect","UserSelectMenuBuilder","RoleSelect","RoleSelectMenuBuilder","MentionableSelect","MentionableSelectMenuBuilder","ChannelSelect","ChannelSelectMenuBuilder","Error","ActionRowBuilder","ComponentBuilder","components","data","type","ComponentType","ActionRow","map","component","createComponentBuilder","addComponents","push","normalizeArray","setComponents","splice","length","toJSON","Assertions_exports","validateRequiredParameters","import_shapeshift","titleValidator","s","string","lengthGreaterThanOrEqual","lengthLessThanOrEqual","setValidationEnabled","isValidationEnabled","componentsValidator","instance","ActionRowBuilder","array","validateRequiredParameters","customId","title","components","customIdValidator","parse","ModalBuilder","components","data","map","component","createComponentBuilder","setTitle","title","titleValidator","parse","setCustomId","customId","custom_id","customIdValidator","addComponents","push","normalizeArray","ActionRowBuilder","setComponents","splice","length","toJSON","validateRequiredParameters","Assertions_exports","validateRequiredParameters","import_shapeshift","import_v10","namePredicate","s","string","lengthGreaterThanOrEqual","lengthLessThanOrEqual","regex","setValidationEnabled","isValidationEnabled","validateName","name","parse","descriptionPredicate","localePredicate","nativeEnum","Locale","validateDescription","description","maxArrayLengthPredicate","unknown","array","validateLocale","locale","validateMaxOptionsLength","options","validateRequiredParameters","booleanPredicate","boolean","validateDefaultPermission","value","validateRequired","required","choicesLengthPredicate","number","lessThanOrEqual","validateChoicesLength","amountAdding","choices","length","assertReturnOfBuilder","input","ExpectedInstanceOf","instance","localizationMapPredicate","object","Object","fromEntries","values","map","nullish","strict","validateLocalizationMap","dmPermissionPredicate","validateDMPermission","memberPermissionPredicate","union","bigint","transform","toString","safeInt","validateDefaultMemberPermissions","permissions","validateNSFW","import_ts_mixer","import_v10","import_ts_mixer","SharedNameAndDescription","setName","name","validateName","Reflect","set","setDescription","description","validateDescription","setNameLocalization","locale","localizedName","name_localizations","parsedLocale","validateLocale","setNameLocalizations","localizedNames","args","Object","entries","setDescriptionLocalization","localizedDescription","description_localizations","setDescriptionLocalizations","localizedDescriptions","import_v10","ApplicationCommandOptionBase","SharedNameAndDescription","required","setRequired","validateRequired","Reflect","set","runRequiredValidations","validateRequiredParameters","name","description","validateLocalizationMap","name_localizations","description_localizations","SlashCommandAttachmentOption","ApplicationCommandOptionBase","type","ApplicationCommandOptionType","Attachment","toJSON","runRequiredValidations","import_v10","SlashCommandBooleanOption","ApplicationCommandOptionBase","type","ApplicationCommandOptionType","Boolean","toJSON","runRequiredValidations","import_v10","import_shapeshift","import_v10","allowedChannelTypes","ChannelType","GuildText","GuildVoice","GuildCategory","GuildAnnouncement","AnnouncementThread","PublicThread","PrivateThread","GuildStageVoice","GuildForum","channelTypesPredicate","s","array","union","map","type","literal","ApplicationCommandOptionChannelTypesMixin","addChannelTypes","channelTypes","channel_types","undefined","Reflect","set","push","parse","SlashCommandChannelOption","ApplicationCommandOptionBase","type","ApplicationCommandOptionType","Channel","toJSON","runRequiredValidations","mix","ApplicationCommandOptionChannelTypesMixin","import_shapeshift","import_v10","import_ts_mixer","ApplicationCommandNumericOptionMinMaxValueMixin","import_shapeshift","import_v10","stringPredicate","s","string","lengthGreaterThanOrEqual","lengthLessThanOrEqual","numberPredicate","number","greaterThan","Number","NEGATIVE_INFINITY","lessThan","POSITIVE_INFINITY","choicesPredicate","object","name","name_localizations","localizationMapPredicate","value","union","array","booleanPredicate","boolean","ApplicationCommandOptionWithChoicesAndAutocompleteMixin","addChoices","choices","length","autocomplete","RangeError","parse","undefined","Reflect","set","validateChoicesLength","type","ApplicationCommandOptionType","String","push","setChoices","setAutocomplete","Array","isArray","numberValidator","s","number","int","SlashCommandIntegerOption","ApplicationCommandOptionBase","type","ApplicationCommandOptionType","Integer","setMaxValue","max","parse","Reflect","set","setMinValue","min","toJSON","runRequiredValidations","autocomplete","Array","isArray","choices","length","RangeError","mix","ApplicationCommandNumericOptionMinMaxValueMixin","ApplicationCommandOptionWithChoicesAndAutocompleteMixin","import_v10","SlashCommandMentionableOption","ApplicationCommandOptionBase","type","ApplicationCommandOptionType","Mentionable","toJSON","runRequiredValidations","import_shapeshift","import_v10","import_ts_mixer","numberValidator","s","number","SlashCommandNumberOption","ApplicationCommandOptionBase","type","ApplicationCommandOptionType","Number","setMaxValue","max","parse","Reflect","set","setMinValue","min","toJSON","runRequiredValidations","autocomplete","Array","isArray","choices","length","RangeError","mix","ApplicationCommandNumericOptionMinMaxValueMixin","ApplicationCommandOptionWithChoicesAndAutocompleteMixin","import_v10","SlashCommandRoleOption","ApplicationCommandOptionBase","type","ApplicationCommandOptionType","Role","toJSON","runRequiredValidations","import_shapeshift","import_v10","import_ts_mixer","minLengthValidator","s","number","greaterThanOrEqual","lessThanOrEqual","maxLengthValidator","SlashCommandStringOption","ApplicationCommandOptionBase","type","ApplicationCommandOptionType","String","setMaxLength","max","parse","Reflect","set","setMinLength","min","toJSON","runRequiredValidations","autocomplete","Array","isArray","choices","length","RangeError","mix","ApplicationCommandOptionWithChoicesAndAutocompleteMixin","import_v10","SlashCommandUserOption","ApplicationCommandOptionBase","type","ApplicationCommandOptionType","User","toJSON","runRequiredValidations","SharedSlashCommandOptions","addBooleanOption","input","_sharedAddOptionMethod","SlashCommandBooleanOption","addUserOption","SlashCommandUserOption","addChannelOption","SlashCommandChannelOption","addRoleOption","SlashCommandRoleOption","addAttachmentOption","SlashCommandAttachmentOption","addMentionableOption","SlashCommandMentionableOption","addStringOption","SlashCommandStringOption","addIntegerOption","SlashCommandIntegerOption","addNumberOption","SlashCommandNumberOption","Instance","options","validateMaxOptionsLength","result","assertReturnOfBuilder","push","SlashCommandSubcommandGroupBuilder","name","undefined","description","options","addSubcommand","input","validateMaxOptionsLength","result","SlashCommandSubcommandBuilder","assertReturnOfBuilder","push","toJSON","validateRequiredParameters","type","ApplicationCommandOptionType","SubcommandGroup","name_localizations","description_localizations","map","option","mix","SharedNameAndDescription","Subcommand","SharedSlashCommandOptions","SlashCommandBuilder","name","undefined","description","options","default_permission","default_member_permissions","dm_permission","nsfw","toJSON","validateRequiredParameters","validateLocalizationMap","name_localizations","description_localizations","map","option","setDefaultPermission","value","validateDefaultPermission","Reflect","set","setDefaultMemberPermissions","permissions","permissionValue","validateDefaultMemberPermissions","setDMPermission","enabled","validateDMPermission","setNSFW","validateNSFW","addSubcommandGroup","input","validateMaxOptionsLength","result","SlashCommandSubcommandGroupBuilder","assertReturnOfBuilder","push","addSubcommand","SlashCommandSubcommandBuilder","mix","SharedSlashCommandOptions","SharedNameAndDescription","Assertions_exports","validateDMPermission","validateDefaultMemberPermissions","validateDefaultPermission","validateName","validateRequiredParameters","import_shapeshift","import_v10","namePredicate","s","string","lengthGreaterThanOrEqual","lengthLessThanOrEqual","regex","setValidationEnabled","isValidationEnabled","typePredicate","union","literal","ApplicationCommandType","User","Message","booleanPredicate","boolean","validateDefaultPermission","value","parse","validateName","name","validateType","type","validateRequiredParameters","dmPermissionPredicate","nullish","validateDMPermission","memberPermissionPredicate","bigint","transform","toString","number","safeInt","validateDefaultMemberPermissions","permissions","ContextMenuCommandBuilder","name","undefined","type","default_permission","default_member_permissions","dm_permission","setName","validateName","Reflect","set","setType","validateType","setDefaultPermission","value","validateDefaultPermission","setDefaultMemberPermissions","permissions","permissionValue","validateDefaultMemberPermissions","setDMPermission","enabled","validateDMPermission","setNameLocalization","locale","localizedName","name_localizations","parsedLocale","validateLocale","setNameLocalizations","localizedNames","args","Object","entries","toJSON","validateRequiredParameters","validateLocalizationMap","embedLength","data","title","length","description","fields","reduce","prev","curr","name","value","footer","text","author","version"]}
\ No newline at end of file
diff --git a/node_modules/@discordjs/builders/dist/index.mjs b/node_modules/@discordjs/builders/dist/index.mjs
new file mode 100644
index 0000000..500c20a
--- /dev/null
+++ b/node_modules/@discordjs/builders/dist/index.mjs
@@ -0,0 +1,2368 @@
+var __defProp = Object.defineProperty;
+var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+
+// src/messages/embed/Assertions.ts
+var Assertions_exports = {};
+__export(Assertions_exports, {
+ RGBPredicate: () => RGBPredicate,
+ authorNamePredicate: () => authorNamePredicate,
+ colorPredicate: () => colorPredicate,
+ descriptionPredicate: () => descriptionPredicate,
+ embedAuthorPredicate: () => embedAuthorPredicate,
+ embedFieldPredicate: () => embedFieldPredicate,
+ embedFieldsArrayPredicate: () => embedFieldsArrayPredicate,
+ embedFooterPredicate: () => embedFooterPredicate,
+ fieldInlinePredicate: () => fieldInlinePredicate,
+ fieldLengthPredicate: () => fieldLengthPredicate,
+ fieldNamePredicate: () => fieldNamePredicate,
+ fieldValuePredicate: () => fieldValuePredicate,
+ footerTextPredicate: () => footerTextPredicate,
+ imageURLPredicate: () => imageURLPredicate,
+ timestampPredicate: () => timestampPredicate,
+ titlePredicate: () => titlePredicate,
+ urlPredicate: () => urlPredicate,
+ validateFieldLength: () => validateFieldLength
+});
+import { s } from "@sapphire/shapeshift";
+
+// src/util/validation.ts
+var validate = true;
+var enableValidators = /* @__PURE__ */ __name(() => validate = true, "enableValidators");
+var disableValidators = /* @__PURE__ */ __name(() => validate = false, "disableValidators");
+var isValidationEnabled = /* @__PURE__ */ __name(() => validate, "isValidationEnabled");
+
+// src/messages/embed/Assertions.ts
+var fieldNamePredicate = s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(256).setValidationEnabled(isValidationEnabled);
+var fieldValuePredicate = s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(1024).setValidationEnabled(isValidationEnabled);
+var fieldInlinePredicate = s.boolean.optional;
+var embedFieldPredicate = s.object({
+ name: fieldNamePredicate,
+ value: fieldValuePredicate,
+ inline: fieldInlinePredicate
+}).setValidationEnabled(isValidationEnabled);
+var embedFieldsArrayPredicate = embedFieldPredicate.array.setValidationEnabled(isValidationEnabled);
+var fieldLengthPredicate = s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
+function validateFieldLength(amountAdding, fields) {
+ fieldLengthPredicate.parse((fields?.length ?? 0) + amountAdding);
+}
+__name(validateFieldLength, "validateFieldLength");
+var authorNamePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);
+var imageURLPredicate = s.string.url({
+ allowedProtocols: [
+ "http:",
+ "https:",
+ "attachment:"
+ ]
+}).nullish.setValidationEnabled(isValidationEnabled);
+var urlPredicate = s.string.url({
+ allowedProtocols: [
+ "http:",
+ "https:"
+ ]
+}).nullish.setValidationEnabled(isValidationEnabled);
+var embedAuthorPredicate = s.object({
+ name: authorNamePredicate,
+ iconURL: imageURLPredicate,
+ url: urlPredicate
+}).setValidationEnabled(isValidationEnabled);
+var RGBPredicate = s.number.int.greaterThanOrEqual(0).lessThanOrEqual(255).setValidationEnabled(isValidationEnabled);
+var colorPredicate = s.number.int.greaterThanOrEqual(0).lessThanOrEqual(16777215).or(s.tuple([
+ RGBPredicate,
+ RGBPredicate,
+ RGBPredicate
+])).nullable.setValidationEnabled(isValidationEnabled);
+var descriptionPredicate = s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(4096).nullable.setValidationEnabled(isValidationEnabled);
+var footerTextPredicate = s.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(2048).nullable.setValidationEnabled(isValidationEnabled);
+var embedFooterPredicate = s.object({
+ text: footerTextPredicate,
+ iconURL: imageURLPredicate
+}).setValidationEnabled(isValidationEnabled);
+var timestampPredicate = s.union(s.number, s.date).nullable.setValidationEnabled(isValidationEnabled);
+var titlePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);
+
+// src/util/normalizeArray.ts
+function normalizeArray(arr) {
+ if (Array.isArray(arr[0]))
+ return arr[0];
+ return arr;
+}
+__name(normalizeArray, "normalizeArray");
+
+// src/messages/embed/Embed.ts
+var EmbedBuilder = class {
+ constructor(data = {}) {
+ this.data = {
+ ...data
+ };
+ if (data.timestamp)
+ this.data.timestamp = new Date(data.timestamp).toISOString();
+ }
+ /**
+ * Appends fields to the embed
+ *
+ * @remarks
+ * This method accepts either an array of fields or a variable number of field parameters.
+ * The maximum amount of fields that can be added is 25.
+ * @example
+ * Using an array
+ * ```ts
+ * const fields: APIEmbedField[] = ...;
+ * const embed = new EmbedBuilder()
+ * .addFields(fields);
+ * ```
+ * @example
+ * Using rest parameters (variadic)
+ * ```ts
+ * const embed = new EmbedBuilder()
+ * .addFields(
+ * { name: 'Field 1', value: 'Value 1' },
+ * { name: 'Field 2', value: 'Value 2' },
+ * );
+ * ```
+ * @param fields - The fields to add
+ */
+ addFields(...fields) {
+ fields = normalizeArray(fields);
+ validateFieldLength(fields.length, this.data.fields);
+ embedFieldsArrayPredicate.parse(fields);
+ if (this.data.fields)
+ this.data.fields.push(...fields);
+ else
+ this.data.fields = fields;
+ return this;
+ }
+ /**
+ * Removes, replaces, or inserts fields in the embed.
+ *
+ * @remarks
+ * This method behaves similarly
+ * to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice | Array.prototype.splice}.
+ * The maximum amount of fields that can be added is 25.
+ *
+ * It's useful for modifying and adjusting order of the already-existing fields of an embed.
+ * @example
+ * Remove the first field
+ * ```ts
+ * embed.spliceFields(0, 1);
+ * ```
+ * @example
+ * Remove the first n fields
+ * ```ts
+ * const n = 4
+ * embed.spliceFields(0, n);
+ * ```
+ * @example
+ * Remove the last field
+ * ```ts
+ * embed.spliceFields(-1, 1);
+ * ```
+ * @param index - The index to start at
+ * @param deleteCount - The number of fields to remove
+ * @param fields - The replacing field objects
+ */
+ spliceFields(index, deleteCount, ...fields) {
+ validateFieldLength(fields.length - deleteCount, this.data.fields);
+ embedFieldsArrayPredicate.parse(fields);
+ if (this.data.fields)
+ this.data.fields.splice(index, deleteCount, ...fields);
+ else
+ this.data.fields = fields;
+ return this;
+ }
+ /**
+ * Sets the embed's fields
+ *
+ * @remarks
+ * This method is an alias for {@link EmbedBuilder.spliceFields}. More specifically,
+ * it splices the entire array of fields, replacing them with the provided fields.
+ *
+ * You can set a maximum of 25 fields.
+ * @param fields - The fields to set
+ */
+ setFields(...fields) {
+ this.spliceFields(0, this.data.fields?.length ?? 0, ...normalizeArray(fields));
+ return this;
+ }
+ /**
+ * Sets the author of this embed
+ *
+ * @param options - The options for the author
+ */
+ setAuthor(options) {
+ if (options === null) {
+ this.data.author = void 0;
+ return this;
+ }
+ embedAuthorPredicate.parse(options);
+ this.data.author = {
+ name: options.name,
+ url: options.url,
+ icon_url: options.iconURL
+ };
+ return this;
+ }
+ /**
+ * Sets the color of this embed
+ *
+ * @param color - The color of the embed
+ */
+ setColor(color) {
+ colorPredicate.parse(color);
+ if (Array.isArray(color)) {
+ const [red, green, blue] = color;
+ this.data.color = (red << 16) + (green << 8) + blue;
+ return this;
+ }
+ this.data.color = color ?? void 0;
+ return this;
+ }
+ /**
+ * Sets the description of this embed
+ *
+ * @param description - The description
+ */
+ setDescription(description) {
+ descriptionPredicate.parse(description);
+ this.data.description = description ?? void 0;
+ return this;
+ }
+ /**
+ * Sets the footer of this embed
+ *
+ * @param options - The options for the footer
+ */
+ setFooter(options) {
+ if (options === null) {
+ this.data.footer = void 0;
+ return this;
+ }
+ embedFooterPredicate.parse(options);
+ this.data.footer = {
+ text: options.text,
+ icon_url: options.iconURL
+ };
+ return this;
+ }
+ /**
+ * Sets the image of this embed
+ *
+ * @param url - The URL of the image
+ */
+ setImage(url) {
+ imageURLPredicate.parse(url);
+ this.data.image = url ? {
+ url
+ } : void 0;
+ return this;
+ }
+ /**
+ * Sets the thumbnail of this embed
+ *
+ * @param url - The URL of the thumbnail
+ */
+ setThumbnail(url) {
+ imageURLPredicate.parse(url);
+ this.data.thumbnail = url ? {
+ url
+ } : void 0;
+ return this;
+ }
+ /**
+ * Sets the timestamp of this embed
+ *
+ * @param timestamp - The timestamp or date
+ */
+ setTimestamp(timestamp = Date.now()) {
+ timestampPredicate.parse(timestamp);
+ this.data.timestamp = timestamp ? new Date(timestamp).toISOString() : void 0;
+ return this;
+ }
+ /**
+ * Sets the title of this embed
+ *
+ * @param title - The title
+ */
+ setTitle(title) {
+ titlePredicate.parse(title);
+ this.data.title = title ?? void 0;
+ return this;
+ }
+ /**
+ * Sets the URL of this embed
+ *
+ * @param url - The URL
+ */
+ setURL(url) {
+ urlPredicate.parse(url);
+ this.data.url = url ?? void 0;
+ return this;
+ }
+ /**
+ * Transforms the embed to a plain object
+ */
+ toJSON() {
+ return {
+ ...this.data
+ };
+ }
+};
+__name(EmbedBuilder, "EmbedBuilder");
+
+// src/index.ts
+export * from "@discordjs/formatters";
+
+// src/components/Assertions.ts
+var Assertions_exports2 = {};
+__export(Assertions_exports2, {
+ buttonLabelValidator: () => buttonLabelValidator,
+ buttonStyleValidator: () => buttonStyleValidator,
+ channelTypesValidator: () => channelTypesValidator,
+ customIdValidator: () => customIdValidator,
+ defaultValidator: () => defaultValidator,
+ disabledValidator: () => disabledValidator,
+ emojiValidator: () => emojiValidator,
+ jsonOptionValidator: () => jsonOptionValidator,
+ labelValueDescriptionValidator: () => labelValueDescriptionValidator,
+ minMaxValidator: () => minMaxValidator,
+ optionValidator: () => optionValidator,
+ optionsLengthValidator: () => optionsLengthValidator,
+ optionsValidator: () => optionsValidator,
+ placeholderValidator: () => placeholderValidator,
+ urlValidator: () => urlValidator,
+ validateRequiredButtonParameters: () => validateRequiredButtonParameters,
+ validateRequiredSelectMenuOptionParameters: () => validateRequiredSelectMenuOptionParameters,
+ validateRequiredSelectMenuParameters: () => validateRequiredSelectMenuParameters
+});
+import { s as s2 } from "@sapphire/shapeshift";
+import { ButtonStyle, ChannelType } from "discord-api-types/v10";
+
+// src/components/selectMenu/StringSelectMenuOption.ts
+var StringSelectMenuOptionBuilder = class {
+ /**
+ * Creates a new string select menu option from API data
+ *
+ * @param data - The API data to create this string select menu option with
+ * @example
+ * Creating a string select menu option from an API data object
+ * ```ts
+ * const selectMenuOption = new SelectMenuOptionBuilder({
+ * label: 'catchy label',
+ * value: '1',
+ * });
+ * ```
+ * @example
+ * Creating a string select menu option using setters and API data
+ * ```ts
+ * const selectMenuOption = new SelectMenuOptionBuilder({
+ * default: true,
+ * value: '1',
+ * })
+ * .setLabel('woah')
+ * ```
+ */
+ constructor(data = {}) {
+ this.data = data;
+ }
+ /**
+ * Sets the label of this option
+ *
+ * @param label - The label to show on this option
+ */
+ setLabel(label) {
+ this.data.label = labelValueDescriptionValidator.parse(label);
+ return this;
+ }
+ /**
+ * Sets the value of this option
+ *
+ * @param value - The value of this option
+ */
+ setValue(value) {
+ this.data.value = labelValueDescriptionValidator.parse(value);
+ return this;
+ }
+ /**
+ * Sets the description of this option
+ *
+ * @param description - The description of this option
+ */
+ setDescription(description) {
+ this.data.description = labelValueDescriptionValidator.parse(description);
+ return this;
+ }
+ /**
+ * Sets whether this option is selected by default
+ *
+ * @param isDefault - Whether this option is selected by default
+ */
+ setDefault(isDefault = true) {
+ this.data.default = defaultValidator.parse(isDefault);
+ return this;
+ }
+ /**
+ * Sets the emoji to display on this option
+ *
+ * @param emoji - The emoji to display on this option
+ */
+ setEmoji(emoji) {
+ this.data.emoji = emojiValidator.parse(emoji);
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ validateRequiredSelectMenuOptionParameters(this.data.label, this.data.value);
+ return {
+ ...this.data
+ };
+ }
+};
+__name(StringSelectMenuOptionBuilder, "StringSelectMenuOptionBuilder");
+
+// src/components/Assertions.ts
+var customIdValidator = s2.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
+var emojiValidator = s2.object({
+ id: s2.string,
+ name: s2.string,
+ animated: s2.boolean
+}).partial.strict.setValidationEnabled(isValidationEnabled);
+var disabledValidator = s2.boolean;
+var buttonLabelValidator = s2.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(80).setValidationEnabled(isValidationEnabled);
+var buttonStyleValidator = s2.nativeEnum(ButtonStyle);
+var placeholderValidator = s2.string.lengthLessThanOrEqual(150).setValidationEnabled(isValidationEnabled);
+var minMaxValidator = s2.number.int.greaterThanOrEqual(0).lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
+var labelValueDescriptionValidator = s2.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
+var jsonOptionValidator = s2.object({
+ label: labelValueDescriptionValidator,
+ value: labelValueDescriptionValidator,
+ description: labelValueDescriptionValidator.optional,
+ emoji: emojiValidator.optional,
+ default: s2.boolean.optional
+}).setValidationEnabled(isValidationEnabled);
+var optionValidator = s2.instance(StringSelectMenuOptionBuilder).setValidationEnabled(isValidationEnabled);
+var optionsValidator = optionValidator.array.lengthGreaterThanOrEqual(0).setValidationEnabled(isValidationEnabled);
+var optionsLengthValidator = s2.number.int.greaterThanOrEqual(0).lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
+function validateRequiredSelectMenuParameters(options, customId) {
+ customIdValidator.parse(customId);
+ optionsValidator.parse(options);
+}
+__name(validateRequiredSelectMenuParameters, "validateRequiredSelectMenuParameters");
+var defaultValidator = s2.boolean;
+function validateRequiredSelectMenuOptionParameters(label, value) {
+ labelValueDescriptionValidator.parse(label);
+ labelValueDescriptionValidator.parse(value);
+}
+__name(validateRequiredSelectMenuOptionParameters, "validateRequiredSelectMenuOptionParameters");
+var channelTypesValidator = s2.nativeEnum(ChannelType).array.setValidationEnabled(isValidationEnabled);
+var urlValidator = s2.string.url({
+ allowedProtocols: [
+ "http:",
+ "https:",
+ "discord:"
+ ]
+}).setValidationEnabled(isValidationEnabled);
+function validateRequiredButtonParameters(style, label, emoji, customId, url) {
+ if (url && customId) {
+ throw new RangeError("URL and custom id are mutually exclusive");
+ }
+ if (!label && !emoji) {
+ throw new RangeError("Buttons must have a label and/or an emoji");
+ }
+ if (style === ButtonStyle.Link) {
+ if (!url) {
+ throw new RangeError("Link buttons must have a url");
+ }
+ } else if (url) {
+ throw new RangeError("Non-link buttons cannot have a url");
+ }
+}
+__name(validateRequiredButtonParameters, "validateRequiredButtonParameters");
+
+// src/components/ActionRow.ts
+import { ComponentType as ComponentType9 } from "discord-api-types/v10";
+
+// src/components/Component.ts
+var ComponentBuilder = class {
+ constructor(data) {
+ this.data = data;
+ }
+};
+__name(ComponentBuilder, "ComponentBuilder");
+
+// src/components/Components.ts
+import { ComponentType as ComponentType8 } from "discord-api-types/v10";
+
+// src/components/button/Button.ts
+import { ComponentType } from "discord-api-types/v10";
+var ButtonBuilder = class extends ComponentBuilder {
+ /**
+ * Creates a new button from API data
+ *
+ * @param data - The API data to create this button with
+ * @example
+ * Creating a button from an API data object
+ * ```ts
+ * const button = new ButtonBuilder({
+ * custom_id: 'a cool button',
+ * style: ButtonStyle.Primary,
+ * label: 'Click Me',
+ * emoji: {
+ * name: 'smile',
+ * id: '123456789012345678',
+ * },
+ * });
+ * ```
+ * @example
+ * Creating a button using setters and API data
+ * ```ts
+ * const button = new ButtonBuilder({
+ * style: ButtonStyle.Secondary,
+ * label: 'Click Me',
+ * })
+ * .setEmoji({ name: '🙂' })
+ * .setCustomId('another cool button');
+ * ```
+ */
+ constructor(data) {
+ super({
+ type: ComponentType.Button,
+ ...data
+ });
+ }
+ /**
+ * Sets the style of this button
+ *
+ * @param style - The style of the button
+ */
+ setStyle(style) {
+ this.data.style = buttonStyleValidator.parse(style);
+ return this;
+ }
+ /**
+ * Sets the URL for this button
+ *
+ * @remarks
+ * This method is only available to buttons using the `Link` button style.
+ * Only three types of URL schemes are currently supported: `https://`, `http://` and `discord://`
+ * @param url - The URL to open when this button is clicked
+ */
+ setURL(url) {
+ this.data.url = urlValidator.parse(url);
+ return this;
+ }
+ /**
+ * Sets the custom id for this button
+ *
+ * @remarks
+ * This method is only applicable to buttons that are not using the `Link` button style.
+ * @param customId - The custom id to use for this button
+ */
+ setCustomId(customId) {
+ this.data.custom_id = customIdValidator.parse(customId);
+ return this;
+ }
+ /**
+ * Sets the emoji to display on this button
+ *
+ * @param emoji - The emoji to display on this button
+ */
+ setEmoji(emoji) {
+ this.data.emoji = emojiValidator.parse(emoji);
+ return this;
+ }
+ /**
+ * Sets whether this button is disabled
+ *
+ * @param disabled - Whether to disable this button
+ */
+ setDisabled(disabled = true) {
+ this.data.disabled = disabledValidator.parse(disabled);
+ return this;
+ }
+ /**
+ * Sets the label for this button
+ *
+ * @param label - The label to display on this button
+ */
+ setLabel(label) {
+ this.data.label = buttonLabelValidator.parse(label);
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ validateRequiredButtonParameters(this.data.style, this.data.label, this.data.emoji, this.data.custom_id, this.data.url);
+ return {
+ ...this.data
+ };
+ }
+};
+__name(ButtonBuilder, "ButtonBuilder");
+
+// src/components/selectMenu/ChannelSelectMenu.ts
+import { ComponentType as ComponentType2 } from "discord-api-types/v10";
+
+// src/components/selectMenu/BaseSelectMenu.ts
+var BaseSelectMenuBuilder = class extends ComponentBuilder {
+ /**
+ * Sets the placeholder for this select menu
+ *
+ * @param placeholder - The placeholder to use for this select menu
+ */
+ setPlaceholder(placeholder) {
+ this.data.placeholder = placeholderValidator.parse(placeholder);
+ return this;
+ }
+ /**
+ * Sets the minimum values that must be selected in the select menu
+ *
+ * @param minValues - The minimum values that must be selected
+ */
+ setMinValues(minValues) {
+ this.data.min_values = minMaxValidator.parse(minValues);
+ return this;
+ }
+ /**
+ * Sets the maximum values that must be selected in the select menu
+ *
+ * @param maxValues - The maximum values that must be selected
+ */
+ setMaxValues(maxValues) {
+ this.data.max_values = minMaxValidator.parse(maxValues);
+ return this;
+ }
+ /**
+ * Sets the custom id for this select menu
+ *
+ * @param customId - The custom id to use for this select menu
+ */
+ setCustomId(customId) {
+ this.data.custom_id = customIdValidator.parse(customId);
+ return this;
+ }
+ /**
+ * Sets whether this select menu is disabled
+ *
+ * @param disabled - Whether this select menu is disabled
+ */
+ setDisabled(disabled = true) {
+ this.data.disabled = disabledValidator.parse(disabled);
+ return this;
+ }
+ toJSON() {
+ customIdValidator.parse(this.data.custom_id);
+ return {
+ ...this.data
+ };
+ }
+};
+__name(BaseSelectMenuBuilder, "BaseSelectMenuBuilder");
+
+// src/components/selectMenu/ChannelSelectMenu.ts
+var ChannelSelectMenuBuilder = class extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new ChannelSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new ChannelSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .addChannelTypes(ChannelType.GuildText, ChannelType.GuildAnnouncement)
+ * .setMinValues(2)
+ * ```
+ */
+ constructor(data) {
+ super({
+ ...data,
+ type: ComponentType2.ChannelSelect
+ });
+ }
+ addChannelTypes(...types) {
+ types = normalizeArray(types);
+ this.data.channel_types ??= [];
+ this.data.channel_types.push(...channelTypesValidator.parse(types));
+ return this;
+ }
+ setChannelTypes(...types) {
+ types = normalizeArray(types);
+ this.data.channel_types ??= [];
+ this.data.channel_types.splice(0, this.data.channel_types.length, ...channelTypesValidator.parse(types));
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ customIdValidator.parse(this.data.custom_id);
+ return {
+ ...this.data
+ };
+ }
+};
+__name(ChannelSelectMenuBuilder, "ChannelSelectMenuBuilder");
+
+// src/components/selectMenu/MentionableSelectMenu.ts
+import { ComponentType as ComponentType3 } from "discord-api-types/v10";
+var MentionableSelectMenuBuilder = class extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new MentionableSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new MentionableSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * ```
+ */
+ constructor(data) {
+ super({
+ ...data,
+ type: ComponentType3.MentionableSelect
+ });
+ }
+};
+__name(MentionableSelectMenuBuilder, "MentionableSelectMenuBuilder");
+
+// src/components/selectMenu/RoleSelectMenu.ts
+import { ComponentType as ComponentType4 } from "discord-api-types/v10";
+var RoleSelectMenuBuilder = class extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new RoleSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new RoleSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * ```
+ */
+ constructor(data) {
+ super({
+ ...data,
+ type: ComponentType4.RoleSelect
+ });
+ }
+};
+__name(RoleSelectMenuBuilder, "RoleSelectMenuBuilder");
+
+// src/components/selectMenu/StringSelectMenu.ts
+import { ComponentType as ComponentType5 } from "discord-api-types/v10";
+var StringSelectMenuBuilder = class extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new StringSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * options: [
+ * { label: 'option 1', value: '1' },
+ * { label: 'option 2', value: '2' },
+ * { label: 'option 3', value: '3' },
+ * ],
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new StringSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * .addOptions({
+ * label: 'Catchy',
+ * value: 'catch',
+ * });
+ * ```
+ */
+ constructor(data) {
+ const { options, ...initData } = data ?? {};
+ super({
+ ...initData,
+ type: ComponentType5.StringSelect
+ });
+ this.options = options?.map((option) => new StringSelectMenuOptionBuilder(option)) ?? [];
+ }
+ /**
+ * Adds options to this select menu
+ *
+ * @param options - The options to add to this select menu
+ * @returns
+ */
+ addOptions(...options) {
+ options = normalizeArray(options);
+ optionsLengthValidator.parse(this.options.length + options.length);
+ this.options.push(...options.map((option) => option instanceof StringSelectMenuOptionBuilder ? option : new StringSelectMenuOptionBuilder(jsonOptionValidator.parse(option))));
+ return this;
+ }
+ /**
+ * Sets the options on this select menu
+ *
+ * @param options - The options to set on this select menu
+ */
+ setOptions(...options) {
+ return this.spliceOptions(0, this.options.length, ...options);
+ }
+ /**
+ * Removes, replaces, or inserts options in the string select menu.
+ *
+ * @remarks
+ * This method behaves similarly
+ * to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice | Array.prototype.splice}.
+ *
+ * It's useful for modifying and adjusting order of the already-existing options of a string select menu.
+ * @example
+ * Remove the first option
+ * ```ts
+ * selectMenu.spliceOptions(0, 1);
+ * ```
+ * @example
+ * Remove the first n option
+ * ```ts
+ * const n = 4
+ * selectMenu.spliceOptions(0, n);
+ * ```
+ * @example
+ * Remove the last option
+ * ```ts
+ * selectMenu.spliceOptions(-1, 1);
+ * ```
+ * @param index - The index to start at
+ * @param deleteCount - The number of options to remove
+ * @param options - The replacing option objects or builders
+ */
+ spliceOptions(index, deleteCount, ...options) {
+ options = normalizeArray(options);
+ const clone = [
+ ...this.options
+ ];
+ clone.splice(index, deleteCount, ...options.map((option) => option instanceof StringSelectMenuOptionBuilder ? option : new StringSelectMenuOptionBuilder(jsonOptionValidator.parse(option))));
+ optionsLengthValidator.parse(clone.length);
+ this.options.splice(0, this.options.length, ...clone);
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ validateRequiredSelectMenuParameters(this.options, this.data.custom_id);
+ return {
+ ...this.data,
+ options: this.options.map((option) => option.toJSON())
+ };
+ }
+};
+__name(StringSelectMenuBuilder, "StringSelectMenuBuilder");
+
+// src/components/selectMenu/UserSelectMenu.ts
+import { ComponentType as ComponentType6 } from "discord-api-types/v10";
+var UserSelectMenuBuilder = class extends BaseSelectMenuBuilder {
+ /**
+ * Creates a new select menu from API data
+ *
+ * @param data - The API data to create this select menu with
+ * @example
+ * Creating a select menu from an API data object
+ * ```ts
+ * const selectMenu = new UserSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * placeholder: 'select an option',
+ * max_values: 2,
+ * });
+ * ```
+ * @example
+ * Creating a select menu using setters and API data
+ * ```ts
+ * const selectMenu = new UserSelectMenuBuilder({
+ * custom_id: 'a cool select menu',
+ * })
+ * .setMinValues(1)
+ * ```
+ */
+ constructor(data) {
+ super({
+ ...data,
+ type: ComponentType6.UserSelect
+ });
+ }
+};
+__name(UserSelectMenuBuilder, "UserSelectMenuBuilder");
+
+// src/components/textInput/TextInput.ts
+import { isJSONEncodable } from "@discordjs/util";
+import { ComponentType as ComponentType7 } from "discord-api-types/v10";
+import isEqual from "fast-deep-equal";
+
+// src/components/textInput/Assertions.ts
+var Assertions_exports3 = {};
+__export(Assertions_exports3, {
+ labelValidator: () => labelValidator,
+ maxLengthValidator: () => maxLengthValidator,
+ minLengthValidator: () => minLengthValidator,
+ placeholderValidator: () => placeholderValidator2,
+ requiredValidator: () => requiredValidator,
+ textInputStyleValidator: () => textInputStyleValidator,
+ validateRequiredParameters: () => validateRequiredParameters,
+ valueValidator: () => valueValidator
+});
+import { s as s3 } from "@sapphire/shapeshift";
+import { TextInputStyle } from "discord-api-types/v10";
+var textInputStyleValidator = s3.nativeEnum(TextInputStyle);
+var minLengthValidator = s3.number.int.greaterThanOrEqual(0).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
+var maxLengthValidator = s3.number.int.greaterThanOrEqual(1).lessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
+var requiredValidator = s3.boolean;
+var valueValidator = s3.string.lengthLessThanOrEqual(4e3).setValidationEnabled(isValidationEnabled);
+var placeholderValidator2 = s3.string.lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
+var labelValidator = s3.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled);
+function validateRequiredParameters(customId, style, label) {
+ customIdValidator.parse(customId);
+ textInputStyleValidator.parse(style);
+ labelValidator.parse(label);
+}
+__name(validateRequiredParameters, "validateRequiredParameters");
+
+// src/components/textInput/TextInput.ts
+var TextInputBuilder = class extends ComponentBuilder {
+ /**
+ * Creates a new text input from API data
+ *
+ * @param data - The API data to create this text input with
+ * @example
+ * Creating a select menu option from an API data object
+ * ```ts
+ * const textInput = new TextInputBuilder({
+ * custom_id: 'a cool select menu',
+ * label: 'Type something',
+ * style: TextInputStyle.Short,
+ * });
+ * ```
+ * @example
+ * Creating a select menu option using setters and API data
+ * ```ts
+ * const textInput = new TextInputBuilder({
+ * label: 'Type something else',
+ * })
+ * .setCustomId('woah')
+ * .setStyle(TextInputStyle.Paragraph);
+ * ```
+ */
+ constructor(data) {
+ super({
+ type: ComponentType7.TextInput,
+ ...data
+ });
+ }
+ /**
+ * Sets the custom id for this text input
+ *
+ * @param customId - The custom id of this text input
+ */
+ setCustomId(customId) {
+ this.data.custom_id = customIdValidator.parse(customId);
+ return this;
+ }
+ /**
+ * Sets the label for this text input
+ *
+ * @param label - The label for this text input
+ */
+ setLabel(label) {
+ this.data.label = labelValidator.parse(label);
+ return this;
+ }
+ /**
+ * Sets the style for this text input
+ *
+ * @param style - The style for this text input
+ */
+ setStyle(style) {
+ this.data.style = textInputStyleValidator.parse(style);
+ return this;
+ }
+ /**
+ * Sets the minimum length of text for this text input
+ *
+ * @param minLength - The minimum length of text for this text input
+ */
+ setMinLength(minLength) {
+ this.data.min_length = minLengthValidator.parse(minLength);
+ return this;
+ }
+ /**
+ * Sets the maximum length of text for this text input
+ *
+ * @param maxLength - The maximum length of text for this text input
+ */
+ setMaxLength(maxLength) {
+ this.data.max_length = maxLengthValidator.parse(maxLength);
+ return this;
+ }
+ /**
+ * Sets the placeholder of this text input
+ *
+ * @param placeholder - The placeholder of this text input
+ */
+ setPlaceholder(placeholder) {
+ this.data.placeholder = placeholderValidator2.parse(placeholder);
+ return this;
+ }
+ /**
+ * Sets the value of this text input
+ *
+ * @param value - The value for this text input
+ */
+ setValue(value) {
+ this.data.value = valueValidator.parse(value);
+ return this;
+ }
+ /**
+ * Sets whether this text input is required
+ *
+ * @param required - Whether this text input is required
+ */
+ setRequired(required = true) {
+ this.data.required = requiredValidator.parse(required);
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ validateRequiredParameters(this.data.custom_id, this.data.style, this.data.label);
+ return {
+ ...this.data
+ };
+ }
+ /**
+ * {@inheritDoc Equatable.equals}
+ */
+ equals(other) {
+ if (isJSONEncodable(other)) {
+ return isEqual(other.toJSON(), this.data);
+ }
+ return isEqual(other, this.data);
+ }
+};
+__name(TextInputBuilder, "TextInputBuilder");
+
+// src/components/Components.ts
+function createComponentBuilder(data) {
+ if (data instanceof ComponentBuilder) {
+ return data;
+ }
+ switch (data.type) {
+ case ComponentType8.ActionRow:
+ return new ActionRowBuilder(data);
+ case ComponentType8.Button:
+ return new ButtonBuilder(data);
+ case ComponentType8.StringSelect:
+ return new StringSelectMenuBuilder(data);
+ case ComponentType8.TextInput:
+ return new TextInputBuilder(data);
+ case ComponentType8.UserSelect:
+ return new UserSelectMenuBuilder(data);
+ case ComponentType8.RoleSelect:
+ return new RoleSelectMenuBuilder(data);
+ case ComponentType8.MentionableSelect:
+ return new MentionableSelectMenuBuilder(data);
+ case ComponentType8.ChannelSelect:
+ return new ChannelSelectMenuBuilder(data);
+ default:
+ throw new Error(`Cannot properly serialize component type: ${data.type}`);
+ }
+}
+__name(createComponentBuilder, "createComponentBuilder");
+
+// src/components/ActionRow.ts
+var ActionRowBuilder = class extends ComponentBuilder {
+ /**
+ * Creates a new action row from API data
+ *
+ * @param data - The API data to create this action row with
+ * @example
+ * Creating an action row from an API data object
+ * ```ts
+ * const actionRow = new ActionRowBuilder({
+ * components: [
+ * {
+ * custom_id: "custom id",
+ * label: "Type something",
+ * style: TextInputStyle.Short,
+ * type: ComponentType.TextInput,
+ * },
+ * ],
+ * });
+ * ```
+ * @example
+ * Creating an action row using setters and API data
+ * ```ts
+ * const actionRow = new ActionRowBuilder({
+ * components: [
+ * {
+ * custom_id: "custom id",
+ * label: "Click me",
+ * style: ButtonStyle.Primary,
+ * type: ComponentType.Button,
+ * },
+ * ],
+ * })
+ * .addComponents(button2, button3);
+ * ```
+ */
+ constructor({ components, ...data } = {}) {
+ super({
+ type: ComponentType9.ActionRow,
+ ...data
+ });
+ this.components = components?.map((component) => createComponentBuilder(component)) ?? [];
+ }
+ /**
+ * Adds components to this action row.
+ *
+ * @param components - The components to add to this action row.
+ */
+ addComponents(...components) {
+ this.components.push(...normalizeArray(components));
+ return this;
+ }
+ /**
+ * Sets the components in this action row
+ *
+ * @param components - The components to set this row to
+ */
+ setComponents(...components) {
+ this.components.splice(0, this.components.length, ...normalizeArray(components));
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ return {
+ ...this.data,
+ components: this.components.map((component) => component.toJSON())
+ };
+ }
+};
+__name(ActionRowBuilder, "ActionRowBuilder");
+
+// src/interactions/modals/Assertions.ts
+var Assertions_exports4 = {};
+__export(Assertions_exports4, {
+ componentsValidator: () => componentsValidator,
+ titleValidator: () => titleValidator,
+ validateRequiredParameters: () => validateRequiredParameters2
+});
+import { s as s4 } from "@sapphire/shapeshift";
+var titleValidator = s4.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(45).setValidationEnabled(isValidationEnabled);
+var componentsValidator = s4.instance(ActionRowBuilder).array.lengthGreaterThanOrEqual(1).setValidationEnabled(isValidationEnabled);
+function validateRequiredParameters2(customId, title, components) {
+ customIdValidator.parse(customId);
+ titleValidator.parse(title);
+ componentsValidator.parse(components);
+}
+__name(validateRequiredParameters2, "validateRequiredParameters");
+
+// src/interactions/modals/Modal.ts
+var ModalBuilder = class {
+ components = [];
+ constructor({ components, ...data } = {}) {
+ this.data = {
+ ...data
+ };
+ this.components = components?.map((component) => createComponentBuilder(component)) ?? [];
+ }
+ /**
+ * Sets the title of the modal
+ *
+ * @param title - The title of the modal
+ */
+ setTitle(title) {
+ this.data.title = titleValidator.parse(title);
+ return this;
+ }
+ /**
+ * Sets the custom id of the modal
+ *
+ * @param customId - The custom id of this modal
+ */
+ setCustomId(customId) {
+ this.data.custom_id = customIdValidator.parse(customId);
+ return this;
+ }
+ /**
+ * Adds components to this modal
+ *
+ * @param components - The components to add to this modal
+ */
+ addComponents(...components) {
+ this.components.push(...normalizeArray(components).map((component) => component instanceof ActionRowBuilder ? component : new ActionRowBuilder(component)));
+ return this;
+ }
+ /**
+ * Sets the components in this modal
+ *
+ * @param components - The components to set this modal to
+ */
+ setComponents(...components) {
+ this.components.splice(0, this.components.length, ...normalizeArray(components));
+ return this;
+ }
+ /**
+ * {@inheritDoc ComponentBuilder.toJSON}
+ */
+ toJSON() {
+ validateRequiredParameters2(this.data.custom_id, this.data.title, this.components);
+ return {
+ ...this.data,
+ components: this.components.map((component) => component.toJSON())
+ };
+ }
+};
+__name(ModalBuilder, "ModalBuilder");
+
+// src/interactions/slashCommands/Assertions.ts
+var Assertions_exports5 = {};
+__export(Assertions_exports5, {
+ assertReturnOfBuilder: () => assertReturnOfBuilder,
+ localizationMapPredicate: () => localizationMapPredicate,
+ validateChoicesLength: () => validateChoicesLength,
+ validateDMPermission: () => validateDMPermission,
+ validateDefaultMemberPermissions: () => validateDefaultMemberPermissions,
+ validateDefaultPermission: () => validateDefaultPermission,
+ validateDescription: () => validateDescription,
+ validateLocale: () => validateLocale,
+ validateLocalizationMap: () => validateLocalizationMap,
+ validateMaxOptionsLength: () => validateMaxOptionsLength,
+ validateNSFW: () => validateNSFW,
+ validateName: () => validateName,
+ validateRequired: () => validateRequired,
+ validateRequiredParameters: () => validateRequiredParameters3
+});
+import { s as s5 } from "@sapphire/shapeshift";
+import { Locale } from "discord-api-types/v10";
+var namePredicate = s5.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/^[\p{Ll}\p{Lm}\p{Lo}\p{N}\p{sc=Devanagari}\p{sc=Thai}_-]+$/u).setValidationEnabled(isValidationEnabled);
+function validateName(name) {
+ namePredicate.parse(name);
+}
+__name(validateName, "validateName");
+var descriptionPredicate2 = s5.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100).setValidationEnabled(isValidationEnabled);
+var localePredicate = s5.nativeEnum(Locale);
+function validateDescription(description) {
+ descriptionPredicate2.parse(description);
+}
+__name(validateDescription, "validateDescription");
+var maxArrayLengthPredicate = s5.unknown.array.lengthLessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
+function validateLocale(locale) {
+ return localePredicate.parse(locale);
+}
+__name(validateLocale, "validateLocale");
+function validateMaxOptionsLength(options) {
+ maxArrayLengthPredicate.parse(options);
+}
+__name(validateMaxOptionsLength, "validateMaxOptionsLength");
+function validateRequiredParameters3(name, description, options) {
+ validateName(name);
+ validateDescription(description);
+ validateMaxOptionsLength(options);
+}
+__name(validateRequiredParameters3, "validateRequiredParameters");
+var booleanPredicate = s5.boolean;
+function validateDefaultPermission(value) {
+ booleanPredicate.parse(value);
+}
+__name(validateDefaultPermission, "validateDefaultPermission");
+function validateRequired(required) {
+ booleanPredicate.parse(required);
+}
+__name(validateRequired, "validateRequired");
+var choicesLengthPredicate = s5.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);
+function validateChoicesLength(amountAdding, choices) {
+ choicesLengthPredicate.parse((choices?.length ?? 0) + amountAdding);
+}
+__name(validateChoicesLength, "validateChoicesLength");
+function assertReturnOfBuilder(input, ExpectedInstanceOf) {
+ s5.instance(ExpectedInstanceOf).parse(input);
+}
+__name(assertReturnOfBuilder, "assertReturnOfBuilder");
+var localizationMapPredicate = s5.object(Object.fromEntries(Object.values(Locale).map((locale) => [
+ locale,
+ s5.string.nullish
+]))).strict.nullish.setValidationEnabled(isValidationEnabled);
+function validateLocalizationMap(value) {
+ localizationMapPredicate.parse(value);
+}
+__name(validateLocalizationMap, "validateLocalizationMap");
+var dmPermissionPredicate = s5.boolean.nullish;
+function validateDMPermission(value) {
+ dmPermissionPredicate.parse(value);
+}
+__name(validateDMPermission, "validateDMPermission");
+var memberPermissionPredicate = s5.union(s5.bigint.transform((value) => value.toString()), s5.number.safeInt.transform((value) => value.toString()), s5.string.regex(/^\d+$/)).nullish;
+function validateDefaultMemberPermissions(permissions) {
+ return memberPermissionPredicate.parse(permissions);
+}
+__name(validateDefaultMemberPermissions, "validateDefaultMemberPermissions");
+function validateNSFW(value) {
+ booleanPredicate.parse(value);
+}
+__name(validateNSFW, "validateNSFW");
+
+// src/interactions/slashCommands/SlashCommandBuilder.ts
+import { mix as mix6 } from "ts-mixer";
+
+// src/interactions/slashCommands/SlashCommandSubcommands.ts
+import { ApplicationCommandOptionType as ApplicationCommandOptionType11 } from "discord-api-types/v10";
+import { mix as mix5 } from "ts-mixer";
+
+// src/interactions/slashCommands/mixins/NameAndDescription.ts
+var SharedNameAndDescription = class {
+ /**
+ * Sets the name
+ *
+ * @param name - The name
+ */
+ setName(name) {
+ validateName(name);
+ Reflect.set(this, "name", name);
+ return this;
+ }
+ /**
+ * Sets the description
+ *
+ * @param description - The description
+ */
+ setDescription(description) {
+ validateDescription(description);
+ Reflect.set(this, "description", description);
+ return this;
+ }
+ /**
+ * Sets a name localization
+ *
+ * @param locale - The locale to set a description for
+ * @param localizedName - The localized description for the given locale
+ */
+ setNameLocalization(locale, localizedName) {
+ if (!this.name_localizations) {
+ Reflect.set(this, "name_localizations", {});
+ }
+ const parsedLocale = validateLocale(locale);
+ if (localizedName === null) {
+ this.name_localizations[parsedLocale] = null;
+ return this;
+ }
+ validateName(localizedName);
+ this.name_localizations[parsedLocale] = localizedName;
+ return this;
+ }
+ /**
+ * Sets the name localizations
+ *
+ * @param localizedNames - The dictionary of localized descriptions to set
+ */
+ setNameLocalizations(localizedNames) {
+ if (localizedNames === null) {
+ Reflect.set(this, "name_localizations", null);
+ return this;
+ }
+ Reflect.set(this, "name_localizations", {});
+ for (const args of Object.entries(localizedNames)) {
+ this.setNameLocalization(...args);
+ }
+ return this;
+ }
+ /**
+ * Sets a description localization
+ *
+ * @param locale - The locale to set a description for
+ * @param localizedDescription - The localized description for the given locale
+ */
+ setDescriptionLocalization(locale, localizedDescription) {
+ if (!this.description_localizations) {
+ Reflect.set(this, "description_localizations", {});
+ }
+ const parsedLocale = validateLocale(locale);
+ if (localizedDescription === null) {
+ this.description_localizations[parsedLocale] = null;
+ return this;
+ }
+ validateDescription(localizedDescription);
+ this.description_localizations[parsedLocale] = localizedDescription;
+ return this;
+ }
+ /**
+ * Sets the description localizations
+ *
+ * @param localizedDescriptions - The dictionary of localized descriptions to set
+ */
+ setDescriptionLocalizations(localizedDescriptions) {
+ if (localizedDescriptions === null) {
+ Reflect.set(this, "description_localizations", null);
+ return this;
+ }
+ Reflect.set(this, "description_localizations", {});
+ for (const args of Object.entries(localizedDescriptions)) {
+ this.setDescriptionLocalization(...args);
+ }
+ return this;
+ }
+};
+__name(SharedNameAndDescription, "SharedNameAndDescription");
+
+// src/interactions/slashCommands/options/attachment.ts
+import { ApplicationCommandOptionType } from "discord-api-types/v10";
+
+// src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts
+var ApplicationCommandOptionBase = class extends SharedNameAndDescription {
+ required = false;
+ /**
+ * Marks the option as required
+ *
+ * @param required - If this option should be required
+ */
+ setRequired(required) {
+ validateRequired(required);
+ Reflect.set(this, "required", required);
+ return this;
+ }
+ runRequiredValidations() {
+ validateRequiredParameters3(this.name, this.description, []);
+ validateLocalizationMap(this.name_localizations);
+ validateLocalizationMap(this.description_localizations);
+ validateRequired(this.required);
+ }
+};
+__name(ApplicationCommandOptionBase, "ApplicationCommandOptionBase");
+
+// src/interactions/slashCommands/options/attachment.ts
+var SlashCommandAttachmentOption = class extends ApplicationCommandOptionBase {
+ type = ApplicationCommandOptionType.Attachment;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+};
+__name(SlashCommandAttachmentOption, "SlashCommandAttachmentOption");
+
+// src/interactions/slashCommands/options/boolean.ts
+import { ApplicationCommandOptionType as ApplicationCommandOptionType2 } from "discord-api-types/v10";
+var SlashCommandBooleanOption = class extends ApplicationCommandOptionBase {
+ type = ApplicationCommandOptionType2.Boolean;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+};
+__name(SlashCommandBooleanOption, "SlashCommandBooleanOption");
+
+// src/interactions/slashCommands/options/channel.ts
+import { ApplicationCommandOptionType as ApplicationCommandOptionType3 } from "discord-api-types/v10";
+import { mix } from "ts-mixer";
+
+// src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts
+import { s as s6 } from "@sapphire/shapeshift";
+import { ChannelType as ChannelType2 } from "discord-api-types/v10";
+var allowedChannelTypes = [
+ ChannelType2.GuildText,
+ ChannelType2.GuildVoice,
+ ChannelType2.GuildCategory,
+ ChannelType2.GuildAnnouncement,
+ ChannelType2.AnnouncementThread,
+ ChannelType2.PublicThread,
+ ChannelType2.PrivateThread,
+ ChannelType2.GuildStageVoice,
+ ChannelType2.GuildForum
+];
+var channelTypesPredicate = s6.array(s6.union(...allowedChannelTypes.map((type) => s6.literal(type))));
+var ApplicationCommandOptionChannelTypesMixin = class {
+ /**
+ * Adds channel types to this option
+ *
+ * @param channelTypes - The channel types to add
+ */
+ addChannelTypes(...channelTypes) {
+ if (this.channel_types === void 0) {
+ Reflect.set(this, "channel_types", []);
+ }
+ this.channel_types.push(...channelTypesPredicate.parse(channelTypes));
+ return this;
+ }
+};
+__name(ApplicationCommandOptionChannelTypesMixin, "ApplicationCommandOptionChannelTypesMixin");
+
+// src/interactions/slashCommands/options/channel.ts
+var __decorate = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var SlashCommandChannelOption = /* @__PURE__ */ __name(class SlashCommandChannelOption2 extends ApplicationCommandOptionBase {
+ type = ApplicationCommandOptionType3.Channel;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+}, "SlashCommandChannelOption");
+SlashCommandChannelOption = __decorate([
+ mix(ApplicationCommandOptionChannelTypesMixin)
+], SlashCommandChannelOption);
+
+// src/interactions/slashCommands/options/integer.ts
+import { s as s8 } from "@sapphire/shapeshift";
+import { ApplicationCommandOptionType as ApplicationCommandOptionType5 } from "discord-api-types/v10";
+import { mix as mix2 } from "ts-mixer";
+
+// src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts
+var ApplicationCommandNumericOptionMinMaxValueMixin = class {
+};
+__name(ApplicationCommandNumericOptionMinMaxValueMixin, "ApplicationCommandNumericOptionMinMaxValueMixin");
+
+// src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.ts
+import { s as s7 } from "@sapphire/shapeshift";
+import { ApplicationCommandOptionType as ApplicationCommandOptionType4 } from "discord-api-types/v10";
+var stringPredicate = s7.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(100);
+var numberPredicate = s7.number.greaterThan(Number.NEGATIVE_INFINITY).lessThan(Number.POSITIVE_INFINITY);
+var choicesPredicate = s7.object({
+ name: stringPredicate,
+ name_localizations: localizationMapPredicate,
+ value: s7.union(stringPredicate, numberPredicate)
+}).array;
+var booleanPredicate2 = s7.boolean;
+var ApplicationCommandOptionWithChoicesAndAutocompleteMixin = class {
+ /**
+ * Adds multiple choices for this option
+ *
+ * @param choices - The choices to add
+ */
+ addChoices(...choices) {
+ if (choices.length > 0 && this.autocomplete) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ choicesPredicate.parse(choices);
+ if (this.choices === void 0) {
+ Reflect.set(this, "choices", []);
+ }
+ validateChoicesLength(choices.length, this.choices);
+ for (const { name, name_localizations, value } of choices) {
+ if (this.type === ApplicationCommandOptionType4.String) {
+ stringPredicate.parse(value);
+ } else {
+ numberPredicate.parse(value);
+ }
+ this.choices.push({
+ name,
+ name_localizations,
+ value
+ });
+ }
+ return this;
+ }
+ setChoices(...choices) {
+ if (choices.length > 0 && this.autocomplete) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ choicesPredicate.parse(choices);
+ Reflect.set(this, "choices", []);
+ this.addChoices(...choices);
+ return this;
+ }
+ /**
+ * Marks the option as autocompletable
+ *
+ * @param autocomplete - If this option should be autocompletable
+ */
+ setAutocomplete(autocomplete) {
+ booleanPredicate2.parse(autocomplete);
+ if (autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ Reflect.set(this, "autocomplete", autocomplete);
+ return this;
+ }
+};
+__name(ApplicationCommandOptionWithChoicesAndAutocompleteMixin, "ApplicationCommandOptionWithChoicesAndAutocompleteMixin");
+
+// src/interactions/slashCommands/options/integer.ts
+var __decorate2 = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var numberValidator = s8.number.int;
+var SlashCommandIntegerOption = /* @__PURE__ */ __name(class SlashCommandIntegerOption2 extends ApplicationCommandOptionBase {
+ type = ApplicationCommandOptionType5.Integer;
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}
+ */
+ setMaxValue(max) {
+ numberValidator.parse(max);
+ Reflect.set(this, "max_value", max);
+ return this;
+ }
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMinValue}
+ */
+ setMinValue(min) {
+ numberValidator.parse(min);
+ Reflect.set(this, "min_value", min);
+ return this;
+ }
+ toJSON() {
+ this.runRequiredValidations();
+ if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ return {
+ ...this
+ };
+ }
+}, "SlashCommandIntegerOption");
+SlashCommandIntegerOption = __decorate2([
+ mix2(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)
+], SlashCommandIntegerOption);
+
+// src/interactions/slashCommands/options/mentionable.ts
+import { ApplicationCommandOptionType as ApplicationCommandOptionType6 } from "discord-api-types/v10";
+var SlashCommandMentionableOption = class extends ApplicationCommandOptionBase {
+ type = ApplicationCommandOptionType6.Mentionable;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+};
+__name(SlashCommandMentionableOption, "SlashCommandMentionableOption");
+
+// src/interactions/slashCommands/options/number.ts
+import { s as s9 } from "@sapphire/shapeshift";
+import { ApplicationCommandOptionType as ApplicationCommandOptionType7 } from "discord-api-types/v10";
+import { mix as mix3 } from "ts-mixer";
+var __decorate3 = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var numberValidator2 = s9.number;
+var SlashCommandNumberOption = /* @__PURE__ */ __name(class SlashCommandNumberOption2 extends ApplicationCommandOptionBase {
+ type = ApplicationCommandOptionType7.Number;
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMaxValue}
+ */
+ setMaxValue(max) {
+ numberValidator2.parse(max);
+ Reflect.set(this, "max_value", max);
+ return this;
+ }
+ /**
+ * {@inheritDoc ApplicationCommandNumericOptionMinMaxValueMixin.setMinValue}
+ */
+ setMinValue(min) {
+ numberValidator2.parse(min);
+ Reflect.set(this, "min_value", min);
+ return this;
+ }
+ toJSON() {
+ this.runRequiredValidations();
+ if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ return {
+ ...this
+ };
+ }
+}, "SlashCommandNumberOption");
+SlashCommandNumberOption = __decorate3([
+ mix3(ApplicationCommandNumericOptionMinMaxValueMixin, ApplicationCommandOptionWithChoicesAndAutocompleteMixin)
+], SlashCommandNumberOption);
+
+// src/interactions/slashCommands/options/role.ts
+import { ApplicationCommandOptionType as ApplicationCommandOptionType8 } from "discord-api-types/v10";
+var SlashCommandRoleOption = class extends ApplicationCommandOptionBase {
+ type = ApplicationCommandOptionType8.Role;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+};
+__name(SlashCommandRoleOption, "SlashCommandRoleOption");
+
+// src/interactions/slashCommands/options/string.ts
+import { s as s10 } from "@sapphire/shapeshift";
+import { ApplicationCommandOptionType as ApplicationCommandOptionType9 } from "discord-api-types/v10";
+import { mix as mix4 } from "ts-mixer";
+var __decorate4 = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var minLengthValidator2 = s10.number.greaterThanOrEqual(0).lessThanOrEqual(6e3);
+var maxLengthValidator2 = s10.number.greaterThanOrEqual(1).lessThanOrEqual(6e3);
+var SlashCommandStringOption = /* @__PURE__ */ __name(class SlashCommandStringOption2 extends ApplicationCommandOptionBase {
+ type = ApplicationCommandOptionType9.String;
+ /**
+ * Sets the maximum length of this string option.
+ *
+ * @param max - The maximum length this option can be
+ */
+ setMaxLength(max) {
+ maxLengthValidator2.parse(max);
+ Reflect.set(this, "max_length", max);
+ return this;
+ }
+ /**
+ * Sets the minimum length of this string option.
+ *
+ * @param min - The minimum length this option can be
+ */
+ setMinLength(min) {
+ minLengthValidator2.parse(min);
+ Reflect.set(this, "min_length", min);
+ return this;
+ }
+ toJSON() {
+ this.runRequiredValidations();
+ if (this.autocomplete && Array.isArray(this.choices) && this.choices.length > 0) {
+ throw new RangeError("Autocomplete and choices are mutually exclusive to each other.");
+ }
+ return {
+ ...this
+ };
+ }
+}, "SlashCommandStringOption");
+SlashCommandStringOption = __decorate4([
+ mix4(ApplicationCommandOptionWithChoicesAndAutocompleteMixin)
+], SlashCommandStringOption);
+
+// src/interactions/slashCommands/options/user.ts
+import { ApplicationCommandOptionType as ApplicationCommandOptionType10 } from "discord-api-types/v10";
+var SlashCommandUserOption = class extends ApplicationCommandOptionBase {
+ type = ApplicationCommandOptionType10.User;
+ toJSON() {
+ this.runRequiredValidations();
+ return {
+ ...this
+ };
+ }
+};
+__name(SlashCommandUserOption, "SlashCommandUserOption");
+
+// src/interactions/slashCommands/mixins/SharedSlashCommandOptions.ts
+var SharedSlashCommandOptions = class {
+ /**
+ * Adds a boolean option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addBooleanOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandBooleanOption);
+ }
+ /**
+ * Adds a user option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addUserOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandUserOption);
+ }
+ /**
+ * Adds a channel option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addChannelOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandChannelOption);
+ }
+ /**
+ * Adds a role option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addRoleOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandRoleOption);
+ }
+ /**
+ * Adds an attachment option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addAttachmentOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandAttachmentOption);
+ }
+ /**
+ * Adds a mentionable option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addMentionableOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandMentionableOption);
+ }
+ /**
+ * Adds a string option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addStringOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandStringOption);
+ }
+ /**
+ * Adds an integer option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addIntegerOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandIntegerOption);
+ }
+ /**
+ * Adds a number option
+ *
+ * @param input - A function that returns an option builder, or an already built builder
+ */
+ addNumberOption(input) {
+ return this._sharedAddOptionMethod(input, SlashCommandNumberOption);
+ }
+ _sharedAddOptionMethod(input, Instance) {
+ const { options } = this;
+ validateMaxOptionsLength(options);
+ const result = typeof input === "function" ? input(new Instance()) : input;
+ assertReturnOfBuilder(result, Instance);
+ options.push(result);
+ return this;
+ }
+};
+__name(SharedSlashCommandOptions, "SharedSlashCommandOptions");
+
+// src/interactions/slashCommands/SlashCommandSubcommands.ts
+var __decorate5 = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var SlashCommandSubcommandGroupBuilder = /* @__PURE__ */ __name(class SlashCommandSubcommandGroupBuilder2 {
+ /**
+ * The name of this subcommand group
+ */
+ name = void 0;
+ /**
+ * The description of this subcommand group
+ */
+ description = void 0;
+ /**
+ * The subcommands part of this subcommand group
+ */
+ options = [];
+ /**
+ * Adds a new subcommand to this group
+ *
+ * @param input - A function that returns a subcommand builder, or an already built builder
+ */
+ addSubcommand(input) {
+ const { options } = this;
+ validateMaxOptionsLength(options);
+ const result = typeof input === "function" ? input(new SlashCommandSubcommandBuilder()) : input;
+ assertReturnOfBuilder(result, SlashCommandSubcommandBuilder);
+ options.push(result);
+ return this;
+ }
+ toJSON() {
+ validateRequiredParameters3(this.name, this.description, this.options);
+ return {
+ type: ApplicationCommandOptionType11.SubcommandGroup,
+ name: this.name,
+ name_localizations: this.name_localizations,
+ description: this.description,
+ description_localizations: this.description_localizations,
+ options: this.options.map((option) => option.toJSON())
+ };
+ }
+}, "SlashCommandSubcommandGroupBuilder");
+SlashCommandSubcommandGroupBuilder = __decorate5([
+ mix5(SharedNameAndDescription)
+], SlashCommandSubcommandGroupBuilder);
+var SlashCommandSubcommandBuilder = /* @__PURE__ */ __name(class SlashCommandSubcommandBuilder2 {
+ /**
+ * The name of this subcommand
+ */
+ name = void 0;
+ /**
+ * The description of this subcommand
+ */
+ description = void 0;
+ /**
+ * The options of this subcommand
+ */
+ options = [];
+ toJSON() {
+ validateRequiredParameters3(this.name, this.description, this.options);
+ return {
+ type: ApplicationCommandOptionType11.Subcommand,
+ name: this.name,
+ name_localizations: this.name_localizations,
+ description: this.description,
+ description_localizations: this.description_localizations,
+ options: this.options.map((option) => option.toJSON())
+ };
+ }
+}, "SlashCommandSubcommandBuilder");
+SlashCommandSubcommandBuilder = __decorate5([
+ mix5(SharedNameAndDescription, SharedSlashCommandOptions)
+], SlashCommandSubcommandBuilder);
+
+// src/interactions/slashCommands/SlashCommandBuilder.ts
+var __decorate6 = function(decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
+ r = Reflect.decorate(decorators, target, key, desc);
+ else
+ for (var i = decorators.length - 1; i >= 0; i--)
+ if (d = decorators[i])
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var SlashCommandBuilder = /* @__PURE__ */ __name(class SlashCommandBuilder2 {
+ /**
+ * The name of this slash command
+ */
+ name = void 0;
+ /**
+ * The description of this slash command
+ */
+ description = void 0;
+ /**
+ * The options of this slash command
+ */
+ options = [];
+ /**
+ * Whether the command is enabled by default when the app is added to a guild
+ *
+ * @deprecated This property is deprecated and will be removed in the future.
+ * You should use {@link (SlashCommandBuilder:class).setDefaultMemberPermissions} or {@link (SlashCommandBuilder:class).setDMPermission} instead.
+ */
+ default_permission = void 0;
+ /**
+ * Set of permissions represented as a bit set for the command
+ */
+ default_member_permissions = void 0;
+ /**
+ * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ */
+ dm_permission = void 0;
+ /**
+ * Whether this command is NSFW
+ */
+ nsfw = void 0;
+ /**
+ * Returns the final data that should be sent to Discord.
+ *
+ * @remarks
+ * This method runs validations on the data before serializing it.
+ * As such, it may throw an error if the data is invalid.
+ */
+ toJSON() {
+ validateRequiredParameters3(this.name, this.description, this.options);
+ validateLocalizationMap(this.name_localizations);
+ validateLocalizationMap(this.description_localizations);
+ return {
+ ...this,
+ options: this.options.map((option) => option.toJSON())
+ };
+ }
+ /**
+ * Sets whether the command is enabled by default when the application is added to a guild.
+ *
+ * @remarks
+ * If set to `false`, you will have to later `PUT` the permissions for this command.
+ * @param value - Whether or not to enable this command by default
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ * @deprecated Use {@link (SlashCommandBuilder:class).setDefaultMemberPermissions} or {@link (SlashCommandBuilder:class).setDMPermission} instead.
+ */
+ setDefaultPermission(value) {
+ validateDefaultPermission(value);
+ Reflect.set(this, "default_permission", value);
+ return this;
+ }
+ /**
+ * Sets the default permissions a member should have in order to run the command.
+ *
+ * @remarks
+ * You can set this to `'0'` to disable the command by default.
+ * @param permissions - The permissions bit field to set
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDefaultMemberPermissions(permissions) {
+ const permissionValue = validateDefaultMemberPermissions(permissions);
+ Reflect.set(this, "default_member_permissions", permissionValue);
+ return this;
+ }
+ /**
+ * Sets if the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ *
+ * @param enabled - If the command should be enabled in DMs
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDMPermission(enabled) {
+ validateDMPermission(enabled);
+ Reflect.set(this, "dm_permission", enabled);
+ return this;
+ }
+ /**
+ * Sets whether this command is NSFW
+ *
+ * @param nsfw - Whether this command is NSFW
+ */
+ setNSFW(nsfw = true) {
+ validateNSFW(nsfw);
+ Reflect.set(this, "nsfw", nsfw);
+ return this;
+ }
+ /**
+ * Adds a new subcommand group to this command
+ *
+ * @param input - A function that returns a subcommand group builder, or an already built builder
+ */
+ addSubcommandGroup(input) {
+ const { options } = this;
+ validateMaxOptionsLength(options);
+ const result = typeof input === "function" ? input(new SlashCommandSubcommandGroupBuilder()) : input;
+ assertReturnOfBuilder(result, SlashCommandSubcommandGroupBuilder);
+ options.push(result);
+ return this;
+ }
+ /**
+ * Adds a new subcommand to this command
+ *
+ * @param input - A function that returns a subcommand builder, or an already built builder
+ */
+ addSubcommand(input) {
+ const { options } = this;
+ validateMaxOptionsLength(options);
+ const result = typeof input === "function" ? input(new SlashCommandSubcommandBuilder()) : input;
+ assertReturnOfBuilder(result, SlashCommandSubcommandBuilder);
+ options.push(result);
+ return this;
+ }
+}, "SlashCommandBuilder");
+SlashCommandBuilder = __decorate6([
+ mix6(SharedSlashCommandOptions, SharedNameAndDescription)
+], SlashCommandBuilder);
+
+// src/interactions/contextMenuCommands/Assertions.ts
+var Assertions_exports6 = {};
+__export(Assertions_exports6, {
+ validateDMPermission: () => validateDMPermission2,
+ validateDefaultMemberPermissions: () => validateDefaultMemberPermissions2,
+ validateDefaultPermission: () => validateDefaultPermission2,
+ validateName: () => validateName2,
+ validateRequiredParameters: () => validateRequiredParameters4,
+ validateType: () => validateType
+});
+import { s as s11 } from "@sapphire/shapeshift";
+import { ApplicationCommandType } from "discord-api-types/v10";
+var namePredicate2 = s11.string.lengthGreaterThanOrEqual(1).lengthLessThanOrEqual(32).regex(/^( *[\p{P}\p{L}\p{N}\p{sc=Devanagari}\p{sc=Thai}]+ *)+$/u).setValidationEnabled(isValidationEnabled);
+var typePredicate = s11.union(s11.literal(ApplicationCommandType.User), s11.literal(ApplicationCommandType.Message)).setValidationEnabled(isValidationEnabled);
+var booleanPredicate3 = s11.boolean;
+function validateDefaultPermission2(value) {
+ booleanPredicate3.parse(value);
+}
+__name(validateDefaultPermission2, "validateDefaultPermission");
+function validateName2(name) {
+ namePredicate2.parse(name);
+}
+__name(validateName2, "validateName");
+function validateType(type) {
+ typePredicate.parse(type);
+}
+__name(validateType, "validateType");
+function validateRequiredParameters4(name, type) {
+ validateName2(name);
+ validateType(type);
+}
+__name(validateRequiredParameters4, "validateRequiredParameters");
+var dmPermissionPredicate2 = s11.boolean.nullish;
+function validateDMPermission2(value) {
+ dmPermissionPredicate2.parse(value);
+}
+__name(validateDMPermission2, "validateDMPermission");
+var memberPermissionPredicate2 = s11.union(s11.bigint.transform((value) => value.toString()), s11.number.safeInt.transform((value) => value.toString()), s11.string.regex(/^\d+$/)).nullish;
+function validateDefaultMemberPermissions2(permissions) {
+ return memberPermissionPredicate2.parse(permissions);
+}
+__name(validateDefaultMemberPermissions2, "validateDefaultMemberPermissions");
+
+// src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts
+var ContextMenuCommandBuilder = class {
+ /**
+ * The name of this context menu command
+ */
+ name = void 0;
+ /**
+ * The type of this context menu command
+ */
+ type = void 0;
+ /**
+ * Whether the command is enabled by default when the app is added to a guild
+ *
+ * @deprecated This property is deprecated and will be removed in the future.
+ * You should use {@link ContextMenuCommandBuilder.setDefaultMemberPermissions} or {@link ContextMenuCommandBuilder.setDMPermission} instead.
+ */
+ default_permission = void 0;
+ /**
+ * Set of permissions represented as a bit set for the command
+ */
+ default_member_permissions = void 0;
+ /**
+ * Indicates whether the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ */
+ dm_permission = void 0;
+ /**
+ * Sets the name
+ *
+ * @param name - The name
+ */
+ setName(name) {
+ validateName2(name);
+ Reflect.set(this, "name", name);
+ return this;
+ }
+ /**
+ * Sets the type
+ *
+ * @param type - The type
+ */
+ setType(type) {
+ validateType(type);
+ Reflect.set(this, "type", type);
+ return this;
+ }
+ /**
+ * Sets whether the command is enabled by default when the application is added to a guild.
+ *
+ * @remarks
+ * If set to `false`, you will have to later `PUT` the permissions for this command.
+ * @param value - Whether or not to enable this command by default
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ * @deprecated Use {@link ContextMenuCommandBuilder.setDefaultMemberPermissions} or {@link ContextMenuCommandBuilder.setDMPermission} instead.
+ */
+ setDefaultPermission(value) {
+ validateDefaultPermission2(value);
+ Reflect.set(this, "default_permission", value);
+ return this;
+ }
+ /**
+ * Sets the default permissions a member should have in order to run the command.
+ *
+ * @remarks
+ * You can set this to `'0'` to disable the command by default.
+ * @param permissions - The permissions bit field to set
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDefaultMemberPermissions(permissions) {
+ const permissionValue = validateDefaultMemberPermissions2(permissions);
+ Reflect.set(this, "default_member_permissions", permissionValue);
+ return this;
+ }
+ /**
+ * Sets if the command is available in DMs with the application, only for globally-scoped commands.
+ * By default, commands are visible.
+ *
+ * @param enabled - If the command should be enabled in DMs
+ * @see https://discord.com/developers/docs/interactions/application-commands#permissions
+ */
+ setDMPermission(enabled) {
+ validateDMPermission2(enabled);
+ Reflect.set(this, "dm_permission", enabled);
+ return this;
+ }
+ /**
+ * Sets a name localization
+ *
+ * @param locale - The locale to set a description for
+ * @param localizedName - The localized description for the given locale
+ */
+ setNameLocalization(locale, localizedName) {
+ if (!this.name_localizations) {
+ Reflect.set(this, "name_localizations", {});
+ }
+ const parsedLocale = validateLocale(locale);
+ if (localizedName === null) {
+ this.name_localizations[parsedLocale] = null;
+ return this;
+ }
+ validateName2(localizedName);
+ this.name_localizations[parsedLocale] = localizedName;
+ return this;
+ }
+ /**
+ * Sets the name localizations
+ *
+ * @param localizedNames - The dictionary of localized descriptions to set
+ */
+ setNameLocalizations(localizedNames) {
+ if (localizedNames === null) {
+ Reflect.set(this, "name_localizations", null);
+ return this;
+ }
+ Reflect.set(this, "name_localizations", {});
+ for (const args of Object.entries(localizedNames))
+ this.setNameLocalization(...args);
+ return this;
+ }
+ /**
+ * Returns the final data that should be sent to Discord.
+ *
+ * @remarks
+ * This method runs validations on the data before serializing it.
+ * As such, it may throw an error if the data is invalid.
+ */
+ toJSON() {
+ validateRequiredParameters4(this.name, this.type);
+ validateLocalizationMap(this.name_localizations);
+ return {
+ ...this
+ };
+ }
+};
+__name(ContextMenuCommandBuilder, "ContextMenuCommandBuilder");
+
+// src/util/componentUtil.ts
+function embedLength(data) {
+ return (data.title?.length ?? 0) + (data.description?.length ?? 0) + (data.fields?.reduce((prev, curr) => prev + curr.name.length + curr.value.length, 0) ?? 0) + (data.footer?.text.length ?? 0) + (data.author?.name.length ?? 0);
+}
+__name(embedLength, "embedLength");
+
+// src/index.ts
+export * from "@discordjs/util";
+var version = "[VI]{{inject}}[/VI]";
+export {
+ ActionRowBuilder,
+ ApplicationCommandNumericOptionMinMaxValueMixin,
+ ApplicationCommandOptionBase,
+ ApplicationCommandOptionChannelTypesMixin,
+ ApplicationCommandOptionWithChoicesAndAutocompleteMixin,
+ BaseSelectMenuBuilder,
+ ButtonBuilder,
+ ChannelSelectMenuBuilder,
+ Assertions_exports2 as ComponentAssertions,
+ ComponentBuilder,
+ Assertions_exports6 as ContextMenuCommandAssertions,
+ ContextMenuCommandBuilder,
+ Assertions_exports as EmbedAssertions,
+ EmbedBuilder,
+ MentionableSelectMenuBuilder,
+ Assertions_exports4 as ModalAssertions,
+ ModalBuilder,
+ RoleSelectMenuBuilder,
+ StringSelectMenuBuilder as SelectMenuBuilder,
+ StringSelectMenuOptionBuilder as SelectMenuOptionBuilder,
+ SharedNameAndDescription,
+ SharedSlashCommandOptions,
+ Assertions_exports5 as SlashCommandAssertions,
+ SlashCommandAttachmentOption,
+ SlashCommandBooleanOption,
+ SlashCommandBuilder,
+ SlashCommandChannelOption,
+ SlashCommandIntegerOption,
+ SlashCommandMentionableOption,
+ SlashCommandNumberOption,
+ SlashCommandRoleOption,
+ SlashCommandStringOption,
+ SlashCommandSubcommandBuilder,
+ SlashCommandSubcommandGroupBuilder,
+ SlashCommandUserOption,
+ StringSelectMenuBuilder,
+ StringSelectMenuOptionBuilder,
+ Assertions_exports3 as TextInputAssertions,
+ TextInputBuilder,
+ UserSelectMenuBuilder,
+ createComponentBuilder,
+ disableValidators,
+ embedLength,
+ enableValidators,
+ isValidationEnabled,
+ normalizeArray,
+ version
+};
+//# sourceMappingURL=index.mjs.map
\ No newline at end of file
diff --git a/node_modules/@discordjs/builders/dist/index.mjs.map b/node_modules/@discordjs/builders/dist/index.mjs.map
new file mode 100644
index 0000000..8b72d7e
--- /dev/null
+++ b/node_modules/@discordjs/builders/dist/index.mjs.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/messages/embed/Assertions.ts","../src/util/validation.ts","../src/util/normalizeArray.ts","../src/messages/embed/Embed.ts","../src/index.ts","../src/components/Assertions.ts","../src/components/selectMenu/StringSelectMenuOption.ts","../src/components/ActionRow.ts","../src/components/Component.ts","../src/components/Components.ts","../src/components/button/Button.ts","../src/components/selectMenu/ChannelSelectMenu.ts","../src/components/selectMenu/BaseSelectMenu.ts","../src/components/selectMenu/MentionableSelectMenu.ts","../src/components/selectMenu/RoleSelectMenu.ts","../src/components/selectMenu/StringSelectMenu.ts","../src/components/selectMenu/UserSelectMenu.ts","../src/components/textInput/TextInput.ts","../src/components/textInput/Assertions.ts","../src/interactions/modals/Assertions.ts","../src/interactions/modals/Modal.ts","../src/interactions/slashCommands/Assertions.ts","../src/interactions/slashCommands/SlashCommandBuilder.ts","../src/interactions/slashCommands/SlashCommandSubcommands.ts","../src/interactions/slashCommands/mixins/NameAndDescription.ts","../src/interactions/slashCommands/options/attachment.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionBase.ts","../src/interactions/slashCommands/options/boolean.ts","../src/interactions/slashCommands/options/channel.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.ts","../src/interactions/slashCommands/options/integer.ts","../src/interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.ts","../src/interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.ts","../src/interactions/slashCommands/options/mentionable.ts","../src/interactions/slashCommands/options/number.ts","../src/interactions/slashCommands/options/role.ts","../src/interactions/slashCommands/options/string.ts","../src/interactions/slashCommands/options/user.ts","../src/interactions/slashCommands/mixins/SharedSlashCommandOptions.ts","../src/interactions/contextMenuCommands/Assertions.ts","../src/interactions/contextMenuCommands/ContextMenuCommandBuilder.ts","../src/util/componentUtil.ts"],"sourcesContent":["import { s } from '@sapphire/shapeshift';\nimport type { APIEmbedField } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../../util/validation.js';\n\nexport const fieldNamePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(256)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const fieldValuePredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(1_024)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const fieldInlinePredicate = s.boolean.optional;\n\nexport const embedFieldPredicate = s\n\t.object({\n\t\tname: fieldNamePredicate,\n\t\tvalue: fieldValuePredicate,\n\t\tinline: fieldInlinePredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const embedFieldsArrayPredicate = embedFieldPredicate.array.setValidationEnabled(isValidationEnabled);\n\nexport const fieldLengthPredicate = s.number.lessThanOrEqual(25).setValidationEnabled(isValidationEnabled);\n\nexport function validateFieldLength(amountAdding: number, fields?: APIEmbedField[]): void {\n\tfieldLengthPredicate.parse((fields?.length ?? 0) + amountAdding);\n}\n\nexport const authorNamePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const imageURLPredicate = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:', 'attachment:'],\n\t})\n\t.nullish.setValidationEnabled(isValidationEnabled);\n\nexport const urlPredicate = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:'],\n\t})\n\t.nullish.setValidationEnabled(isValidationEnabled);\n\nexport const embedAuthorPredicate = s\n\t.object({\n\t\tname: authorNamePredicate,\n\t\ticonURL: imageURLPredicate,\n\t\turl: urlPredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const RGBPredicate = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(255)\n\t.setValidationEnabled(isValidationEnabled);\nexport const colorPredicate = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(0xffffff)\n\t.or(s.tuple([RGBPredicate, RGBPredicate, RGBPredicate]))\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const descriptionPredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(4_096)\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const footerTextPredicate = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(2_048)\n\t.nullable.setValidationEnabled(isValidationEnabled);\n\nexport const embedFooterPredicate = s\n\t.object({\n\t\ttext: footerTextPredicate,\n\t\ticonURL: imageURLPredicate,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const timestampPredicate = s.union(s.number, s.date).nullable.setValidationEnabled(isValidationEnabled);\n\nexport const titlePredicate = fieldNamePredicate.nullable.setValidationEnabled(isValidationEnabled);\n","let validate = true;\n\nexport const enableValidators = () => (validate = true);\nexport const disableValidators = () => (validate = false);\nexport const isValidationEnabled = () => validate;\n","export function normalizeArray(arr: RestOrArray): T[] {\n\tif (Array.isArray(arr[0])) return arr[0];\n\treturn arr as T[];\n}\n\nexport type RestOrArray = T[] | [T[]];\n","import type { APIEmbed, APIEmbedAuthor, APIEmbedField, APIEmbedFooter, APIEmbedImage } from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport {\n\tcolorPredicate,\n\tdescriptionPredicate,\n\tembedAuthorPredicate,\n\tembedFieldsArrayPredicate,\n\tembedFooterPredicate,\n\timageURLPredicate,\n\ttimestampPredicate,\n\ttitlePredicate,\n\turlPredicate,\n\tvalidateFieldLength,\n} from './Assertions.js';\n\nexport type RGBTuple = [red: number, green: number, blue: number];\n\nexport interface IconData {\n\t/**\n\t * The URL of the icon\n\t */\n\ticonURL?: string;\n\t/**\n\t * The proxy URL of the icon\n\t */\n\tproxyIconURL?: string;\n}\n\nexport type EmbedAuthorData = IconData & Omit;\n\nexport type EmbedAuthorOptions = Omit;\n\nexport type EmbedFooterData = IconData & Omit;\n\nexport type EmbedFooterOptions = Omit;\n\nexport interface EmbedImageData extends Omit {\n\t/**\n\t * The proxy URL for the image\n\t */\n\tproxyURL?: string;\n}\n/**\n * Represents a embed in a message (image/video preview, rich embed, etc.)\n */\nexport class EmbedBuilder {\n\tpublic readonly data: APIEmbed;\n\n\tpublic constructor(data: APIEmbed = {}) {\n\t\tthis.data = { ...data };\n\t\tif (data.timestamp) this.data.timestamp = new Date(data.timestamp).toISOString();\n\t}\n\n\t/**\n\t * Appends fields to the embed\n\t *\n\t * @remarks\n\t * This method accepts either an array of fields or a variable number of field parameters.\n\t * The maximum amount of fields that can be added is 25.\n\t * @example\n\t * Using an array\n\t * ```ts\n\t * const fields: APIEmbedField[] = ...;\n\t * const embed = new EmbedBuilder()\n\t * \t.addFields(fields);\n\t * ```\n\t * @example\n\t * Using rest parameters (variadic)\n\t * ```ts\n\t * const embed = new EmbedBuilder()\n\t * \t.addFields(\n\t * \t\t{ name: 'Field 1', value: 'Value 1' },\n\t * \t\t{ name: 'Field 2', value: 'Value 2' },\n\t * \t);\n\t * ```\n\t * @param fields - The fields to add\n\t */\n\tpublic addFields(...fields: RestOrArray): this {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tfields = normalizeArray(fields);\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(fields.length, this.data.fields);\n\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\n\t\tif (this.data.fields) this.data.fields.push(...fields);\n\t\telse this.data.fields = fields;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes, replaces, or inserts fields in the embed.\n\t *\n\t * @remarks\n\t * This method behaves similarly\n\t * to {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice | Array.prototype.splice}.\n\t * The maximum amount of fields that can be added is 25.\n\t *\n\t * It's useful for modifying and adjusting order of the already-existing fields of an embed.\n\t * @example\n\t * Remove the first field\n\t * ```ts\n\t * embed.spliceFields(0, 1);\n\t * ```\n\t * @example\n\t * Remove the first n fields\n\t * ```ts\n\t * const n = 4\n\t * embed.spliceFields(0, n);\n\t * ```\n\t * @example\n\t * Remove the last field\n\t * ```ts\n\t * embed.spliceFields(-1, 1);\n\t * ```\n\t * @param index - The index to start at\n\t * @param deleteCount - The number of fields to remove\n\t * @param fields - The replacing field objects\n\t */\n\tpublic spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this {\n\t\t// Ensure adding these fields won't exceed the 25 field limit\n\t\tvalidateFieldLength(fields.length - deleteCount, this.data.fields);\n\n\t\t// Data assertions\n\t\tembedFieldsArrayPredicate.parse(fields);\n\t\tif (this.data.fields) this.data.fields.splice(index, deleteCount, ...fields);\n\t\telse this.data.fields = fields;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the embed's fields\n\t *\n\t * @remarks\n\t * This method is an alias for {@link EmbedBuilder.spliceFields}. More specifically,\n\t * it splices the entire array of fields, replacing them with the provided fields.\n\t *\n\t * You can set a maximum of 25 fields.\n\t * @param fields - The fields to set\n\t */\n\tpublic setFields(...fields: RestOrArray) {\n\t\tthis.spliceFields(0, this.data.fields?.length ?? 0, ...normalizeArray(fields));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the author of this embed\n\t *\n\t * @param options - The options for the author\n\t */\n\n\tpublic setAuthor(options: EmbedAuthorOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.data.author = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Data assertions\n\t\tembedAuthorPredicate.parse(options);\n\n\t\tthis.data.author = { name: options.name, url: options.url, icon_url: options.iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the color of this embed\n\t *\n\t * @param color - The color of the embed\n\t */\n\tpublic setColor(color: RGBTuple | number | null): this {\n\t\t// Data assertions\n\t\tcolorPredicate.parse(color);\n\n\t\tif (Array.isArray(color)) {\n\t\t\tconst [red, green, blue] = color;\n\t\t\tthis.data.color = (red << 16) + (green << 8) + blue;\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.data.color = color ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this embed\n\t *\n\t * @param description - The description\n\t */\n\tpublic setDescription(description: string | null): this {\n\t\t// Data assertions\n\t\tdescriptionPredicate.parse(description);\n\n\t\tthis.data.description = description ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the footer of this embed\n\t *\n\t * @param options - The options for the footer\n\t */\n\tpublic setFooter(options: EmbedFooterOptions | null): this {\n\t\tif (options === null) {\n\t\t\tthis.data.footer = undefined;\n\t\t\treturn this;\n\t\t}\n\n\t\t// Data assertions\n\t\tembedFooterPredicate.parse(options);\n\n\t\tthis.data.footer = { text: options.text, icon_url: options.iconURL };\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the image of this embed\n\t *\n\t * @param url - The URL of the image\n\t */\n\tpublic setImage(url: string | null): this {\n\t\t// Data assertions\n\t\timageURLPredicate.parse(url);\n\n\t\tthis.data.image = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the thumbnail of this embed\n\t *\n\t * @param url - The URL of the thumbnail\n\t */\n\tpublic setThumbnail(url: string | null): this {\n\t\t// Data assertions\n\t\timageURLPredicate.parse(url);\n\n\t\tthis.data.thumbnail = url ? { url } : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the timestamp of this embed\n\t *\n\t * @param timestamp - The timestamp or date\n\t */\n\tpublic setTimestamp(timestamp: Date | number | null = Date.now()): this {\n\t\t// Data assertions\n\t\ttimestampPredicate.parse(timestamp);\n\n\t\tthis.data.timestamp = timestamp ? new Date(timestamp).toISOString() : undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the title of this embed\n\t *\n\t * @param title - The title\n\t */\n\tpublic setTitle(title: string | null): this {\n\t\t// Data assertions\n\t\ttitlePredicate.parse(title);\n\n\t\tthis.data.title = title ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL of this embed\n\t *\n\t * @param url - The URL\n\t */\n\tpublic setURL(url: string | null): this {\n\t\t// Data assertions\n\t\turlPredicate.parse(url);\n\n\t\tthis.data.url = url ?? undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Transforms the embed to a plain object\n\t */\n\tpublic toJSON(): APIEmbed {\n\t\treturn { ...this.data };\n\t}\n}\n","export * as EmbedAssertions from './messages/embed/Assertions.js';\nexport * from './messages/embed/Embed.js';\n// TODO: Consider removing this dep in the next major version\nexport * from '@discordjs/formatters';\n\nexport * as ComponentAssertions from './components/Assertions.js';\nexport * from './components/ActionRow.js';\nexport * from './components/button/Button.js';\nexport * from './components/Component.js';\nexport * from './components/Components.js';\nexport * from './components/textInput/TextInput.js';\nexport * as TextInputAssertions from './components/textInput/Assertions.js';\nexport * from './interactions/modals/Modal.js';\nexport * as ModalAssertions from './interactions/modals/Assertions.js';\n\nexport * from './components/selectMenu/BaseSelectMenu.js';\nexport * from './components/selectMenu/ChannelSelectMenu.js';\nexport * from './components/selectMenu/MentionableSelectMenu.js';\nexport * from './components/selectMenu/RoleSelectMenu.js';\nexport * from './components/selectMenu/StringSelectMenu.js';\n// TODO: Remove those aliases in v2\nexport {\n\t/**\n\t * @deprecated Will be removed in the next major version, use {@link StringSelectMenuBuilder} instead.\n\t */\n\tStringSelectMenuBuilder as SelectMenuBuilder,\n} from './components/selectMenu/StringSelectMenu.js';\nexport {\n\t/**\n\t * @deprecated Will be removed in the next major version, use {@link StringSelectMenuOptionBuilder} instead.\n\t */\n\tStringSelectMenuOptionBuilder as SelectMenuOptionBuilder,\n} from './components/selectMenu/StringSelectMenuOption.js';\nexport * from './components/selectMenu/StringSelectMenuOption.js';\nexport * from './components/selectMenu/UserSelectMenu.js';\n\nexport * as SlashCommandAssertions from './interactions/slashCommands/Assertions.js';\nexport * from './interactions/slashCommands/SlashCommandBuilder.js';\nexport * from './interactions/slashCommands/SlashCommandSubcommands.js';\nexport * from './interactions/slashCommands/options/boolean.js';\nexport * from './interactions/slashCommands/options/channel.js';\nexport * from './interactions/slashCommands/options/integer.js';\nexport * from './interactions/slashCommands/options/mentionable.js';\nexport * from './interactions/slashCommands/options/number.js';\nexport * from './interactions/slashCommands/options/role.js';\nexport * from './interactions/slashCommands/options/attachment.js';\nexport * from './interactions/slashCommands/options/string.js';\nexport * from './interactions/slashCommands/options/user.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandNumericOptionMinMaxValueMixin.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionBase.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionChannelTypesMixin.js';\nexport * from './interactions/slashCommands/mixins/ApplicationCommandOptionWithChoicesAndAutocompleteMixin.js';\nexport * from './interactions/slashCommands/mixins/NameAndDescription.js';\nexport * from './interactions/slashCommands/mixins/SharedSlashCommandOptions.js';\n\nexport * as ContextMenuCommandAssertions from './interactions/contextMenuCommands/Assertions.js';\nexport * from './interactions/contextMenuCommands/ContextMenuCommandBuilder.js';\n\nexport * from './util/componentUtil.js';\nexport * from './util/normalizeArray.js';\nexport * from './util/validation.js';\nexport * from '@discordjs/util';\n\n/**\n * The {@link https://github.com/discordjs/discord.js/blob/main/packages/builders/#readme | @discordjs/builders} version\n * that you are currently using.\n */\n// This needs to explicitly be `string` so it is not typed as a \"const string\" that gets injected by esbuild\nexport const version = '[VI]{{inject}}[/VI]' as string;\n","import { s } from '@sapphire/shapeshift';\nimport { ButtonStyle, ChannelType, type APIMessageComponentEmoji } from 'discord-api-types/v10';\nimport { isValidationEnabled } from '../util/validation.js';\nimport { StringSelectMenuOptionBuilder } from './selectMenu/StringSelectMenuOption.js';\n\nexport const customIdValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const emojiValidator = s\n\t.object({\n\t\tid: s.string,\n\t\tname: s.string,\n\t\tanimated: s.boolean,\n\t})\n\t.partial.strict.setValidationEnabled(isValidationEnabled);\n\nexport const disabledValidator = s.boolean;\n\nexport const buttonLabelValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(80)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const buttonStyleValidator = s.nativeEnum(ButtonStyle);\n\nexport const placeholderValidator = s.string.lengthLessThanOrEqual(150).setValidationEnabled(isValidationEnabled);\nexport const minMaxValidator = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(25)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const labelValueDescriptionValidator = s.string\n\t.lengthGreaterThanOrEqual(1)\n\t.lengthLessThanOrEqual(100)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const jsonOptionValidator = s\n\t.object({\n\t\tlabel: labelValueDescriptionValidator,\n\t\tvalue: labelValueDescriptionValidator,\n\t\tdescription: labelValueDescriptionValidator.optional,\n\t\temoji: emojiValidator.optional,\n\t\tdefault: s.boolean.optional,\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport const optionValidator = s.instance(StringSelectMenuOptionBuilder).setValidationEnabled(isValidationEnabled);\n\nexport const optionsValidator = optionValidator.array\n\t.lengthGreaterThanOrEqual(0)\n\t.setValidationEnabled(isValidationEnabled);\nexport const optionsLengthValidator = s.number.int\n\t.greaterThanOrEqual(0)\n\t.lessThanOrEqual(25)\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredSelectMenuParameters(options: StringSelectMenuOptionBuilder[], customId?: string) {\n\tcustomIdValidator.parse(customId);\n\toptionsValidator.parse(options);\n}\n\nexport const defaultValidator = s.boolean;\n\nexport function validateRequiredSelectMenuOptionParameters(label?: string, value?: string) {\n\tlabelValueDescriptionValidator.parse(label);\n\tlabelValueDescriptionValidator.parse(value);\n}\n\nexport const channelTypesValidator = s.nativeEnum(ChannelType).array.setValidationEnabled(isValidationEnabled);\n\nexport const urlValidator = s.string\n\t.url({\n\t\tallowedProtocols: ['http:', 'https:', 'discord:'],\n\t})\n\t.setValidationEnabled(isValidationEnabled);\n\nexport function validateRequiredButtonParameters(\n\tstyle?: ButtonStyle,\n\tlabel?: string,\n\temoji?: APIMessageComponentEmoji,\n\tcustomId?: string,\n\turl?: string,\n) {\n\tif (url && customId) {\n\t\tthrow new RangeError('URL and custom id are mutually exclusive');\n\t}\n\n\tif (!label && !emoji) {\n\t\tthrow new RangeError('Buttons must have a label and/or an emoji');\n\t}\n\n\tif (style === ButtonStyle.Link) {\n\t\tif (!url) {\n\t\t\tthrow new RangeError('Link buttons must have a url');\n\t\t}\n\t} else if (url) {\n\t\tthrow new RangeError('Non-link buttons cannot have a url');\n\t}\n}\n","import type { JSONEncodable } from '@discordjs/util';\nimport type { APIMessageComponentEmoji, APISelectMenuOption } from 'discord-api-types/v10';\nimport {\n\tdefaultValidator,\n\temojiValidator,\n\tlabelValueDescriptionValidator,\n\tvalidateRequiredSelectMenuOptionParameters,\n} from '../Assertions.js';\n\n/**\n * Represents an option within a string select menu component\n */\nexport class StringSelectMenuOptionBuilder implements JSONEncodable {\n\t/**\n\t * Creates a new string select menu option from API data\n\t *\n\t * @param data - The API data to create this string select menu option with\n\t * @example\n\t * Creating a string select menu option from an API data object\n\t * ```ts\n\t * const selectMenuOption = new SelectMenuOptionBuilder({\n\t * \tlabel: 'catchy label',\n\t * \tvalue: '1',\n\t * });\n\t * ```\n\t * @example\n\t * Creating a string select menu option using setters and API data\n\t * ```ts\n\t * const selectMenuOption = new SelectMenuOptionBuilder({\n\t * \tdefault: true,\n\t * \tvalue: '1',\n\t * })\n\t * \t.setLabel('woah')\n\t * ```\n\t */\n\tpublic constructor(public data: Partial = {}) {}\n\n\t/**\n\t * Sets the label of this option\n\t *\n\t * @param label - The label to show on this option\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = labelValueDescriptionValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the value of this option\n\t *\n\t * @param value - The value of this option\n\t */\n\tpublic setValue(value: string) {\n\t\tthis.data.value = labelValueDescriptionValidator.parse(value);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the description of this option\n\t *\n\t * @param description - The description of this option\n\t */\n\tpublic setDescription(description: string) {\n\t\tthis.data.description = labelValueDescriptionValidator.parse(description);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this option is selected by default\n\t *\n\t * @param isDefault - Whether this option is selected by default\n\t */\n\tpublic setDefault(isDefault = true) {\n\t\tthis.data.default = defaultValidator.parse(isDefault);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the emoji to display on this option\n\t *\n\t * @param emoji - The emoji to display on this option\n\t */\n\tpublic setEmoji(emoji: APIMessageComponentEmoji) {\n\t\tthis.data.emoji = emojiValidator.parse(emoji);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APISelectMenuOption {\n\t\tvalidateRequiredSelectMenuOptionParameters(this.data.label, this.data.value);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APISelectMenuOption;\n\t}\n}\n","/* eslint-disable jsdoc/check-param-names */\n\nimport {\n\ttype APIActionRowComponent,\n\tComponentType,\n\ttype APIMessageActionRowComponent,\n\ttype APIModalActionRowComponent,\n\ttype APIActionRowComponentTypes,\n} from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../util/normalizeArray.js';\nimport { ComponentBuilder } from './Component.js';\nimport { createComponentBuilder } from './Components.js';\nimport type { ButtonBuilder } from './button/Button.js';\nimport type { ChannelSelectMenuBuilder } from './selectMenu/ChannelSelectMenu.js';\nimport type { MentionableSelectMenuBuilder } from './selectMenu/MentionableSelectMenu.js';\nimport type { RoleSelectMenuBuilder } from './selectMenu/RoleSelectMenu.js';\nimport type { StringSelectMenuBuilder } from './selectMenu/StringSelectMenu.js';\nimport type { UserSelectMenuBuilder } from './selectMenu/UserSelectMenu.js';\nimport type { TextInputBuilder } from './textInput/TextInput.js';\n\nexport type MessageComponentBuilder =\n\t| ActionRowBuilder\n\t| MessageActionRowComponentBuilder;\nexport type ModalComponentBuilder = ActionRowBuilder | ModalActionRowComponentBuilder;\nexport type MessageActionRowComponentBuilder =\n\t| ButtonBuilder\n\t| ChannelSelectMenuBuilder\n\t| MentionableSelectMenuBuilder\n\t| RoleSelectMenuBuilder\n\t| StringSelectMenuBuilder\n\t| UserSelectMenuBuilder;\nexport type ModalActionRowComponentBuilder = TextInputBuilder;\nexport type AnyComponentBuilder = MessageActionRowComponentBuilder | ModalActionRowComponentBuilder;\n\n/**\n * Represents an action row component\n *\n * @typeParam T - The types of components this action row holds\n */\nexport class ActionRowBuilder extends ComponentBuilder<\n\tAPIActionRowComponent\n> {\n\t/**\n\t * The components within this action row\n\t */\n\tpublic readonly components: T[];\n\n\t/**\n\t * Creates a new action row from API data\n\t *\n\t * @param data - The API data to create this action row with\n\t * @example\n\t * Creating an action row from an API data object\n\t * ```ts\n\t * const actionRow = new ActionRowBuilder({\n\t * \tcomponents: [\n\t * \t\t{\n\t * \t\t\tcustom_id: \"custom id\",\n\t * \t\t\tlabel: \"Type something\",\n\t * \t\t\tstyle: TextInputStyle.Short,\n\t * \t\t\ttype: ComponentType.TextInput,\n\t * \t\t},\n\t * \t],\n\t * });\n\t * ```\n\t * @example\n\t * Creating an action row using setters and API data\n\t * ```ts\n\t * const actionRow = new ActionRowBuilder({\n\t * \tcomponents: [\n\t * \t\t{\n\t * \t\t\tcustom_id: \"custom id\",\n\t * \t\t\tlabel: \"Click me\",\n\t * \t\t\tstyle: ButtonStyle.Primary,\n\t * \t\t\ttype: ComponentType.Button,\n\t * \t\t},\n\t * \t],\n\t * })\n\t * \t.addComponents(button2, button3);\n\t * ```\n\t */\n\tpublic constructor({ components, ...data }: Partial> = {}) {\n\t\tsuper({ type: ComponentType.ActionRow, ...data });\n\t\tthis.components = (components?.map((component) => createComponentBuilder(component)) ?? []) as T[];\n\t}\n\n\t/**\n\t * Adds components to this action row.\n\t *\n\t * @param components - The components to add to this action row.\n\t */\n\tpublic addComponents(...components: RestOrArray) {\n\t\tthis.components.push(...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the components in this action row\n\t *\n\t * @param components - The components to set this row to\n\t */\n\tpublic setComponents(...components: RestOrArray) {\n\t\tthis.components.splice(0, this.components.length, ...normalizeArray(components));\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APIActionRowComponent> {\n\t\treturn {\n\t\t\t...this.data,\n\t\t\tcomponents: this.components.map((component) => component.toJSON()),\n\t\t} as APIActionRowComponent>;\n\t}\n}\n","import type { JSONEncodable } from '@discordjs/util';\nimport type {\n\tAPIActionRowComponent,\n\tAPIActionRowComponentTypes,\n\tAPIBaseComponent,\n\tComponentType,\n} from 'discord-api-types/v10';\n\nexport type AnyAPIActionRowComponent = APIActionRowComponent | APIActionRowComponentTypes;\n\n/**\n * Represents a discord component\n *\n * @typeParam DataType - The type of internal API data that is stored within the component\n */\nexport abstract class ComponentBuilder<\n\tDataType extends Partial> = APIBaseComponent,\n> implements JSONEncodable\n{\n\t/**\n\t * The API data associated with this component\n\t */\n\tpublic readonly data: Partial;\n\n\t/**\n\t * Serializes this component to an API-compatible JSON object\n\t *\n\t * @remarks\n\t * This method runs validations on the data before serializing it.\n\t * As such, it may throw an error if the data is invalid.\n\t */\n\tpublic abstract toJSON(): AnyAPIActionRowComponent;\n\n\tpublic constructor(data: Partial) {\n\t\tthis.data = data;\n\t}\n}\n","import { ComponentType, type APIMessageComponent, type APIModalComponent } from 'discord-api-types/v10';\nimport {\n\tActionRowBuilder,\n\ttype AnyComponentBuilder,\n\ttype MessageComponentBuilder,\n\ttype ModalComponentBuilder,\n} from './ActionRow.js';\nimport { ComponentBuilder } from './Component.js';\nimport { ButtonBuilder } from './button/Button.js';\nimport { ChannelSelectMenuBuilder } from './selectMenu/ChannelSelectMenu.js';\nimport { MentionableSelectMenuBuilder } from './selectMenu/MentionableSelectMenu.js';\nimport { RoleSelectMenuBuilder } from './selectMenu/RoleSelectMenu.js';\nimport { StringSelectMenuBuilder } from './selectMenu/StringSelectMenu.js';\nimport { UserSelectMenuBuilder } from './selectMenu/UserSelectMenu.js';\nimport { TextInputBuilder } from './textInput/TextInput.js';\n\nexport interface MappedComponentTypes {\n\t[ComponentType.ActionRow]: ActionRowBuilder;\n\t[ComponentType.Button]: ButtonBuilder;\n\t[ComponentType.StringSelect]: StringSelectMenuBuilder;\n\t[ComponentType.TextInput]: TextInputBuilder;\n\t[ComponentType.UserSelect]: UserSelectMenuBuilder;\n\t[ComponentType.RoleSelect]: RoleSelectMenuBuilder;\n\t[ComponentType.MentionableSelect]: MentionableSelectMenuBuilder;\n\t[ComponentType.ChannelSelect]: ChannelSelectMenuBuilder;\n}\n\n/**\n * Factory for creating components from API data\n *\n * @param data - The api data to transform to a component class\n */\nexport function createComponentBuilder(\n\t// eslint-disable-next-line @typescript-eslint/sort-type-union-intersection-members\n\tdata: (APIModalComponent | APIMessageComponent) & { type: T },\n): MappedComponentTypes[T];\nexport function createComponentBuilder(data: C): C;\nexport function createComponentBuilder(\n\tdata: APIMessageComponent | APIModalComponent | MessageComponentBuilder,\n): ComponentBuilder {\n\tif (data instanceof ComponentBuilder) {\n\t\treturn data;\n\t}\n\n\tswitch (data.type) {\n\t\tcase ComponentType.ActionRow:\n\t\t\treturn new ActionRowBuilder(data);\n\t\tcase ComponentType.Button:\n\t\t\treturn new ButtonBuilder(data);\n\t\tcase ComponentType.StringSelect:\n\t\t\treturn new StringSelectMenuBuilder(data);\n\t\tcase ComponentType.TextInput:\n\t\t\treturn new TextInputBuilder(data);\n\t\tcase ComponentType.UserSelect:\n\t\t\treturn new UserSelectMenuBuilder(data);\n\t\tcase ComponentType.RoleSelect:\n\t\t\treturn new RoleSelectMenuBuilder(data);\n\t\tcase ComponentType.MentionableSelect:\n\t\t\treturn new MentionableSelectMenuBuilder(data);\n\t\tcase ComponentType.ChannelSelect:\n\t\t\treturn new ChannelSelectMenuBuilder(data);\n\t\tdefault:\n\t\t\t// @ts-expect-error: This case can still occur if we get a newer unsupported component type\n\t\t\tthrow new Error(`Cannot properly serialize component type: ${data.type}`);\n\t}\n}\n","import {\n\tComponentType,\n\ttype APIMessageComponentEmoji,\n\ttype APIButtonComponent,\n\ttype APIButtonComponentWithURL,\n\ttype APIButtonComponentWithCustomId,\n\ttype ButtonStyle,\n} from 'discord-api-types/v10';\nimport {\n\tbuttonLabelValidator,\n\tbuttonStyleValidator,\n\tcustomIdValidator,\n\tdisabledValidator,\n\temojiValidator,\n\turlValidator,\n\tvalidateRequiredButtonParameters,\n} from '../Assertions.js';\nimport { ComponentBuilder } from '../Component.js';\n\n/**\n * Represents a button component\n */\nexport class ButtonBuilder extends ComponentBuilder {\n\t/**\n\t * Creates a new button from API data\n\t *\n\t * @param data - The API data to create this button with\n\t * @example\n\t * Creating a button from an API data object\n\t * ```ts\n\t * const button = new ButtonBuilder({\n\t * \tcustom_id: 'a cool button',\n\t * \tstyle: ButtonStyle.Primary,\n\t * \tlabel: 'Click Me',\n\t * \temoji: {\n\t * \t\tname: 'smile',\n\t * \t\tid: '123456789012345678',\n\t * \t},\n\t * });\n\t * ```\n\t * @example\n\t * Creating a button using setters and API data\n\t * ```ts\n\t * const button = new ButtonBuilder({\n\t * \tstyle: ButtonStyle.Secondary,\n\t * \tlabel: 'Click Me',\n\t * })\n\t * \t.setEmoji({ name: '🙂' })\n\t * \t.setCustomId('another cool button');\n\t * ```\n\t */\n\tpublic constructor(data?: Partial) {\n\t\tsuper({ type: ComponentType.Button, ...data });\n\t}\n\n\t/**\n\t * Sets the style of this button\n\t *\n\t * @param style - The style of the button\n\t */\n\tpublic setStyle(style: ButtonStyle) {\n\t\tthis.data.style = buttonStyleValidator.parse(style);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the URL for this button\n\t *\n\t * @remarks\n\t * This method is only available to buttons using the `Link` button style.\n\t * Only three types of URL schemes are currently supported: `https://`, `http://` and `discord://`\n\t * @param url - The URL to open when this button is clicked\n\t */\n\tpublic setURL(url: string) {\n\t\t(this.data as APIButtonComponentWithURL).url = urlValidator.parse(url);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the custom id for this button\n\t *\n\t * @remarks\n\t * This method is only applicable to buttons that are not using the `Link` button style.\n\t * @param customId - The custom id to use for this button\n\t */\n\tpublic setCustomId(customId: string) {\n\t\t(this.data as APIButtonComponentWithCustomId).custom_id = customIdValidator.parse(customId);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the emoji to display on this button\n\t *\n\t * @param emoji - The emoji to display on this button\n\t */\n\tpublic setEmoji(emoji: APIMessageComponentEmoji) {\n\t\tthis.data.emoji = emojiValidator.parse(emoji);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets whether this button is disabled\n\t *\n\t * @param disabled - Whether to disable this button\n\t */\n\tpublic setDisabled(disabled = true) {\n\t\tthis.data.disabled = disabledValidator.parse(disabled);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sets the label for this button\n\t *\n\t * @param label - The label to display on this button\n\t */\n\tpublic setLabel(label: string) {\n\t\tthis.data.label = buttonLabelValidator.parse(label);\n\t\treturn this;\n\t}\n\n\t/**\n\t * {@inheritDoc ComponentBuilder.toJSON}\n\t */\n\tpublic toJSON(): APIButtonComponent {\n\t\tvalidateRequiredButtonParameters(\n\t\t\tthis.data.style,\n\t\t\tthis.data.label,\n\t\t\tthis.data.emoji,\n\t\t\t(this.data as APIButtonComponentWithCustomId).custom_id,\n\t\t\t(this.data as APIButtonComponentWithURL).url,\n\t\t);\n\n\t\treturn {\n\t\t\t...this.data,\n\t\t} as APIButtonComponent;\n\t}\n}\n","import type { APIChannelSelectComponent, ChannelType } from 'discord-api-types/v10';\nimport { ComponentType } from 'discord-api-types/v10';\nimport { normalizeArray, type RestOrArray } from '../../util/normalizeArray.js';\nimport { channelTypesValidator, customIdValidator } from '../Assertions.js';\nimport { BaseSelectMenuBuilder } from './BaseSelectMenu.js';\n\nexport class ChannelSelectMenuBuilder extends BaseSelectMenuBuilder {\n\t/**\n\t * Creates a new select menu from API data\n\t *\n\t * @param data - The API data to create this select menu with\n\t * @example\n\t * Creating a select menu from an API data object\n\t * ```ts\n\t * const selectMenu = new ChannelSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * \tplaceholder: 'select an option',\n\t * \tmax_values: 2,\n\t * });\n\t * ```\n\t * @example\n\t * Creating a select menu using setters and API data\n\t * ```ts\n\t * const selectMenu = new ChannelSelectMenuBuilder({\n\t * \tcustom_id: 'a cool select menu',\n\t * })\n\t * \t.addChannelTypes(ChannelType.GuildText, ChannelType.GuildAnnouncement)\n\t * \t.setMinValues(2)\n\t * ```\n\t */\n\tpublic constructor(data?: Partial