├── LICENSE ├── README.md ├── index.js ├── package-lock.json └── package.json /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Safe Development 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🚀 Safe Development - Discord Auth Bot 2 | 3 | **Author: godmodule** 4 | **Version:** 0.8.2 5 | **Safe Development** 6 | 7 | ## Overview 8 | 9 | Welcome to the **Safe Development Discord Auth Bot**! This bot is designed to streamline user management and authentication within your Discord server. With an integrated Express API, it provides a seamless experience for handling user registrations, invite codes, and more. 10 | 11 | ## ✨ Features 12 | 13 | - **Express API for Authentication** 14 | - **User Registration and Management** 15 | - **Invite Code Generation** 16 | - **Ban/Unban Users** 17 | - **HWID Reset Command** 18 | - **User Information Retrieval** 19 | - **Announcement Command** 20 | - **Generate Invites for Users with Access Role** 21 | 22 | ## 🚀 Quick Start Guide 23 | 24 | ### 1. Clone the Repository 25 | ```bash 26 | git clone https://github.com/Safe-Development/Discord-Auth-Bot.git 27 | cd Discord-Auth-Bot 28 | ``` 29 | 30 | ### 2. Install Dependencies 31 | ```bash 32 | npm install 33 | ``` 34 | 35 | ### 3. Configure Environment Variables 36 | Create a `.env` file in the root directory and add the following: 37 | ``` 38 | TOKEN=your_discord_bot_token 39 | CLIENT_ID=your_discord_client_id 40 | GUILD_ID=your_discord_guild_id 41 | OWNER_ID=your_discord_owner_id 42 | SUPPORT_ROLE_ID=your_support_role_id 43 | ACCESS_ROLE_ID=your_access_role_id 44 | ``` 45 | 46 | ### 4. Run the Bot 47 | ```bash 48 | node index.js 49 | ``` 50 | 51 | ## 💡 Usage 52 | 53 | The bot provides several slash commands for managing users and invites: 54 | 55 | - **Register a New User:** `/register` 56 | - **Create a New Invite Code:** `/createinvite days:` 57 | - **Ban a User:** `/ban uid:` 58 | - **Unban a User:** `/unban uid:` 59 | - **Reset a User's HWID:** `/resethwid uid:` 60 | - **Get User Information:** `/user uid:` 61 | - **Get All Users:** `/users` 62 | - **Get All Invites:** `/invites` 63 | - **Send an Announcement:** `/announcement message: ping:` 64 | - **Generate Invites for All Users with Access Role:** `/invitewave` 65 | 66 | ## 🌐 Express API 67 | 68 | The bot also includes an Express API for user authentication: 69 | 70 | - **Endpoint:** `/auth` 71 | - **Method:** `POST` 72 | - **Parameters:** 73 | - `username`: User's username 74 | - `password`: User's password 75 | - `hwid`: User's hardware ID 76 | 77 | Example request: 78 | ```json 79 | { 80 | "username": "godmodule-example", 81 | "password": "safe123-example", 82 | "hwid": "hwid" 83 | } 84 | ``` 85 | 86 | ## 📸 Screenshots 87 | 88 | Here are some screenshots to give you a visual overview of how the bot operates: 89 | 90 | ![Screenshot 1](https://cdn.discordapp.com/attachments/1338893924143468598/1340094681668780176/image.png?ex=67b11bed&is=67afca6d&hm=50297a00fe0e567884a445c35c91f770824fe128358ddff31f85f29e223b3c0c&) 91 | ![Screenshot 2](https://cdn.discordapp.com/attachments/1338893924143468598/1340094682041946266/image.png?ex=67b11bed&is=67afca6d&hm=766bed38693de8f5dff5baaeb256947a9e6dfb5f69aa94becead5a1e0671cfd6&) 92 | 93 | ## 👥 Contribution 94 | 95 | To contribute to the project, follow these steps: 96 | 97 | 1. **Fork the Repository** 98 | 2. **Create a New Branch:** 99 | ```bash 100 | git checkout -b feature-branch 101 | ``` 102 | 3. **Make Your Changes** 103 | 4. **Commit Your Changes:** 104 | ```bash 105 | git commit -m "Description of changes" 106 | ``` 107 | 5. **Push to the Branch:** 108 | ```bash 109 | git push origin feature-branch 110 | ``` 111 | 6. **Create a Pull Request** 112 | 113 | ## 📜 Notes 114 | 115 | - The bot requires the following Discord permissions: 116 | - `Manage Roles` 117 | - `Manage Channels` 118 | - `Send Messages` 119 | - `Read Message History` 120 | 121 | ## 📌 Important Notes 122 | 123 | - **Database Security:** The current implementation does not encrypt the database. It is recommended to use SQLite encryption extensions or migrate to a more secure database system for storing sensitive information. 124 | - **Password Storage:** Passwords are stored in plaintext. It's crucial to hash passwords using a secure hashing algorithm like bcrypt before storing them in the database. 125 | - **Environment Variables:** Ensure that your `.env` file is not exposed publicly. Use `.gitignore` to prevent it from being committed to your repository. 126 | - **Error Handling:** Improve error handling throughout the application to provide more detailed error messages and logging. 127 | - **Scalability:** As the user base grows, consider optimizing database queries and possibly switching to a more robust database system. 128 | 129 | ## 🚀 Future Enhancements 130 | 131 | - **Encryption for Database:** Implement encryption for the SQLite database to enhance security. 132 | - **Password Hashing:** Integrate a password hashing mechanism such as bcrypt. 133 | - **Enhanced Logging:** Add robust logging mechanisms to track and debug issues effectively. 134 | - **Role-Based Access Control:** Implement more granular role-based access control for various commands. 135 | - **Unit Tests:** Add unit tests to ensure the reliability and stability of the bot's functionality. 136 | 137 | --- 138 | ``` 139 | Safe Development © 2025 140 | ```` 141 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* 2 | Safe Development - Discord Bot with Express API 3 | Author: godmodule 4 | Version: 0.8.2 5 | Notes: 6 | - Added an Express API for authentication 7 | - Added a ban/unban button interaction 8 | - Added a HWID reset command 9 | - Added a user information command 10 | - Added a command to generate invites for all users with access role 11 | - Added a command to get all invites 12 | - Added a command to get all users 13 | - Added a command to send an announcement 14 | - Added a command to create an invite code 15 | - Added a command to register a new user 16 | - Added a command to unban a user 17 | */ 18 | 19 | const { Client, GatewayIntentBits, Partials, EmbedBuilder, ModalBuilder, TextInputBuilder, TextInputStyle, ActionRowBuilder, REST, Routes, SlashCommandBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); 20 | const dotenv = require('dotenv'); 21 | const sqlite3 = require('sqlite3').verbose(); 22 | const express = require('express'); 23 | const bodyParser = require('body-parser'); 24 | 25 | dotenv.config(); 26 | 27 | const { TOKEN, CLIENT_ID, GUILD_ID, OWNER_ID, SUPPORT_ROLE_ID, ACCESS_ROLE_ID } = process.env; 28 | 29 | const client = new Client({ 30 | intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMembers], 31 | partials: [Partials.Message, Partials.Channel, Partials.Reaction] 32 | }); 33 | 34 | const app = express(); 35 | app.use(bodyParser.json()); 36 | 37 | let db = new sqlite3.Database('./users.sqlite', (err) => { 38 | if (err) console.error(err.message); 39 | else { 40 | console.log('Connected to the users database.'); 41 | db.run(`CREATE TABLE IF NOT EXISTS users ( 42 | uid INTEGER PRIMARY KEY AUTOINCREMENT, 43 | username TEXT NOT NULL UNIQUE, 44 | password TEXT NOT NULL, 45 | hwid TEXT, 46 | discord_id TEXT NOT NULL, 47 | invite_code TEXT NOT NULL, 48 | register_date TEXT NOT NULL, 49 | last_login TEXT, 50 | status TEXT DEFAULT 'active' 51 | )`); 52 | db.run(`CREATE TABLE IF NOT EXISTS invites ( 53 | code TEXT PRIMARY KEY, 54 | expiration_date TEXT, 55 | used INTEGER DEFAULT 0 56 | )`); 57 | } 58 | }); 59 | 60 | const commands = [ 61 | new SlashCommandBuilder().setName('register').setDescription('Register a new user'), 62 | new SlashCommandBuilder().setName('createinvite').setDescription('Create a new invite code').addIntegerOption(option => option.setName('days').setDescription('Validity in days')), 63 | new SlashCommandBuilder().setName('ban').setDescription('Ban a user').addIntegerOption(option => option.setName('uid').setDescription('User ID').setRequired(true)), 64 | new SlashCommandBuilder().setName('unban').setDescription('Unban a user').addIntegerOption(option => option.setName('uid').setDescription('User ID').setRequired(true)), 65 | new SlashCommandBuilder().setName('resethwid').setDescription('Reset a user\'s HWID').addIntegerOption(option => option.setName('uid').setDescription('User ID').setRequired(true)), 66 | new SlashCommandBuilder().setName('user').setDescription('Get user information').addIntegerOption(option => option.setName('uid').setDescription('User ID').setRequired(true)), 67 | new SlashCommandBuilder().setName('users').setDescription('Get all users'), 68 | new SlashCommandBuilder().setName('invites').setDescription('Get all invites'), 69 | new SlashCommandBuilder().setName('announcement').setDescription('Send an announcement') 70 | .addStringOption(option => option.setName('message').setDescription('The announcement message').setRequired(true)) 71 | .addBooleanOption(option => option.setName('ping').setDescription('Ping @everyone and @here?').setRequired(true)), 72 | new SlashCommandBuilder().setName('invitewave').setDescription('Generate invites for all users with access role and send via DM') 73 | ].map(command => command.toJSON()); 74 | 75 | const rest = new REST({ version: '10' }).setToken(TOKEN); 76 | 77 | (async () => { 78 | try { 79 | console.log('Started refreshing application (/) commands.'); 80 | await rest.put(Routes.applicationGuildCommands(CLIENT_ID, GUILD_ID), { body: commands }); 81 | console.log('Successfully reloaded application (/) commands.'); 82 | } catch (error) { 83 | console.error(error); 84 | } 85 | })(); 86 | 87 | client.once('ready', () => { 88 | console.log('Bot is online!'); 89 | }); 90 | 91 | client.on('interactionCreate', async interaction => { 92 | if (!interaction.isCommand()) return; 93 | const { commandName, options } = interaction; 94 | const member = interaction.member; 95 | const hasAccessRole = member.roles.cache.has(ACCESS_ROLE_ID); 96 | const hasSupportRole = member.roles.cache.has(SUPPORT_ROLE_ID); 97 | 98 | let allowed = false; 99 | 100 | if (commandName === 'register') { 101 | allowed = true; 102 | } else if (interaction.user.id === OWNER_ID) { 103 | allowed = true; 104 | } else if (hasSupportRole) { 105 | if (commandName === 'resethwid' || commandName === 'ban' || commandName === 'unban' || commandName === 'user') { 106 | allowed = true; 107 | } 108 | } 109 | 110 | if (!allowed) { 111 | return interaction.reply({ content: 'You do not have permission to use this command.', ephemeral: true }); 112 | } 113 | 114 | if (commandName === 'register') { 115 | const modal = new ModalBuilder().setCustomId('registerModal').setTitle('Register New User'); 116 | const usernameInput = new TextInputBuilder().setCustomId('username').setLabel('Username').setStyle(TextInputStyle.Short).setRequired(true); 117 | const passwordInput = new TextInputBuilder().setCustomId('password').setLabel('Password').setStyle(TextInputStyle.Short).setRequired(true); 118 | const inviteCodeInput = new TextInputBuilder().setCustomId('invite_code').setLabel('Invite Code').setStyle(TextInputStyle.Short).setRequired(true); 119 | modal.addComponents(new ActionRowBuilder().addComponents(usernameInput), new ActionRowBuilder().addComponents(passwordInput), new ActionRowBuilder().addComponents(inviteCodeInput)); 120 | await interaction.showModal(modal); 121 | } else if (commandName === 'createinvite') { 122 | let days = options.getInteger('days') || 7; 123 | const expirationDate = new Date(); 124 | expirationDate.setDate(expirationDate.getDate() + days); 125 | const inviteCode = Math.random().toString(36).substr(2, 8).toUpperCase(); 126 | db.run(`INSERT INTO invites (code, expiration_date) VALUES (?, ?)`, [inviteCode, expirationDate.toISOString()], (err) => { 127 | if (err) return interaction.reply({ content: 'An error occurred.', ephemeral: true }); 128 | const embed = new EmbedBuilder().setTitle("Invite Code Created").setDescription(`Your invite code: \`${inviteCode}\``).setColor(0x00FF00).setFooter({ text: "Safe Development © 2025 godmodule" }); 129 | interaction.reply({ embeds: [embed], ephemeral: true }); 130 | }); 131 | } else if (commandName === 'user') { 132 | const uid = options.getInteger('uid'); 133 | 134 | db.get(`SELECT * FROM users WHERE uid = ?`, [uid], (err, row) => { 135 | if (err) return interaction.reply({ content: 'An error occurred.', ephemeral: true }); 136 | if (!row) return interaction.reply({ content: 'User not found.', ephemeral: true }); 137 | 138 | const embed = new EmbedBuilder() 139 | .setTitle(`User Information - ${row.username} (UID: ${row.uid})`) 140 | .addFields( 141 | { name: 'Discord ID', value: `<@${row.discord_id}>`, inline: true }, 142 | { name: 'Status', value: row.status, inline: true }, 143 | { name: 'Registration Date', value: new Date(row.register_date).toLocaleDateString(), inline: true }, 144 | { name: 'Last Login', value: row.last_login ? new Date(row.last_login).toLocaleDateString() : "Never", inline: true }, 145 | { name: 'HWID', value: row.hwid || "Not Set", inline: true } 146 | ) 147 | .setColor(0x0000FF) 148 | .setFooter({ text: "Safe Development © 2025 godmodule" }); 149 | 150 | const banButton = new ButtonBuilder() 151 | .setCustomId(`ban_${uid}`) 152 | .setLabel('Ban') 153 | .setStyle(ButtonStyle.Danger) 154 | .setDisabled(row.status === 'banned'); 155 | 156 | const unbanButton = new ButtonBuilder() 157 | .setCustomId(`unban_${uid}`) 158 | .setLabel('Unban') 159 | .setStyle(ButtonStyle.Success) 160 | .setDisabled(row.status === 'active'); 161 | 162 | const rowAction = new ActionRowBuilder().addComponents(banButton, unbanButton); 163 | 164 | interaction.reply({ embeds: [embed] }).then(msg => { // Send embed publicly 165 | if (interaction.user.id === OWNER_ID || hasSupportRole) { 166 | interaction.channel.send({ content: `Use these buttons to manage the user (only for support staff):`, components: [rowAction] }) // Buttons in a separate message 167 | .catch(console.error); 168 | } 169 | }); 170 | }); 171 | } else if (commandName === 'users') { 172 | db.all(`SELECT * FROM users`, [], (err, rows) => { 173 | if (err) return interaction.reply({ content: 'An error occurred.', ephemeral: true }); 174 | 175 | if (!rows || rows.length === 0) return interaction.reply({ content: 'No users found.', ephemeral: true }); 176 | 177 | const embed = new EmbedBuilder() 178 | .setTitle("All Users") 179 | .setDescription(rows.map(user => `**UID:** ${user.uid} - **Username:** ${user.username} - **Discord ID:** <@${user.discord_id}> - **Status:** ${user.status} - **HWID:** ${user.hwid || "Not Set"}`).join('\n')) 180 | .setColor(0x00FF00) 181 | .setFooter({ text: "Safe Development © 2025 godmodule" }); 182 | 183 | interaction.reply({ embeds: [embed], ephemeral: true }); 184 | }); 185 | } else if (commandName === 'invites') { 186 | db.all(`SELECT * FROM invites`, [], (err, rows) => { 187 | if (err) return interaction.reply({ content: 'An error occurred.', ephemeral: true }); 188 | 189 | if (!rows || rows.length === 0) return interaction.reply({ content: 'No invites found.', ephemeral: true }); 190 | 191 | const embed = new EmbedBuilder() 192 | .setTitle("All Invites") 193 | .setDescription(rows.map(invite => `**Code:** ${invite.code} - **Expires:** ${new Date(invite.expiration_date).toLocaleDateString()} - **Used:** ${invite.used ? 'Yes' : 'No'}`).join('\n')) 194 | .setColor(0x00FF00) 195 | .setFooter({ text: "Safe Development © 2025 godmodule" }); 196 | 197 | interaction.reply({ embeds: [embed], ephemeral: true }); 198 | }); 199 | } else if (commandName === 'ban' || commandName === 'unban' || commandName === 'resethwid') { 200 | const uid = options.getInteger('uid'); 201 | const action = commandName === 'ban' ? 'banned' : commandName === 'unban' ? 'active' : 'HWID reset'; 202 | const fieldToUpdate = commandName === 'resethwid' ? 'hwid' : 'status'; 203 | const newValue = commandName === 'resethwid' ? null : action; 204 | 205 | 206 | db.get(`SELECT * FROM users WHERE uid = ?`, [uid], (err, row) => { 207 | if (err) return interaction.reply({ content: 'An error occurred.', ephemeral: true }); 208 | if (!row) return interaction.reply({ content: 'User not found.', ephemeral: true }); 209 | 210 | db.run(`UPDATE users SET ${fieldToUpdate} = ? WHERE uid = ?`, [newValue, uid], function (err) { 211 | if (err) return interaction.reply({ content: 'An error occurred.', ephemeral: true }); 212 | 213 | const embed = new EmbedBuilder() 214 | .setTitle(`User ${action}: ${row.username} (UID: ${row.uid})`) 215 | .setDescription(`${row.username}'s ${fieldToUpdate === 'status' ? 'status' : 'HWID'} has been updated to ${action}.`) 216 | .setColor(commandName === 'ban' ? 0xFF0000 : 0x00FF00) 217 | .setFooter({ text: "Safe Development © 2025 godmodule" }); 218 | 219 | interaction.reply({ embeds: [embed] }); 220 | }); 221 | }); 222 | } else if (commandName === 'invitewave') { 223 | const role = interaction.guild.roles.cache.get(ACCESS_ROLE_ID); 224 | if (!role) { 225 | return interaction.reply({ content: `Role with ID ${ACCESS_ROLE_ID} not found.`, ephemeral: true }); 226 | } 227 | 228 | const membersWithRole = interaction.guild.members.cache.filter(member => member.roles.cache.has(ACCESS_ROLE_ID)); 229 | if (membersWithRole.size === 0) { 230 | return interaction.reply({ content: `No members found with role ${role.name}.`, ephemeral: true }); 231 | } 232 | 233 | db.all(`SELECT discord_id FROM users`, async (err, rows) => { 234 | if (err) return interaction.reply({ content: 'An error occurred.', ephemeral: true }); 235 | if (!rows || rows.length === 0) return interaction.reply({ content: 'No users found in the database.', ephemeral: true }); 236 | 237 | let successCount = 0; 238 | let errorCount = 0; 239 | 240 | for (const member of membersWithRole.values()) { 241 | const inviteCode = Math.random().toString(36).substr(2, 8).toUpperCase(); 242 | const expirationDate = new Date(); 243 | expirationDate.setDate(expirationDate.getDate() + 7); 244 | 245 | db.run(`INSERT INTO invites (code, expiration_date) VALUES (?, ?)`, [inviteCode, expirationDate.toISOString()], async (err) => { 246 | if (err) { 247 | errorCount++; 248 | return; 249 | } 250 | 251 | try { 252 | await member.user.send({ content: `You have received an invite code: \`${inviteCode}\` (Expires: ${expirationDate.toLocaleDateString()}).` }); 253 | successCount++; 254 | } catch (dmError) { 255 | console.error(`Failed to send DM to ${member.id}:`, dmError); 256 | errorCount++; 257 | } 258 | }); 259 | } 260 | 261 | const embed = new EmbedBuilder() 262 | .setTitle("Invite Wave Completed") 263 | .setDescription(`Invite codes have been sent to ${successCount} users with the access role. ${errorCount} users encountered errors.`) 264 | .setColor(0x00FF00) 265 | .setFooter({ text: "Safe Development © 2025 godmodule" }); 266 | 267 | interaction.reply({ embeds: [embed] }); 268 | }); 269 | } else if (commandName === 'announcement') { 270 | const message = options.getString('message'); 271 | const ping = options.getBoolean('ping'); 272 | 273 | const announcementMessage = ping ? `||@everyone @here|| ${message}` : message; 274 | 275 | await interaction.reply({ content: 'Announcement sent!', ephemeral: true }); 276 | await interaction.channel.send(announcementMessage); 277 | } 278 | }); 279 | 280 | client.on('interactionCreate', async interaction => { 281 | if (!interaction.isModalSubmit()) return; 282 | if (interaction.customId === 'registerModal') { 283 | const username = interaction.fields.getTextInputValue('username'); 284 | const password = interaction.fields.getTextInputValue('password'); 285 | const inviteCode = interaction.fields.getTextInputValue('invite_code'); 286 | 287 | db.get(`SELECT * FROM invites WHERE code = ?`, [inviteCode], (err, row) => { 288 | if (err) return interaction.reply({ content: 'An error occurred.', ephemeral: true }); 289 | if (!row) return interaction.reply({ content: 'Invalid invite code.', ephemeral: true }); 290 | if (row.used) return interaction.reply({ content: 'This invite code has already been used.', ephemeral: true }); 291 | 292 | db.get(`SELECT * FROM users WHERE username = ?`, [username], (err, userRow) => { 293 | if (err) return interaction.reply({ content: 'An error occurred.', ephemeral: true }); 294 | if (userRow) return interaction.reply({ content: 'Username already exists.', ephemeral: true }); 295 | 296 | const registerDate = new Date().toISOString(); 297 | db.run(`INSERT INTO users (username, password, discord_id, invite_code, register_date) VALUES (?,?,?,?,?)`, 298 | [username, password, interaction.user.id, inviteCode, registerDate], function (err) { 299 | if (err) return interaction.reply({ content: 'An error occurred.', ephemeral: true }); 300 | 301 | db.run(`UPDATE invites SET used = 1 WHERE code = ?`, [inviteCode]); 302 | 303 | const embed = new EmbedBuilder() 304 | .setTitle(`Welcome to SafeClient, ${username}!`) 305 | .setDescription("You have successfully registered.") 306 | .setColor(0x00FF00) 307 | .setFooter({ text: "Safe Development © 2025 godmodule" }); 308 | interaction.reply({ embeds: [embed], ephemeral: true }); 309 | }); 310 | }); 311 | }); 312 | } 313 | }); 314 | 315 | // Button interaction handler (ban) 316 | client.on('interactionCreate', async interaction => { 317 | if (!interaction.isButton()) return; 318 | 319 | const [action, uid] = interaction.customId.split('_'); 320 | 321 | if (action === 'ban' || action === 'unban') { 322 | if (interaction.user.id !== OWNER_ID && !interaction.member.roles.cache.has(SUPPORT_ROLE_ID)) { 323 | return interaction.reply({ content: 'You do not have permission to use this button.', ephemeral: true }); 324 | } 325 | 326 | const newStatus = action === 'ban' ? 'banned' : 'active'; 327 | 328 | db.run(`UPDATE users SET status = ? WHERE uid = ?`, [newStatus, uid], function (err) { 329 | if (err) return interaction.reply({ content: 'An error occurred.', ephemeral: true }); 330 | 331 | interaction.update({ content: `User ${newStatus}.`, components: [] }); // Update the button message 332 | }); 333 | } 334 | }); 335 | 336 | app.post('/auth', (req, res) => { 337 | const { username, password, hwid } = req.body; 338 | db.get(`SELECT * FROM users WHERE username = ? AND password = ?`, [username, password], (err, row) => { 339 | if (err) return res.status(500).send('Database error.'); 340 | if (!row) return res.status(401).send('Invalid credentials.'); 341 | 342 | if (!row.hwid) { 343 | db.run(`UPDATE users SET last_login = ?, hwid = ? WHERE username = ?`, [new Date().toISOString(), hwid, username], function (err) { 344 | if (err) return res.status(500).send('Database error.'); 345 | return res.json({ success: true }); 346 | }); 347 | } else if (row.hwid === hwid) { 348 | db.run(`UPDATE users SET last_login = ? WHERE username = ?`, [new Date().toISOString(), username], function (err) { 349 | if (err) return res.status(500).send('Database error.'); 350 | return res.json({ success: true }); 351 | }); 352 | } else { 353 | return res.status(403).send('Incorrect HWID.'); 354 | } 355 | }); 356 | }); 357 | 358 | app.listen(8000, () => console.log('API is running on port 8000')); 359 | 360 | client.login(TOKEN); 361 | 362 | /* 363 | Safe Development - Discord Bot with Express API 364 | Author: godmodule 365 | Version: 0.8.2 366 | Notes: 367 | - Added an Express API for authentication 368 | - Added a ban/unban button interaction 369 | - Added a HWID reset command 370 | - Added a user information command 371 | - Added a command to generate invites for all users with access role 372 | - Added a command to get all invites 373 | - Added a command to get all users 374 | - Added a command to send an announcement 375 | - Added a command to create an invite code 376 | - Added a command to register a new user 377 | - Added a command to unban a user 378 | */ 379 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "discord-bot", 3 | "version": "0.8.2", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "discord-bot", 9 | "version": "0.8.2", 10 | "dependencies": { 11 | "body-parser": "^1.20.2", 12 | "discord-bot": "file:", 13 | "discord.js": "^14.0.0", 14 | "dotenv": "^16.0.0", 15 | "express": "^4.18.2", 16 | "md5": "^2.3.0", 17 | "sqlite3": "^5.1.2" 18 | } 19 | }, 20 | "node_modules/@discordjs/builders": { 21 | "version": "1.10.1", 22 | "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.10.1.tgz", 23 | "integrity": "sha512-OWo1fY4ztL1/M/DUyRPShB4d/EzVfuUvPTRRHRIt/YxBrUYSz0a+JicD5F5zHFoNs2oTuWavxCOVFV1UljHTng==", 24 | "license": "Apache-2.0", 25 | "dependencies": { 26 | "@discordjs/formatters": "^0.6.0", 27 | "@discordjs/util": "^1.1.1", 28 | "@sapphire/shapeshift": "^4.0.0", 29 | "discord-api-types": "^0.37.119", 30 | "fast-deep-equal": "^3.1.3", 31 | "ts-mixer": "^6.0.4", 32 | "tslib": "^2.6.3" 33 | }, 34 | "engines": { 35 | "node": ">=16.11.0" 36 | }, 37 | "funding": { 38 | "url": "https://github.com/discordjs/discord.js?sponsor" 39 | } 40 | }, 41 | "node_modules/@discordjs/collection": { 42 | "version": "1.5.3", 43 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz", 44 | "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==", 45 | "license": "Apache-2.0", 46 | "engines": { 47 | "node": ">=16.11.0" 48 | } 49 | }, 50 | "node_modules/@discordjs/formatters": { 51 | "version": "0.6.0", 52 | "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.6.0.tgz", 53 | "integrity": "sha512-YIruKw4UILt/ivO4uISmrGq2GdMY6EkoTtD0oS0GvkJFRZbTSdPhzYiUILbJ/QslsvC9H9nTgGgnarnIl4jMfw==", 54 | "license": "Apache-2.0", 55 | "dependencies": { 56 | "discord-api-types": "^0.37.114" 57 | }, 58 | "engines": { 59 | "node": ">=16.11.0" 60 | }, 61 | "funding": { 62 | "url": "https://github.com/discordjs/discord.js?sponsor" 63 | } 64 | }, 65 | "node_modules/@discordjs/rest": { 66 | "version": "2.4.3", 67 | "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.3.tgz", 68 | "integrity": "sha512-+SO4RKvWsM+y8uFHgYQrcTl/3+cY02uQOH7/7bKbVZsTfrfpoE62o5p+mmV+s7FVhTX82/kQUGGbu4YlV60RtA==", 69 | "license": "Apache-2.0", 70 | "dependencies": { 71 | "@discordjs/collection": "^2.1.1", 72 | "@discordjs/util": "^1.1.1", 73 | "@sapphire/async-queue": "^1.5.3", 74 | "@sapphire/snowflake": "^3.5.3", 75 | "@vladfrangu/async_event_emitter": "^2.4.6", 76 | "discord-api-types": "^0.37.119", 77 | "magic-bytes.js": "^1.10.0", 78 | "tslib": "^2.6.3", 79 | "undici": "6.21.1" 80 | }, 81 | "engines": { 82 | "node": ">=18" 83 | }, 84 | "funding": { 85 | "url": "https://github.com/discordjs/discord.js?sponsor" 86 | } 87 | }, 88 | "node_modules/@discordjs/rest/node_modules/@discordjs/collection": { 89 | "version": "2.1.1", 90 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz", 91 | "integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==", 92 | "license": "Apache-2.0", 93 | "engines": { 94 | "node": ">=18" 95 | }, 96 | "funding": { 97 | "url": "https://github.com/discordjs/discord.js?sponsor" 98 | } 99 | }, 100 | "node_modules/@discordjs/util": { 101 | "version": "1.1.1", 102 | "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.1.tgz", 103 | "integrity": "sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g==", 104 | "license": "Apache-2.0", 105 | "engines": { 106 | "node": ">=18" 107 | }, 108 | "funding": { 109 | "url": "https://github.com/discordjs/discord.js?sponsor" 110 | } 111 | }, 112 | "node_modules/@discordjs/ws": { 113 | "version": "1.2.1", 114 | "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.2.1.tgz", 115 | "integrity": "sha512-PBvenhZG56a6tMWF/f4P6f4GxZKJTBG95n7aiGSPTnodmz4N5g60t79rSIAq7ywMbv8A4jFtexMruH+oe51aQQ==", 116 | "license": "Apache-2.0", 117 | "dependencies": { 118 | "@discordjs/collection": "^2.1.0", 119 | "@discordjs/rest": "^2.4.3", 120 | "@discordjs/util": "^1.1.0", 121 | "@sapphire/async-queue": "^1.5.2", 122 | "@types/ws": "^8.5.10", 123 | "@vladfrangu/async_event_emitter": "^2.2.4", 124 | "discord-api-types": "^0.37.119", 125 | "tslib": "^2.6.2", 126 | "ws": "^8.17.0" 127 | }, 128 | "engines": { 129 | "node": ">=16.11.0" 130 | }, 131 | "funding": { 132 | "url": "https://github.com/discordjs/discord.js?sponsor" 133 | } 134 | }, 135 | "node_modules/@discordjs/ws/node_modules/@discordjs/collection": { 136 | "version": "2.1.1", 137 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz", 138 | "integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==", 139 | "license": "Apache-2.0", 140 | "engines": { 141 | "node": ">=18" 142 | }, 143 | "funding": { 144 | "url": "https://github.com/discordjs/discord.js?sponsor" 145 | } 146 | }, 147 | "node_modules/@gar/promisify": { 148 | "version": "1.1.3", 149 | "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", 150 | "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", 151 | "license": "MIT", 152 | "optional": true 153 | }, 154 | "node_modules/@npmcli/fs": { 155 | "version": "1.1.1", 156 | "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", 157 | "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", 158 | "license": "ISC", 159 | "optional": true, 160 | "dependencies": { 161 | "@gar/promisify": "^1.0.1", 162 | "semver": "^7.3.5" 163 | } 164 | }, 165 | "node_modules/@npmcli/move-file": { 166 | "version": "1.1.2", 167 | "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", 168 | "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", 169 | "deprecated": "This functionality has been moved to @npmcli/fs", 170 | "license": "MIT", 171 | "optional": true, 172 | "dependencies": { 173 | "mkdirp": "^1.0.4", 174 | "rimraf": "^3.0.2" 175 | }, 176 | "engines": { 177 | "node": ">=10" 178 | } 179 | }, 180 | "node_modules/@sapphire/async-queue": { 181 | "version": "1.5.5", 182 | "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.5.tgz", 183 | "integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==", 184 | "license": "MIT", 185 | "engines": { 186 | "node": ">=v14.0.0", 187 | "npm": ">=7.0.0" 188 | } 189 | }, 190 | "node_modules/@sapphire/shapeshift": { 191 | "version": "4.0.0", 192 | "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-4.0.0.tgz", 193 | "integrity": "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==", 194 | "license": "MIT", 195 | "dependencies": { 196 | "fast-deep-equal": "^3.1.3", 197 | "lodash": "^4.17.21" 198 | }, 199 | "engines": { 200 | "node": ">=v16" 201 | } 202 | }, 203 | "node_modules/@sapphire/snowflake": { 204 | "version": "3.5.3", 205 | "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.3.tgz", 206 | "integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==", 207 | "license": "MIT", 208 | "engines": { 209 | "node": ">=v14.0.0", 210 | "npm": ">=7.0.0" 211 | } 212 | }, 213 | "node_modules/@tootallnate/once": { 214 | "version": "1.1.2", 215 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 216 | "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 217 | "license": "MIT", 218 | "optional": true, 219 | "engines": { 220 | "node": ">= 6" 221 | } 222 | }, 223 | "node_modules/@types/node": { 224 | "version": "22.13.1", 225 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz", 226 | "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==", 227 | "license": "MIT", 228 | "dependencies": { 229 | "undici-types": "~6.20.0" 230 | } 231 | }, 232 | "node_modules/@types/ws": { 233 | "version": "8.5.14", 234 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", 235 | "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", 236 | "license": "MIT", 237 | "dependencies": { 238 | "@types/node": "*" 239 | } 240 | }, 241 | "node_modules/@vladfrangu/async_event_emitter": { 242 | "version": "2.4.6", 243 | "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.6.tgz", 244 | "integrity": "sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==", 245 | "license": "MIT", 246 | "engines": { 247 | "node": ">=v14.0.0", 248 | "npm": ">=7.0.0" 249 | } 250 | }, 251 | "node_modules/abbrev": { 252 | "version": "1.1.1", 253 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 254 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 255 | "license": "ISC", 256 | "optional": true 257 | }, 258 | "node_modules/accepts": { 259 | "version": "1.3.8", 260 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 261 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 262 | "license": "MIT", 263 | "dependencies": { 264 | "mime-types": "~2.1.34", 265 | "negotiator": "0.6.3" 266 | }, 267 | "engines": { 268 | "node": ">= 0.6" 269 | } 270 | }, 271 | "node_modules/agent-base": { 272 | "version": "6.0.2", 273 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 274 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 275 | "license": "MIT", 276 | "optional": true, 277 | "dependencies": { 278 | "debug": "4" 279 | }, 280 | "engines": { 281 | "node": ">= 6.0.0" 282 | } 283 | }, 284 | "node_modules/agent-base/node_modules/debug": { 285 | "version": "4.4.0", 286 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 287 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 288 | "license": "MIT", 289 | "optional": true, 290 | "dependencies": { 291 | "ms": "^2.1.3" 292 | }, 293 | "engines": { 294 | "node": ">=6.0" 295 | }, 296 | "peerDependenciesMeta": { 297 | "supports-color": { 298 | "optional": true 299 | } 300 | } 301 | }, 302 | "node_modules/agent-base/node_modules/ms": { 303 | "version": "2.1.3", 304 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 305 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 306 | "license": "MIT", 307 | "optional": true 308 | }, 309 | "node_modules/agentkeepalive": { 310 | "version": "4.6.0", 311 | "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", 312 | "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", 313 | "license": "MIT", 314 | "optional": true, 315 | "dependencies": { 316 | "humanize-ms": "^1.2.1" 317 | }, 318 | "engines": { 319 | "node": ">= 8.0.0" 320 | } 321 | }, 322 | "node_modules/aggregate-error": { 323 | "version": "3.1.0", 324 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 325 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 326 | "license": "MIT", 327 | "optional": true, 328 | "dependencies": { 329 | "clean-stack": "^2.0.0", 330 | "indent-string": "^4.0.0" 331 | }, 332 | "engines": { 333 | "node": ">=8" 334 | } 335 | }, 336 | "node_modules/ansi-regex": { 337 | "version": "5.0.1", 338 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 339 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 340 | "license": "MIT", 341 | "optional": true, 342 | "engines": { 343 | "node": ">=8" 344 | } 345 | }, 346 | "node_modules/aproba": { 347 | "version": "2.0.0", 348 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 349 | "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", 350 | "license": "ISC", 351 | "optional": true 352 | }, 353 | "node_modules/are-we-there-yet": { 354 | "version": "3.0.1", 355 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", 356 | "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", 357 | "deprecated": "This package is no longer supported.", 358 | "license": "ISC", 359 | "optional": true, 360 | "dependencies": { 361 | "delegates": "^1.0.0", 362 | "readable-stream": "^3.6.0" 363 | }, 364 | "engines": { 365 | "node": "^12.13.0 || ^14.15.0 || >=16.0.0" 366 | } 367 | }, 368 | "node_modules/array-flatten": { 369 | "version": "1.1.1", 370 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 371 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", 372 | "license": "MIT" 373 | }, 374 | "node_modules/balanced-match": { 375 | "version": "1.0.2", 376 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 377 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 378 | "license": "MIT", 379 | "optional": true 380 | }, 381 | "node_modules/base64-js": { 382 | "version": "1.5.1", 383 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 384 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 385 | "funding": [ 386 | { 387 | "type": "github", 388 | "url": "https://github.com/sponsors/feross" 389 | }, 390 | { 391 | "type": "patreon", 392 | "url": "https://www.patreon.com/feross" 393 | }, 394 | { 395 | "type": "consulting", 396 | "url": "https://feross.org/support" 397 | } 398 | ], 399 | "license": "MIT" 400 | }, 401 | "node_modules/bindings": { 402 | "version": "1.5.0", 403 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 404 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 405 | "license": "MIT", 406 | "dependencies": { 407 | "file-uri-to-path": "1.0.0" 408 | } 409 | }, 410 | "node_modules/bl": { 411 | "version": "4.1.0", 412 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 413 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 414 | "license": "MIT", 415 | "dependencies": { 416 | "buffer": "^5.5.0", 417 | "inherits": "^2.0.4", 418 | "readable-stream": "^3.4.0" 419 | } 420 | }, 421 | "node_modules/body-parser": { 422 | "version": "1.20.3", 423 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", 424 | "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", 425 | "license": "MIT", 426 | "dependencies": { 427 | "bytes": "3.1.2", 428 | "content-type": "~1.0.5", 429 | "debug": "2.6.9", 430 | "depd": "2.0.0", 431 | "destroy": "1.2.0", 432 | "http-errors": "2.0.0", 433 | "iconv-lite": "0.4.24", 434 | "on-finished": "2.4.1", 435 | "qs": "6.13.0", 436 | "raw-body": "2.5.2", 437 | "type-is": "~1.6.18", 438 | "unpipe": "1.0.0" 439 | }, 440 | "engines": { 441 | "node": ">= 0.8", 442 | "npm": "1.2.8000 || >= 1.4.16" 443 | } 444 | }, 445 | "node_modules/brace-expansion": { 446 | "version": "1.1.11", 447 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 448 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 449 | "license": "MIT", 450 | "optional": true, 451 | "dependencies": { 452 | "balanced-match": "^1.0.0", 453 | "concat-map": "0.0.1" 454 | } 455 | }, 456 | "node_modules/buffer": { 457 | "version": "5.7.1", 458 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 459 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 460 | "funding": [ 461 | { 462 | "type": "github", 463 | "url": "https://github.com/sponsors/feross" 464 | }, 465 | { 466 | "type": "patreon", 467 | "url": "https://www.patreon.com/feross" 468 | }, 469 | { 470 | "type": "consulting", 471 | "url": "https://feross.org/support" 472 | } 473 | ], 474 | "license": "MIT", 475 | "dependencies": { 476 | "base64-js": "^1.3.1", 477 | "ieee754": "^1.1.13" 478 | } 479 | }, 480 | "node_modules/bytes": { 481 | "version": "3.1.2", 482 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 483 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 484 | "license": "MIT", 485 | "engines": { 486 | "node": ">= 0.8" 487 | } 488 | }, 489 | "node_modules/cacache": { 490 | "version": "15.3.0", 491 | "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", 492 | "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", 493 | "license": "ISC", 494 | "optional": true, 495 | "dependencies": { 496 | "@npmcli/fs": "^1.0.0", 497 | "@npmcli/move-file": "^1.0.1", 498 | "chownr": "^2.0.0", 499 | "fs-minipass": "^2.0.0", 500 | "glob": "^7.1.4", 501 | "infer-owner": "^1.0.4", 502 | "lru-cache": "^6.0.0", 503 | "minipass": "^3.1.1", 504 | "minipass-collect": "^1.0.2", 505 | "minipass-flush": "^1.0.5", 506 | "minipass-pipeline": "^1.2.2", 507 | "mkdirp": "^1.0.3", 508 | "p-map": "^4.0.0", 509 | "promise-inflight": "^1.0.1", 510 | "rimraf": "^3.0.2", 511 | "ssri": "^8.0.1", 512 | "tar": "^6.0.2", 513 | "unique-filename": "^1.1.1" 514 | }, 515 | "engines": { 516 | "node": ">= 10" 517 | } 518 | }, 519 | "node_modules/call-bind-apply-helpers": { 520 | "version": "1.0.1", 521 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", 522 | "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", 523 | "license": "MIT", 524 | "dependencies": { 525 | "es-errors": "^1.3.0", 526 | "function-bind": "^1.1.2" 527 | }, 528 | "engines": { 529 | "node": ">= 0.4" 530 | } 531 | }, 532 | "node_modules/call-bound": { 533 | "version": "1.0.3", 534 | "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", 535 | "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", 536 | "license": "MIT", 537 | "dependencies": { 538 | "call-bind-apply-helpers": "^1.0.1", 539 | "get-intrinsic": "^1.2.6" 540 | }, 541 | "engines": { 542 | "node": ">= 0.4" 543 | }, 544 | "funding": { 545 | "url": "https://github.com/sponsors/ljharb" 546 | } 547 | }, 548 | "node_modules/charenc": { 549 | "version": "0.0.2", 550 | "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", 551 | "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", 552 | "license": "BSD-3-Clause", 553 | "engines": { 554 | "node": "*" 555 | } 556 | }, 557 | "node_modules/chownr": { 558 | "version": "2.0.0", 559 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 560 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", 561 | "license": "ISC", 562 | "engines": { 563 | "node": ">=10" 564 | } 565 | }, 566 | "node_modules/clean-stack": { 567 | "version": "2.2.0", 568 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 569 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 570 | "license": "MIT", 571 | "optional": true, 572 | "engines": { 573 | "node": ">=6" 574 | } 575 | }, 576 | "node_modules/color-support": { 577 | "version": "1.1.3", 578 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 579 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 580 | "license": "ISC", 581 | "optional": true, 582 | "bin": { 583 | "color-support": "bin.js" 584 | } 585 | }, 586 | "node_modules/concat-map": { 587 | "version": "0.0.1", 588 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 589 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 590 | "license": "MIT", 591 | "optional": true 592 | }, 593 | "node_modules/console-control-strings": { 594 | "version": "1.1.0", 595 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 596 | "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", 597 | "license": "ISC", 598 | "optional": true 599 | }, 600 | "node_modules/content-disposition": { 601 | "version": "0.5.4", 602 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 603 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 604 | "license": "MIT", 605 | "dependencies": { 606 | "safe-buffer": "5.2.1" 607 | }, 608 | "engines": { 609 | "node": ">= 0.6" 610 | } 611 | }, 612 | "node_modules/content-type": { 613 | "version": "1.0.5", 614 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 615 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", 616 | "license": "MIT", 617 | "engines": { 618 | "node": ">= 0.6" 619 | } 620 | }, 621 | "node_modules/cookie": { 622 | "version": "0.7.1", 623 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", 624 | "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", 625 | "license": "MIT", 626 | "engines": { 627 | "node": ">= 0.6" 628 | } 629 | }, 630 | "node_modules/cookie-signature": { 631 | "version": "1.0.6", 632 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 633 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", 634 | "license": "MIT" 635 | }, 636 | "node_modules/crypt": { 637 | "version": "0.0.2", 638 | "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", 639 | "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", 640 | "license": "BSD-3-Clause", 641 | "engines": { 642 | "node": "*" 643 | } 644 | }, 645 | "node_modules/debug": { 646 | "version": "2.6.9", 647 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 648 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 649 | "license": "MIT", 650 | "dependencies": { 651 | "ms": "2.0.0" 652 | } 653 | }, 654 | "node_modules/decompress-response": { 655 | "version": "6.0.0", 656 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 657 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 658 | "license": "MIT", 659 | "dependencies": { 660 | "mimic-response": "^3.1.0" 661 | }, 662 | "engines": { 663 | "node": ">=10" 664 | }, 665 | "funding": { 666 | "url": "https://github.com/sponsors/sindresorhus" 667 | } 668 | }, 669 | "node_modules/deep-extend": { 670 | "version": "0.6.0", 671 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 672 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 673 | "license": "MIT", 674 | "engines": { 675 | "node": ">=4.0.0" 676 | } 677 | }, 678 | "node_modules/delegates": { 679 | "version": "1.0.0", 680 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 681 | "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", 682 | "license": "MIT", 683 | "optional": true 684 | }, 685 | "node_modules/depd": { 686 | "version": "2.0.0", 687 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 688 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 689 | "license": "MIT", 690 | "engines": { 691 | "node": ">= 0.8" 692 | } 693 | }, 694 | "node_modules/destroy": { 695 | "version": "1.2.0", 696 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 697 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 698 | "license": "MIT", 699 | "engines": { 700 | "node": ">= 0.8", 701 | "npm": "1.2.8000 || >= 1.4.16" 702 | } 703 | }, 704 | "node_modules/detect-libc": { 705 | "version": "2.0.3", 706 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", 707 | "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", 708 | "license": "Apache-2.0", 709 | "engines": { 710 | "node": ">=8" 711 | } 712 | }, 713 | "node_modules/discord-api-types": { 714 | "version": "0.37.119", 715 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.119.tgz", 716 | "integrity": "sha512-WasbGFXEB+VQWXlo6IpW3oUv73Yuau1Ig4AZF/m13tXcTKnMpc/mHjpztIlz4+BM9FG9BHQkEXiPto3bKduQUg==", 717 | "license": "MIT" 718 | }, 719 | "node_modules/discord-bot": { 720 | "resolved": "", 721 | "link": true 722 | }, 723 | "node_modules/discord.js": { 724 | "version": "14.18.0", 725 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.18.0.tgz", 726 | "integrity": "sha512-SvU5kVUvwunQhN2/+0t55QW/1EHfB1lp0TtLZUSXVHDmyHTrdOj5LRKdR0zLcybaA15F+NtdWuWmGOX9lE+CAw==", 727 | "license": "Apache-2.0", 728 | "dependencies": { 729 | "@discordjs/builders": "^1.10.1", 730 | "@discordjs/collection": "1.5.3", 731 | "@discordjs/formatters": "^0.6.0", 732 | "@discordjs/rest": "^2.4.3", 733 | "@discordjs/util": "^1.1.1", 734 | "@discordjs/ws": "^1.2.1", 735 | "@sapphire/snowflake": "3.5.3", 736 | "discord-api-types": "^0.37.119", 737 | "fast-deep-equal": "3.1.3", 738 | "lodash.snakecase": "4.1.1", 739 | "tslib": "^2.6.3", 740 | "undici": "6.21.1" 741 | }, 742 | "engines": { 743 | "node": ">=18" 744 | }, 745 | "funding": { 746 | "url": "https://github.com/discordjs/discord.js?sponsor" 747 | } 748 | }, 749 | "node_modules/dotenv": { 750 | "version": "16.4.7", 751 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", 752 | "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", 753 | "license": "BSD-2-Clause", 754 | "engines": { 755 | "node": ">=12" 756 | }, 757 | "funding": { 758 | "url": "https://dotenvx.com" 759 | } 760 | }, 761 | "node_modules/dunder-proto": { 762 | "version": "1.0.1", 763 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", 764 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 765 | "license": "MIT", 766 | "dependencies": { 767 | "call-bind-apply-helpers": "^1.0.1", 768 | "es-errors": "^1.3.0", 769 | "gopd": "^1.2.0" 770 | }, 771 | "engines": { 772 | "node": ">= 0.4" 773 | } 774 | }, 775 | "node_modules/ee-first": { 776 | "version": "1.1.1", 777 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 778 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", 779 | "license": "MIT" 780 | }, 781 | "node_modules/emoji-regex": { 782 | "version": "8.0.0", 783 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 784 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 785 | "license": "MIT", 786 | "optional": true 787 | }, 788 | "node_modules/encodeurl": { 789 | "version": "2.0.0", 790 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", 791 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", 792 | "license": "MIT", 793 | "engines": { 794 | "node": ">= 0.8" 795 | } 796 | }, 797 | "node_modules/encoding": { 798 | "version": "0.1.13", 799 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", 800 | "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", 801 | "license": "MIT", 802 | "optional": true, 803 | "dependencies": { 804 | "iconv-lite": "^0.6.2" 805 | } 806 | }, 807 | "node_modules/encoding/node_modules/iconv-lite": { 808 | "version": "0.6.3", 809 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 810 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 811 | "license": "MIT", 812 | "optional": true, 813 | "dependencies": { 814 | "safer-buffer": ">= 2.1.2 < 3.0.0" 815 | }, 816 | "engines": { 817 | "node": ">=0.10.0" 818 | } 819 | }, 820 | "node_modules/end-of-stream": { 821 | "version": "1.4.4", 822 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 823 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 824 | "license": "MIT", 825 | "dependencies": { 826 | "once": "^1.4.0" 827 | } 828 | }, 829 | "node_modules/env-paths": { 830 | "version": "2.2.1", 831 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 832 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", 833 | "license": "MIT", 834 | "optional": true, 835 | "engines": { 836 | "node": ">=6" 837 | } 838 | }, 839 | "node_modules/err-code": { 840 | "version": "2.0.3", 841 | "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", 842 | "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", 843 | "license": "MIT", 844 | "optional": true 845 | }, 846 | "node_modules/es-define-property": { 847 | "version": "1.0.1", 848 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", 849 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", 850 | "license": "MIT", 851 | "engines": { 852 | "node": ">= 0.4" 853 | } 854 | }, 855 | "node_modules/es-errors": { 856 | "version": "1.3.0", 857 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 858 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 859 | "license": "MIT", 860 | "engines": { 861 | "node": ">= 0.4" 862 | } 863 | }, 864 | "node_modules/es-object-atoms": { 865 | "version": "1.1.1", 866 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", 867 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 868 | "license": "MIT", 869 | "dependencies": { 870 | "es-errors": "^1.3.0" 871 | }, 872 | "engines": { 873 | "node": ">= 0.4" 874 | } 875 | }, 876 | "node_modules/escape-html": { 877 | "version": "1.0.3", 878 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 879 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", 880 | "license": "MIT" 881 | }, 882 | "node_modules/etag": { 883 | "version": "1.8.1", 884 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 885 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 886 | "license": "MIT", 887 | "engines": { 888 | "node": ">= 0.6" 889 | } 890 | }, 891 | "node_modules/expand-template": { 892 | "version": "2.0.3", 893 | "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 894 | "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", 895 | "license": "(MIT OR WTFPL)", 896 | "engines": { 897 | "node": ">=6" 898 | } 899 | }, 900 | "node_modules/express": { 901 | "version": "4.21.2", 902 | "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", 903 | "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", 904 | "license": "MIT", 905 | "dependencies": { 906 | "accepts": "~1.3.8", 907 | "array-flatten": "1.1.1", 908 | "body-parser": "1.20.3", 909 | "content-disposition": "0.5.4", 910 | "content-type": "~1.0.4", 911 | "cookie": "0.7.1", 912 | "cookie-signature": "1.0.6", 913 | "debug": "2.6.9", 914 | "depd": "2.0.0", 915 | "encodeurl": "~2.0.0", 916 | "escape-html": "~1.0.3", 917 | "etag": "~1.8.1", 918 | "finalhandler": "1.3.1", 919 | "fresh": "0.5.2", 920 | "http-errors": "2.0.0", 921 | "merge-descriptors": "1.0.3", 922 | "methods": "~1.1.2", 923 | "on-finished": "2.4.1", 924 | "parseurl": "~1.3.3", 925 | "path-to-regexp": "0.1.12", 926 | "proxy-addr": "~2.0.7", 927 | "qs": "6.13.0", 928 | "range-parser": "~1.2.1", 929 | "safe-buffer": "5.2.1", 930 | "send": "0.19.0", 931 | "serve-static": "1.16.2", 932 | "setprototypeof": "1.2.0", 933 | "statuses": "2.0.1", 934 | "type-is": "~1.6.18", 935 | "utils-merge": "1.0.1", 936 | "vary": "~1.1.2" 937 | }, 938 | "engines": { 939 | "node": ">= 0.10.0" 940 | }, 941 | "funding": { 942 | "type": "opencollective", 943 | "url": "https://opencollective.com/express" 944 | } 945 | }, 946 | "node_modules/fast-deep-equal": { 947 | "version": "3.1.3", 948 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 949 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 950 | "license": "MIT" 951 | }, 952 | "node_modules/file-uri-to-path": { 953 | "version": "1.0.0", 954 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 955 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", 956 | "license": "MIT" 957 | }, 958 | "node_modules/finalhandler": { 959 | "version": "1.3.1", 960 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", 961 | "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", 962 | "license": "MIT", 963 | "dependencies": { 964 | "debug": "2.6.9", 965 | "encodeurl": "~2.0.0", 966 | "escape-html": "~1.0.3", 967 | "on-finished": "2.4.1", 968 | "parseurl": "~1.3.3", 969 | "statuses": "2.0.1", 970 | "unpipe": "~1.0.0" 971 | }, 972 | "engines": { 973 | "node": ">= 0.8" 974 | } 975 | }, 976 | "node_modules/forwarded": { 977 | "version": "0.2.0", 978 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 979 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 980 | "license": "MIT", 981 | "engines": { 982 | "node": ">= 0.6" 983 | } 984 | }, 985 | "node_modules/fresh": { 986 | "version": "0.5.2", 987 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 988 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 989 | "license": "MIT", 990 | "engines": { 991 | "node": ">= 0.6" 992 | } 993 | }, 994 | "node_modules/fs-constants": { 995 | "version": "1.0.0", 996 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 997 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 998 | "license": "MIT" 999 | }, 1000 | "node_modules/fs-minipass": { 1001 | "version": "2.1.0", 1002 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 1003 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 1004 | "license": "ISC", 1005 | "dependencies": { 1006 | "minipass": "^3.0.0" 1007 | }, 1008 | "engines": { 1009 | "node": ">= 8" 1010 | } 1011 | }, 1012 | "node_modules/fs.realpath": { 1013 | "version": "1.0.0", 1014 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1015 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1016 | "license": "ISC", 1017 | "optional": true 1018 | }, 1019 | "node_modules/function-bind": { 1020 | "version": "1.1.2", 1021 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 1022 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 1023 | "license": "MIT", 1024 | "funding": { 1025 | "url": "https://github.com/sponsors/ljharb" 1026 | } 1027 | }, 1028 | "node_modules/gauge": { 1029 | "version": "4.0.4", 1030 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", 1031 | "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", 1032 | "deprecated": "This package is no longer supported.", 1033 | "license": "ISC", 1034 | "optional": true, 1035 | "dependencies": { 1036 | "aproba": "^1.0.3 || ^2.0.0", 1037 | "color-support": "^1.1.3", 1038 | "console-control-strings": "^1.1.0", 1039 | "has-unicode": "^2.0.1", 1040 | "signal-exit": "^3.0.7", 1041 | "string-width": "^4.2.3", 1042 | "strip-ansi": "^6.0.1", 1043 | "wide-align": "^1.1.5" 1044 | }, 1045 | "engines": { 1046 | "node": "^12.13.0 || ^14.15.0 || >=16.0.0" 1047 | } 1048 | }, 1049 | "node_modules/get-intrinsic": { 1050 | "version": "1.2.7", 1051 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", 1052 | "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", 1053 | "license": "MIT", 1054 | "dependencies": { 1055 | "call-bind-apply-helpers": "^1.0.1", 1056 | "es-define-property": "^1.0.1", 1057 | "es-errors": "^1.3.0", 1058 | "es-object-atoms": "^1.0.0", 1059 | "function-bind": "^1.1.2", 1060 | "get-proto": "^1.0.0", 1061 | "gopd": "^1.2.0", 1062 | "has-symbols": "^1.1.0", 1063 | "hasown": "^2.0.2", 1064 | "math-intrinsics": "^1.1.0" 1065 | }, 1066 | "engines": { 1067 | "node": ">= 0.4" 1068 | }, 1069 | "funding": { 1070 | "url": "https://github.com/sponsors/ljharb" 1071 | } 1072 | }, 1073 | "node_modules/get-proto": { 1074 | "version": "1.0.1", 1075 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", 1076 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 1077 | "license": "MIT", 1078 | "dependencies": { 1079 | "dunder-proto": "^1.0.1", 1080 | "es-object-atoms": "^1.0.0" 1081 | }, 1082 | "engines": { 1083 | "node": ">= 0.4" 1084 | } 1085 | }, 1086 | "node_modules/github-from-package": { 1087 | "version": "0.0.0", 1088 | "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 1089 | "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", 1090 | "license": "MIT" 1091 | }, 1092 | "node_modules/glob": { 1093 | "version": "7.2.3", 1094 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1095 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1096 | "deprecated": "Glob versions prior to v9 are no longer supported", 1097 | "license": "ISC", 1098 | "optional": true, 1099 | "dependencies": { 1100 | "fs.realpath": "^1.0.0", 1101 | "inflight": "^1.0.4", 1102 | "inherits": "2", 1103 | "minimatch": "^3.1.1", 1104 | "once": "^1.3.0", 1105 | "path-is-absolute": "^1.0.0" 1106 | }, 1107 | "engines": { 1108 | "node": "*" 1109 | }, 1110 | "funding": { 1111 | "url": "https://github.com/sponsors/isaacs" 1112 | } 1113 | }, 1114 | "node_modules/gopd": { 1115 | "version": "1.2.0", 1116 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", 1117 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", 1118 | "license": "MIT", 1119 | "engines": { 1120 | "node": ">= 0.4" 1121 | }, 1122 | "funding": { 1123 | "url": "https://github.com/sponsors/ljharb" 1124 | } 1125 | }, 1126 | "node_modules/graceful-fs": { 1127 | "version": "4.2.11", 1128 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1129 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1130 | "license": "ISC", 1131 | "optional": true 1132 | }, 1133 | "node_modules/has-symbols": { 1134 | "version": "1.1.0", 1135 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", 1136 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", 1137 | "license": "MIT", 1138 | "engines": { 1139 | "node": ">= 0.4" 1140 | }, 1141 | "funding": { 1142 | "url": "https://github.com/sponsors/ljharb" 1143 | } 1144 | }, 1145 | "node_modules/has-unicode": { 1146 | "version": "2.0.1", 1147 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 1148 | "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", 1149 | "license": "ISC", 1150 | "optional": true 1151 | }, 1152 | "node_modules/hasown": { 1153 | "version": "2.0.2", 1154 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 1155 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 1156 | "license": "MIT", 1157 | "dependencies": { 1158 | "function-bind": "^1.1.2" 1159 | }, 1160 | "engines": { 1161 | "node": ">= 0.4" 1162 | } 1163 | }, 1164 | "node_modules/http-cache-semantics": { 1165 | "version": "4.1.1", 1166 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", 1167 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", 1168 | "license": "BSD-2-Clause", 1169 | "optional": true 1170 | }, 1171 | "node_modules/http-errors": { 1172 | "version": "2.0.0", 1173 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1174 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1175 | "license": "MIT", 1176 | "dependencies": { 1177 | "depd": "2.0.0", 1178 | "inherits": "2.0.4", 1179 | "setprototypeof": "1.2.0", 1180 | "statuses": "2.0.1", 1181 | "toidentifier": "1.0.1" 1182 | }, 1183 | "engines": { 1184 | "node": ">= 0.8" 1185 | } 1186 | }, 1187 | "node_modules/http-proxy-agent": { 1188 | "version": "4.0.1", 1189 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 1190 | "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 1191 | "license": "MIT", 1192 | "optional": true, 1193 | "dependencies": { 1194 | "@tootallnate/once": "1", 1195 | "agent-base": "6", 1196 | "debug": "4" 1197 | }, 1198 | "engines": { 1199 | "node": ">= 6" 1200 | } 1201 | }, 1202 | "node_modules/http-proxy-agent/node_modules/debug": { 1203 | "version": "4.4.0", 1204 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1205 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1206 | "license": "MIT", 1207 | "optional": true, 1208 | "dependencies": { 1209 | "ms": "^2.1.3" 1210 | }, 1211 | "engines": { 1212 | "node": ">=6.0" 1213 | }, 1214 | "peerDependenciesMeta": { 1215 | "supports-color": { 1216 | "optional": true 1217 | } 1218 | } 1219 | }, 1220 | "node_modules/http-proxy-agent/node_modules/ms": { 1221 | "version": "2.1.3", 1222 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1223 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1224 | "license": "MIT", 1225 | "optional": true 1226 | }, 1227 | "node_modules/https-proxy-agent": { 1228 | "version": "5.0.1", 1229 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 1230 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 1231 | "license": "MIT", 1232 | "optional": true, 1233 | "dependencies": { 1234 | "agent-base": "6", 1235 | "debug": "4" 1236 | }, 1237 | "engines": { 1238 | "node": ">= 6" 1239 | } 1240 | }, 1241 | "node_modules/https-proxy-agent/node_modules/debug": { 1242 | "version": "4.4.0", 1243 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1244 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1245 | "license": "MIT", 1246 | "optional": true, 1247 | "dependencies": { 1248 | "ms": "^2.1.3" 1249 | }, 1250 | "engines": { 1251 | "node": ">=6.0" 1252 | }, 1253 | "peerDependenciesMeta": { 1254 | "supports-color": { 1255 | "optional": true 1256 | } 1257 | } 1258 | }, 1259 | "node_modules/https-proxy-agent/node_modules/ms": { 1260 | "version": "2.1.3", 1261 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1262 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1263 | "license": "MIT", 1264 | "optional": true 1265 | }, 1266 | "node_modules/humanize-ms": { 1267 | "version": "1.2.1", 1268 | "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", 1269 | "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", 1270 | "license": "MIT", 1271 | "optional": true, 1272 | "dependencies": { 1273 | "ms": "^2.0.0" 1274 | } 1275 | }, 1276 | "node_modules/iconv-lite": { 1277 | "version": "0.4.24", 1278 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1279 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1280 | "license": "MIT", 1281 | "dependencies": { 1282 | "safer-buffer": ">= 2.1.2 < 3" 1283 | }, 1284 | "engines": { 1285 | "node": ">=0.10.0" 1286 | } 1287 | }, 1288 | "node_modules/ieee754": { 1289 | "version": "1.2.1", 1290 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1291 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1292 | "funding": [ 1293 | { 1294 | "type": "github", 1295 | "url": "https://github.com/sponsors/feross" 1296 | }, 1297 | { 1298 | "type": "patreon", 1299 | "url": "https://www.patreon.com/feross" 1300 | }, 1301 | { 1302 | "type": "consulting", 1303 | "url": "https://feross.org/support" 1304 | } 1305 | ], 1306 | "license": "BSD-3-Clause" 1307 | }, 1308 | "node_modules/imurmurhash": { 1309 | "version": "0.1.4", 1310 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1311 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1312 | "license": "MIT", 1313 | "optional": true, 1314 | "engines": { 1315 | "node": ">=0.8.19" 1316 | } 1317 | }, 1318 | "node_modules/indent-string": { 1319 | "version": "4.0.0", 1320 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 1321 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 1322 | "license": "MIT", 1323 | "optional": true, 1324 | "engines": { 1325 | "node": ">=8" 1326 | } 1327 | }, 1328 | "node_modules/infer-owner": { 1329 | "version": "1.0.4", 1330 | "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", 1331 | "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", 1332 | "license": "ISC", 1333 | "optional": true 1334 | }, 1335 | "node_modules/inflight": { 1336 | "version": "1.0.6", 1337 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1338 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1339 | "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", 1340 | "license": "ISC", 1341 | "optional": true, 1342 | "dependencies": { 1343 | "once": "^1.3.0", 1344 | "wrappy": "1" 1345 | } 1346 | }, 1347 | "node_modules/inherits": { 1348 | "version": "2.0.4", 1349 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1350 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1351 | "license": "ISC" 1352 | }, 1353 | "node_modules/ini": { 1354 | "version": "1.3.8", 1355 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1356 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1357 | "license": "ISC" 1358 | }, 1359 | "node_modules/ip-address": { 1360 | "version": "9.0.5", 1361 | "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", 1362 | "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", 1363 | "license": "MIT", 1364 | "optional": true, 1365 | "dependencies": { 1366 | "jsbn": "1.1.0", 1367 | "sprintf-js": "^1.1.3" 1368 | }, 1369 | "engines": { 1370 | "node": ">= 12" 1371 | } 1372 | }, 1373 | "node_modules/ipaddr.js": { 1374 | "version": "1.9.1", 1375 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1376 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 1377 | "license": "MIT", 1378 | "engines": { 1379 | "node": ">= 0.10" 1380 | } 1381 | }, 1382 | "node_modules/is-buffer": { 1383 | "version": "1.1.6", 1384 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1385 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1386 | "license": "MIT" 1387 | }, 1388 | "node_modules/is-fullwidth-code-point": { 1389 | "version": "3.0.0", 1390 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1391 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1392 | "license": "MIT", 1393 | "optional": true, 1394 | "engines": { 1395 | "node": ">=8" 1396 | } 1397 | }, 1398 | "node_modules/is-lambda": { 1399 | "version": "1.0.1", 1400 | "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", 1401 | "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", 1402 | "license": "MIT", 1403 | "optional": true 1404 | }, 1405 | "node_modules/isexe": { 1406 | "version": "2.0.0", 1407 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1408 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1409 | "license": "ISC", 1410 | "optional": true 1411 | }, 1412 | "node_modules/jsbn": { 1413 | "version": "1.1.0", 1414 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", 1415 | "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", 1416 | "license": "MIT", 1417 | "optional": true 1418 | }, 1419 | "node_modules/lodash": { 1420 | "version": "4.17.21", 1421 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1422 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1423 | "license": "MIT" 1424 | }, 1425 | "node_modules/lodash.snakecase": { 1426 | "version": "4.1.1", 1427 | "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", 1428 | "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", 1429 | "license": "MIT" 1430 | }, 1431 | "node_modules/lru-cache": { 1432 | "version": "6.0.0", 1433 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1434 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1435 | "license": "ISC", 1436 | "optional": true, 1437 | "dependencies": { 1438 | "yallist": "^4.0.0" 1439 | }, 1440 | "engines": { 1441 | "node": ">=10" 1442 | } 1443 | }, 1444 | "node_modules/magic-bytes.js": { 1445 | "version": "1.10.0", 1446 | "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.10.0.tgz", 1447 | "integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==", 1448 | "license": "MIT" 1449 | }, 1450 | "node_modules/make-fetch-happen": { 1451 | "version": "9.1.0", 1452 | "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", 1453 | "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", 1454 | "license": "ISC", 1455 | "optional": true, 1456 | "dependencies": { 1457 | "agentkeepalive": "^4.1.3", 1458 | "cacache": "^15.2.0", 1459 | "http-cache-semantics": "^4.1.0", 1460 | "http-proxy-agent": "^4.0.1", 1461 | "https-proxy-agent": "^5.0.0", 1462 | "is-lambda": "^1.0.1", 1463 | "lru-cache": "^6.0.0", 1464 | "minipass": "^3.1.3", 1465 | "minipass-collect": "^1.0.2", 1466 | "minipass-fetch": "^1.3.2", 1467 | "minipass-flush": "^1.0.5", 1468 | "minipass-pipeline": "^1.2.4", 1469 | "negotiator": "^0.6.2", 1470 | "promise-retry": "^2.0.1", 1471 | "socks-proxy-agent": "^6.0.0", 1472 | "ssri": "^8.0.0" 1473 | }, 1474 | "engines": { 1475 | "node": ">= 10" 1476 | } 1477 | }, 1478 | "node_modules/math-intrinsics": { 1479 | "version": "1.1.0", 1480 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", 1481 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", 1482 | "license": "MIT", 1483 | "engines": { 1484 | "node": ">= 0.4" 1485 | } 1486 | }, 1487 | "node_modules/md5": { 1488 | "version": "2.3.0", 1489 | "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", 1490 | "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", 1491 | "license": "BSD-3-Clause", 1492 | "dependencies": { 1493 | "charenc": "0.0.2", 1494 | "crypt": "0.0.2", 1495 | "is-buffer": "~1.1.6" 1496 | } 1497 | }, 1498 | "node_modules/media-typer": { 1499 | "version": "0.3.0", 1500 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1501 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 1502 | "license": "MIT", 1503 | "engines": { 1504 | "node": ">= 0.6" 1505 | } 1506 | }, 1507 | "node_modules/merge-descriptors": { 1508 | "version": "1.0.3", 1509 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", 1510 | "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", 1511 | "license": "MIT", 1512 | "funding": { 1513 | "url": "https://github.com/sponsors/sindresorhus" 1514 | } 1515 | }, 1516 | "node_modules/methods": { 1517 | "version": "1.1.2", 1518 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1519 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", 1520 | "license": "MIT", 1521 | "engines": { 1522 | "node": ">= 0.6" 1523 | } 1524 | }, 1525 | "node_modules/mime": { 1526 | "version": "1.6.0", 1527 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1528 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1529 | "license": "MIT", 1530 | "bin": { 1531 | "mime": "cli.js" 1532 | }, 1533 | "engines": { 1534 | "node": ">=4" 1535 | } 1536 | }, 1537 | "node_modules/mime-db": { 1538 | "version": "1.52.0", 1539 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1540 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1541 | "license": "MIT", 1542 | "engines": { 1543 | "node": ">= 0.6" 1544 | } 1545 | }, 1546 | "node_modules/mime-types": { 1547 | "version": "2.1.35", 1548 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1549 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1550 | "license": "MIT", 1551 | "dependencies": { 1552 | "mime-db": "1.52.0" 1553 | }, 1554 | "engines": { 1555 | "node": ">= 0.6" 1556 | } 1557 | }, 1558 | "node_modules/mimic-response": { 1559 | "version": "3.1.0", 1560 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 1561 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 1562 | "license": "MIT", 1563 | "engines": { 1564 | "node": ">=10" 1565 | }, 1566 | "funding": { 1567 | "url": "https://github.com/sponsors/sindresorhus" 1568 | } 1569 | }, 1570 | "node_modules/minimatch": { 1571 | "version": "3.1.2", 1572 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1573 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1574 | "license": "ISC", 1575 | "optional": true, 1576 | "dependencies": { 1577 | "brace-expansion": "^1.1.7" 1578 | }, 1579 | "engines": { 1580 | "node": "*" 1581 | } 1582 | }, 1583 | "node_modules/minimist": { 1584 | "version": "1.2.8", 1585 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 1586 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 1587 | "license": "MIT", 1588 | "funding": { 1589 | "url": "https://github.com/sponsors/ljharb" 1590 | } 1591 | }, 1592 | "node_modules/minipass": { 1593 | "version": "3.3.6", 1594 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", 1595 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", 1596 | "license": "ISC", 1597 | "dependencies": { 1598 | "yallist": "^4.0.0" 1599 | }, 1600 | "engines": { 1601 | "node": ">=8" 1602 | } 1603 | }, 1604 | "node_modules/minipass-collect": { 1605 | "version": "1.0.2", 1606 | "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", 1607 | "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", 1608 | "license": "ISC", 1609 | "optional": true, 1610 | "dependencies": { 1611 | "minipass": "^3.0.0" 1612 | }, 1613 | "engines": { 1614 | "node": ">= 8" 1615 | } 1616 | }, 1617 | "node_modules/minipass-fetch": { 1618 | "version": "1.4.1", 1619 | "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", 1620 | "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", 1621 | "license": "MIT", 1622 | "optional": true, 1623 | "dependencies": { 1624 | "minipass": "^3.1.0", 1625 | "minipass-sized": "^1.0.3", 1626 | "minizlib": "^2.0.0" 1627 | }, 1628 | "engines": { 1629 | "node": ">=8" 1630 | }, 1631 | "optionalDependencies": { 1632 | "encoding": "^0.1.12" 1633 | } 1634 | }, 1635 | "node_modules/minipass-flush": { 1636 | "version": "1.0.5", 1637 | "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", 1638 | "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", 1639 | "license": "ISC", 1640 | "optional": true, 1641 | "dependencies": { 1642 | "minipass": "^3.0.0" 1643 | }, 1644 | "engines": { 1645 | "node": ">= 8" 1646 | } 1647 | }, 1648 | "node_modules/minipass-pipeline": { 1649 | "version": "1.2.4", 1650 | "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", 1651 | "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", 1652 | "license": "ISC", 1653 | "optional": true, 1654 | "dependencies": { 1655 | "minipass": "^3.0.0" 1656 | }, 1657 | "engines": { 1658 | "node": ">=8" 1659 | } 1660 | }, 1661 | "node_modules/minipass-sized": { 1662 | "version": "1.0.3", 1663 | "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", 1664 | "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", 1665 | "license": "ISC", 1666 | "optional": true, 1667 | "dependencies": { 1668 | "minipass": "^3.0.0" 1669 | }, 1670 | "engines": { 1671 | "node": ">=8" 1672 | } 1673 | }, 1674 | "node_modules/minizlib": { 1675 | "version": "2.1.2", 1676 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 1677 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 1678 | "license": "MIT", 1679 | "dependencies": { 1680 | "minipass": "^3.0.0", 1681 | "yallist": "^4.0.0" 1682 | }, 1683 | "engines": { 1684 | "node": ">= 8" 1685 | } 1686 | }, 1687 | "node_modules/mkdirp": { 1688 | "version": "1.0.4", 1689 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 1690 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 1691 | "license": "MIT", 1692 | "bin": { 1693 | "mkdirp": "bin/cmd.js" 1694 | }, 1695 | "engines": { 1696 | "node": ">=10" 1697 | } 1698 | }, 1699 | "node_modules/mkdirp-classic": { 1700 | "version": "0.5.3", 1701 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 1702 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 1703 | "license": "MIT" 1704 | }, 1705 | "node_modules/ms": { 1706 | "version": "2.0.0", 1707 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1708 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", 1709 | "license": "MIT" 1710 | }, 1711 | "node_modules/napi-build-utils": { 1712 | "version": "2.0.0", 1713 | "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", 1714 | "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", 1715 | "license": "MIT" 1716 | }, 1717 | "node_modules/negotiator": { 1718 | "version": "0.6.3", 1719 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1720 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 1721 | "license": "MIT", 1722 | "engines": { 1723 | "node": ">= 0.6" 1724 | } 1725 | }, 1726 | "node_modules/node-abi": { 1727 | "version": "3.74.0", 1728 | "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", 1729 | "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", 1730 | "license": "MIT", 1731 | "dependencies": { 1732 | "semver": "^7.3.5" 1733 | }, 1734 | "engines": { 1735 | "node": ">=10" 1736 | } 1737 | }, 1738 | "node_modules/node-addon-api": { 1739 | "version": "7.1.1", 1740 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", 1741 | "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", 1742 | "license": "MIT" 1743 | }, 1744 | "node_modules/node-gyp": { 1745 | "version": "8.4.1", 1746 | "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", 1747 | "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", 1748 | "license": "MIT", 1749 | "optional": true, 1750 | "dependencies": { 1751 | "env-paths": "^2.2.0", 1752 | "glob": "^7.1.4", 1753 | "graceful-fs": "^4.2.6", 1754 | "make-fetch-happen": "^9.1.0", 1755 | "nopt": "^5.0.0", 1756 | "npmlog": "^6.0.0", 1757 | "rimraf": "^3.0.2", 1758 | "semver": "^7.3.5", 1759 | "tar": "^6.1.2", 1760 | "which": "^2.0.2" 1761 | }, 1762 | "bin": { 1763 | "node-gyp": "bin/node-gyp.js" 1764 | }, 1765 | "engines": { 1766 | "node": ">= 10.12.0" 1767 | } 1768 | }, 1769 | "node_modules/nopt": { 1770 | "version": "5.0.0", 1771 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 1772 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 1773 | "license": "ISC", 1774 | "optional": true, 1775 | "dependencies": { 1776 | "abbrev": "1" 1777 | }, 1778 | "bin": { 1779 | "nopt": "bin/nopt.js" 1780 | }, 1781 | "engines": { 1782 | "node": ">=6" 1783 | } 1784 | }, 1785 | "node_modules/npmlog": { 1786 | "version": "6.0.2", 1787 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", 1788 | "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", 1789 | "deprecated": "This package is no longer supported.", 1790 | "license": "ISC", 1791 | "optional": true, 1792 | "dependencies": { 1793 | "are-we-there-yet": "^3.0.0", 1794 | "console-control-strings": "^1.1.0", 1795 | "gauge": "^4.0.3", 1796 | "set-blocking": "^2.0.0" 1797 | }, 1798 | "engines": { 1799 | "node": "^12.13.0 || ^14.15.0 || >=16.0.0" 1800 | } 1801 | }, 1802 | "node_modules/object-inspect": { 1803 | "version": "1.13.4", 1804 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", 1805 | "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", 1806 | "license": "MIT", 1807 | "engines": { 1808 | "node": ">= 0.4" 1809 | }, 1810 | "funding": { 1811 | "url": "https://github.com/sponsors/ljharb" 1812 | } 1813 | }, 1814 | "node_modules/on-finished": { 1815 | "version": "2.4.1", 1816 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1817 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1818 | "license": "MIT", 1819 | "dependencies": { 1820 | "ee-first": "1.1.1" 1821 | }, 1822 | "engines": { 1823 | "node": ">= 0.8" 1824 | } 1825 | }, 1826 | "node_modules/once": { 1827 | "version": "1.4.0", 1828 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1829 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1830 | "license": "ISC", 1831 | "dependencies": { 1832 | "wrappy": "1" 1833 | } 1834 | }, 1835 | "node_modules/p-map": { 1836 | "version": "4.0.0", 1837 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", 1838 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", 1839 | "license": "MIT", 1840 | "optional": true, 1841 | "dependencies": { 1842 | "aggregate-error": "^3.0.0" 1843 | }, 1844 | "engines": { 1845 | "node": ">=10" 1846 | }, 1847 | "funding": { 1848 | "url": "https://github.com/sponsors/sindresorhus" 1849 | } 1850 | }, 1851 | "node_modules/parseurl": { 1852 | "version": "1.3.3", 1853 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1854 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 1855 | "license": "MIT", 1856 | "engines": { 1857 | "node": ">= 0.8" 1858 | } 1859 | }, 1860 | "node_modules/path-is-absolute": { 1861 | "version": "1.0.1", 1862 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1863 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1864 | "license": "MIT", 1865 | "optional": true, 1866 | "engines": { 1867 | "node": ">=0.10.0" 1868 | } 1869 | }, 1870 | "node_modules/path-to-regexp": { 1871 | "version": "0.1.12", 1872 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", 1873 | "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", 1874 | "license": "MIT" 1875 | }, 1876 | "node_modules/prebuild-install": { 1877 | "version": "7.1.3", 1878 | "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", 1879 | "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", 1880 | "license": "MIT", 1881 | "dependencies": { 1882 | "detect-libc": "^2.0.0", 1883 | "expand-template": "^2.0.3", 1884 | "github-from-package": "0.0.0", 1885 | "minimist": "^1.2.3", 1886 | "mkdirp-classic": "^0.5.3", 1887 | "napi-build-utils": "^2.0.0", 1888 | "node-abi": "^3.3.0", 1889 | "pump": "^3.0.0", 1890 | "rc": "^1.2.7", 1891 | "simple-get": "^4.0.0", 1892 | "tar-fs": "^2.0.0", 1893 | "tunnel-agent": "^0.6.0" 1894 | }, 1895 | "bin": { 1896 | "prebuild-install": "bin.js" 1897 | }, 1898 | "engines": { 1899 | "node": ">=10" 1900 | } 1901 | }, 1902 | "node_modules/promise-inflight": { 1903 | "version": "1.0.1", 1904 | "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", 1905 | "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", 1906 | "license": "ISC", 1907 | "optional": true 1908 | }, 1909 | "node_modules/promise-retry": { 1910 | "version": "2.0.1", 1911 | "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", 1912 | "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", 1913 | "license": "MIT", 1914 | "optional": true, 1915 | "dependencies": { 1916 | "err-code": "^2.0.2", 1917 | "retry": "^0.12.0" 1918 | }, 1919 | "engines": { 1920 | "node": ">=10" 1921 | } 1922 | }, 1923 | "node_modules/proxy-addr": { 1924 | "version": "2.0.7", 1925 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1926 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1927 | "license": "MIT", 1928 | "dependencies": { 1929 | "forwarded": "0.2.0", 1930 | "ipaddr.js": "1.9.1" 1931 | }, 1932 | "engines": { 1933 | "node": ">= 0.10" 1934 | } 1935 | }, 1936 | "node_modules/pump": { 1937 | "version": "3.0.2", 1938 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", 1939 | "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", 1940 | "license": "MIT", 1941 | "dependencies": { 1942 | "end-of-stream": "^1.1.0", 1943 | "once": "^1.3.1" 1944 | } 1945 | }, 1946 | "node_modules/qs": { 1947 | "version": "6.13.0", 1948 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", 1949 | "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", 1950 | "license": "BSD-3-Clause", 1951 | "dependencies": { 1952 | "side-channel": "^1.0.6" 1953 | }, 1954 | "engines": { 1955 | "node": ">=0.6" 1956 | }, 1957 | "funding": { 1958 | "url": "https://github.com/sponsors/ljharb" 1959 | } 1960 | }, 1961 | "node_modules/range-parser": { 1962 | "version": "1.2.1", 1963 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1964 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 1965 | "license": "MIT", 1966 | "engines": { 1967 | "node": ">= 0.6" 1968 | } 1969 | }, 1970 | "node_modules/raw-body": { 1971 | "version": "2.5.2", 1972 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", 1973 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", 1974 | "license": "MIT", 1975 | "dependencies": { 1976 | "bytes": "3.1.2", 1977 | "http-errors": "2.0.0", 1978 | "iconv-lite": "0.4.24", 1979 | "unpipe": "1.0.0" 1980 | }, 1981 | "engines": { 1982 | "node": ">= 0.8" 1983 | } 1984 | }, 1985 | "node_modules/rc": { 1986 | "version": "1.2.8", 1987 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 1988 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 1989 | "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", 1990 | "dependencies": { 1991 | "deep-extend": "^0.6.0", 1992 | "ini": "~1.3.0", 1993 | "minimist": "^1.2.0", 1994 | "strip-json-comments": "~2.0.1" 1995 | }, 1996 | "bin": { 1997 | "rc": "cli.js" 1998 | } 1999 | }, 2000 | "node_modules/readable-stream": { 2001 | "version": "3.6.2", 2002 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 2003 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 2004 | "license": "MIT", 2005 | "dependencies": { 2006 | "inherits": "^2.0.3", 2007 | "string_decoder": "^1.1.1", 2008 | "util-deprecate": "^1.0.1" 2009 | }, 2010 | "engines": { 2011 | "node": ">= 6" 2012 | } 2013 | }, 2014 | "node_modules/retry": { 2015 | "version": "0.12.0", 2016 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", 2017 | "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", 2018 | "license": "MIT", 2019 | "optional": true, 2020 | "engines": { 2021 | "node": ">= 4" 2022 | } 2023 | }, 2024 | "node_modules/rimraf": { 2025 | "version": "3.0.2", 2026 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2027 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2028 | "deprecated": "Rimraf versions prior to v4 are no longer supported", 2029 | "license": "ISC", 2030 | "optional": true, 2031 | "dependencies": { 2032 | "glob": "^7.1.3" 2033 | }, 2034 | "bin": { 2035 | "rimraf": "bin.js" 2036 | }, 2037 | "funding": { 2038 | "url": "https://github.com/sponsors/isaacs" 2039 | } 2040 | }, 2041 | "node_modules/safe-buffer": { 2042 | "version": "5.2.1", 2043 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2044 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2045 | "funding": [ 2046 | { 2047 | "type": "github", 2048 | "url": "https://github.com/sponsors/feross" 2049 | }, 2050 | { 2051 | "type": "patreon", 2052 | "url": "https://www.patreon.com/feross" 2053 | }, 2054 | { 2055 | "type": "consulting", 2056 | "url": "https://feross.org/support" 2057 | } 2058 | ], 2059 | "license": "MIT" 2060 | }, 2061 | "node_modules/safer-buffer": { 2062 | "version": "2.1.2", 2063 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2064 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2065 | "license": "MIT" 2066 | }, 2067 | "node_modules/semver": { 2068 | "version": "7.7.1", 2069 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", 2070 | "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", 2071 | "license": "ISC", 2072 | "bin": { 2073 | "semver": "bin/semver.js" 2074 | }, 2075 | "engines": { 2076 | "node": ">=10" 2077 | } 2078 | }, 2079 | "node_modules/send": { 2080 | "version": "0.19.0", 2081 | "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", 2082 | "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", 2083 | "license": "MIT", 2084 | "dependencies": { 2085 | "debug": "2.6.9", 2086 | "depd": "2.0.0", 2087 | "destroy": "1.2.0", 2088 | "encodeurl": "~1.0.2", 2089 | "escape-html": "~1.0.3", 2090 | "etag": "~1.8.1", 2091 | "fresh": "0.5.2", 2092 | "http-errors": "2.0.0", 2093 | "mime": "1.6.0", 2094 | "ms": "2.1.3", 2095 | "on-finished": "2.4.1", 2096 | "range-parser": "~1.2.1", 2097 | "statuses": "2.0.1" 2098 | }, 2099 | "engines": { 2100 | "node": ">= 0.8.0" 2101 | } 2102 | }, 2103 | "node_modules/send/node_modules/encodeurl": { 2104 | "version": "1.0.2", 2105 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 2106 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 2107 | "license": "MIT", 2108 | "engines": { 2109 | "node": ">= 0.8" 2110 | } 2111 | }, 2112 | "node_modules/send/node_modules/ms": { 2113 | "version": "2.1.3", 2114 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2115 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2116 | "license": "MIT" 2117 | }, 2118 | "node_modules/serve-static": { 2119 | "version": "1.16.2", 2120 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", 2121 | "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", 2122 | "license": "MIT", 2123 | "dependencies": { 2124 | "encodeurl": "~2.0.0", 2125 | "escape-html": "~1.0.3", 2126 | "parseurl": "~1.3.3", 2127 | "send": "0.19.0" 2128 | }, 2129 | "engines": { 2130 | "node": ">= 0.8.0" 2131 | } 2132 | }, 2133 | "node_modules/set-blocking": { 2134 | "version": "2.0.0", 2135 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 2136 | "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", 2137 | "license": "ISC", 2138 | "optional": true 2139 | }, 2140 | "node_modules/setprototypeof": { 2141 | "version": "1.2.0", 2142 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 2143 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", 2144 | "license": "ISC" 2145 | }, 2146 | "node_modules/side-channel": { 2147 | "version": "1.1.0", 2148 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", 2149 | "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", 2150 | "license": "MIT", 2151 | "dependencies": { 2152 | "es-errors": "^1.3.0", 2153 | "object-inspect": "^1.13.3", 2154 | "side-channel-list": "^1.0.0", 2155 | "side-channel-map": "^1.0.1", 2156 | "side-channel-weakmap": "^1.0.2" 2157 | }, 2158 | "engines": { 2159 | "node": ">= 0.4" 2160 | }, 2161 | "funding": { 2162 | "url": "https://github.com/sponsors/ljharb" 2163 | } 2164 | }, 2165 | "node_modules/side-channel-list": { 2166 | "version": "1.0.0", 2167 | "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", 2168 | "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", 2169 | "license": "MIT", 2170 | "dependencies": { 2171 | "es-errors": "^1.3.0", 2172 | "object-inspect": "^1.13.3" 2173 | }, 2174 | "engines": { 2175 | "node": ">= 0.4" 2176 | }, 2177 | "funding": { 2178 | "url": "https://github.com/sponsors/ljharb" 2179 | } 2180 | }, 2181 | "node_modules/side-channel-map": { 2182 | "version": "1.0.1", 2183 | "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", 2184 | "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", 2185 | "license": "MIT", 2186 | "dependencies": { 2187 | "call-bound": "^1.0.2", 2188 | "es-errors": "^1.3.0", 2189 | "get-intrinsic": "^1.2.5", 2190 | "object-inspect": "^1.13.3" 2191 | }, 2192 | "engines": { 2193 | "node": ">= 0.4" 2194 | }, 2195 | "funding": { 2196 | "url": "https://github.com/sponsors/ljharb" 2197 | } 2198 | }, 2199 | "node_modules/side-channel-weakmap": { 2200 | "version": "1.0.2", 2201 | "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", 2202 | "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", 2203 | "license": "MIT", 2204 | "dependencies": { 2205 | "call-bound": "^1.0.2", 2206 | "es-errors": "^1.3.0", 2207 | "get-intrinsic": "^1.2.5", 2208 | "object-inspect": "^1.13.3", 2209 | "side-channel-map": "^1.0.1" 2210 | }, 2211 | "engines": { 2212 | "node": ">= 0.4" 2213 | }, 2214 | "funding": { 2215 | "url": "https://github.com/sponsors/ljharb" 2216 | } 2217 | }, 2218 | "node_modules/signal-exit": { 2219 | "version": "3.0.7", 2220 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 2221 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 2222 | "license": "ISC", 2223 | "optional": true 2224 | }, 2225 | "node_modules/simple-concat": { 2226 | "version": "1.0.1", 2227 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 2228 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", 2229 | "funding": [ 2230 | { 2231 | "type": "github", 2232 | "url": "https://github.com/sponsors/feross" 2233 | }, 2234 | { 2235 | "type": "patreon", 2236 | "url": "https://www.patreon.com/feross" 2237 | }, 2238 | { 2239 | "type": "consulting", 2240 | "url": "https://feross.org/support" 2241 | } 2242 | ], 2243 | "license": "MIT" 2244 | }, 2245 | "node_modules/simple-get": { 2246 | "version": "4.0.1", 2247 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", 2248 | "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", 2249 | "funding": [ 2250 | { 2251 | "type": "github", 2252 | "url": "https://github.com/sponsors/feross" 2253 | }, 2254 | { 2255 | "type": "patreon", 2256 | "url": "https://www.patreon.com/feross" 2257 | }, 2258 | { 2259 | "type": "consulting", 2260 | "url": "https://feross.org/support" 2261 | } 2262 | ], 2263 | "license": "MIT", 2264 | "dependencies": { 2265 | "decompress-response": "^6.0.0", 2266 | "once": "^1.3.1", 2267 | "simple-concat": "^1.0.0" 2268 | } 2269 | }, 2270 | "node_modules/smart-buffer": { 2271 | "version": "4.2.0", 2272 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 2273 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", 2274 | "license": "MIT", 2275 | "optional": true, 2276 | "engines": { 2277 | "node": ">= 6.0.0", 2278 | "npm": ">= 3.0.0" 2279 | } 2280 | }, 2281 | "node_modules/socks": { 2282 | "version": "2.8.4", 2283 | "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", 2284 | "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", 2285 | "license": "MIT", 2286 | "optional": true, 2287 | "dependencies": { 2288 | "ip-address": "^9.0.5", 2289 | "smart-buffer": "^4.2.0" 2290 | }, 2291 | "engines": { 2292 | "node": ">= 10.0.0", 2293 | "npm": ">= 3.0.0" 2294 | } 2295 | }, 2296 | "node_modules/socks-proxy-agent": { 2297 | "version": "6.2.1", 2298 | "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", 2299 | "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", 2300 | "license": "MIT", 2301 | "optional": true, 2302 | "dependencies": { 2303 | "agent-base": "^6.0.2", 2304 | "debug": "^4.3.3", 2305 | "socks": "^2.6.2" 2306 | }, 2307 | "engines": { 2308 | "node": ">= 10" 2309 | } 2310 | }, 2311 | "node_modules/socks-proxy-agent/node_modules/debug": { 2312 | "version": "4.4.0", 2313 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 2314 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 2315 | "license": "MIT", 2316 | "optional": true, 2317 | "dependencies": { 2318 | "ms": "^2.1.3" 2319 | }, 2320 | "engines": { 2321 | "node": ">=6.0" 2322 | }, 2323 | "peerDependenciesMeta": { 2324 | "supports-color": { 2325 | "optional": true 2326 | } 2327 | } 2328 | }, 2329 | "node_modules/socks-proxy-agent/node_modules/ms": { 2330 | "version": "2.1.3", 2331 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2332 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2333 | "license": "MIT", 2334 | "optional": true 2335 | }, 2336 | "node_modules/sprintf-js": { 2337 | "version": "1.1.3", 2338 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", 2339 | "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", 2340 | "license": "BSD-3-Clause", 2341 | "optional": true 2342 | }, 2343 | "node_modules/sqlite3": { 2344 | "version": "5.1.7", 2345 | "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", 2346 | "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", 2347 | "hasInstallScript": true, 2348 | "license": "BSD-3-Clause", 2349 | "dependencies": { 2350 | "bindings": "^1.5.0", 2351 | "node-addon-api": "^7.0.0", 2352 | "prebuild-install": "^7.1.1", 2353 | "tar": "^6.1.11" 2354 | }, 2355 | "optionalDependencies": { 2356 | "node-gyp": "8.x" 2357 | }, 2358 | "peerDependencies": { 2359 | "node-gyp": "8.x" 2360 | }, 2361 | "peerDependenciesMeta": { 2362 | "node-gyp": { 2363 | "optional": true 2364 | } 2365 | } 2366 | }, 2367 | "node_modules/ssri": { 2368 | "version": "8.0.1", 2369 | "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", 2370 | "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", 2371 | "license": "ISC", 2372 | "optional": true, 2373 | "dependencies": { 2374 | "minipass": "^3.1.1" 2375 | }, 2376 | "engines": { 2377 | "node": ">= 8" 2378 | } 2379 | }, 2380 | "node_modules/statuses": { 2381 | "version": "2.0.1", 2382 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 2383 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 2384 | "license": "MIT", 2385 | "engines": { 2386 | "node": ">= 0.8" 2387 | } 2388 | }, 2389 | "node_modules/string_decoder": { 2390 | "version": "1.3.0", 2391 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2392 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2393 | "license": "MIT", 2394 | "dependencies": { 2395 | "safe-buffer": "~5.2.0" 2396 | } 2397 | }, 2398 | "node_modules/string-width": { 2399 | "version": "4.2.3", 2400 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2401 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2402 | "license": "MIT", 2403 | "optional": true, 2404 | "dependencies": { 2405 | "emoji-regex": "^8.0.0", 2406 | "is-fullwidth-code-point": "^3.0.0", 2407 | "strip-ansi": "^6.0.1" 2408 | }, 2409 | "engines": { 2410 | "node": ">=8" 2411 | } 2412 | }, 2413 | "node_modules/strip-ansi": { 2414 | "version": "6.0.1", 2415 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2416 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2417 | "license": "MIT", 2418 | "optional": true, 2419 | "dependencies": { 2420 | "ansi-regex": "^5.0.1" 2421 | }, 2422 | "engines": { 2423 | "node": ">=8" 2424 | } 2425 | }, 2426 | "node_modules/strip-json-comments": { 2427 | "version": "2.0.1", 2428 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2429 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 2430 | "license": "MIT", 2431 | "engines": { 2432 | "node": ">=0.10.0" 2433 | } 2434 | }, 2435 | "node_modules/tar": { 2436 | "version": "6.2.1", 2437 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", 2438 | "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", 2439 | "license": "ISC", 2440 | "dependencies": { 2441 | "chownr": "^2.0.0", 2442 | "fs-minipass": "^2.0.0", 2443 | "minipass": "^5.0.0", 2444 | "minizlib": "^2.1.1", 2445 | "mkdirp": "^1.0.3", 2446 | "yallist": "^4.0.0" 2447 | }, 2448 | "engines": { 2449 | "node": ">=10" 2450 | } 2451 | }, 2452 | "node_modules/tar-fs": { 2453 | "version": "2.1.2", 2454 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", 2455 | "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", 2456 | "license": "MIT", 2457 | "dependencies": { 2458 | "chownr": "^1.1.1", 2459 | "mkdirp-classic": "^0.5.2", 2460 | "pump": "^3.0.0", 2461 | "tar-stream": "^2.1.4" 2462 | } 2463 | }, 2464 | "node_modules/tar-fs/node_modules/chownr": { 2465 | "version": "1.1.4", 2466 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 2467 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 2468 | "license": "ISC" 2469 | }, 2470 | "node_modules/tar-stream": { 2471 | "version": "2.2.0", 2472 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 2473 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 2474 | "license": "MIT", 2475 | "dependencies": { 2476 | "bl": "^4.0.3", 2477 | "end-of-stream": "^1.4.1", 2478 | "fs-constants": "^1.0.0", 2479 | "inherits": "^2.0.3", 2480 | "readable-stream": "^3.1.1" 2481 | }, 2482 | "engines": { 2483 | "node": ">=6" 2484 | } 2485 | }, 2486 | "node_modules/tar/node_modules/minipass": { 2487 | "version": "5.0.0", 2488 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", 2489 | "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", 2490 | "license": "ISC", 2491 | "engines": { 2492 | "node": ">=8" 2493 | } 2494 | }, 2495 | "node_modules/toidentifier": { 2496 | "version": "1.0.1", 2497 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 2498 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 2499 | "license": "MIT", 2500 | "engines": { 2501 | "node": ">=0.6" 2502 | } 2503 | }, 2504 | "node_modules/ts-mixer": { 2505 | "version": "6.0.4", 2506 | "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", 2507 | "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==", 2508 | "license": "MIT" 2509 | }, 2510 | "node_modules/tslib": { 2511 | "version": "2.8.1", 2512 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", 2513 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", 2514 | "license": "0BSD" 2515 | }, 2516 | "node_modules/tunnel-agent": { 2517 | "version": "0.6.0", 2518 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 2519 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 2520 | "license": "Apache-2.0", 2521 | "dependencies": { 2522 | "safe-buffer": "^5.0.1" 2523 | }, 2524 | "engines": { 2525 | "node": "*" 2526 | } 2527 | }, 2528 | "node_modules/type-is": { 2529 | "version": "1.6.18", 2530 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2531 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2532 | "license": "MIT", 2533 | "dependencies": { 2534 | "media-typer": "0.3.0", 2535 | "mime-types": "~2.1.24" 2536 | }, 2537 | "engines": { 2538 | "node": ">= 0.6" 2539 | } 2540 | }, 2541 | "node_modules/undici": { 2542 | "version": "6.21.1", 2543 | "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", 2544 | "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", 2545 | "license": "MIT", 2546 | "engines": { 2547 | "node": ">=18.17" 2548 | } 2549 | }, 2550 | "node_modules/undici-types": { 2551 | "version": "6.20.0", 2552 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", 2553 | "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", 2554 | "license": "MIT" 2555 | }, 2556 | "node_modules/unique-filename": { 2557 | "version": "1.1.1", 2558 | "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", 2559 | "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", 2560 | "license": "ISC", 2561 | "optional": true, 2562 | "dependencies": { 2563 | "unique-slug": "^2.0.0" 2564 | } 2565 | }, 2566 | "node_modules/unique-slug": { 2567 | "version": "2.0.2", 2568 | "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", 2569 | "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", 2570 | "license": "ISC", 2571 | "optional": true, 2572 | "dependencies": { 2573 | "imurmurhash": "^0.1.4" 2574 | } 2575 | }, 2576 | "node_modules/unpipe": { 2577 | "version": "1.0.0", 2578 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2579 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 2580 | "license": "MIT", 2581 | "engines": { 2582 | "node": ">= 0.8" 2583 | } 2584 | }, 2585 | "node_modules/util-deprecate": { 2586 | "version": "1.0.2", 2587 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2588 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2589 | "license": "MIT" 2590 | }, 2591 | "node_modules/utils-merge": { 2592 | "version": "1.0.1", 2593 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2594 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 2595 | "license": "MIT", 2596 | "engines": { 2597 | "node": ">= 0.4.0" 2598 | } 2599 | }, 2600 | "node_modules/vary": { 2601 | "version": "1.1.2", 2602 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2603 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 2604 | "license": "MIT", 2605 | "engines": { 2606 | "node": ">= 0.8" 2607 | } 2608 | }, 2609 | "node_modules/which": { 2610 | "version": "2.0.2", 2611 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2612 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2613 | "license": "ISC", 2614 | "optional": true, 2615 | "dependencies": { 2616 | "isexe": "^2.0.0" 2617 | }, 2618 | "bin": { 2619 | "node-which": "bin/node-which" 2620 | }, 2621 | "engines": { 2622 | "node": ">= 8" 2623 | } 2624 | }, 2625 | "node_modules/wide-align": { 2626 | "version": "1.1.5", 2627 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 2628 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 2629 | "license": "ISC", 2630 | "optional": true, 2631 | "dependencies": { 2632 | "string-width": "^1.0.2 || 2 || 3 || 4" 2633 | } 2634 | }, 2635 | "node_modules/wrappy": { 2636 | "version": "1.0.2", 2637 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2638 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2639 | "license": "ISC" 2640 | }, 2641 | "node_modules/ws": { 2642 | "version": "8.18.0", 2643 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", 2644 | "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", 2645 | "license": "MIT", 2646 | "engines": { 2647 | "node": ">=10.0.0" 2648 | }, 2649 | "peerDependencies": { 2650 | "bufferutil": "^4.0.1", 2651 | "utf-8-validate": ">=5.0.2" 2652 | }, 2653 | "peerDependenciesMeta": { 2654 | "bufferutil": { 2655 | "optional": true 2656 | }, 2657 | "utf-8-validate": { 2658 | "optional": true 2659 | } 2660 | } 2661 | }, 2662 | "node_modules/yallist": { 2663 | "version": "4.0.0", 2664 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2665 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2666 | "license": "ISC" 2667 | } 2668 | } 2669 | } 2670 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "discord-bot", 3 | "version": "0.8.2", 4 | "description": "Safe Client Discord Auth Bot", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js" 8 | }, 9 | "dependencies": { 10 | "body-parser": "^1.20.2", 11 | "discord-bot": "file:", 12 | "discord.js": "^14.0.0", 13 | "dotenv": "^16.0.0", 14 | "express": "^4.18.2", 15 | "md5": "^2.3.0", 16 | "sqlite3": "^5.1.2" 17 | } 18 | } 19 | --------------------------------------------------------------------------------