├── .gitignore ├── commands ├── ping.js ├── server.js ├── randomUser.js ├── user.js ├── cat.js ├── randomQuote.js ├── randomFact.js ├── showCommands.js ├── welcome.js ├── deleteCommand.js ├── commandInfo.js ├── dallE.js ├── editCommand.js ├── addCommand.js └── strawPoll.js ├── models └── Command.js ├── events ├── ready.js ├── interactionCreate.js └── messageCreate.js ├── package.json ├── deploy-commands.js ├── index.js ├── .eslintrc.json └── pnpm-lock.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | node_modules 3 | database.sqlite -------------------------------------------------------------------------------- /commands/ping.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | 3 | module.exports = { 4 | data: new SlashCommandBuilder() 5 | .setName('ping') 6 | .setDescription('Returns Pong!'), 7 | async execute(interaction) { 8 | await interaction.reply('Pong!'); 9 | }, 10 | }; -------------------------------------------------------------------------------- /models/Command.js: -------------------------------------------------------------------------------- 1 | const { Sequelize } = require('sequelize'); 2 | 3 | module.exports = (sequelize) => { 4 | const Command = sequelize.define('command', { 5 | name: { 6 | type: Sequelize.STRING, 7 | unique: true, 8 | }, 9 | content: Sequelize.TEXT, 10 | username: Sequelize.STRING, 11 | usage_count: { 12 | type: Sequelize.INTEGER, 13 | defaultValue: 0, 14 | allowNull: false, 15 | }, 16 | }, 17 | { 18 | timestamps: true, 19 | }); 20 | return Command; 21 | }; -------------------------------------------------------------------------------- /commands/server.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | 3 | module.exports = { 4 | data: new SlashCommandBuilder() 5 | .setName('server') 6 | .setDescription('Provides information about the server.'), 7 | async execute(interaction) { 8 | // interaction.guild is the object representing the Guild in which the command was run 9 | await interaction.reply(`This server is ${interaction.guild.name} and has ${interaction.guild.memberCount} members.`); 10 | }, 11 | 12 | }; -------------------------------------------------------------------------------- /events/ready.js: -------------------------------------------------------------------------------- 1 | const { Events } = require('discord.js'); 2 | const Sequelize = require('sequelize'); 3 | 4 | const sequelize = new Sequelize('database', 'user', 'password', { 5 | host: 'localhost', 6 | dialect: 'sqlite', 7 | logging: false, 8 | storage: 'database.sqlite', 9 | }); 10 | 11 | const Command = require('../models/Command')(sequelize); 12 | 13 | module.exports = { 14 | name: Events.ClientReady, 15 | once: true, 16 | execute(client) { 17 | Command.sync(); 18 | console.log(`Logged in as ${client.user.tag}!`); 19 | }, 20 | }; -------------------------------------------------------------------------------- /commands/randomUser.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | 3 | module.exports = { 4 | data: new SlashCommandBuilder() 5 | .setName('randomuser') 6 | .setDescription('Returns a random user from the server!'), 7 | async execute(interaction) { 8 | console.log('interaction: ', interaction); 9 | const members = await interaction.member.guild.members.fetch(); 10 | console.log(members); 11 | const randomMember = members.random(); 12 | console.log(randomMember); 13 | await interaction.reply(`The random user is ${randomMember}!`); 14 | }, 15 | }; 16 | -------------------------------------------------------------------------------- /commands/user.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | 3 | module.exports = { 4 | data: new SlashCommandBuilder() 5 | .setName('user') 6 | .setDescription('Provides information about the user.'), 7 | async execute(interaction) { 8 | // interaction.user is the object representing the User who ran the command 9 | // interaction.member is the GuildMember object, which represents the user in the specific guild 10 | await interaction.reply(`This command was run by ${interaction.user.username}, who joined on ${interaction.member.joinedAt}.`); 11 | }, 12 | }; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "farmbot", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js", 8 | "dev": "nodemon index.js", 9 | "test": "echo \"Error: no test specified\" && exit 1" 10 | }, 11 | "keywords": [], 12 | "author": "John Paul Wile", 13 | "license": "ISC", 14 | "dependencies": { 15 | "discord.js": "^14.6.0", 16 | "dotenv": "^16.0.3", 17 | "sequelize": "^6.25.8", 18 | "sqlite3": "^5.1.2" 19 | }, 20 | "devDependencies": { 21 | "eslint": "^8.27.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /commands/cat.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | 3 | module.exports = { 4 | data: new SlashCommandBuilder() 5 | .setName('cat') 6 | .setDescription('Returns a random cat pic!'), 7 | async execute(interaction) { 8 | try { 9 | const rawResponse = await fetch('https://api.thecatapi.com/v1/images/search', { 10 | method: 'GET', 11 | headers: { 12 | 'Accept': 'application/json', 13 | 'Content-Type': 'application/json', 14 | }, 15 | }); 16 | 17 | const content = await rawResponse.json(); 18 | 19 | interaction.reply(`${content[0].url}`); 20 | } 21 | catch (error) { 22 | console.error(error); 23 | } 24 | }, 25 | }; -------------------------------------------------------------------------------- /commands/randomQuote.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | 3 | module.exports = { 4 | data: new SlashCommandBuilder() 5 | .setName('randomquote') 6 | .setDescription('Returns a random quote!'), 7 | async execute(interaction) { 8 | try { 9 | const rawResponse = await fetch('https://zenquotes.io/api/random', { 10 | method: 'GET', 11 | headers: { 12 | 'Accept': 'application/json', 13 | 'Content-Type': 'application/json', 14 | }, 15 | }); 16 | 17 | const content = await rawResponse.json(); 18 | 19 | interaction.reply(`${content[0].q} - ${content[0].a}`); 20 | } 21 | catch (error) { 22 | console.error(error); 23 | } 24 | }, 25 | }; -------------------------------------------------------------------------------- /events/interactionCreate.js: -------------------------------------------------------------------------------- 1 | const { Events } = require('discord.js'); 2 | 3 | module.exports = { 4 | name: Events.InteractionCreate, 5 | async execute(interaction) { 6 | if (!interaction.isChatInputCommand()) return; 7 | 8 | const command = interaction.client.commands.get(interaction.commandName); 9 | 10 | if (!command) { 11 | console.error(`No command matching ${interaction.commandName} was found.`); 12 | return; 13 | } 14 | 15 | try { 16 | await command.execute(interaction); 17 | } 18 | catch (error) { 19 | console.error(error); 20 | await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true }); 21 | } 22 | }, 23 | }; 24 | -------------------------------------------------------------------------------- /commands/randomFact.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | 3 | module.exports = { 4 | data: new SlashCommandBuilder() 5 | .setName('randomfact') 6 | .setDescription('Returns a random fact!'), 7 | async execute(interaction) { 8 | try { 9 | const rawResponse = await fetch('https://webknox-trivia-knowledge-facts-v1.p.rapidapi.com/trivia/random', { 10 | method: 'GET', 11 | headers: { 12 | 'Accept': 'application/json', 13 | 'Content-Type': 'application/json', 14 | 'X-RapidAPI-Key': process.env.RAPIDAPI_KEY, 15 | 'X-RapidAPI-Host': process.env.RAPIDAPI_HOST, 16 | }, 17 | }); 18 | 19 | const content = await rawResponse.json(); 20 | 21 | interaction.reply(`${content.trivia}`); 22 | } 23 | catch (error) { 24 | console.error(error); 25 | } 26 | }, 27 | }; -------------------------------------------------------------------------------- /commands/showCommands.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | const Sequelize = require('sequelize'); 3 | 4 | const sequelize = new Sequelize('database', 'user', 'password', { 5 | host: 'localhost', 6 | dialect: 'sqlite', 7 | logging: false, 8 | storage: 'database.sqlite', 9 | }); 10 | 11 | const Command = require('../models/Command')(sequelize); 12 | 13 | module.exports = { 14 | data: new SlashCommandBuilder() 15 | .setName('showcommands') 16 | .setDescription('Shows a list of all commands in the database!'), 17 | async execute(interaction) { 18 | const commandList = await Command.findAll({ attributes: ['name'] }); 19 | const commandString = commandList.map(t => t.name).join(', ') || 'No tags set.'; 20 | 21 | return interaction.reply(`List of commands: ${commandString}`); 22 | }, 23 | }; -------------------------------------------------------------------------------- /commands/welcome.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | 3 | module.exports = { 4 | data: new SlashCommandBuilder() 5 | .setName('welcome') 6 | .setDescription('Welcomes a new user!') 7 | .addUserOption(option => option.setName('user') 8 | .setDescription('The user to welcome') 9 | .setRequired(true), 10 | ), 11 | async execute(interaction) { 12 | const user = interaction.options.getUser('user'); 13 | 14 | interaction.reply(`Hello ${user}! Welcome to The Farm! You can go to the <#965641278689787934> channel and pick which games you play to unlock the channels for that game, and also don't forget to select if you are a content creator so that the rest of us get alerts when you go live. Take a look at <#973052371749974066> and if you don't mind you can leave a short introduction in <#998989358193463316>. Thank you for being here!`); 15 | }, 16 | }; -------------------------------------------------------------------------------- /events/messageCreate.js: -------------------------------------------------------------------------------- 1 | const { Events } = require('discord.js'); 2 | const Sequelize = require('sequelize'); 3 | 4 | const sequelize = new Sequelize('database', 'user', 'password', { 5 | host: 'localhost', 6 | dialect: 'sqlite', 7 | logging: false, 8 | storage: 'database.sqlite', 9 | }); 10 | 11 | const Command = require('../models/Command')(sequelize); 12 | 13 | module.exports = { 14 | name: Events.MessageCreate, 15 | async execute(message) { 16 | 17 | if (message.content.startsWith('!')) { 18 | const args = message.content.slice(1).trim().split(/ +/g); 19 | const command = args.shift().toLowerCase(); 20 | try { 21 | const cmd = await Command.findOne({ where: { name: command } }); 22 | if (cmd === null) { 23 | message.channel.send('Command not found.'); 24 | return; 25 | } 26 | 27 | if (command === cmd.name) { 28 | message.channel.send(cmd.content); 29 | return; 30 | } 31 | } 32 | catch (error) { 33 | console.log(error); 34 | } 35 | } 36 | }, 37 | }; -------------------------------------------------------------------------------- /commands/deleteCommand.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | const Sequelize = require('sequelize'); 3 | 4 | const sequelize = new Sequelize('database', 'user', 'password', { 5 | host: 'localhost', 6 | dialect: 'sqlite', 7 | logging: false, 8 | storage: 'database.sqlite', 9 | }); 10 | 11 | const Command = require('../models/Command')(sequelize); 12 | 13 | module.exports = { 14 | data: new SlashCommandBuilder() 15 | .setName('deletecommand') 16 | .setDescription('Deletes a command from the database!') 17 | .addStringOption(option => 18 | option.setName('name') 19 | .setDescription('The name of the command to delete.') 20 | .setRequired(true)), 21 | async execute(interaction) { 22 | const commandName = interaction.options.getString('name'); 23 | 24 | const rowCount = await Command.destroy({ where: { name: commandName } }); 25 | 26 | if (!rowCount) return interaction.reply('That command did not exist.'); 27 | 28 | return interaction.reply('Command deleted.'); 29 | }, 30 | }; -------------------------------------------------------------------------------- /commands/commandInfo.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | const Sequelize = require('sequelize'); 3 | 4 | const sequelize = new Sequelize('database', 'user', 'password', { 5 | host: 'localhost', 6 | dialect: 'sqlite', 7 | logging: false, 8 | storage: 'database.sqlite', 9 | }); 10 | 11 | const Command = require('../models/Command')(sequelize); 12 | 13 | module.exports = { 14 | data: new SlashCommandBuilder() 15 | .setName('commandinfo') 16 | .setDescription('Displays info about a command!') 17 | .addStringOption(option => 18 | option.setName('name') 19 | .setDescription('The name of the command to query for info.') 20 | .setRequired(true)), 21 | async execute(interaction) { 22 | const commandName = interaction.options.getString('name'); 23 | 24 | const command = await Command.findOne({ where: { name: commandName } }); 25 | 26 | if (command) { 27 | return interaction.reply(`Command ${commandName} was created by ${command.username} at ${command.createdAt} and has been used ${command.usage_count} times.`); 28 | } 29 | return interaction.reply(`Could not find command: ${commandName}`); 30 | }, 31 | }; -------------------------------------------------------------------------------- /commands/dallE.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | 3 | module.exports = { 4 | data: new SlashCommandBuilder() 5 | .setName('dalle') 6 | .setDescription('Generates an image from text!') 7 | .addStringOption(option => 8 | option.setName('query') 9 | .setDescription('The description of the image you want to generate.') 10 | .setRequired(true)), 11 | async execute(interaction) { 12 | interaction.reply('Generating image...'); 13 | 14 | const query = interaction.options.getString('query'); 15 | 16 | try { 17 | const rawResponse = await fetch('https://api.openai.com/v1/images/generations', { 18 | method: 'POST', 19 | headers: { 20 | 'Accept': 'application/json', 21 | 'Content-Type': 'application/json', 22 | 'Authorization': `Bearer ${process.env.DALLE_API_TOKEN}`, 23 | }, 24 | body: JSON.stringify({ 25 | 'prompt': query, 26 | 'n': 1, 27 | 'size': '1024x1024', 28 | }), 29 | }); 30 | 31 | const content = await rawResponse.json(); 32 | 33 | interaction.editReply(content.data[0].url); 34 | } 35 | catch (error) { 36 | console.error(error); 37 | } 38 | }, 39 | }; -------------------------------------------------------------------------------- /deploy-commands.js: -------------------------------------------------------------------------------- 1 | require('dotenv').config(); 2 | const { REST, Routes } = require('discord.js'); 3 | const clientId = process.env.DISCORD_CLIENT_ID; 4 | const guildId = process.env.DISCORD_GUILD_ID; 5 | const token = process.env.DISCORD_TOKEN; 6 | const fs = require('node:fs'); 7 | 8 | const commands = []; 9 | // Grab all the command files from the commands directory you created earlier 10 | const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js')); 11 | 12 | // Grab the SlashCommandBuilder#toJSON() output of each command's data for deployment 13 | for (const file of commandFiles) { 14 | const command = require(`./commands/${file}`); 15 | commands.push(command.data.toJSON()); 16 | } 17 | 18 | console.log(guildId, clientId, token); 19 | // Construct and prepare an instance of the REST module 20 | const rest = new REST({ version: '10' }).setToken(token); 21 | 22 | // Deploy the commands 23 | (async () => { 24 | try { 25 | console.log(`Started refreshing ${commands.length} application (/) commands.`); 26 | 27 | // The put method is used to fully refresh all commands in the guild with the current set 28 | const data = await rest.put( 29 | Routes.applicationGuildCommands(clientId, guildId), 30 | { body: commands }, 31 | ); 32 | 33 | console.log(`Successfully reloaded ${data.length} application (/) commands.`); 34 | } 35 | catch (error) { 36 | console.error(error); 37 | } 38 | })(); -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const fs = require('node:fs'); 2 | const path = require('node:path'); 3 | const { Client, Collection, GatewayIntentBits } = require('discord.js'); 4 | require('dotenv').config(); 5 | 6 | const client = new Client({ intents: [ 7 | GatewayIntentBits.Guilds, 8 | GatewayIntentBits.GuildMessages, 9 | GatewayIntentBits.MessageContent, 10 | GatewayIntentBits.GuildMembers, 11 | ] }); 12 | 13 | const eventsPath = path.join(__dirname, 'events'); 14 | const eventFiles = fs.readdirSync(eventsPath).filter(file => file.endsWith('.js')); 15 | 16 | for (const file of eventFiles) { 17 | const filePath = path.join(eventsPath, file); 18 | const event = require(filePath); 19 | if (event.once) { 20 | client.once(event.name, (...args) => event.execute(...args)); 21 | } 22 | else { 23 | client.on(event.name, (...args) => event.execute(...args)); 24 | } 25 | } 26 | 27 | client.commands = new Collection(); 28 | const commandsPath = path.join(__dirname, 'commands'); 29 | const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js')); 30 | 31 | for (const file of commandFiles) { 32 | const filePath = path.join(commandsPath, file); 33 | const command = require(filePath); 34 | if ('data' in command && 'execute' in command) { 35 | client.commands.set(command.data.name, command); 36 | } 37 | else { 38 | console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`); 39 | } 40 | } 41 | 42 | client.login(process.env.DISCORD_TOKEN); -------------------------------------------------------------------------------- /commands/editCommand.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | const Sequelize = require('sequelize'); 3 | 4 | const sequelize = new Sequelize('database', 'user', 'password', { 5 | host: 'localhost', 6 | dialect: 'sqlite', 7 | logging: false, 8 | storage: 'database.sqlite', 9 | }); 10 | 11 | const Command = require('../models/Command')(sequelize); 12 | 13 | module.exports = { 14 | data: new SlashCommandBuilder() 15 | .setName('editcommand') 16 | .setDescription('Edits a command in the database!') 17 | .addStringOption(option => 18 | option.setName('name') 19 | .setDescription('The name of the command to edit.') 20 | .setRequired(true)) 21 | .addStringOption(option => 22 | option.setName('content') 23 | .setDescription('The new content of the command.') 24 | .setRequired(true)), 25 | async execute(interaction) { 26 | const commandName = interaction.options.getString('name'); 27 | const commandContent = interaction.options.getString('content'); 28 | 29 | try { 30 | const affectedRows = await Command.update({ content: commandContent }, { where: { name: commandName } }); 31 | 32 | if (affectedRows > 0) { 33 | return interaction.reply(`Command ${commandName} was edited.`); 34 | } 35 | } 36 | catch (error) { 37 | console.log(error); 38 | return interaction.reply('Something went wrong with editing the command.'); 39 | } 40 | 41 | return interaction.reply(`Could not find a command with name ${commandName}.`); 42 | }, 43 | }; -------------------------------------------------------------------------------- /commands/addCommand.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | const Sequelize = require('sequelize'); 3 | 4 | const sequelize = new Sequelize('database', 'user', 'password', { 5 | host: 'localhost', 6 | dialect: 'sqlite', 7 | logging: false, 8 | storage: 'database.sqlite', 9 | }); 10 | 11 | const Command = require('../models/Command')(sequelize); 12 | 13 | module.exports = { 14 | data: new SlashCommandBuilder() 15 | .setName('addcommand') 16 | .setDescription('Adds a command to the database!') 17 | .addStringOption(option => 18 | option.setName('name') 19 | .setDescription('The name of the command.') 20 | .setRequired(true)) 21 | .addStringOption(option => 22 | option.setName('content') 23 | .setDescription('The content of the command.') 24 | .setRequired(true)), 25 | async execute(interaction) { 26 | const commandName = interaction.options.getString('name'); 27 | const commandContent = interaction.options.getString('content'); 28 | 29 | try { 30 | const command = await Command.create({ 31 | name: commandName.toLowerCase(), 32 | content: commandContent, 33 | username: interaction.user.username, 34 | }); 35 | 36 | return interaction.reply(`Command ${command.name} added.`); 37 | } 38 | catch (error) { 39 | if (error.name === 'SequelizeUniqueConstraintError') { 40 | return interaction.reply('That command already exists.'); 41 | } 42 | return interaction.reply('Something went wrong with adding a command.'); 43 | } 44 | }, 45 | }; -------------------------------------------------------------------------------- /commands/strawPoll.js: -------------------------------------------------------------------------------- 1 | const { SlashCommandBuilder } = require('discord.js'); 2 | 3 | module.exports = { 4 | data: new SlashCommandBuilder() 5 | .setName('strawpoll') 6 | .setDescription('Create a straw poll!') 7 | .addStringOption(option => 8 | option.setName('title') 9 | .setDescription('The title of the straw poll.') 10 | .setRequired(true)) 11 | .addStringOption(option => 12 | option.setName('option1') 13 | .setDescription('The first option for the poll.') 14 | .setRequired(true)) 15 | .addStringOption(option => 16 | option.setName('option2') 17 | .setDescription('The second option for the poll.') 18 | .setRequired(true)) 19 | .addStringOption(option => 20 | option.setName('option3') 21 | .setDescription('The third option for the poll.') 22 | .setRequired(false)), 23 | async execute(interaction) { 24 | const title = interaction.options.getString('title'); 25 | const option1 = interaction.options.getString('option1'); 26 | const option2 = interaction.options.getString('option2'); 27 | const option3 = interaction.options.getString('option3'); 28 | 29 | try { 30 | const rawResponse = await fetch('https://strawpoll.com/api/poll', { 31 | method: 'POST', 32 | headers: { 33 | 'Accept': 'application/json', 34 | 'Content-Type': 'application/json', 35 | }, 36 | body: JSON.stringify({ 37 | poll: { title, answers: [option1, option2, option3] }, 38 | }), 39 | }); 40 | 41 | const content = await rawResponse.json(); 42 | 43 | interaction.reply(`https://strawpoll.com/${content.content_id}`); 44 | } 45 | catch (error) { 46 | console.error(error); 47 | } 48 | }, 49 | }; -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "env": { 4 | "node": true, 5 | "es6": true 6 | }, 7 | "parserOptions": { 8 | "ecmaVersion": 2021 9 | }, 10 | "rules": { 11 | "arrow-spacing": ["warn", { "before": true, "after": true }], 12 | "brace-style": ["error", "stroustrup", { "allowSingleLine": true }], 13 | "comma-dangle": ["error", "always-multiline"], 14 | "comma-spacing": "error", 15 | "comma-style": "error", 16 | "curly": ["error", "multi-line", "consistent"], 17 | "dot-location": ["error", "property"], 18 | "handle-callback-err": "off", 19 | "indent": ["error", "tab"], 20 | "keyword-spacing": "error", 21 | "max-nested-callbacks": ["error", { "max": 4 }], 22 | "max-statements-per-line": ["error", { "max": 2 }], 23 | "no-console": "off", 24 | "no-empty-function": "error", 25 | "no-floating-decimal": "error", 26 | "no-inline-comments": "error", 27 | "no-lonely-if": "error", 28 | "no-multi-spaces": "error", 29 | "no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }], 30 | "no-shadow": ["error", { "allow": ["err", "resolve", "reject"] }], 31 | "no-trailing-spaces": ["error"], 32 | "no-var": "error", 33 | "object-curly-spacing": ["error", "always"], 34 | "prefer-const": "error", 35 | "quotes": ["error", "single"], 36 | "semi": ["error", "always"], 37 | "space-before-blocks": "error", 38 | "space-before-function-paren": ["error", { 39 | "anonymous": "never", 40 | "named": "never", 41 | "asyncArrow": "always" 42 | }], 43 | "space-in-parens": "error", 44 | "space-infix-ops": "error", 45 | "space-unary-ops": "error", 46 | "spaced-comment": "error", 47 | "yoda": "error" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | discord.js: ^14.6.0 5 | dotenv: ^16.0.3 6 | eslint: ^8.27.0 7 | sequelize: ^6.25.8 8 | sqlite3: ^5.1.2 9 | 10 | dependencies: 11 | discord.js: 14.6.0 12 | dotenv: 16.0.3 13 | sequelize: 6.25.8_sqlite3@5.1.2 14 | sqlite3: 5.1.2 15 | 16 | devDependencies: 17 | eslint: 8.27.0 18 | 19 | packages: 20 | 21 | /@discordjs/builders/1.3.0: 22 | resolution: {integrity: sha512-Pvca6Nw8Hp+n3N+Wp17xjygXmMvggbh5ywUsOYE2Et4xkwwVRwgzxDJiMUuYapPtnYt4w/8aKlf5khc8ipLvhg==} 23 | engines: {node: '>=16.9.0'} 24 | dependencies: 25 | '@discordjs/util': 0.1.0 26 | '@sapphire/shapeshift': 3.7.0 27 | discord-api-types: 0.37.18 28 | fast-deep-equal: 3.1.3 29 | ts-mixer: 6.0.2 30 | tslib: 2.4.1 31 | dev: false 32 | 33 | /@discordjs/collection/1.2.0: 34 | resolution: {integrity: sha512-VvrrtGb7vbfPHzbhGq9qZB5o8FOB+kfazrxdt0OtxzSkoBuw9dURMkCwWizZ00+rDpiK2HmLHBZX+y6JsG9khw==} 35 | engines: {node: '>=16.9.0'} 36 | dev: false 37 | 38 | /@discordjs/rest/1.3.0: 39 | resolution: {integrity: sha512-U6X5J+r/MxYpPTlHFuPxXEf92aKsBaD2teBC7sWkKILIr30O8c9+XshfL7KFBCavnAqS/qE+PF9fgRilO3N44g==} 40 | engines: {node: '>=16.9.0'} 41 | dependencies: 42 | '@discordjs/collection': 1.2.0 43 | '@discordjs/util': 0.1.0 44 | '@sapphire/async-queue': 1.5.0 45 | '@sapphire/snowflake': 3.2.2 46 | discord-api-types: 0.37.18 47 | file-type: 18.0.0 48 | tslib: 2.4.1 49 | undici: 5.12.0 50 | dev: false 51 | 52 | /@discordjs/util/0.1.0: 53 | resolution: {integrity: sha512-e7d+PaTLVQav6rOc2tojh2y6FE8S7REkqLldq1XF4soCx74XB/DIjbVbVLtBemf0nLW77ntz0v+o5DytKwFNLQ==} 54 | engines: {node: '>=16.9.0'} 55 | dev: false 56 | 57 | /@eslint/eslintrc/1.3.3: 58 | resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} 59 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 60 | dependencies: 61 | ajv: 6.12.6 62 | debug: 4.3.4 63 | espree: 9.4.1 64 | globals: 13.18.0 65 | ignore: 5.2.0 66 | import-fresh: 3.3.0 67 | js-yaml: 4.1.0 68 | minimatch: 3.1.2 69 | strip-json-comments: 3.1.1 70 | transitivePeerDependencies: 71 | - supports-color 72 | dev: true 73 | 74 | /@gar/promisify/1.1.3: 75 | resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} 76 | dev: false 77 | optional: true 78 | 79 | /@humanwhocodes/config-array/0.11.7: 80 | resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} 81 | engines: {node: '>=10.10.0'} 82 | dependencies: 83 | '@humanwhocodes/object-schema': 1.2.1 84 | debug: 4.3.4 85 | minimatch: 3.1.2 86 | transitivePeerDependencies: 87 | - supports-color 88 | dev: true 89 | 90 | /@humanwhocodes/module-importer/1.0.1: 91 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 92 | engines: {node: '>=12.22'} 93 | dev: true 94 | 95 | /@humanwhocodes/object-schema/1.2.1: 96 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 97 | dev: true 98 | 99 | /@mapbox/node-pre-gyp/1.0.10: 100 | resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} 101 | hasBin: true 102 | dependencies: 103 | detect-libc: 2.0.1 104 | https-proxy-agent: 5.0.1 105 | make-dir: 3.1.0 106 | node-fetch: 2.6.7 107 | nopt: 5.0.0 108 | npmlog: 5.0.1 109 | rimraf: 3.0.2 110 | semver: 7.3.8 111 | tar: 6.1.12 112 | transitivePeerDependencies: 113 | - encoding 114 | - supports-color 115 | dev: false 116 | 117 | /@nodelib/fs.scandir/2.1.5: 118 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 119 | engines: {node: '>= 8'} 120 | dependencies: 121 | '@nodelib/fs.stat': 2.0.5 122 | run-parallel: 1.2.0 123 | dev: true 124 | 125 | /@nodelib/fs.stat/2.0.5: 126 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 127 | engines: {node: '>= 8'} 128 | dev: true 129 | 130 | /@nodelib/fs.walk/1.2.8: 131 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 132 | engines: {node: '>= 8'} 133 | dependencies: 134 | '@nodelib/fs.scandir': 2.1.5 135 | fastq: 1.13.0 136 | dev: true 137 | 138 | /@npmcli/fs/1.1.1: 139 | resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} 140 | dependencies: 141 | '@gar/promisify': 1.1.3 142 | semver: 7.3.8 143 | dev: false 144 | optional: true 145 | 146 | /@npmcli/move-file/1.1.2: 147 | resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} 148 | engines: {node: '>=10'} 149 | deprecated: This functionality has been moved to @npmcli/fs 150 | dependencies: 151 | mkdirp: 1.0.4 152 | rimraf: 3.0.2 153 | dev: false 154 | optional: true 155 | 156 | /@sapphire/async-queue/1.5.0: 157 | resolution: {integrity: sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==} 158 | engines: {node: '>=v14.0.0', npm: '>=7.0.0'} 159 | dev: false 160 | 161 | /@sapphire/shapeshift/3.7.0: 162 | resolution: {integrity: sha512-A6vI1zJoxhjWo4grsxpBRBgk96SqSdjLX5WlzKp9H+bJbkM07mvwcbtbVAmUZHbi/OG3HLfiZ1rlw4BhH6tsBQ==} 163 | engines: {node: '>=v14.0.0', npm: '>=7.0.0'} 164 | dependencies: 165 | fast-deep-equal: 3.1.3 166 | lodash.uniqwith: 4.5.0 167 | dev: false 168 | 169 | /@sapphire/snowflake/3.2.2: 170 | resolution: {integrity: sha512-ula2O0kpSZtX9rKXNeQMrHwNd7E4jPDJYUXmEGTFdMRfyfMw+FPyh04oKMjAiDuOi64bYgVkOV3MjK+loImFhQ==} 171 | engines: {node: '>=v14.0.0', npm: '>=7.0.0'} 172 | dev: false 173 | 174 | /@tokenizer/token/0.3.0: 175 | resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} 176 | dev: false 177 | 178 | /@tootallnate/once/1.1.2: 179 | resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} 180 | engines: {node: '>= 6'} 181 | dev: false 182 | optional: true 183 | 184 | /@types/debug/4.1.7: 185 | resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} 186 | dependencies: 187 | '@types/ms': 0.7.31 188 | dev: false 189 | 190 | /@types/ms/0.7.31: 191 | resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} 192 | dev: false 193 | 194 | /@types/node/18.11.9: 195 | resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==} 196 | dev: false 197 | 198 | /@types/validator/13.7.10: 199 | resolution: {integrity: sha512-t1yxFAR2n0+VO6hd/FJ9F2uezAZVWHLmpmlJzm1eX03+H7+HsuTAp7L8QJs+2pQCfWkP1+EXsGK9Z9v7o/qPVQ==} 200 | dev: false 201 | 202 | /@types/ws/8.5.3: 203 | resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} 204 | dependencies: 205 | '@types/node': 18.11.9 206 | dev: false 207 | 208 | /abbrev/1.1.1: 209 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 210 | dev: false 211 | 212 | /acorn-jsx/5.3.2_acorn@8.8.1: 213 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 214 | peerDependencies: 215 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 216 | dependencies: 217 | acorn: 8.8.1 218 | dev: true 219 | 220 | /acorn/8.8.1: 221 | resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} 222 | engines: {node: '>=0.4.0'} 223 | hasBin: true 224 | dev: true 225 | 226 | /agent-base/6.0.2: 227 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 228 | engines: {node: '>= 6.0.0'} 229 | dependencies: 230 | debug: 4.3.4 231 | transitivePeerDependencies: 232 | - supports-color 233 | dev: false 234 | 235 | /agentkeepalive/4.2.1: 236 | resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} 237 | engines: {node: '>= 8.0.0'} 238 | dependencies: 239 | debug: 4.3.4 240 | depd: 1.1.2 241 | humanize-ms: 1.2.1 242 | transitivePeerDependencies: 243 | - supports-color 244 | dev: false 245 | optional: true 246 | 247 | /aggregate-error/3.1.0: 248 | resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} 249 | engines: {node: '>=8'} 250 | dependencies: 251 | clean-stack: 2.2.0 252 | indent-string: 4.0.0 253 | dev: false 254 | optional: true 255 | 256 | /ajv/6.12.6: 257 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 258 | dependencies: 259 | fast-deep-equal: 3.1.3 260 | fast-json-stable-stringify: 2.1.0 261 | json-schema-traverse: 0.4.1 262 | uri-js: 4.4.1 263 | dev: true 264 | 265 | /ansi-regex/5.0.1: 266 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 267 | engines: {node: '>=8'} 268 | 269 | /ansi-styles/4.3.0: 270 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 271 | engines: {node: '>=8'} 272 | dependencies: 273 | color-convert: 2.0.1 274 | dev: true 275 | 276 | /aproba/2.0.0: 277 | resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} 278 | dev: false 279 | 280 | /are-we-there-yet/2.0.0: 281 | resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} 282 | engines: {node: '>=10'} 283 | dependencies: 284 | delegates: 1.0.0 285 | readable-stream: 3.6.0 286 | dev: false 287 | 288 | /are-we-there-yet/3.0.1: 289 | resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} 290 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 291 | dependencies: 292 | delegates: 1.0.0 293 | readable-stream: 3.6.0 294 | dev: false 295 | optional: true 296 | 297 | /argparse/2.0.1: 298 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 299 | dev: true 300 | 301 | /balanced-match/1.0.2: 302 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 303 | 304 | /brace-expansion/1.1.11: 305 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 306 | dependencies: 307 | balanced-match: 1.0.2 308 | concat-map: 0.0.1 309 | 310 | /busboy/1.6.0: 311 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 312 | engines: {node: '>=10.16.0'} 313 | dependencies: 314 | streamsearch: 1.1.0 315 | dev: false 316 | 317 | /cacache/15.3.0: 318 | resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} 319 | engines: {node: '>= 10'} 320 | dependencies: 321 | '@npmcli/fs': 1.1.1 322 | '@npmcli/move-file': 1.1.2 323 | chownr: 2.0.0 324 | fs-minipass: 2.1.0 325 | glob: 7.2.3 326 | infer-owner: 1.0.4 327 | lru-cache: 6.0.0 328 | minipass: 3.3.4 329 | minipass-collect: 1.0.2 330 | minipass-flush: 1.0.5 331 | minipass-pipeline: 1.2.4 332 | mkdirp: 1.0.4 333 | p-map: 4.0.0 334 | promise-inflight: 1.0.1 335 | rimraf: 3.0.2 336 | ssri: 8.0.1 337 | tar: 6.1.12 338 | unique-filename: 1.1.1 339 | transitivePeerDependencies: 340 | - bluebird 341 | dev: false 342 | optional: true 343 | 344 | /callsites/3.1.0: 345 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 346 | engines: {node: '>=6'} 347 | dev: true 348 | 349 | /chalk/4.1.2: 350 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 351 | engines: {node: '>=10'} 352 | dependencies: 353 | ansi-styles: 4.3.0 354 | supports-color: 7.2.0 355 | dev: true 356 | 357 | /chownr/2.0.0: 358 | resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} 359 | engines: {node: '>=10'} 360 | dev: false 361 | 362 | /clean-stack/2.2.0: 363 | resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} 364 | engines: {node: '>=6'} 365 | dev: false 366 | optional: true 367 | 368 | /color-convert/2.0.1: 369 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 370 | engines: {node: '>=7.0.0'} 371 | dependencies: 372 | color-name: 1.1.4 373 | dev: true 374 | 375 | /color-name/1.1.4: 376 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 377 | dev: true 378 | 379 | /color-support/1.1.3: 380 | resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} 381 | hasBin: true 382 | dev: false 383 | 384 | /concat-map/0.0.1: 385 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 386 | 387 | /console-control-strings/1.1.0: 388 | resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 389 | dev: false 390 | 391 | /cross-spawn/7.0.3: 392 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 393 | engines: {node: '>= 8'} 394 | dependencies: 395 | path-key: 3.1.1 396 | shebang-command: 2.0.0 397 | which: 2.0.2 398 | dev: true 399 | 400 | /debug/4.3.4: 401 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 402 | engines: {node: '>=6.0'} 403 | peerDependencies: 404 | supports-color: '*' 405 | peerDependenciesMeta: 406 | supports-color: 407 | optional: true 408 | dependencies: 409 | ms: 2.1.2 410 | 411 | /deep-is/0.1.4: 412 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 413 | dev: true 414 | 415 | /delegates/1.0.0: 416 | resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 417 | dev: false 418 | 419 | /depd/1.1.2: 420 | resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} 421 | engines: {node: '>= 0.6'} 422 | dev: false 423 | optional: true 424 | 425 | /detect-libc/2.0.1: 426 | resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} 427 | engines: {node: '>=8'} 428 | dev: false 429 | 430 | /discord-api-types/0.37.18: 431 | resolution: {integrity: sha512-mJ+9C8gmG5csssVZPH06Y8IGiJykljFyZc6n6F+T3vKo6yNBI5TtLIbwt6t9hJzsR5f1ITzRZ6cuPrTvRCUxqA==} 432 | dev: false 433 | 434 | /discord.js/14.6.0: 435 | resolution: {integrity: sha512-On1K7xpJZRe0KsziIaDih2ksYPhgxym/ZqV45i1f3yig4vUotikqs7qp5oXiTzQ/UTiNRCixUWFTh7vA1YBCqw==} 436 | engines: {node: '>=16.9.0'} 437 | dependencies: 438 | '@discordjs/builders': 1.3.0 439 | '@discordjs/collection': 1.2.0 440 | '@discordjs/rest': 1.3.0 441 | '@discordjs/util': 0.1.0 442 | '@sapphire/snowflake': 3.2.2 443 | '@types/ws': 8.5.3 444 | discord-api-types: 0.37.18 445 | fast-deep-equal: 3.1.3 446 | lodash.snakecase: 4.1.1 447 | tslib: 2.4.1 448 | undici: 5.12.0 449 | ws: 8.11.0 450 | transitivePeerDependencies: 451 | - bufferutil 452 | - utf-8-validate 453 | dev: false 454 | 455 | /doctrine/3.0.0: 456 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 457 | engines: {node: '>=6.0.0'} 458 | dependencies: 459 | esutils: 2.0.3 460 | dev: true 461 | 462 | /dotenv/16.0.3: 463 | resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} 464 | engines: {node: '>=12'} 465 | dev: false 466 | 467 | /dottie/2.0.2: 468 | resolution: {integrity: sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==} 469 | dev: false 470 | 471 | /emoji-regex/8.0.0: 472 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 473 | dev: false 474 | 475 | /encoding/0.1.13: 476 | resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} 477 | requiresBuild: true 478 | dependencies: 479 | iconv-lite: 0.6.3 480 | dev: false 481 | optional: true 482 | 483 | /env-paths/2.2.1: 484 | resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} 485 | engines: {node: '>=6'} 486 | dev: false 487 | optional: true 488 | 489 | /err-code/2.0.3: 490 | resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} 491 | dev: false 492 | optional: true 493 | 494 | /escape-string-regexp/4.0.0: 495 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 496 | engines: {node: '>=10'} 497 | dev: true 498 | 499 | /eslint-scope/7.1.1: 500 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 501 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 502 | dependencies: 503 | esrecurse: 4.3.0 504 | estraverse: 5.3.0 505 | dev: true 506 | 507 | /eslint-utils/3.0.0_eslint@8.27.0: 508 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 509 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 510 | peerDependencies: 511 | eslint: '>=5' 512 | dependencies: 513 | eslint: 8.27.0 514 | eslint-visitor-keys: 2.1.0 515 | dev: true 516 | 517 | /eslint-visitor-keys/2.1.0: 518 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 519 | engines: {node: '>=10'} 520 | dev: true 521 | 522 | /eslint-visitor-keys/3.3.0: 523 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 524 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 525 | dev: true 526 | 527 | /eslint/8.27.0: 528 | resolution: {integrity: sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==} 529 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 530 | hasBin: true 531 | dependencies: 532 | '@eslint/eslintrc': 1.3.3 533 | '@humanwhocodes/config-array': 0.11.7 534 | '@humanwhocodes/module-importer': 1.0.1 535 | '@nodelib/fs.walk': 1.2.8 536 | ajv: 6.12.6 537 | chalk: 4.1.2 538 | cross-spawn: 7.0.3 539 | debug: 4.3.4 540 | doctrine: 3.0.0 541 | escape-string-regexp: 4.0.0 542 | eslint-scope: 7.1.1 543 | eslint-utils: 3.0.0_eslint@8.27.0 544 | eslint-visitor-keys: 3.3.0 545 | espree: 9.4.1 546 | esquery: 1.4.0 547 | esutils: 2.0.3 548 | fast-deep-equal: 3.1.3 549 | file-entry-cache: 6.0.1 550 | find-up: 5.0.0 551 | glob-parent: 6.0.2 552 | globals: 13.18.0 553 | grapheme-splitter: 1.0.4 554 | ignore: 5.2.0 555 | import-fresh: 3.3.0 556 | imurmurhash: 0.1.4 557 | is-glob: 4.0.3 558 | is-path-inside: 3.0.3 559 | js-sdsl: 4.1.5 560 | js-yaml: 4.1.0 561 | json-stable-stringify-without-jsonify: 1.0.1 562 | levn: 0.4.1 563 | lodash.merge: 4.6.2 564 | minimatch: 3.1.2 565 | natural-compare: 1.4.0 566 | optionator: 0.9.1 567 | regexpp: 3.2.0 568 | strip-ansi: 6.0.1 569 | strip-json-comments: 3.1.1 570 | text-table: 0.2.0 571 | transitivePeerDependencies: 572 | - supports-color 573 | dev: true 574 | 575 | /espree/9.4.1: 576 | resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} 577 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 578 | dependencies: 579 | acorn: 8.8.1 580 | acorn-jsx: 5.3.2_acorn@8.8.1 581 | eslint-visitor-keys: 3.3.0 582 | dev: true 583 | 584 | /esquery/1.4.0: 585 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 586 | engines: {node: '>=0.10'} 587 | dependencies: 588 | estraverse: 5.3.0 589 | dev: true 590 | 591 | /esrecurse/4.3.0: 592 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 593 | engines: {node: '>=4.0'} 594 | dependencies: 595 | estraverse: 5.3.0 596 | dev: true 597 | 598 | /estraverse/5.3.0: 599 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 600 | engines: {node: '>=4.0'} 601 | dev: true 602 | 603 | /esutils/2.0.3: 604 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 605 | engines: {node: '>=0.10.0'} 606 | dev: true 607 | 608 | /fast-deep-equal/3.1.3: 609 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 610 | 611 | /fast-json-stable-stringify/2.1.0: 612 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 613 | dev: true 614 | 615 | /fast-levenshtein/2.0.6: 616 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 617 | dev: true 618 | 619 | /fastq/1.13.0: 620 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 621 | dependencies: 622 | reusify: 1.0.4 623 | dev: true 624 | 625 | /file-entry-cache/6.0.1: 626 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 627 | engines: {node: ^10.12.0 || >=12.0.0} 628 | dependencies: 629 | flat-cache: 3.0.4 630 | dev: true 631 | 632 | /file-type/18.0.0: 633 | resolution: {integrity: sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA==} 634 | engines: {node: '>=14.16'} 635 | dependencies: 636 | readable-web-to-node-stream: 3.0.2 637 | strtok3: 7.0.0 638 | token-types: 5.0.1 639 | dev: false 640 | 641 | /find-up/5.0.0: 642 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 643 | engines: {node: '>=10'} 644 | dependencies: 645 | locate-path: 6.0.0 646 | path-exists: 4.0.0 647 | dev: true 648 | 649 | /flat-cache/3.0.4: 650 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 651 | engines: {node: ^10.12.0 || >=12.0.0} 652 | dependencies: 653 | flatted: 3.2.7 654 | rimraf: 3.0.2 655 | dev: true 656 | 657 | /flatted/3.2.7: 658 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 659 | dev: true 660 | 661 | /fs-minipass/2.1.0: 662 | resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} 663 | engines: {node: '>= 8'} 664 | dependencies: 665 | minipass: 3.3.4 666 | dev: false 667 | 668 | /fs.realpath/1.0.0: 669 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 670 | 671 | /gauge/3.0.2: 672 | resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} 673 | engines: {node: '>=10'} 674 | dependencies: 675 | aproba: 2.0.0 676 | color-support: 1.1.3 677 | console-control-strings: 1.1.0 678 | has-unicode: 2.0.1 679 | object-assign: 4.1.1 680 | signal-exit: 3.0.7 681 | string-width: 4.2.3 682 | strip-ansi: 6.0.1 683 | wide-align: 1.1.5 684 | dev: false 685 | 686 | /gauge/4.0.4: 687 | resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} 688 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 689 | dependencies: 690 | aproba: 2.0.0 691 | color-support: 1.1.3 692 | console-control-strings: 1.1.0 693 | has-unicode: 2.0.1 694 | signal-exit: 3.0.7 695 | string-width: 4.2.3 696 | strip-ansi: 6.0.1 697 | wide-align: 1.1.5 698 | dev: false 699 | optional: true 700 | 701 | /glob-parent/6.0.2: 702 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 703 | engines: {node: '>=10.13.0'} 704 | dependencies: 705 | is-glob: 4.0.3 706 | dev: true 707 | 708 | /glob/7.2.3: 709 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 710 | dependencies: 711 | fs.realpath: 1.0.0 712 | inflight: 1.0.6 713 | inherits: 2.0.4 714 | minimatch: 3.1.2 715 | once: 1.4.0 716 | path-is-absolute: 1.0.1 717 | 718 | /globals/13.18.0: 719 | resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} 720 | engines: {node: '>=8'} 721 | dependencies: 722 | type-fest: 0.20.2 723 | dev: true 724 | 725 | /graceful-fs/4.2.10: 726 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 727 | dev: false 728 | optional: true 729 | 730 | /grapheme-splitter/1.0.4: 731 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 732 | dev: true 733 | 734 | /has-flag/4.0.0: 735 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 736 | engines: {node: '>=8'} 737 | dev: true 738 | 739 | /has-unicode/2.0.1: 740 | resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 741 | dev: false 742 | 743 | /http-cache-semantics/4.1.0: 744 | resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} 745 | dev: false 746 | optional: true 747 | 748 | /http-proxy-agent/4.0.1: 749 | resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} 750 | engines: {node: '>= 6'} 751 | dependencies: 752 | '@tootallnate/once': 1.1.2 753 | agent-base: 6.0.2 754 | debug: 4.3.4 755 | transitivePeerDependencies: 756 | - supports-color 757 | dev: false 758 | optional: true 759 | 760 | /https-proxy-agent/5.0.1: 761 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 762 | engines: {node: '>= 6'} 763 | dependencies: 764 | agent-base: 6.0.2 765 | debug: 4.3.4 766 | transitivePeerDependencies: 767 | - supports-color 768 | dev: false 769 | 770 | /humanize-ms/1.2.1: 771 | resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} 772 | dependencies: 773 | ms: 2.1.2 774 | dev: false 775 | optional: true 776 | 777 | /iconv-lite/0.6.3: 778 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 779 | engines: {node: '>=0.10.0'} 780 | dependencies: 781 | safer-buffer: 2.1.2 782 | dev: false 783 | optional: true 784 | 785 | /ieee754/1.2.1: 786 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 787 | dev: false 788 | 789 | /ignore/5.2.0: 790 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 791 | engines: {node: '>= 4'} 792 | dev: true 793 | 794 | /import-fresh/3.3.0: 795 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 796 | engines: {node: '>=6'} 797 | dependencies: 798 | parent-module: 1.0.1 799 | resolve-from: 4.0.0 800 | dev: true 801 | 802 | /imurmurhash/0.1.4: 803 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 804 | engines: {node: '>=0.8.19'} 805 | 806 | /indent-string/4.0.0: 807 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 808 | engines: {node: '>=8'} 809 | dev: false 810 | optional: true 811 | 812 | /infer-owner/1.0.4: 813 | resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} 814 | dev: false 815 | optional: true 816 | 817 | /inflection/1.13.4: 818 | resolution: {integrity: sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==} 819 | engines: {'0': node >= 0.4.0} 820 | dev: false 821 | 822 | /inflight/1.0.6: 823 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 824 | dependencies: 825 | once: 1.4.0 826 | wrappy: 1.0.2 827 | 828 | /inherits/2.0.4: 829 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 830 | 831 | /ip/2.0.0: 832 | resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} 833 | dev: false 834 | optional: true 835 | 836 | /is-extglob/2.1.1: 837 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 838 | engines: {node: '>=0.10.0'} 839 | dev: true 840 | 841 | /is-fullwidth-code-point/3.0.0: 842 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 843 | engines: {node: '>=8'} 844 | dev: false 845 | 846 | /is-glob/4.0.3: 847 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 848 | engines: {node: '>=0.10.0'} 849 | dependencies: 850 | is-extglob: 2.1.1 851 | dev: true 852 | 853 | /is-lambda/1.0.1: 854 | resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} 855 | dev: false 856 | optional: true 857 | 858 | /is-path-inside/3.0.3: 859 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 860 | engines: {node: '>=8'} 861 | dev: true 862 | 863 | /isexe/2.0.0: 864 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 865 | 866 | /js-sdsl/4.1.5: 867 | resolution: {integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==} 868 | dev: true 869 | 870 | /js-yaml/4.1.0: 871 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 872 | hasBin: true 873 | dependencies: 874 | argparse: 2.0.1 875 | dev: true 876 | 877 | /json-schema-traverse/0.4.1: 878 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 879 | dev: true 880 | 881 | /json-stable-stringify-without-jsonify/1.0.1: 882 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 883 | dev: true 884 | 885 | /levn/0.4.1: 886 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 887 | engines: {node: '>= 0.8.0'} 888 | dependencies: 889 | prelude-ls: 1.2.1 890 | type-check: 0.4.0 891 | dev: true 892 | 893 | /locate-path/6.0.0: 894 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 895 | engines: {node: '>=10'} 896 | dependencies: 897 | p-locate: 5.0.0 898 | dev: true 899 | 900 | /lodash.merge/4.6.2: 901 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 902 | dev: true 903 | 904 | /lodash.snakecase/4.1.1: 905 | resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} 906 | dev: false 907 | 908 | /lodash.uniqwith/4.5.0: 909 | resolution: {integrity: sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==} 910 | dev: false 911 | 912 | /lodash/4.17.21: 913 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 914 | dev: false 915 | 916 | /lru-cache/6.0.0: 917 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 918 | engines: {node: '>=10'} 919 | dependencies: 920 | yallist: 4.0.0 921 | dev: false 922 | 923 | /make-dir/3.1.0: 924 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 925 | engines: {node: '>=8'} 926 | dependencies: 927 | semver: 6.3.0 928 | dev: false 929 | 930 | /make-fetch-happen/9.1.0: 931 | resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} 932 | engines: {node: '>= 10'} 933 | dependencies: 934 | agentkeepalive: 4.2.1 935 | cacache: 15.3.0 936 | http-cache-semantics: 4.1.0 937 | http-proxy-agent: 4.0.1 938 | https-proxy-agent: 5.0.1 939 | is-lambda: 1.0.1 940 | lru-cache: 6.0.0 941 | minipass: 3.3.4 942 | minipass-collect: 1.0.2 943 | minipass-fetch: 1.4.1 944 | minipass-flush: 1.0.5 945 | minipass-pipeline: 1.2.4 946 | negotiator: 0.6.3 947 | promise-retry: 2.0.1 948 | socks-proxy-agent: 6.2.1 949 | ssri: 8.0.1 950 | transitivePeerDependencies: 951 | - bluebird 952 | - supports-color 953 | dev: false 954 | optional: true 955 | 956 | /minimatch/3.1.2: 957 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 958 | dependencies: 959 | brace-expansion: 1.1.11 960 | 961 | /minipass-collect/1.0.2: 962 | resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} 963 | engines: {node: '>= 8'} 964 | dependencies: 965 | minipass: 3.3.4 966 | dev: false 967 | optional: true 968 | 969 | /minipass-fetch/1.4.1: 970 | resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} 971 | engines: {node: '>=8'} 972 | dependencies: 973 | minipass: 3.3.4 974 | minipass-sized: 1.0.3 975 | minizlib: 2.1.2 976 | optionalDependencies: 977 | encoding: 0.1.13 978 | dev: false 979 | optional: true 980 | 981 | /minipass-flush/1.0.5: 982 | resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} 983 | engines: {node: '>= 8'} 984 | dependencies: 985 | minipass: 3.3.4 986 | dev: false 987 | optional: true 988 | 989 | /minipass-pipeline/1.2.4: 990 | resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} 991 | engines: {node: '>=8'} 992 | dependencies: 993 | minipass: 3.3.4 994 | dev: false 995 | optional: true 996 | 997 | /minipass-sized/1.0.3: 998 | resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} 999 | engines: {node: '>=8'} 1000 | dependencies: 1001 | minipass: 3.3.4 1002 | dev: false 1003 | optional: true 1004 | 1005 | /minipass/3.3.4: 1006 | resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} 1007 | engines: {node: '>=8'} 1008 | dependencies: 1009 | yallist: 4.0.0 1010 | dev: false 1011 | 1012 | /minizlib/2.1.2: 1013 | resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} 1014 | engines: {node: '>= 8'} 1015 | dependencies: 1016 | minipass: 3.3.4 1017 | yallist: 4.0.0 1018 | dev: false 1019 | 1020 | /mkdirp/1.0.4: 1021 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 1022 | engines: {node: '>=10'} 1023 | hasBin: true 1024 | dev: false 1025 | 1026 | /moment-timezone/0.5.39: 1027 | resolution: {integrity: sha512-hoB6suq4ISDj7BDgctiOy6zljBsdYT0++0ZzZm9rtxIvJhIbQ3nmbgSWe7dNFGurl6/7b1OUkHlmN9JWgXVz7w==} 1028 | dependencies: 1029 | moment: 2.29.4 1030 | dev: false 1031 | 1032 | /moment/2.29.4: 1033 | resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} 1034 | dev: false 1035 | 1036 | /ms/2.1.2: 1037 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1038 | 1039 | /natural-compare/1.4.0: 1040 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1041 | dev: true 1042 | 1043 | /negotiator/0.6.3: 1044 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 1045 | engines: {node: '>= 0.6'} 1046 | dev: false 1047 | optional: true 1048 | 1049 | /node-addon-api/4.3.0: 1050 | resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} 1051 | dev: false 1052 | 1053 | /node-fetch/2.6.7: 1054 | resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} 1055 | engines: {node: 4.x || >=6.0.0} 1056 | peerDependencies: 1057 | encoding: ^0.1.0 1058 | peerDependenciesMeta: 1059 | encoding: 1060 | optional: true 1061 | dependencies: 1062 | whatwg-url: 5.0.0 1063 | dev: false 1064 | 1065 | /node-gyp/8.4.1: 1066 | resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} 1067 | engines: {node: '>= 10.12.0'} 1068 | hasBin: true 1069 | requiresBuild: true 1070 | dependencies: 1071 | env-paths: 2.2.1 1072 | glob: 7.2.3 1073 | graceful-fs: 4.2.10 1074 | make-fetch-happen: 9.1.0 1075 | nopt: 5.0.0 1076 | npmlog: 6.0.2 1077 | rimraf: 3.0.2 1078 | semver: 7.3.8 1079 | tar: 6.1.12 1080 | which: 2.0.2 1081 | transitivePeerDependencies: 1082 | - bluebird 1083 | - supports-color 1084 | dev: false 1085 | optional: true 1086 | 1087 | /nopt/5.0.0: 1088 | resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} 1089 | engines: {node: '>=6'} 1090 | hasBin: true 1091 | dependencies: 1092 | abbrev: 1.1.1 1093 | dev: false 1094 | 1095 | /npmlog/5.0.1: 1096 | resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} 1097 | dependencies: 1098 | are-we-there-yet: 2.0.0 1099 | console-control-strings: 1.1.0 1100 | gauge: 3.0.2 1101 | set-blocking: 2.0.0 1102 | dev: false 1103 | 1104 | /npmlog/6.0.2: 1105 | resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} 1106 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1107 | dependencies: 1108 | are-we-there-yet: 3.0.1 1109 | console-control-strings: 1.1.0 1110 | gauge: 4.0.4 1111 | set-blocking: 2.0.0 1112 | dev: false 1113 | optional: true 1114 | 1115 | /object-assign/4.1.1: 1116 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1117 | engines: {node: '>=0.10.0'} 1118 | dev: false 1119 | 1120 | /once/1.4.0: 1121 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1122 | dependencies: 1123 | wrappy: 1.0.2 1124 | 1125 | /optionator/0.9.1: 1126 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1127 | engines: {node: '>= 0.8.0'} 1128 | dependencies: 1129 | deep-is: 0.1.4 1130 | fast-levenshtein: 2.0.6 1131 | levn: 0.4.1 1132 | prelude-ls: 1.2.1 1133 | type-check: 0.4.0 1134 | word-wrap: 1.2.3 1135 | dev: true 1136 | 1137 | /p-limit/3.1.0: 1138 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1139 | engines: {node: '>=10'} 1140 | dependencies: 1141 | yocto-queue: 0.1.0 1142 | dev: true 1143 | 1144 | /p-locate/5.0.0: 1145 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1146 | engines: {node: '>=10'} 1147 | dependencies: 1148 | p-limit: 3.1.0 1149 | dev: true 1150 | 1151 | /p-map/4.0.0: 1152 | resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} 1153 | engines: {node: '>=10'} 1154 | dependencies: 1155 | aggregate-error: 3.1.0 1156 | dev: false 1157 | optional: true 1158 | 1159 | /parent-module/1.0.1: 1160 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1161 | engines: {node: '>=6'} 1162 | dependencies: 1163 | callsites: 3.1.0 1164 | dev: true 1165 | 1166 | /path-exists/4.0.0: 1167 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1168 | engines: {node: '>=8'} 1169 | dev: true 1170 | 1171 | /path-is-absolute/1.0.1: 1172 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1173 | engines: {node: '>=0.10.0'} 1174 | 1175 | /path-key/3.1.1: 1176 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1177 | engines: {node: '>=8'} 1178 | dev: true 1179 | 1180 | /peek-readable/5.0.0: 1181 | resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} 1182 | engines: {node: '>=14.16'} 1183 | dev: false 1184 | 1185 | /pg-connection-string/2.5.0: 1186 | resolution: {integrity: sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==} 1187 | dev: false 1188 | 1189 | /prelude-ls/1.2.1: 1190 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1191 | engines: {node: '>= 0.8.0'} 1192 | dev: true 1193 | 1194 | /promise-inflight/1.0.1: 1195 | resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} 1196 | peerDependencies: 1197 | bluebird: '*' 1198 | peerDependenciesMeta: 1199 | bluebird: 1200 | optional: true 1201 | dev: false 1202 | optional: true 1203 | 1204 | /promise-retry/2.0.1: 1205 | resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} 1206 | engines: {node: '>=10'} 1207 | dependencies: 1208 | err-code: 2.0.3 1209 | retry: 0.12.0 1210 | dev: false 1211 | optional: true 1212 | 1213 | /punycode/2.1.1: 1214 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 1215 | engines: {node: '>=6'} 1216 | dev: true 1217 | 1218 | /queue-microtask/1.2.3: 1219 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1220 | dev: true 1221 | 1222 | /readable-stream/3.6.0: 1223 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 1224 | engines: {node: '>= 6'} 1225 | dependencies: 1226 | inherits: 2.0.4 1227 | string_decoder: 1.3.0 1228 | util-deprecate: 1.0.2 1229 | dev: false 1230 | 1231 | /readable-web-to-node-stream/3.0.2: 1232 | resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} 1233 | engines: {node: '>=8'} 1234 | dependencies: 1235 | readable-stream: 3.6.0 1236 | dev: false 1237 | 1238 | /regexpp/3.2.0: 1239 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 1240 | engines: {node: '>=8'} 1241 | dev: true 1242 | 1243 | /resolve-from/4.0.0: 1244 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1245 | engines: {node: '>=4'} 1246 | dev: true 1247 | 1248 | /retry-as-promised/6.1.0: 1249 | resolution: {integrity: sha512-Hj/jY+wFC+SB9SDlIIFWiGOHnNG0swYbGYsOj2BJ8u2HKUaobNKab0OIC0zOLYzDy0mb7A4xA5BMo4LMz5YtEA==} 1250 | dev: false 1251 | 1252 | /retry/0.12.0: 1253 | resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} 1254 | engines: {node: '>= 4'} 1255 | dev: false 1256 | optional: true 1257 | 1258 | /reusify/1.0.4: 1259 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1260 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1261 | dev: true 1262 | 1263 | /rimraf/3.0.2: 1264 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1265 | hasBin: true 1266 | dependencies: 1267 | glob: 7.2.3 1268 | 1269 | /run-parallel/1.2.0: 1270 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1271 | dependencies: 1272 | queue-microtask: 1.2.3 1273 | dev: true 1274 | 1275 | /safe-buffer/5.2.1: 1276 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1277 | dev: false 1278 | 1279 | /safer-buffer/2.1.2: 1280 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1281 | dev: false 1282 | optional: true 1283 | 1284 | /semver/6.3.0: 1285 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1286 | hasBin: true 1287 | dev: false 1288 | 1289 | /semver/7.3.8: 1290 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 1291 | engines: {node: '>=10'} 1292 | hasBin: true 1293 | dependencies: 1294 | lru-cache: 6.0.0 1295 | dev: false 1296 | 1297 | /sequelize-pool/7.1.0: 1298 | resolution: {integrity: sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==} 1299 | engines: {node: '>= 10.0.0'} 1300 | dev: false 1301 | 1302 | /sequelize/6.25.8_sqlite3@5.1.2: 1303 | resolution: {integrity: sha512-GDjbN3P9KRjxL+ATNPMWU0RFAO3KviGzvowajqPCkvEdcEW9CFL4d0iDR/SFAf+JiQ7/2BQ4O3PBLBxNlnVNWw==} 1304 | engines: {node: '>=10.0.0'} 1305 | peerDependencies: 1306 | ibm_db: '*' 1307 | mariadb: '*' 1308 | mysql2: '*' 1309 | oracledb: '*' 1310 | pg: '*' 1311 | pg-hstore: '*' 1312 | snowflake-sdk: '*' 1313 | sqlite3: '*' 1314 | tedious: '*' 1315 | peerDependenciesMeta: 1316 | ibm_db: 1317 | optional: true 1318 | mariadb: 1319 | optional: true 1320 | mysql2: 1321 | optional: true 1322 | oracledb: 1323 | optional: true 1324 | pg: 1325 | optional: true 1326 | pg-hstore: 1327 | optional: true 1328 | snowflake-sdk: 1329 | optional: true 1330 | sqlite3: 1331 | optional: true 1332 | tedious: 1333 | optional: true 1334 | dependencies: 1335 | '@types/debug': 4.1.7 1336 | '@types/validator': 13.7.10 1337 | debug: 4.3.4 1338 | dottie: 2.0.2 1339 | inflection: 1.13.4 1340 | lodash: 4.17.21 1341 | moment: 2.29.4 1342 | moment-timezone: 0.5.39 1343 | pg-connection-string: 2.5.0 1344 | retry-as-promised: 6.1.0 1345 | semver: 7.3.8 1346 | sequelize-pool: 7.1.0 1347 | sqlite3: 5.1.2 1348 | toposort-class: 1.0.1 1349 | uuid: 8.3.2 1350 | validator: 13.7.0 1351 | wkx: 0.5.0 1352 | transitivePeerDependencies: 1353 | - supports-color 1354 | dev: false 1355 | 1356 | /set-blocking/2.0.0: 1357 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 1358 | dev: false 1359 | 1360 | /shebang-command/2.0.0: 1361 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1362 | engines: {node: '>=8'} 1363 | dependencies: 1364 | shebang-regex: 3.0.0 1365 | dev: true 1366 | 1367 | /shebang-regex/3.0.0: 1368 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1369 | engines: {node: '>=8'} 1370 | dev: true 1371 | 1372 | /signal-exit/3.0.7: 1373 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1374 | dev: false 1375 | 1376 | /smart-buffer/4.2.0: 1377 | resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} 1378 | engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} 1379 | dev: false 1380 | optional: true 1381 | 1382 | /socks-proxy-agent/6.2.1: 1383 | resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} 1384 | engines: {node: '>= 10'} 1385 | dependencies: 1386 | agent-base: 6.0.2 1387 | debug: 4.3.4 1388 | socks: 2.7.1 1389 | transitivePeerDependencies: 1390 | - supports-color 1391 | dev: false 1392 | optional: true 1393 | 1394 | /socks/2.7.1: 1395 | resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} 1396 | engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} 1397 | dependencies: 1398 | ip: 2.0.0 1399 | smart-buffer: 4.2.0 1400 | dev: false 1401 | optional: true 1402 | 1403 | /sqlite3/5.1.2: 1404 | resolution: {integrity: sha512-D0Reg6pRWAFXFUnZKsszCI67tthFD8fGPewRddDCX6w4cYwz3MbvuwRICbL+YQjBAh9zbw+lJ/V9oC8nG5j6eg==} 1405 | requiresBuild: true 1406 | peerDependenciesMeta: 1407 | node-gyp: 1408 | optional: true 1409 | dependencies: 1410 | '@mapbox/node-pre-gyp': 1.0.10 1411 | node-addon-api: 4.3.0 1412 | tar: 6.1.12 1413 | optionalDependencies: 1414 | node-gyp: 8.4.1 1415 | transitivePeerDependencies: 1416 | - bluebird 1417 | - encoding 1418 | - supports-color 1419 | dev: false 1420 | 1421 | /ssri/8.0.1: 1422 | resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} 1423 | engines: {node: '>= 8'} 1424 | dependencies: 1425 | minipass: 3.3.4 1426 | dev: false 1427 | optional: true 1428 | 1429 | /streamsearch/1.1.0: 1430 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1431 | engines: {node: '>=10.0.0'} 1432 | dev: false 1433 | 1434 | /string-width/4.2.3: 1435 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1436 | engines: {node: '>=8'} 1437 | dependencies: 1438 | emoji-regex: 8.0.0 1439 | is-fullwidth-code-point: 3.0.0 1440 | strip-ansi: 6.0.1 1441 | dev: false 1442 | 1443 | /string_decoder/1.3.0: 1444 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1445 | dependencies: 1446 | safe-buffer: 5.2.1 1447 | dev: false 1448 | 1449 | /strip-ansi/6.0.1: 1450 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1451 | engines: {node: '>=8'} 1452 | dependencies: 1453 | ansi-regex: 5.0.1 1454 | 1455 | /strip-json-comments/3.1.1: 1456 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1457 | engines: {node: '>=8'} 1458 | dev: true 1459 | 1460 | /strtok3/7.0.0: 1461 | resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} 1462 | engines: {node: '>=14.16'} 1463 | dependencies: 1464 | '@tokenizer/token': 0.3.0 1465 | peek-readable: 5.0.0 1466 | dev: false 1467 | 1468 | /supports-color/7.2.0: 1469 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1470 | engines: {node: '>=8'} 1471 | dependencies: 1472 | has-flag: 4.0.0 1473 | dev: true 1474 | 1475 | /tar/6.1.12: 1476 | resolution: {integrity: sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==} 1477 | engines: {node: '>=10'} 1478 | dependencies: 1479 | chownr: 2.0.0 1480 | fs-minipass: 2.1.0 1481 | minipass: 3.3.4 1482 | minizlib: 2.1.2 1483 | mkdirp: 1.0.4 1484 | yallist: 4.0.0 1485 | dev: false 1486 | 1487 | /text-table/0.2.0: 1488 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1489 | dev: true 1490 | 1491 | /token-types/5.0.1: 1492 | resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} 1493 | engines: {node: '>=14.16'} 1494 | dependencies: 1495 | '@tokenizer/token': 0.3.0 1496 | ieee754: 1.2.1 1497 | dev: false 1498 | 1499 | /toposort-class/1.0.1: 1500 | resolution: {integrity: sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==} 1501 | dev: false 1502 | 1503 | /tr46/0.0.3: 1504 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 1505 | dev: false 1506 | 1507 | /ts-mixer/6.0.2: 1508 | resolution: {integrity: sha512-zvHx3VM83m2WYCE8XL99uaM7mFwYSkjR2OZti98fabHrwkjsCvgwChda5xctein3xGOyaQhtTeDq/1H/GNvF3A==} 1509 | dev: false 1510 | 1511 | /tslib/2.4.1: 1512 | resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} 1513 | dev: false 1514 | 1515 | /type-check/0.4.0: 1516 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1517 | engines: {node: '>= 0.8.0'} 1518 | dependencies: 1519 | prelude-ls: 1.2.1 1520 | dev: true 1521 | 1522 | /type-fest/0.20.2: 1523 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1524 | engines: {node: '>=10'} 1525 | dev: true 1526 | 1527 | /undici/5.12.0: 1528 | resolution: {integrity: sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==} 1529 | engines: {node: '>=12.18'} 1530 | dependencies: 1531 | busboy: 1.6.0 1532 | dev: false 1533 | 1534 | /unique-filename/1.1.1: 1535 | resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} 1536 | dependencies: 1537 | unique-slug: 2.0.2 1538 | dev: false 1539 | optional: true 1540 | 1541 | /unique-slug/2.0.2: 1542 | resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} 1543 | dependencies: 1544 | imurmurhash: 0.1.4 1545 | dev: false 1546 | optional: true 1547 | 1548 | /uri-js/4.4.1: 1549 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1550 | dependencies: 1551 | punycode: 2.1.1 1552 | dev: true 1553 | 1554 | /util-deprecate/1.0.2: 1555 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1556 | dev: false 1557 | 1558 | /uuid/8.3.2: 1559 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 1560 | hasBin: true 1561 | dev: false 1562 | 1563 | /validator/13.7.0: 1564 | resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} 1565 | engines: {node: '>= 0.10'} 1566 | dev: false 1567 | 1568 | /webidl-conversions/3.0.1: 1569 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 1570 | dev: false 1571 | 1572 | /whatwg-url/5.0.0: 1573 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 1574 | dependencies: 1575 | tr46: 0.0.3 1576 | webidl-conversions: 3.0.1 1577 | dev: false 1578 | 1579 | /which/2.0.2: 1580 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1581 | engines: {node: '>= 8'} 1582 | hasBin: true 1583 | dependencies: 1584 | isexe: 2.0.0 1585 | 1586 | /wide-align/1.1.5: 1587 | resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 1588 | dependencies: 1589 | string-width: 4.2.3 1590 | dev: false 1591 | 1592 | /wkx/0.5.0: 1593 | resolution: {integrity: sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==} 1594 | dependencies: 1595 | '@types/node': 18.11.9 1596 | dev: false 1597 | 1598 | /word-wrap/1.2.3: 1599 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 1600 | engines: {node: '>=0.10.0'} 1601 | dev: true 1602 | 1603 | /wrappy/1.0.2: 1604 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1605 | 1606 | /ws/8.11.0: 1607 | resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} 1608 | engines: {node: '>=10.0.0'} 1609 | peerDependencies: 1610 | bufferutil: ^4.0.1 1611 | utf-8-validate: ^5.0.2 1612 | peerDependenciesMeta: 1613 | bufferutil: 1614 | optional: true 1615 | utf-8-validate: 1616 | optional: true 1617 | dev: false 1618 | 1619 | /yallist/4.0.0: 1620 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1621 | dev: false 1622 | 1623 | /yocto-queue/0.1.0: 1624 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1625 | engines: {node: '>=10'} 1626 | dev: true 1627 | --------------------------------------------------------------------------------