├── .env.example ├── .gitattributes ├── src ├── constants.ts ├── dotenv.ts ├── migrate.ts ├── db.ts ├── schema.ts ├── index.ts ├── util │ ├── xpMath.ts │ └── text.ts ├── util.ts ├── commands │ ├── xp.ts │ └── help.ts ├── Command.ts ├── modules │ └── xp.ts └── Client.ts ├── .gitignore ├── pnpm-workspace.yaml ├── drizzle ├── 0000_sharp_vindicator.sql └── meta │ ├── _journal.json │ └── 0000_snapshot.json ├── .editorconfig ├── drizzle.config.ts ├── README.md ├── tsconfig.json ├── package.json ├── .eslintrc.json ├── LICENSE └── pnpm-lock.yaml /.env.example: -------------------------------------------------------------------------------- 1 | DISCORD_TOKEN= 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /src/constants.ts: -------------------------------------------------------------------------------- 1 | export const PREFIX = "%"; 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | .env 4 | 5 | sqlite.db 6 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | onlyBuiltDependencies: 2 | - better-sqlite3 3 | - esbuild 4 | -------------------------------------------------------------------------------- /src/dotenv.ts: -------------------------------------------------------------------------------- 1 | import dotenv from "dotenv"; 2 | 3 | dotenv.config({ override: true }); 4 | -------------------------------------------------------------------------------- /drizzle/0000_sharp_vindicator.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `users` ( 2 | `id` text PRIMARY KEY NOT NULL, 3 | `xp` integer NOT NULL 4 | ); 5 | -------------------------------------------------------------------------------- /src/migrate.ts: -------------------------------------------------------------------------------- 1 | import { migrate } from "drizzle-orm/better-sqlite3/migrator"; 2 | 3 | import { db } from "./db"; 4 | 5 | migrate(db, { migrationsFolder: "./drizzle" }); 6 | -------------------------------------------------------------------------------- /src/db.ts: -------------------------------------------------------------------------------- 1 | import Database from "better-sqlite3"; 2 | import { drizzle } from "drizzle-orm/better-sqlite3"; 3 | 4 | const sqlite = new Database("sqlite.db"); 5 | export const db = drizzle(sqlite); 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # top-most EditorConfig file 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 4 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | -------------------------------------------------------------------------------- /src/schema.ts: -------------------------------------------------------------------------------- 1 | import { int, sqliteTable, text } from "drizzle-orm/sqlite-core"; 2 | 3 | export const users = sqliteTable("users", { 4 | id: text("id").primaryKey(), 5 | xp: int("xp").notNull() 6 | }); 7 | 8 | export type User = typeof users.$inferSelect; 9 | -------------------------------------------------------------------------------- /drizzle/meta/_journal.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "7", 3 | "dialect": "sqlite", 4 | "entries": [ 5 | { 6 | "idx": 0, 7 | "version": "6", 8 | "when": 1717336720864, 9 | "tag": "0000_sharp_vindicator", 10 | "breakpoints": true 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /drizzle.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "drizzle-kit"; 2 | 3 | export default defineConfig({ 4 | schema: "./src/schema.ts", 5 | dialect: "sqlite", 6 | dbCredentials: { 7 | url: "./sqlite.db" 8 | }, 9 | verbose: true, 10 | strict: true 11 | }); 12 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import "./dotenv"; 2 | import "~commands"; 3 | import "~modules"; 4 | 5 | import { Vennie } from "./Client"; 6 | 7 | process.on("unhandledRejection", console.error); 8 | process.on("uncaughtException", console.error); 9 | 10 | Vennie.connect().catch(console.error); 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Venniepoints 2 | 3 | Venniepoints is a Discord bot used on the [Vencord](https://vencord.dev) Discord server for experience points! 4 | 5 | This bot is extremely specific and not configurable so there is really no reason for you to want to self host it 6 | 7 | Nevertheless it is still available under a free software license so you can easily audit and modify it! 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "esModuleInterop": true, 5 | "lib": ["esnext", "esnext.array", "esnext.asynciterable", "esnext.symbol"], 6 | "module": "commonjs", 7 | "moduleResolution": "node", 8 | "strict": true, 9 | "noImplicitAny": false, 10 | "target": "ESNEXT" 11 | }, 12 | "include": ["src/**/*"] 13 | } 14 | -------------------------------------------------------------------------------- /src/util/xpMath.ts: -------------------------------------------------------------------------------- 1 | import { Message } from "oceanic.js"; 2 | 3 | export function getXpForLevel(level: number): number { 4 | return Math.ceil((5 / 2) * (-1 + 20 * Math.pow(level, 2))); 5 | } 6 | 7 | export function getLevelForXp(xp: number): number { 8 | return Math.floor(Math.sqrt(2 * xp + 5) / 10); 9 | } 10 | 11 | export function getRequiredXpForNextLevel(xp: number): number { 12 | return getXpForLevel(getLevelForXp(xp) + 1) - xp; 13 | } 14 | 15 | export function getXpForMessage(message: Message) { 16 | return Math.min(Math.ceil((message.content.length / 10) ** 2), 30); 17 | } 18 | -------------------------------------------------------------------------------- /src/util.ts: -------------------------------------------------------------------------------- 1 | import { CreateMessageOptions, Message } from "oceanic.js"; 2 | 3 | export const ZWSP = "\u200B"; 4 | 5 | export function reply(msg: Message, opts: CreateMessageOptions | string): Promise { 6 | if (typeof opts === "string") 7 | opts = { 8 | content: opts 9 | }; 10 | 11 | return msg.client.rest.channels.createMessage(msg.channelID, { 12 | ...opts, 13 | messageReference: { 14 | messageID: msg.id, 15 | channelID: msg.channelID, 16 | guildID: msg.guildID! 17 | } 18 | }); 19 | } 20 | 21 | export function until(ms: number) { 22 | return new Date(Date.now() + ms).toISOString(); 23 | } 24 | 25 | export async function silently(p?: Promise) { 26 | try { 27 | return await p; 28 | } catch { } 29 | } 30 | -------------------------------------------------------------------------------- /src/commands/xp.ts: -------------------------------------------------------------------------------- 1 | import { eq } from "drizzle-orm"; 2 | 3 | import { defineCommand } from "../Command"; 4 | import { db } from "../db"; 5 | import { users } from "../schema"; 6 | import { reply } from "../util"; 7 | import { getLevelForXp, getRequiredXpForNextLevel } from "../util/xpMath"; 8 | 9 | defineCommand({ 10 | name: "xp", 11 | description: "Get your XP", 12 | guildOnly: true, 13 | usage: null, 14 | async execute(msg) { 15 | if (msg.channelID !== "1024286218801926184") return; // BEGONE, NON BOT COMMANDS 16 | 17 | const xp = (db.select({ xp: users.xp }) 18 | .from(users) 19 | .where(eq(users.id, msg.author.id)) 20 | .get())?.xp ?? 0; 21 | 22 | const level = getLevelForXp(xp); 23 | const levelUpXp = getRequiredXpForNextLevel(xp); 24 | 25 | reply(msg, `<:venniecozycat:1216803437162004561> You have ${xp} XP, making you level ${level}! You need ${levelUpXp} more XP to level up.`); 26 | } 27 | }); 28 | -------------------------------------------------------------------------------- /drizzle/meta/0000_snapshot.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "6", 3 | "dialect": "sqlite", 4 | "id": "60b22056-c5e2-44b5-b23b-6c7f9daa0730", 5 | "prevId": "00000000-0000-0000-0000-000000000000", 6 | "tables": { 7 | "users": { 8 | "name": "users", 9 | "columns": { 10 | "id": { 11 | "name": "id", 12 | "type": "text", 13 | "primaryKey": true, 14 | "notNull": true, 15 | "autoincrement": false 16 | }, 17 | "xp": { 18 | "name": "xp", 19 | "type": "integer", 20 | "primaryKey": false, 21 | "notNull": true, 22 | "autoincrement": false 23 | } 24 | }, 25 | "indexes": {}, 26 | "foreignKeys": {}, 27 | "compositePrimaryKeys": {}, 28 | "uniqueConstraints": {} 29 | } 30 | }, 31 | "enums": {}, 32 | "_meta": { 33 | "schemas": {}, 34 | "tables": {}, 35 | "columns": {} 36 | }, 37 | "internal": { 38 | "indexes": {} 39 | } 40 | } -------------------------------------------------------------------------------- /src/Command.ts: -------------------------------------------------------------------------------- 1 | import { AnyTextableChannel, AnyTextableGuildChannel, Message, PermissionName } from "oceanic.js"; 2 | 3 | export interface Command { 4 | name: string; 5 | aliases?: string[]; 6 | description: string; 7 | usage: string | null; 8 | guildOnly?: GuildOnly; 9 | permissions?: Array, 10 | ownerOnly?: boolean; 11 | execute(message: GuildOnly extends true ? Message : Message, ...args: string[]): Promise; 12 | rawContent?: boolean; 13 | } 14 | 15 | export interface FullCommand extends Command { 16 | rateLimits: Set; 17 | } 18 | 19 | export const Commands = {} as Record; 20 | 21 | export function defineCommand>(c: C & { guildOnly: true }): void; 22 | export function defineCommand>(c: C): void; 23 | export function defineCommand>(c: C): void { 24 | const cmd = c as any as FullCommand; 25 | cmd.rateLimits = new Set(); 26 | 27 | Commands[cmd.name] = cmd; 28 | cmd.aliases?.forEach(alias => Commands[alias] = cmd); 29 | } 30 | -------------------------------------------------------------------------------- /src/util/text.ts: -------------------------------------------------------------------------------- 1 | import { ZWSP } from "../util"; 2 | 3 | export function pluralise(amount: number, singular: string, plural = singular + "s") { 4 | return amount === 1 ? `${amount} ${singular}` : `${amount} ${plural}`; 5 | } 6 | 7 | export function stripIndent(strings: TemplateStringsArray, ...values: any[]) { 8 | const string = String.raw({ raw: strings }, ...values); 9 | 10 | const match = string.match(/^[ \t]*(?=\S)/gm); 11 | if (!match) return string.trim(); 12 | 13 | const minIndent = match.reduce((r, a) => Math.min(r, a.length), Infinity); 14 | return string.replace(new RegExp(`^[ \\t]{${minIndent}}`, "gm"), "").trim(); 15 | } 16 | 17 | export function toTitle(s: string) { 18 | return s 19 | .split(" ") 20 | .map(w => w[0].toUpperCase() + w.slice(1).toLowerCase()) 21 | .join(" "); 22 | } 23 | 24 | export function snakeToTitle(s: string) { 25 | return s 26 | .split("_") 27 | .map(w => w[0].toUpperCase() + w.slice(1).toLowerCase()) 28 | .join(" "); 29 | } 30 | 31 | export function toInlineCode(s: string) { 32 | return "``" + ZWSP + s.replaceAll("`", ZWSP + "`" + ZWSP) + ZWSP + "``"; 33 | } 34 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "venniepoints", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "dist/index.js", 6 | "scripts": { 7 | "start": "pnpm build && node . VENNIE", 8 | "build": "node build.mjs", 9 | "test": "pnpm lint && pnpm testTypes", 10 | "testTypes": "tsc --noEmit", 11 | "lint": "eslint . --ext .js,.ts", 12 | "lint:fix": "pnpm lint --fix", 13 | "db:generate": "drizzle-kit generate", 14 | "db:migrate": "tsx ./src/migrate.ts" 15 | }, 16 | "keywords": [], 17 | "author": "lewisakura ", 18 | "dependencies": { 19 | "better-sqlite3": "^11.9.1", 20 | "dotenv": "^16.5.0", 21 | "drizzle-orm": "^0.31.4", 22 | "execa": "^8.0.1", 23 | "oceanic.js": "1.10.4", 24 | "pako": "^2.1.0" 25 | }, 26 | "devDependencies": { 27 | "@types/better-sqlite3": "^7.6.13", 28 | "@types/node": "^20.17.30", 29 | "@typescript-eslint/parser": "^7.18.0", 30 | "drizzle-kit": "^0.22.8", 31 | "esbuild": "^0.20.2", 32 | "eslint": "^8.57.1", 33 | "eslint-plugin-simple-import-sort": "^12.1.1", 34 | "eslint-plugin-unused-imports": "^3.2.0", 35 | "tslib": "^2.8.1", 36 | "tsx": "^4.19.3", 37 | "typescript": "^5.8.3" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/commands/help.ts: -------------------------------------------------------------------------------- 1 | import { Commands, defineCommand, FullCommand } from "../Command"; 2 | import { PREFIX } from "../constants"; 3 | import { reply, ZWSP } from "../util"; 4 | import { snakeToTitle, stripIndent, toInlineCode, toTitle } from "../util/text"; 5 | 6 | defineCommand({ 7 | name: "help", 8 | aliases: ["h", "?"], 9 | description: "List all commands or get help for a specific command", 10 | usage: "[command]", 11 | execute(msg, commandName) { 12 | if (!commandName) 13 | return reply(msg, { content: commandList() }); 14 | 15 | const cmd = Commands[commandName]; 16 | 17 | const content = cmd 18 | ? commandHelp(cmd) 19 | : `Command ${toInlineCode(commandName)} not found.`; 20 | 21 | return reply(msg, { content }); 22 | }, 23 | }); 24 | 25 | function commandList() { 26 | const commands = Object.entries(Commands) 27 | .filter(([name, cmd]) => !cmd.ownerOnly && cmd.name === name); // remove aliased commands 28 | 29 | const longestNameLength = commands.reduce((max, [name]) => Math.max(max, name.length), 0) + 1; 30 | 31 | const commandDescriptions = commands.map(([_, cmd], i) => { 32 | const paddedName = cmd.name.padEnd(longestNameLength, " "); 33 | return `\`${i === 0 ? ZWSP : ""} ${paddedName}\` ${cmd.description}`; 34 | }).join("\n"); 35 | 36 | return commandDescriptions + `\n\nUse \`${PREFIX}help \` for more information on a specific command!`; 37 | } 38 | 39 | function commandHelp(cmd: FullCommand) { 40 | let help = stripIndent` 41 | ## \`${toTitle(cmd.name)}\` ${cmd.aliases ? `(${cmd.aliases.join(", ")})` : ""} 42 | 43 | ${cmd.description} 44 | `; 45 | 46 | const usage = !cmd.usage ? "" : stripIndent` 47 | ### Usage 48 | 49 | ${"```"} 50 | ${PREFIX}${cmd.name} ${cmd.usage} 51 | ${"```"} 52 | `; 53 | 54 | const notes = stripIndent` 55 | ${cmd.ownerOnly ? "`👑` this command is owner-only." : ""} 56 | ${cmd.permissions?.length 57 | ? `\`🛠️\` requires permissions: ${cmd.permissions.map(snakeToTitle).join(", ")}` 58 | : "" 59 | } 60 | `; 61 | 62 | for (const section of [usage, notes]) 63 | if (section) 64 | help += `\n${section}\n`; 65 | 66 | return help; 67 | } 68 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "@typescript-eslint/parser", 4 | "ignorePatterns": ["dist"], 5 | "plugins": ["simple-import-sort", "unused-imports"], 6 | "rules": { 7 | "quotes": ["error", "double", { "avoidEscape": true }], 8 | "jsx-quotes": ["error", "prefer-double"], 9 | "no-mixed-spaces-and-tabs": "error", 10 | "arrow-parens": ["error", "as-needed"], 11 | "eol-last": ["error", "always"], 12 | "func-call-spacing": ["error", "never"], 13 | "no-multi-spaces": "error", 14 | "no-trailing-spaces": "error", 15 | "no-whitespace-before-property": "error", 16 | "semi": ["error", "always"], 17 | "semi-style": ["error", "last"], 18 | "space-in-parens": ["error", "never"], 19 | "block-spacing": ["error", "always"], 20 | "object-curly-spacing": ["error", "always"], 21 | "eqeqeq": ["error", "always", { "null": "ignore" }], 22 | "spaced-comment": ["error", "always", { "markers": ["!"] }], 23 | "yoda": "error", 24 | "prefer-destructuring": ["error", { 25 | "VariableDeclarator": { "array": false, "object": true }, 26 | "AssignmentExpression": { "array": false, "object": false } 27 | }], 28 | "operator-assignment": ["error", "always"], 29 | "no-useless-computed-key": "error", 30 | "no-unneeded-ternary": ["error", { "defaultAssignment": false }], 31 | "no-invalid-regexp": "error", 32 | "no-constant-condition": ["error", { "checkLoops": false }], 33 | "no-duplicate-imports": "error", 34 | "no-extra-semi": "error", 35 | "dot-notation": "error", 36 | "no-useless-escape": "error", 37 | "no-fallthrough": "error", 38 | "for-direction": "error", 39 | "no-async-promise-executor": "error", 40 | "no-cond-assign": "error", 41 | "no-dupe-else-if": "error", 42 | "no-duplicate-case": "error", 43 | "no-irregular-whitespace": "error", 44 | "no-loss-of-precision": "error", 45 | "no-misleading-character-class": "error", 46 | "no-prototype-builtins": "error", 47 | "no-regex-spaces": "error", 48 | "no-shadow-restricted-names": "error", 49 | "no-unexpected-multiline": "error", 50 | "no-unsafe-optional-chaining": "error", 51 | "no-useless-backreference": "error", 52 | "use-isnan": "error", 53 | "prefer-const": "error", 54 | "prefer-spread": "error", 55 | 56 | "simple-import-sort/imports": "error", 57 | "simple-import-sort/exports": "error", 58 | 59 | "unused-imports/no-unused-imports": "error" 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/modules/xp.ts: -------------------------------------------------------------------------------- 1 | import { eq, sql } from "drizzle-orm"; 2 | 3 | import { Vennie } from "../Client"; 4 | import { PREFIX } from "../constants"; 5 | import { db } from "../db"; 6 | import { User, users } from "../schema"; 7 | import { reply, silently } from "../util"; 8 | import { getLevelForXp, getXpForMessage } from "../util/xpMath"; 9 | 10 | const eligibleChannels = new Set([ 11 | // chat 12 | "1015060231060983891", // off topic 13 | "1121201005456011366", // german 14 | "1026504914131759104", // regulars 15 | "1223973149222375536", // programming 16 | "1232316599697149982", // international 17 | 18 | // development 19 | "1015063227299811479", // core 20 | "1032770730703716362", // plugin 21 | "1134844326933954622", // theme 22 | "1216096100382019634", // website 23 | "1216096162008924291", // vesktop 24 | "1215380773033476106", // client mod wiki 25 | ]); 26 | 27 | const rewards = { 28 | 10: "1136687385434918992", 29 | //20: "1026504932959977532" 30 | } as const; 31 | 32 | const cooldowns: Record = {}; 33 | 34 | Vennie.on("messageCreate", async msg => { 35 | if (!msg.inCachedGuildChannel()) return; 36 | if (msg.author.bot) return; 37 | 38 | if (!msg.content) return; // just an image 39 | 40 | if (msg.content.startsWith(PREFIX)) return; // ignore potential bot commands 41 | 42 | if (!eligibleChannels.has(msg.channelID)) return; 43 | 44 | if (cooldowns[msg.author.id] > Date.now()) return; 45 | 46 | cooldowns[msg.author.id] = Date.now() + (2.5 * 60000); // 2.5 minutes 47 | 48 | const xp = getXpForMessage(msg); 49 | 50 | const oldXp = (db.select({ xp: users.xp }) 51 | .from(users) 52 | .where(eq(users.id, msg.author.id)) 53 | .get())?.xp ?? 0; 54 | 55 | const user: User = db.insert(users) 56 | .values({ id: msg.author.id, xp }) 57 | .onConflictDoUpdate({ target: users.id, set: { xp: sql`${users.xp} + ${xp}` } }) 58 | .returning().get(); 59 | 60 | const oldLevel = getLevelForXp(oldXp); 61 | const newLevel = getLevelForXp(user.xp); 62 | 63 | if (newLevel > oldLevel) { 64 | const rewardsToBeIssued: string[] = []; 65 | 66 | for (const level of Object.keys(rewards)) { 67 | const l = parseInt(level); 68 | if (l > newLevel) break; 69 | 70 | const roleId = rewards[level]; 71 | 72 | if (msg.member.roles.includes(roleId)) continue; 73 | rewardsToBeIssued.push(roleId); 74 | } 75 | 76 | if (rewardsToBeIssued.length > 0) { 77 | for (const roleId of rewardsToBeIssued) { 78 | await msg.member.addRole(roleId, "level up!"); 79 | } 80 | } 81 | } 82 | }); 83 | -------------------------------------------------------------------------------- /src/Client.ts: -------------------------------------------------------------------------------- 1 | import { ActivityTypes, AnyTextableChannel, Client, Message } from "oceanic.js"; 2 | 3 | import { Commands } from "./Command"; 4 | import { PREFIX } from "./constants"; 5 | import { reply, silently } from "./util"; 6 | 7 | export const Vennie = new Client({ 8 | auth: "Bot " + process.env.DISCORD_TOKEN, 9 | gateway: { intents: ["ALL"] }, 10 | allowedMentions: { 11 | everyone: false, 12 | repliedUser: false, 13 | roles: false, 14 | users: false 15 | } 16 | }); 17 | 18 | export let OwnerId: string; 19 | Vennie.once("ready", async () => { 20 | Vennie.rest.oauth.getApplication().then(app => { 21 | OwnerId = app.ownerID; 22 | }); 23 | 24 | console.log("hi"); 25 | console.log(`Connected as ${Vennie.user.tag} (${Vennie.user.id})`); 26 | console.log(`I am in ${Vennie.guilds.size} guilds`); 27 | console.log(`https://discord.com/oauth2/authorize?client_id=${Vennie.user.id}&permissions=8&scope=bot+applications.commands`); 28 | 29 | Vennie.editStatus("online", [ 30 | { 31 | name: "custom", 32 | state: `${PREFIX}help`, 33 | type: ActivityTypes.CUSTOM 34 | } 35 | ]); 36 | }); 37 | 38 | const whitespaceRe = /\s+/; 39 | 40 | Vennie.on("messageCreate", async msg => { 41 | if (!msg.inCachedGuildChannel()) return; 42 | if (msg.author.bot) return; 43 | 44 | if (!msg.content?.toLowerCase().startsWith(PREFIX)) return; 45 | 46 | const content = msg.content.slice(PREFIX.length).trim(); 47 | const args = content.split(whitespaceRe); 48 | 49 | const cmdName = args.shift()?.toLowerCase()!; 50 | const cmd = Commands[cmdName]; 51 | if (!cmd) return; 52 | 53 | if (cmd.ownerOnly && msg.author.id !== OwnerId) 54 | return; 55 | 56 | if (cmd.guildOnly && msg.inDirectMessageChannel()) 57 | return reply(msg, { content: "This command can only be used in servers" }); 58 | 59 | if (cmd.permissions) { 60 | if (!msg.inCachedGuildChannel()) return; 61 | 62 | const memberPerms = msg.channel.permissionsOf(msg.member); 63 | if (cmd.permissions.some(perm => !memberPerms.has(perm))) 64 | return; 65 | } 66 | 67 | const noRateLimit = msg.member?.permissions.has("MANAGE_MESSAGES"); 68 | 69 | if (!noRateLimit) { 70 | if (cmd.rateLimits.has(msg.author.id)) 71 | return; 72 | 73 | cmd.rateLimits.add(msg.author.id); 74 | setTimeout(() => cmd.rateLimits.delete(msg.author.id), 10_000); 75 | } 76 | 77 | if (!msg.channel) 78 | await msg.client.rest.channels.get(msg.channelID); 79 | 80 | try { 81 | if (cmd.rawContent) 82 | await cmd.execute(msg as Message, content.slice(cmdName.length).trim()); 83 | else 84 | await cmd.execute(msg as Message, ...args); 85 | } catch (e) { 86 | console.error( 87 | `Failed to run ${cmd.name}`, 88 | `\n> ${msg.content}\n`, 89 | e 90 | ); 91 | silently(reply(msg, { content: "oop, that didn't go well 💥" })); 92 | } 93 | }); 94 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published by 637 | the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . 662 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | better-sqlite3: 12 | specifier: ^11.9.1 13 | version: 11.9.1 14 | dotenv: 15 | specifier: ^16.5.0 16 | version: 16.5.0 17 | drizzle-orm: 18 | specifier: ^0.31.4 19 | version: 0.31.4(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1) 20 | execa: 21 | specifier: ^8.0.1 22 | version: 8.0.1 23 | oceanic.js: 24 | specifier: 1.10.4 25 | version: 1.10.4 26 | pako: 27 | specifier: ^2.1.0 28 | version: 2.1.0 29 | devDependencies: 30 | '@types/better-sqlite3': 31 | specifier: ^7.6.13 32 | version: 7.6.13 33 | '@types/node': 34 | specifier: ^20.17.30 35 | version: 20.17.30 36 | '@typescript-eslint/parser': 37 | specifier: ^7.18.0 38 | version: 7.18.0(eslint@8.57.1)(typescript@5.8.3) 39 | drizzle-kit: 40 | specifier: ^0.22.8 41 | version: 0.22.8 42 | esbuild: 43 | specifier: ^0.20.2 44 | version: 0.20.2 45 | eslint: 46 | specifier: ^8.57.1 47 | version: 8.57.1 48 | eslint-plugin-simple-import-sort: 49 | specifier: ^12.1.1 50 | version: 12.1.1(eslint@8.57.1) 51 | eslint-plugin-unused-imports: 52 | specifier: ^3.2.0 53 | version: 3.2.0(eslint@8.57.1) 54 | tslib: 55 | specifier: ^2.8.1 56 | version: 2.8.1 57 | tsx: 58 | specifier: ^4.19.3 59 | version: 4.19.3 60 | typescript: 61 | specifier: ^5.8.3 62 | version: 5.8.3 63 | 64 | packages: 65 | 66 | '@discordjs/voice@0.16.1': 67 | resolution: {integrity: sha512-uiWiW0Ta6K473yf8zs13RfKuPqm/xU4m4dAidMkIdwqgy1CztbbZBtPLfDkVSKzpW7s6m072C+uQcs4LwF3FhA==} 68 | engines: {node: '>=16.11.0'} 69 | deprecated: This version uses deprecated encryption modes. Please use a newer version. 70 | 71 | '@esbuild-kit/core-utils@3.3.2': 72 | resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} 73 | deprecated: 'Merged into tsx: https://tsx.is' 74 | 75 | '@esbuild-kit/esm-loader@2.6.5': 76 | resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} 77 | deprecated: 'Merged into tsx: https://tsx.is' 78 | 79 | '@esbuild/aix-ppc64@0.19.12': 80 | resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} 81 | engines: {node: '>=12'} 82 | cpu: [ppc64] 83 | os: [aix] 84 | 85 | '@esbuild/aix-ppc64@0.20.2': 86 | resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} 87 | engines: {node: '>=12'} 88 | cpu: [ppc64] 89 | os: [aix] 90 | 91 | '@esbuild/aix-ppc64@0.25.2': 92 | resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} 93 | engines: {node: '>=18'} 94 | cpu: [ppc64] 95 | os: [aix] 96 | 97 | '@esbuild/android-arm64@0.18.20': 98 | resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 99 | engines: {node: '>=12'} 100 | cpu: [arm64] 101 | os: [android] 102 | 103 | '@esbuild/android-arm64@0.19.12': 104 | resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} 105 | engines: {node: '>=12'} 106 | cpu: [arm64] 107 | os: [android] 108 | 109 | '@esbuild/android-arm64@0.20.2': 110 | resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} 111 | engines: {node: '>=12'} 112 | cpu: [arm64] 113 | os: [android] 114 | 115 | '@esbuild/android-arm64@0.25.2': 116 | resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} 117 | engines: {node: '>=18'} 118 | cpu: [arm64] 119 | os: [android] 120 | 121 | '@esbuild/android-arm@0.18.20': 122 | resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 123 | engines: {node: '>=12'} 124 | cpu: [arm] 125 | os: [android] 126 | 127 | '@esbuild/android-arm@0.19.12': 128 | resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} 129 | engines: {node: '>=12'} 130 | cpu: [arm] 131 | os: [android] 132 | 133 | '@esbuild/android-arm@0.20.2': 134 | resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} 135 | engines: {node: '>=12'} 136 | cpu: [arm] 137 | os: [android] 138 | 139 | '@esbuild/android-arm@0.25.2': 140 | resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} 141 | engines: {node: '>=18'} 142 | cpu: [arm] 143 | os: [android] 144 | 145 | '@esbuild/android-x64@0.18.20': 146 | resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 147 | engines: {node: '>=12'} 148 | cpu: [x64] 149 | os: [android] 150 | 151 | '@esbuild/android-x64@0.19.12': 152 | resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} 153 | engines: {node: '>=12'} 154 | cpu: [x64] 155 | os: [android] 156 | 157 | '@esbuild/android-x64@0.20.2': 158 | resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} 159 | engines: {node: '>=12'} 160 | cpu: [x64] 161 | os: [android] 162 | 163 | '@esbuild/android-x64@0.25.2': 164 | resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} 165 | engines: {node: '>=18'} 166 | cpu: [x64] 167 | os: [android] 168 | 169 | '@esbuild/darwin-arm64@0.18.20': 170 | resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 171 | engines: {node: '>=12'} 172 | cpu: [arm64] 173 | os: [darwin] 174 | 175 | '@esbuild/darwin-arm64@0.19.12': 176 | resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} 177 | engines: {node: '>=12'} 178 | cpu: [arm64] 179 | os: [darwin] 180 | 181 | '@esbuild/darwin-arm64@0.20.2': 182 | resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} 183 | engines: {node: '>=12'} 184 | cpu: [arm64] 185 | os: [darwin] 186 | 187 | '@esbuild/darwin-arm64@0.25.2': 188 | resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} 189 | engines: {node: '>=18'} 190 | cpu: [arm64] 191 | os: [darwin] 192 | 193 | '@esbuild/darwin-x64@0.18.20': 194 | resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 195 | engines: {node: '>=12'} 196 | cpu: [x64] 197 | os: [darwin] 198 | 199 | '@esbuild/darwin-x64@0.19.12': 200 | resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} 201 | engines: {node: '>=12'} 202 | cpu: [x64] 203 | os: [darwin] 204 | 205 | '@esbuild/darwin-x64@0.20.2': 206 | resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} 207 | engines: {node: '>=12'} 208 | cpu: [x64] 209 | os: [darwin] 210 | 211 | '@esbuild/darwin-x64@0.25.2': 212 | resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} 213 | engines: {node: '>=18'} 214 | cpu: [x64] 215 | os: [darwin] 216 | 217 | '@esbuild/freebsd-arm64@0.18.20': 218 | resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 219 | engines: {node: '>=12'} 220 | cpu: [arm64] 221 | os: [freebsd] 222 | 223 | '@esbuild/freebsd-arm64@0.19.12': 224 | resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} 225 | engines: {node: '>=12'} 226 | cpu: [arm64] 227 | os: [freebsd] 228 | 229 | '@esbuild/freebsd-arm64@0.20.2': 230 | resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} 231 | engines: {node: '>=12'} 232 | cpu: [arm64] 233 | os: [freebsd] 234 | 235 | '@esbuild/freebsd-arm64@0.25.2': 236 | resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} 237 | engines: {node: '>=18'} 238 | cpu: [arm64] 239 | os: [freebsd] 240 | 241 | '@esbuild/freebsd-x64@0.18.20': 242 | resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 243 | engines: {node: '>=12'} 244 | cpu: [x64] 245 | os: [freebsd] 246 | 247 | '@esbuild/freebsd-x64@0.19.12': 248 | resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} 249 | engines: {node: '>=12'} 250 | cpu: [x64] 251 | os: [freebsd] 252 | 253 | '@esbuild/freebsd-x64@0.20.2': 254 | resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} 255 | engines: {node: '>=12'} 256 | cpu: [x64] 257 | os: [freebsd] 258 | 259 | '@esbuild/freebsd-x64@0.25.2': 260 | resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} 261 | engines: {node: '>=18'} 262 | cpu: [x64] 263 | os: [freebsd] 264 | 265 | '@esbuild/linux-arm64@0.18.20': 266 | resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 267 | engines: {node: '>=12'} 268 | cpu: [arm64] 269 | os: [linux] 270 | 271 | '@esbuild/linux-arm64@0.19.12': 272 | resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} 273 | engines: {node: '>=12'} 274 | cpu: [arm64] 275 | os: [linux] 276 | 277 | '@esbuild/linux-arm64@0.20.2': 278 | resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} 279 | engines: {node: '>=12'} 280 | cpu: [arm64] 281 | os: [linux] 282 | 283 | '@esbuild/linux-arm64@0.25.2': 284 | resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} 285 | engines: {node: '>=18'} 286 | cpu: [arm64] 287 | os: [linux] 288 | 289 | '@esbuild/linux-arm@0.18.20': 290 | resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 291 | engines: {node: '>=12'} 292 | cpu: [arm] 293 | os: [linux] 294 | 295 | '@esbuild/linux-arm@0.19.12': 296 | resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} 297 | engines: {node: '>=12'} 298 | cpu: [arm] 299 | os: [linux] 300 | 301 | '@esbuild/linux-arm@0.20.2': 302 | resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} 303 | engines: {node: '>=12'} 304 | cpu: [arm] 305 | os: [linux] 306 | 307 | '@esbuild/linux-arm@0.25.2': 308 | resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} 309 | engines: {node: '>=18'} 310 | cpu: [arm] 311 | os: [linux] 312 | 313 | '@esbuild/linux-ia32@0.18.20': 314 | resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 315 | engines: {node: '>=12'} 316 | cpu: [ia32] 317 | os: [linux] 318 | 319 | '@esbuild/linux-ia32@0.19.12': 320 | resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} 321 | engines: {node: '>=12'} 322 | cpu: [ia32] 323 | os: [linux] 324 | 325 | '@esbuild/linux-ia32@0.20.2': 326 | resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} 327 | engines: {node: '>=12'} 328 | cpu: [ia32] 329 | os: [linux] 330 | 331 | '@esbuild/linux-ia32@0.25.2': 332 | resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} 333 | engines: {node: '>=18'} 334 | cpu: [ia32] 335 | os: [linux] 336 | 337 | '@esbuild/linux-loong64@0.18.20': 338 | resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 339 | engines: {node: '>=12'} 340 | cpu: [loong64] 341 | os: [linux] 342 | 343 | '@esbuild/linux-loong64@0.19.12': 344 | resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} 345 | engines: {node: '>=12'} 346 | cpu: [loong64] 347 | os: [linux] 348 | 349 | '@esbuild/linux-loong64@0.20.2': 350 | resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} 351 | engines: {node: '>=12'} 352 | cpu: [loong64] 353 | os: [linux] 354 | 355 | '@esbuild/linux-loong64@0.25.2': 356 | resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} 357 | engines: {node: '>=18'} 358 | cpu: [loong64] 359 | os: [linux] 360 | 361 | '@esbuild/linux-mips64el@0.18.20': 362 | resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 363 | engines: {node: '>=12'} 364 | cpu: [mips64el] 365 | os: [linux] 366 | 367 | '@esbuild/linux-mips64el@0.19.12': 368 | resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} 369 | engines: {node: '>=12'} 370 | cpu: [mips64el] 371 | os: [linux] 372 | 373 | '@esbuild/linux-mips64el@0.20.2': 374 | resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} 375 | engines: {node: '>=12'} 376 | cpu: [mips64el] 377 | os: [linux] 378 | 379 | '@esbuild/linux-mips64el@0.25.2': 380 | resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} 381 | engines: {node: '>=18'} 382 | cpu: [mips64el] 383 | os: [linux] 384 | 385 | '@esbuild/linux-ppc64@0.18.20': 386 | resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 387 | engines: {node: '>=12'} 388 | cpu: [ppc64] 389 | os: [linux] 390 | 391 | '@esbuild/linux-ppc64@0.19.12': 392 | resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} 393 | engines: {node: '>=12'} 394 | cpu: [ppc64] 395 | os: [linux] 396 | 397 | '@esbuild/linux-ppc64@0.20.2': 398 | resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} 399 | engines: {node: '>=12'} 400 | cpu: [ppc64] 401 | os: [linux] 402 | 403 | '@esbuild/linux-ppc64@0.25.2': 404 | resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} 405 | engines: {node: '>=18'} 406 | cpu: [ppc64] 407 | os: [linux] 408 | 409 | '@esbuild/linux-riscv64@0.18.20': 410 | resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 411 | engines: {node: '>=12'} 412 | cpu: [riscv64] 413 | os: [linux] 414 | 415 | '@esbuild/linux-riscv64@0.19.12': 416 | resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} 417 | engines: {node: '>=12'} 418 | cpu: [riscv64] 419 | os: [linux] 420 | 421 | '@esbuild/linux-riscv64@0.20.2': 422 | resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} 423 | engines: {node: '>=12'} 424 | cpu: [riscv64] 425 | os: [linux] 426 | 427 | '@esbuild/linux-riscv64@0.25.2': 428 | resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} 429 | engines: {node: '>=18'} 430 | cpu: [riscv64] 431 | os: [linux] 432 | 433 | '@esbuild/linux-s390x@0.18.20': 434 | resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 435 | engines: {node: '>=12'} 436 | cpu: [s390x] 437 | os: [linux] 438 | 439 | '@esbuild/linux-s390x@0.19.12': 440 | resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} 441 | engines: {node: '>=12'} 442 | cpu: [s390x] 443 | os: [linux] 444 | 445 | '@esbuild/linux-s390x@0.20.2': 446 | resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} 447 | engines: {node: '>=12'} 448 | cpu: [s390x] 449 | os: [linux] 450 | 451 | '@esbuild/linux-s390x@0.25.2': 452 | resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} 453 | engines: {node: '>=18'} 454 | cpu: [s390x] 455 | os: [linux] 456 | 457 | '@esbuild/linux-x64@0.18.20': 458 | resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 459 | engines: {node: '>=12'} 460 | cpu: [x64] 461 | os: [linux] 462 | 463 | '@esbuild/linux-x64@0.19.12': 464 | resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} 465 | engines: {node: '>=12'} 466 | cpu: [x64] 467 | os: [linux] 468 | 469 | '@esbuild/linux-x64@0.20.2': 470 | resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} 471 | engines: {node: '>=12'} 472 | cpu: [x64] 473 | os: [linux] 474 | 475 | '@esbuild/linux-x64@0.25.2': 476 | resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} 477 | engines: {node: '>=18'} 478 | cpu: [x64] 479 | os: [linux] 480 | 481 | '@esbuild/netbsd-arm64@0.25.2': 482 | resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} 483 | engines: {node: '>=18'} 484 | cpu: [arm64] 485 | os: [netbsd] 486 | 487 | '@esbuild/netbsd-x64@0.18.20': 488 | resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 489 | engines: {node: '>=12'} 490 | cpu: [x64] 491 | os: [netbsd] 492 | 493 | '@esbuild/netbsd-x64@0.19.12': 494 | resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} 495 | engines: {node: '>=12'} 496 | cpu: [x64] 497 | os: [netbsd] 498 | 499 | '@esbuild/netbsd-x64@0.20.2': 500 | resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} 501 | engines: {node: '>=12'} 502 | cpu: [x64] 503 | os: [netbsd] 504 | 505 | '@esbuild/netbsd-x64@0.25.2': 506 | resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} 507 | engines: {node: '>=18'} 508 | cpu: [x64] 509 | os: [netbsd] 510 | 511 | '@esbuild/openbsd-arm64@0.25.2': 512 | resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} 513 | engines: {node: '>=18'} 514 | cpu: [arm64] 515 | os: [openbsd] 516 | 517 | '@esbuild/openbsd-x64@0.18.20': 518 | resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 519 | engines: {node: '>=12'} 520 | cpu: [x64] 521 | os: [openbsd] 522 | 523 | '@esbuild/openbsd-x64@0.19.12': 524 | resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} 525 | engines: {node: '>=12'} 526 | cpu: [x64] 527 | os: [openbsd] 528 | 529 | '@esbuild/openbsd-x64@0.20.2': 530 | resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} 531 | engines: {node: '>=12'} 532 | cpu: [x64] 533 | os: [openbsd] 534 | 535 | '@esbuild/openbsd-x64@0.25.2': 536 | resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} 537 | engines: {node: '>=18'} 538 | cpu: [x64] 539 | os: [openbsd] 540 | 541 | '@esbuild/sunos-x64@0.18.20': 542 | resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 543 | engines: {node: '>=12'} 544 | cpu: [x64] 545 | os: [sunos] 546 | 547 | '@esbuild/sunos-x64@0.19.12': 548 | resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} 549 | engines: {node: '>=12'} 550 | cpu: [x64] 551 | os: [sunos] 552 | 553 | '@esbuild/sunos-x64@0.20.2': 554 | resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} 555 | engines: {node: '>=12'} 556 | cpu: [x64] 557 | os: [sunos] 558 | 559 | '@esbuild/sunos-x64@0.25.2': 560 | resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} 561 | engines: {node: '>=18'} 562 | cpu: [x64] 563 | os: [sunos] 564 | 565 | '@esbuild/win32-arm64@0.18.20': 566 | resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 567 | engines: {node: '>=12'} 568 | cpu: [arm64] 569 | os: [win32] 570 | 571 | '@esbuild/win32-arm64@0.19.12': 572 | resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} 573 | engines: {node: '>=12'} 574 | cpu: [arm64] 575 | os: [win32] 576 | 577 | '@esbuild/win32-arm64@0.20.2': 578 | resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} 579 | engines: {node: '>=12'} 580 | cpu: [arm64] 581 | os: [win32] 582 | 583 | '@esbuild/win32-arm64@0.25.2': 584 | resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} 585 | engines: {node: '>=18'} 586 | cpu: [arm64] 587 | os: [win32] 588 | 589 | '@esbuild/win32-ia32@0.18.20': 590 | resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 591 | engines: {node: '>=12'} 592 | cpu: [ia32] 593 | os: [win32] 594 | 595 | '@esbuild/win32-ia32@0.19.12': 596 | resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} 597 | engines: {node: '>=12'} 598 | cpu: [ia32] 599 | os: [win32] 600 | 601 | '@esbuild/win32-ia32@0.20.2': 602 | resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} 603 | engines: {node: '>=12'} 604 | cpu: [ia32] 605 | os: [win32] 606 | 607 | '@esbuild/win32-ia32@0.25.2': 608 | resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} 609 | engines: {node: '>=18'} 610 | cpu: [ia32] 611 | os: [win32] 612 | 613 | '@esbuild/win32-x64@0.18.20': 614 | resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 615 | engines: {node: '>=12'} 616 | cpu: [x64] 617 | os: [win32] 618 | 619 | '@esbuild/win32-x64@0.19.12': 620 | resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} 621 | engines: {node: '>=12'} 622 | cpu: [x64] 623 | os: [win32] 624 | 625 | '@esbuild/win32-x64@0.20.2': 626 | resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} 627 | engines: {node: '>=12'} 628 | cpu: [x64] 629 | os: [win32] 630 | 631 | '@esbuild/win32-x64@0.25.2': 632 | resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} 633 | engines: {node: '>=18'} 634 | cpu: [x64] 635 | os: [win32] 636 | 637 | '@eslint-community/eslint-utils@4.5.1': 638 | resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} 639 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 640 | peerDependencies: 641 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 642 | 643 | '@eslint-community/regexpp@4.12.1': 644 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 645 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 646 | 647 | '@eslint/eslintrc@2.1.4': 648 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 649 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 650 | 651 | '@eslint/js@8.57.1': 652 | resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} 653 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 654 | 655 | '@humanwhocodes/config-array@0.13.0': 656 | resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} 657 | engines: {node: '>=10.10.0'} 658 | deprecated: Use @eslint/config-array instead 659 | 660 | '@humanwhocodes/module-importer@1.0.1': 661 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 662 | engines: {node: '>=12.22'} 663 | 664 | '@humanwhocodes/object-schema@2.0.3': 665 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} 666 | deprecated: Use @eslint/object-schema instead 667 | 668 | '@nodelib/fs.scandir@2.1.5': 669 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 670 | engines: {node: '>= 8'} 671 | 672 | '@nodelib/fs.stat@2.0.5': 673 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 674 | engines: {node: '>= 8'} 675 | 676 | '@nodelib/fs.walk@1.2.8': 677 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 678 | engines: {node: '>= 8'} 679 | 680 | '@types/better-sqlite3@7.6.13': 681 | resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==} 682 | 683 | '@types/node@20.17.30': 684 | resolution: {integrity: sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==} 685 | 686 | '@types/ws@8.18.1': 687 | resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} 688 | 689 | '@typescript-eslint/parser@7.18.0': 690 | resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} 691 | engines: {node: ^18.18.0 || >=20.0.0} 692 | peerDependencies: 693 | eslint: ^8.56.0 694 | typescript: '*' 695 | peerDependenciesMeta: 696 | typescript: 697 | optional: true 698 | 699 | '@typescript-eslint/scope-manager@7.18.0': 700 | resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} 701 | engines: {node: ^18.18.0 || >=20.0.0} 702 | 703 | '@typescript-eslint/types@7.18.0': 704 | resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} 705 | engines: {node: ^18.18.0 || >=20.0.0} 706 | 707 | '@typescript-eslint/typescript-estree@7.18.0': 708 | resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} 709 | engines: {node: ^18.18.0 || >=20.0.0} 710 | peerDependencies: 711 | typescript: '*' 712 | peerDependenciesMeta: 713 | typescript: 714 | optional: true 715 | 716 | '@typescript-eslint/visitor-keys@7.18.0': 717 | resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} 718 | engines: {node: ^18.18.0 || >=20.0.0} 719 | 720 | '@ungap/structured-clone@1.3.0': 721 | resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} 722 | 723 | acorn-jsx@5.3.2: 724 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 725 | peerDependencies: 726 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 727 | 728 | acorn@8.14.1: 729 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 730 | engines: {node: '>=0.4.0'} 731 | hasBin: true 732 | 733 | ajv@6.12.6: 734 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 735 | 736 | ansi-regex@5.0.1: 737 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 738 | engines: {node: '>=8'} 739 | 740 | ansi-styles@4.3.0: 741 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 742 | engines: {node: '>=8'} 743 | 744 | argparse@2.0.1: 745 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 746 | 747 | array-union@2.1.0: 748 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 749 | engines: {node: '>=8'} 750 | 751 | balanced-match@1.0.2: 752 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 753 | 754 | base64-js@1.5.1: 755 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 756 | 757 | better-sqlite3@11.9.1: 758 | resolution: {integrity: sha512-Ba0KR+Fzxh2jDRhdg6TSH0SJGzb8C0aBY4hR8w8madIdIzzC6Y1+kx5qR6eS1Z+Gy20h6ZU28aeyg0z1VIrShQ==} 759 | 760 | bindings@1.5.0: 761 | resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 762 | 763 | bl@4.1.0: 764 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 765 | 766 | brace-expansion@1.1.11: 767 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 768 | 769 | brace-expansion@2.0.1: 770 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 771 | 772 | braces@3.0.3: 773 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 774 | engines: {node: '>=8'} 775 | 776 | buffer-from@1.1.2: 777 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 778 | 779 | buffer@5.7.1: 780 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 781 | 782 | callsites@3.1.0: 783 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 784 | engines: {node: '>=6'} 785 | 786 | chalk@4.1.2: 787 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 788 | engines: {node: '>=10'} 789 | 790 | chownr@1.1.4: 791 | resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 792 | 793 | color-convert@2.0.1: 794 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 795 | engines: {node: '>=7.0.0'} 796 | 797 | color-name@1.1.4: 798 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 799 | 800 | concat-map@0.0.1: 801 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 802 | 803 | cross-spawn@7.0.6: 804 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 805 | engines: {node: '>= 8'} 806 | 807 | debug@4.4.0: 808 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 809 | engines: {node: '>=6.0'} 810 | peerDependencies: 811 | supports-color: '*' 812 | peerDependenciesMeta: 813 | supports-color: 814 | optional: true 815 | 816 | decompress-response@6.0.0: 817 | resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} 818 | engines: {node: '>=10'} 819 | 820 | deep-extend@0.6.0: 821 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 822 | engines: {node: '>=4.0.0'} 823 | 824 | deep-is@0.1.4: 825 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 826 | 827 | detect-libc@2.0.3: 828 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} 829 | engines: {node: '>=8'} 830 | 831 | dir-glob@3.0.1: 832 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 833 | engines: {node: '>=8'} 834 | 835 | discord-api-types@0.37.61: 836 | resolution: {integrity: sha512-o/dXNFfhBpYHpQFdT6FWzeO7pKc838QeeZ9d91CfVAtpr5XLK4B/zYxQbYgPdoMiTDvJfzcsLW5naXgmHGDNXw==} 837 | 838 | doctrine@3.0.0: 839 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 840 | engines: {node: '>=6.0.0'} 841 | 842 | dotenv@16.5.0: 843 | resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} 844 | engines: {node: '>=12'} 845 | 846 | drizzle-kit@0.22.8: 847 | resolution: {integrity: sha512-VjI4wsJjk3hSqHSa3TwBf+uvH6M6pRHyxyoVbt935GUzP9tUR/BRZ+MhEJNgryqbzN2Za1KP0eJMTgKEPsalYQ==} 848 | hasBin: true 849 | 850 | drizzle-orm@0.31.4: 851 | resolution: {integrity: sha512-VGD9SH9aStF2z4QOTnVlVX/WghV/EnuEzTmsH3fSVp2E4fFgc8jl3viQrS/XUJx1ekW4rVVLJMH42SfGQdjX3Q==} 852 | peerDependencies: 853 | '@aws-sdk/client-rds-data': '>=3' 854 | '@cloudflare/workers-types': '>=3' 855 | '@electric-sql/pglite': '>=0.1.1' 856 | '@libsql/client': '*' 857 | '@neondatabase/serverless': '>=0.1' 858 | '@op-engineering/op-sqlite': '>=2' 859 | '@opentelemetry/api': ^1.4.1 860 | '@planetscale/database': '>=1' 861 | '@prisma/client': '*' 862 | '@tidbcloud/serverless': '*' 863 | '@types/better-sqlite3': '*' 864 | '@types/pg': '*' 865 | '@types/react': '>=18' 866 | '@types/sql.js': '*' 867 | '@vercel/postgres': '>=0.8.0' 868 | '@xata.io/client': '*' 869 | better-sqlite3: '>=7' 870 | bun-types: '*' 871 | expo-sqlite: '>=13.2.0' 872 | knex: '*' 873 | kysely: '*' 874 | mysql2: '>=2' 875 | pg: '>=8' 876 | postgres: '>=3' 877 | prisma: '*' 878 | react: '>=18' 879 | sql.js: '>=1' 880 | sqlite3: '>=5' 881 | peerDependenciesMeta: 882 | '@aws-sdk/client-rds-data': 883 | optional: true 884 | '@cloudflare/workers-types': 885 | optional: true 886 | '@electric-sql/pglite': 887 | optional: true 888 | '@libsql/client': 889 | optional: true 890 | '@neondatabase/serverless': 891 | optional: true 892 | '@op-engineering/op-sqlite': 893 | optional: true 894 | '@opentelemetry/api': 895 | optional: true 896 | '@planetscale/database': 897 | optional: true 898 | '@prisma/client': 899 | optional: true 900 | '@tidbcloud/serverless': 901 | optional: true 902 | '@types/better-sqlite3': 903 | optional: true 904 | '@types/pg': 905 | optional: true 906 | '@types/react': 907 | optional: true 908 | '@types/sql.js': 909 | optional: true 910 | '@vercel/postgres': 911 | optional: true 912 | '@xata.io/client': 913 | optional: true 914 | better-sqlite3: 915 | optional: true 916 | bun-types: 917 | optional: true 918 | expo-sqlite: 919 | optional: true 920 | knex: 921 | optional: true 922 | kysely: 923 | optional: true 924 | mysql2: 925 | optional: true 926 | pg: 927 | optional: true 928 | postgres: 929 | optional: true 930 | prisma: 931 | optional: true 932 | react: 933 | optional: true 934 | sql.js: 935 | optional: true 936 | sqlite3: 937 | optional: true 938 | 939 | end-of-stream@1.4.4: 940 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 941 | 942 | esbuild-register@3.6.0: 943 | resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} 944 | peerDependencies: 945 | esbuild: '>=0.12 <1' 946 | 947 | esbuild@0.18.20: 948 | resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 949 | engines: {node: '>=12'} 950 | hasBin: true 951 | 952 | esbuild@0.19.12: 953 | resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} 954 | engines: {node: '>=12'} 955 | hasBin: true 956 | 957 | esbuild@0.20.2: 958 | resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} 959 | engines: {node: '>=12'} 960 | hasBin: true 961 | 962 | esbuild@0.25.2: 963 | resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} 964 | engines: {node: '>=18'} 965 | hasBin: true 966 | 967 | escape-string-regexp@4.0.0: 968 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 969 | engines: {node: '>=10'} 970 | 971 | eslint-plugin-simple-import-sort@12.1.1: 972 | resolution: {integrity: sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==} 973 | peerDependencies: 974 | eslint: '>=5.0.0' 975 | 976 | eslint-plugin-unused-imports@3.2.0: 977 | resolution: {integrity: sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==} 978 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 979 | peerDependencies: 980 | '@typescript-eslint/eslint-plugin': 6 - 7 981 | eslint: '8' 982 | peerDependenciesMeta: 983 | '@typescript-eslint/eslint-plugin': 984 | optional: true 985 | 986 | eslint-rule-composer@0.3.0: 987 | resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} 988 | engines: {node: '>=4.0.0'} 989 | 990 | eslint-scope@7.2.2: 991 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 992 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 993 | 994 | eslint-visitor-keys@3.4.3: 995 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 996 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 997 | 998 | eslint@8.57.1: 999 | resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} 1000 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1001 | deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. 1002 | hasBin: true 1003 | 1004 | espree@9.6.1: 1005 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1006 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1007 | 1008 | esquery@1.6.0: 1009 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1010 | engines: {node: '>=0.10'} 1011 | 1012 | esrecurse@4.3.0: 1013 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1014 | engines: {node: '>=4.0'} 1015 | 1016 | estraverse@5.3.0: 1017 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1018 | engines: {node: '>=4.0'} 1019 | 1020 | esutils@2.0.3: 1021 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1022 | engines: {node: '>=0.10.0'} 1023 | 1024 | execa@8.0.1: 1025 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 1026 | engines: {node: '>=16.17'} 1027 | 1028 | expand-template@2.0.3: 1029 | resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} 1030 | engines: {node: '>=6'} 1031 | 1032 | fast-deep-equal@3.1.3: 1033 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1034 | 1035 | fast-glob@3.3.3: 1036 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 1037 | engines: {node: '>=8.6.0'} 1038 | 1039 | fast-json-stable-stringify@2.1.0: 1040 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1041 | 1042 | fast-levenshtein@2.0.6: 1043 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1044 | 1045 | fastq@1.19.1: 1046 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 1047 | 1048 | file-entry-cache@6.0.1: 1049 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1050 | engines: {node: ^10.12.0 || >=12.0.0} 1051 | 1052 | file-uri-to-path@1.0.0: 1053 | resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 1054 | 1055 | fill-range@7.1.1: 1056 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1057 | engines: {node: '>=8'} 1058 | 1059 | find-up@5.0.0: 1060 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1061 | engines: {node: '>=10'} 1062 | 1063 | flat-cache@3.2.0: 1064 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 1065 | engines: {node: ^10.12.0 || >=12.0.0} 1066 | 1067 | flatted@3.3.3: 1068 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 1069 | 1070 | fs-constants@1.0.0: 1071 | resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 1072 | 1073 | fs.realpath@1.0.0: 1074 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1075 | 1076 | fsevents@2.3.3: 1077 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1078 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1079 | os: [darwin] 1080 | 1081 | get-stream@8.0.1: 1082 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 1083 | engines: {node: '>=16'} 1084 | 1085 | get-tsconfig@4.10.0: 1086 | resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} 1087 | 1088 | github-from-package@0.0.0: 1089 | resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} 1090 | 1091 | glob-parent@5.1.2: 1092 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1093 | engines: {node: '>= 6'} 1094 | 1095 | glob-parent@6.0.2: 1096 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1097 | engines: {node: '>=10.13.0'} 1098 | 1099 | glob@7.2.3: 1100 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1101 | deprecated: Glob versions prior to v9 are no longer supported 1102 | 1103 | globals@13.24.0: 1104 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 1105 | engines: {node: '>=8'} 1106 | 1107 | globby@11.1.0: 1108 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1109 | engines: {node: '>=10'} 1110 | 1111 | graphemer@1.4.0: 1112 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1113 | 1114 | has-flag@4.0.0: 1115 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1116 | engines: {node: '>=8'} 1117 | 1118 | human-signals@5.0.0: 1119 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 1120 | engines: {node: '>=16.17.0'} 1121 | 1122 | ieee754@1.2.1: 1123 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1124 | 1125 | ignore@5.3.2: 1126 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1127 | engines: {node: '>= 4'} 1128 | 1129 | import-fresh@3.3.1: 1130 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1131 | engines: {node: '>=6'} 1132 | 1133 | imurmurhash@0.1.4: 1134 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1135 | engines: {node: '>=0.8.19'} 1136 | 1137 | inflight@1.0.6: 1138 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1139 | 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. 1140 | 1141 | inherits@2.0.4: 1142 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1143 | 1144 | ini@1.3.8: 1145 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 1146 | 1147 | is-extglob@2.1.1: 1148 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1149 | engines: {node: '>=0.10.0'} 1150 | 1151 | is-glob@4.0.3: 1152 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1153 | engines: {node: '>=0.10.0'} 1154 | 1155 | is-number@7.0.0: 1156 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1157 | engines: {node: '>=0.12.0'} 1158 | 1159 | is-path-inside@3.0.3: 1160 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1161 | engines: {node: '>=8'} 1162 | 1163 | is-stream@3.0.0: 1164 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 1165 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1166 | 1167 | isexe@2.0.0: 1168 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1169 | 1170 | js-yaml@4.1.0: 1171 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1172 | hasBin: true 1173 | 1174 | json-buffer@3.0.1: 1175 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1176 | 1177 | json-schema-traverse@0.4.1: 1178 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1179 | 1180 | json-stable-stringify-without-jsonify@1.0.1: 1181 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1182 | 1183 | keyv@4.5.4: 1184 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1185 | 1186 | levn@0.4.1: 1187 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1188 | engines: {node: '>= 0.8.0'} 1189 | 1190 | locate-path@6.0.0: 1191 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1192 | engines: {node: '>=10'} 1193 | 1194 | lodash.merge@4.6.2: 1195 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1196 | 1197 | merge-stream@2.0.0: 1198 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1199 | 1200 | merge2@1.4.1: 1201 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1202 | engines: {node: '>= 8'} 1203 | 1204 | micromatch@4.0.8: 1205 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1206 | engines: {node: '>=8.6'} 1207 | 1208 | mimic-fn@4.0.0: 1209 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 1210 | engines: {node: '>=12'} 1211 | 1212 | mimic-response@3.1.0: 1213 | resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 1214 | engines: {node: '>=10'} 1215 | 1216 | minimatch@3.1.2: 1217 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1218 | 1219 | minimatch@9.0.5: 1220 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1221 | engines: {node: '>=16 || 14 >=14.17'} 1222 | 1223 | minimist@1.2.8: 1224 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1225 | 1226 | mkdirp-classic@0.5.3: 1227 | resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} 1228 | 1229 | ms@2.1.3: 1230 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1231 | 1232 | napi-build-utils@2.0.0: 1233 | resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} 1234 | 1235 | natural-compare@1.4.0: 1236 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1237 | 1238 | node-abi@3.74.0: 1239 | resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==} 1240 | engines: {node: '>=10'} 1241 | 1242 | npm-run-path@5.3.0: 1243 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} 1244 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1245 | 1246 | oceanic.js@1.10.4: 1247 | resolution: {integrity: sha512-pgTc4xYUBgXvyxHit7NuwON7yYpKaO2F/4xego08TNGPCwzU1hE+NQGTKw6A8+AYOoF6R3V6oJSuGAq2pXdsKA==} 1248 | engines: {node: '>=18.13.0'} 1249 | 1250 | once@1.4.0: 1251 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1252 | 1253 | onetime@6.0.0: 1254 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 1255 | engines: {node: '>=12'} 1256 | 1257 | optionator@0.9.4: 1258 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1259 | engines: {node: '>= 0.8.0'} 1260 | 1261 | p-limit@3.1.0: 1262 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1263 | engines: {node: '>=10'} 1264 | 1265 | p-locate@5.0.0: 1266 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1267 | engines: {node: '>=10'} 1268 | 1269 | pako@2.1.0: 1270 | resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} 1271 | 1272 | parent-module@1.0.1: 1273 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1274 | engines: {node: '>=6'} 1275 | 1276 | path-exists@4.0.0: 1277 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1278 | engines: {node: '>=8'} 1279 | 1280 | path-is-absolute@1.0.1: 1281 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1282 | engines: {node: '>=0.10.0'} 1283 | 1284 | path-key@3.1.1: 1285 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1286 | engines: {node: '>=8'} 1287 | 1288 | path-key@4.0.0: 1289 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 1290 | engines: {node: '>=12'} 1291 | 1292 | path-type@4.0.0: 1293 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1294 | engines: {node: '>=8'} 1295 | 1296 | picomatch@2.3.1: 1297 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1298 | engines: {node: '>=8.6'} 1299 | 1300 | prebuild-install@7.1.3: 1301 | resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} 1302 | engines: {node: '>=10'} 1303 | hasBin: true 1304 | 1305 | prelude-ls@1.2.1: 1306 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1307 | engines: {node: '>= 0.8.0'} 1308 | 1309 | prism-media@1.3.5: 1310 | resolution: {integrity: sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==} 1311 | peerDependencies: 1312 | '@discordjs/opus': '>=0.8.0 <1.0.0' 1313 | ffmpeg-static: ^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0 1314 | node-opus: ^0.3.3 1315 | opusscript: ^0.0.8 1316 | peerDependenciesMeta: 1317 | '@discordjs/opus': 1318 | optional: true 1319 | ffmpeg-static: 1320 | optional: true 1321 | node-opus: 1322 | optional: true 1323 | opusscript: 1324 | optional: true 1325 | 1326 | pump@3.0.2: 1327 | resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} 1328 | 1329 | punycode@2.3.1: 1330 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1331 | engines: {node: '>=6'} 1332 | 1333 | queue-microtask@1.2.3: 1334 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1335 | 1336 | rc@1.2.8: 1337 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 1338 | hasBin: true 1339 | 1340 | readable-stream@3.6.2: 1341 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 1342 | engines: {node: '>= 6'} 1343 | 1344 | resolve-from@4.0.0: 1345 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1346 | engines: {node: '>=4'} 1347 | 1348 | resolve-pkg-maps@1.0.0: 1349 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1350 | 1351 | reusify@1.1.0: 1352 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1353 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1354 | 1355 | rimraf@3.0.2: 1356 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1357 | deprecated: Rimraf versions prior to v4 are no longer supported 1358 | hasBin: true 1359 | 1360 | run-parallel@1.2.0: 1361 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1362 | 1363 | safe-buffer@5.2.1: 1364 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1365 | 1366 | semver@7.7.1: 1367 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1368 | engines: {node: '>=10'} 1369 | hasBin: true 1370 | 1371 | shebang-command@2.0.0: 1372 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1373 | engines: {node: '>=8'} 1374 | 1375 | shebang-regex@3.0.0: 1376 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1377 | engines: {node: '>=8'} 1378 | 1379 | signal-exit@4.1.0: 1380 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1381 | engines: {node: '>=14'} 1382 | 1383 | simple-concat@1.0.1: 1384 | resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} 1385 | 1386 | simple-get@4.0.1: 1387 | resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} 1388 | 1389 | slash@3.0.0: 1390 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1391 | engines: {node: '>=8'} 1392 | 1393 | source-map-support@0.5.21: 1394 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1395 | 1396 | source-map@0.6.1: 1397 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1398 | engines: {node: '>=0.10.0'} 1399 | 1400 | string_decoder@1.3.0: 1401 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1402 | 1403 | strip-ansi@6.0.1: 1404 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1405 | engines: {node: '>=8'} 1406 | 1407 | strip-final-newline@3.0.0: 1408 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 1409 | engines: {node: '>=12'} 1410 | 1411 | strip-json-comments@2.0.1: 1412 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 1413 | engines: {node: '>=0.10.0'} 1414 | 1415 | strip-json-comments@3.1.1: 1416 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1417 | engines: {node: '>=8'} 1418 | 1419 | supports-color@7.2.0: 1420 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1421 | engines: {node: '>=8'} 1422 | 1423 | tar-fs@2.1.2: 1424 | resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} 1425 | 1426 | tar-stream@2.2.0: 1427 | resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} 1428 | engines: {node: '>=6'} 1429 | 1430 | text-table@0.2.0: 1431 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1432 | 1433 | to-regex-range@5.0.1: 1434 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1435 | engines: {node: '>=8.0'} 1436 | 1437 | ts-api-utils@1.4.3: 1438 | resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} 1439 | engines: {node: '>=16'} 1440 | peerDependencies: 1441 | typescript: '>=4.2.0' 1442 | 1443 | tslib@2.8.1: 1444 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1445 | 1446 | tsx@4.19.3: 1447 | resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} 1448 | engines: {node: '>=18.0.0'} 1449 | hasBin: true 1450 | 1451 | tunnel-agent@0.6.0: 1452 | resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 1453 | 1454 | type-check@0.4.0: 1455 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1456 | engines: {node: '>= 0.8.0'} 1457 | 1458 | type-fest@0.20.2: 1459 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1460 | engines: {node: '>=10'} 1461 | 1462 | typescript@5.8.3: 1463 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1464 | engines: {node: '>=14.17'} 1465 | hasBin: true 1466 | 1467 | undici-types@6.19.8: 1468 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 1469 | 1470 | uri-js@4.4.1: 1471 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1472 | 1473 | util-deprecate@1.0.2: 1474 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1475 | 1476 | which@2.0.2: 1477 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1478 | engines: {node: '>= 8'} 1479 | hasBin: true 1480 | 1481 | word-wrap@1.2.5: 1482 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1483 | engines: {node: '>=0.10.0'} 1484 | 1485 | wrappy@1.0.2: 1486 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1487 | 1488 | ws@8.18.1: 1489 | resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} 1490 | engines: {node: '>=10.0.0'} 1491 | peerDependencies: 1492 | bufferutil: ^4.0.1 1493 | utf-8-validate: '>=5.0.2' 1494 | peerDependenciesMeta: 1495 | bufferutil: 1496 | optional: true 1497 | utf-8-validate: 1498 | optional: true 1499 | 1500 | yocto-queue@0.1.0: 1501 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1502 | engines: {node: '>=10'} 1503 | 1504 | snapshots: 1505 | 1506 | '@discordjs/voice@0.16.1': 1507 | dependencies: 1508 | '@types/ws': 8.18.1 1509 | discord-api-types: 0.37.61 1510 | prism-media: 1.3.5 1511 | tslib: 2.8.1 1512 | ws: 8.18.1 1513 | transitivePeerDependencies: 1514 | - '@discordjs/opus' 1515 | - bufferutil 1516 | - ffmpeg-static 1517 | - node-opus 1518 | - opusscript 1519 | - utf-8-validate 1520 | optional: true 1521 | 1522 | '@esbuild-kit/core-utils@3.3.2': 1523 | dependencies: 1524 | esbuild: 0.18.20 1525 | source-map-support: 0.5.21 1526 | 1527 | '@esbuild-kit/esm-loader@2.6.5': 1528 | dependencies: 1529 | '@esbuild-kit/core-utils': 3.3.2 1530 | get-tsconfig: 4.10.0 1531 | 1532 | '@esbuild/aix-ppc64@0.19.12': 1533 | optional: true 1534 | 1535 | '@esbuild/aix-ppc64@0.20.2': 1536 | optional: true 1537 | 1538 | '@esbuild/aix-ppc64@0.25.2': 1539 | optional: true 1540 | 1541 | '@esbuild/android-arm64@0.18.20': 1542 | optional: true 1543 | 1544 | '@esbuild/android-arm64@0.19.12': 1545 | optional: true 1546 | 1547 | '@esbuild/android-arm64@0.20.2': 1548 | optional: true 1549 | 1550 | '@esbuild/android-arm64@0.25.2': 1551 | optional: true 1552 | 1553 | '@esbuild/android-arm@0.18.20': 1554 | optional: true 1555 | 1556 | '@esbuild/android-arm@0.19.12': 1557 | optional: true 1558 | 1559 | '@esbuild/android-arm@0.20.2': 1560 | optional: true 1561 | 1562 | '@esbuild/android-arm@0.25.2': 1563 | optional: true 1564 | 1565 | '@esbuild/android-x64@0.18.20': 1566 | optional: true 1567 | 1568 | '@esbuild/android-x64@0.19.12': 1569 | optional: true 1570 | 1571 | '@esbuild/android-x64@0.20.2': 1572 | optional: true 1573 | 1574 | '@esbuild/android-x64@0.25.2': 1575 | optional: true 1576 | 1577 | '@esbuild/darwin-arm64@0.18.20': 1578 | optional: true 1579 | 1580 | '@esbuild/darwin-arm64@0.19.12': 1581 | optional: true 1582 | 1583 | '@esbuild/darwin-arm64@0.20.2': 1584 | optional: true 1585 | 1586 | '@esbuild/darwin-arm64@0.25.2': 1587 | optional: true 1588 | 1589 | '@esbuild/darwin-x64@0.18.20': 1590 | optional: true 1591 | 1592 | '@esbuild/darwin-x64@0.19.12': 1593 | optional: true 1594 | 1595 | '@esbuild/darwin-x64@0.20.2': 1596 | optional: true 1597 | 1598 | '@esbuild/darwin-x64@0.25.2': 1599 | optional: true 1600 | 1601 | '@esbuild/freebsd-arm64@0.18.20': 1602 | optional: true 1603 | 1604 | '@esbuild/freebsd-arm64@0.19.12': 1605 | optional: true 1606 | 1607 | '@esbuild/freebsd-arm64@0.20.2': 1608 | optional: true 1609 | 1610 | '@esbuild/freebsd-arm64@0.25.2': 1611 | optional: true 1612 | 1613 | '@esbuild/freebsd-x64@0.18.20': 1614 | optional: true 1615 | 1616 | '@esbuild/freebsd-x64@0.19.12': 1617 | optional: true 1618 | 1619 | '@esbuild/freebsd-x64@0.20.2': 1620 | optional: true 1621 | 1622 | '@esbuild/freebsd-x64@0.25.2': 1623 | optional: true 1624 | 1625 | '@esbuild/linux-arm64@0.18.20': 1626 | optional: true 1627 | 1628 | '@esbuild/linux-arm64@0.19.12': 1629 | optional: true 1630 | 1631 | '@esbuild/linux-arm64@0.20.2': 1632 | optional: true 1633 | 1634 | '@esbuild/linux-arm64@0.25.2': 1635 | optional: true 1636 | 1637 | '@esbuild/linux-arm@0.18.20': 1638 | optional: true 1639 | 1640 | '@esbuild/linux-arm@0.19.12': 1641 | optional: true 1642 | 1643 | '@esbuild/linux-arm@0.20.2': 1644 | optional: true 1645 | 1646 | '@esbuild/linux-arm@0.25.2': 1647 | optional: true 1648 | 1649 | '@esbuild/linux-ia32@0.18.20': 1650 | optional: true 1651 | 1652 | '@esbuild/linux-ia32@0.19.12': 1653 | optional: true 1654 | 1655 | '@esbuild/linux-ia32@0.20.2': 1656 | optional: true 1657 | 1658 | '@esbuild/linux-ia32@0.25.2': 1659 | optional: true 1660 | 1661 | '@esbuild/linux-loong64@0.18.20': 1662 | optional: true 1663 | 1664 | '@esbuild/linux-loong64@0.19.12': 1665 | optional: true 1666 | 1667 | '@esbuild/linux-loong64@0.20.2': 1668 | optional: true 1669 | 1670 | '@esbuild/linux-loong64@0.25.2': 1671 | optional: true 1672 | 1673 | '@esbuild/linux-mips64el@0.18.20': 1674 | optional: true 1675 | 1676 | '@esbuild/linux-mips64el@0.19.12': 1677 | optional: true 1678 | 1679 | '@esbuild/linux-mips64el@0.20.2': 1680 | optional: true 1681 | 1682 | '@esbuild/linux-mips64el@0.25.2': 1683 | optional: true 1684 | 1685 | '@esbuild/linux-ppc64@0.18.20': 1686 | optional: true 1687 | 1688 | '@esbuild/linux-ppc64@0.19.12': 1689 | optional: true 1690 | 1691 | '@esbuild/linux-ppc64@0.20.2': 1692 | optional: true 1693 | 1694 | '@esbuild/linux-ppc64@0.25.2': 1695 | optional: true 1696 | 1697 | '@esbuild/linux-riscv64@0.18.20': 1698 | optional: true 1699 | 1700 | '@esbuild/linux-riscv64@0.19.12': 1701 | optional: true 1702 | 1703 | '@esbuild/linux-riscv64@0.20.2': 1704 | optional: true 1705 | 1706 | '@esbuild/linux-riscv64@0.25.2': 1707 | optional: true 1708 | 1709 | '@esbuild/linux-s390x@0.18.20': 1710 | optional: true 1711 | 1712 | '@esbuild/linux-s390x@0.19.12': 1713 | optional: true 1714 | 1715 | '@esbuild/linux-s390x@0.20.2': 1716 | optional: true 1717 | 1718 | '@esbuild/linux-s390x@0.25.2': 1719 | optional: true 1720 | 1721 | '@esbuild/linux-x64@0.18.20': 1722 | optional: true 1723 | 1724 | '@esbuild/linux-x64@0.19.12': 1725 | optional: true 1726 | 1727 | '@esbuild/linux-x64@0.20.2': 1728 | optional: true 1729 | 1730 | '@esbuild/linux-x64@0.25.2': 1731 | optional: true 1732 | 1733 | '@esbuild/netbsd-arm64@0.25.2': 1734 | optional: true 1735 | 1736 | '@esbuild/netbsd-x64@0.18.20': 1737 | optional: true 1738 | 1739 | '@esbuild/netbsd-x64@0.19.12': 1740 | optional: true 1741 | 1742 | '@esbuild/netbsd-x64@0.20.2': 1743 | optional: true 1744 | 1745 | '@esbuild/netbsd-x64@0.25.2': 1746 | optional: true 1747 | 1748 | '@esbuild/openbsd-arm64@0.25.2': 1749 | optional: true 1750 | 1751 | '@esbuild/openbsd-x64@0.18.20': 1752 | optional: true 1753 | 1754 | '@esbuild/openbsd-x64@0.19.12': 1755 | optional: true 1756 | 1757 | '@esbuild/openbsd-x64@0.20.2': 1758 | optional: true 1759 | 1760 | '@esbuild/openbsd-x64@0.25.2': 1761 | optional: true 1762 | 1763 | '@esbuild/sunos-x64@0.18.20': 1764 | optional: true 1765 | 1766 | '@esbuild/sunos-x64@0.19.12': 1767 | optional: true 1768 | 1769 | '@esbuild/sunos-x64@0.20.2': 1770 | optional: true 1771 | 1772 | '@esbuild/sunos-x64@0.25.2': 1773 | optional: true 1774 | 1775 | '@esbuild/win32-arm64@0.18.20': 1776 | optional: true 1777 | 1778 | '@esbuild/win32-arm64@0.19.12': 1779 | optional: true 1780 | 1781 | '@esbuild/win32-arm64@0.20.2': 1782 | optional: true 1783 | 1784 | '@esbuild/win32-arm64@0.25.2': 1785 | optional: true 1786 | 1787 | '@esbuild/win32-ia32@0.18.20': 1788 | optional: true 1789 | 1790 | '@esbuild/win32-ia32@0.19.12': 1791 | optional: true 1792 | 1793 | '@esbuild/win32-ia32@0.20.2': 1794 | optional: true 1795 | 1796 | '@esbuild/win32-ia32@0.25.2': 1797 | optional: true 1798 | 1799 | '@esbuild/win32-x64@0.18.20': 1800 | optional: true 1801 | 1802 | '@esbuild/win32-x64@0.19.12': 1803 | optional: true 1804 | 1805 | '@esbuild/win32-x64@0.20.2': 1806 | optional: true 1807 | 1808 | '@esbuild/win32-x64@0.25.2': 1809 | optional: true 1810 | 1811 | '@eslint-community/eslint-utils@4.5.1(eslint@8.57.1)': 1812 | dependencies: 1813 | eslint: 8.57.1 1814 | eslint-visitor-keys: 3.4.3 1815 | 1816 | '@eslint-community/regexpp@4.12.1': {} 1817 | 1818 | '@eslint/eslintrc@2.1.4': 1819 | dependencies: 1820 | ajv: 6.12.6 1821 | debug: 4.4.0 1822 | espree: 9.6.1 1823 | globals: 13.24.0 1824 | ignore: 5.3.2 1825 | import-fresh: 3.3.1 1826 | js-yaml: 4.1.0 1827 | minimatch: 3.1.2 1828 | strip-json-comments: 3.1.1 1829 | transitivePeerDependencies: 1830 | - supports-color 1831 | 1832 | '@eslint/js@8.57.1': {} 1833 | 1834 | '@humanwhocodes/config-array@0.13.0': 1835 | dependencies: 1836 | '@humanwhocodes/object-schema': 2.0.3 1837 | debug: 4.4.0 1838 | minimatch: 3.1.2 1839 | transitivePeerDependencies: 1840 | - supports-color 1841 | 1842 | '@humanwhocodes/module-importer@1.0.1': {} 1843 | 1844 | '@humanwhocodes/object-schema@2.0.3': {} 1845 | 1846 | '@nodelib/fs.scandir@2.1.5': 1847 | dependencies: 1848 | '@nodelib/fs.stat': 2.0.5 1849 | run-parallel: 1.2.0 1850 | 1851 | '@nodelib/fs.stat@2.0.5': {} 1852 | 1853 | '@nodelib/fs.walk@1.2.8': 1854 | dependencies: 1855 | '@nodelib/fs.scandir': 2.1.5 1856 | fastq: 1.19.1 1857 | 1858 | '@types/better-sqlite3@7.6.13': 1859 | dependencies: 1860 | '@types/node': 20.17.30 1861 | 1862 | '@types/node@20.17.30': 1863 | dependencies: 1864 | undici-types: 6.19.8 1865 | 1866 | '@types/ws@8.18.1': 1867 | dependencies: 1868 | '@types/node': 20.17.30 1869 | optional: true 1870 | 1871 | '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3)': 1872 | dependencies: 1873 | '@typescript-eslint/scope-manager': 7.18.0 1874 | '@typescript-eslint/types': 7.18.0 1875 | '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) 1876 | '@typescript-eslint/visitor-keys': 7.18.0 1877 | debug: 4.4.0 1878 | eslint: 8.57.1 1879 | optionalDependencies: 1880 | typescript: 5.8.3 1881 | transitivePeerDependencies: 1882 | - supports-color 1883 | 1884 | '@typescript-eslint/scope-manager@7.18.0': 1885 | dependencies: 1886 | '@typescript-eslint/types': 7.18.0 1887 | '@typescript-eslint/visitor-keys': 7.18.0 1888 | 1889 | '@typescript-eslint/types@7.18.0': {} 1890 | 1891 | '@typescript-eslint/typescript-estree@7.18.0(typescript@5.8.3)': 1892 | dependencies: 1893 | '@typescript-eslint/types': 7.18.0 1894 | '@typescript-eslint/visitor-keys': 7.18.0 1895 | debug: 4.4.0 1896 | globby: 11.1.0 1897 | is-glob: 4.0.3 1898 | minimatch: 9.0.5 1899 | semver: 7.7.1 1900 | ts-api-utils: 1.4.3(typescript@5.8.3) 1901 | optionalDependencies: 1902 | typescript: 5.8.3 1903 | transitivePeerDependencies: 1904 | - supports-color 1905 | 1906 | '@typescript-eslint/visitor-keys@7.18.0': 1907 | dependencies: 1908 | '@typescript-eslint/types': 7.18.0 1909 | eslint-visitor-keys: 3.4.3 1910 | 1911 | '@ungap/structured-clone@1.3.0': {} 1912 | 1913 | acorn-jsx@5.3.2(acorn@8.14.1): 1914 | dependencies: 1915 | acorn: 8.14.1 1916 | 1917 | acorn@8.14.1: {} 1918 | 1919 | ajv@6.12.6: 1920 | dependencies: 1921 | fast-deep-equal: 3.1.3 1922 | fast-json-stable-stringify: 2.1.0 1923 | json-schema-traverse: 0.4.1 1924 | uri-js: 4.4.1 1925 | 1926 | ansi-regex@5.0.1: {} 1927 | 1928 | ansi-styles@4.3.0: 1929 | dependencies: 1930 | color-convert: 2.0.1 1931 | 1932 | argparse@2.0.1: {} 1933 | 1934 | array-union@2.1.0: {} 1935 | 1936 | balanced-match@1.0.2: {} 1937 | 1938 | base64-js@1.5.1: {} 1939 | 1940 | better-sqlite3@11.9.1: 1941 | dependencies: 1942 | bindings: 1.5.0 1943 | prebuild-install: 7.1.3 1944 | 1945 | bindings@1.5.0: 1946 | dependencies: 1947 | file-uri-to-path: 1.0.0 1948 | 1949 | bl@4.1.0: 1950 | dependencies: 1951 | buffer: 5.7.1 1952 | inherits: 2.0.4 1953 | readable-stream: 3.6.2 1954 | 1955 | brace-expansion@1.1.11: 1956 | dependencies: 1957 | balanced-match: 1.0.2 1958 | concat-map: 0.0.1 1959 | 1960 | brace-expansion@2.0.1: 1961 | dependencies: 1962 | balanced-match: 1.0.2 1963 | 1964 | braces@3.0.3: 1965 | dependencies: 1966 | fill-range: 7.1.1 1967 | 1968 | buffer-from@1.1.2: {} 1969 | 1970 | buffer@5.7.1: 1971 | dependencies: 1972 | base64-js: 1.5.1 1973 | ieee754: 1.2.1 1974 | 1975 | callsites@3.1.0: {} 1976 | 1977 | chalk@4.1.2: 1978 | dependencies: 1979 | ansi-styles: 4.3.0 1980 | supports-color: 7.2.0 1981 | 1982 | chownr@1.1.4: {} 1983 | 1984 | color-convert@2.0.1: 1985 | dependencies: 1986 | color-name: 1.1.4 1987 | 1988 | color-name@1.1.4: {} 1989 | 1990 | concat-map@0.0.1: {} 1991 | 1992 | cross-spawn@7.0.6: 1993 | dependencies: 1994 | path-key: 3.1.1 1995 | shebang-command: 2.0.0 1996 | which: 2.0.2 1997 | 1998 | debug@4.4.0: 1999 | dependencies: 2000 | ms: 2.1.3 2001 | 2002 | decompress-response@6.0.0: 2003 | dependencies: 2004 | mimic-response: 3.1.0 2005 | 2006 | deep-extend@0.6.0: {} 2007 | 2008 | deep-is@0.1.4: {} 2009 | 2010 | detect-libc@2.0.3: {} 2011 | 2012 | dir-glob@3.0.1: 2013 | dependencies: 2014 | path-type: 4.0.0 2015 | 2016 | discord-api-types@0.37.61: 2017 | optional: true 2018 | 2019 | doctrine@3.0.0: 2020 | dependencies: 2021 | esutils: 2.0.3 2022 | 2023 | dotenv@16.5.0: {} 2024 | 2025 | drizzle-kit@0.22.8: 2026 | dependencies: 2027 | '@esbuild-kit/esm-loader': 2.6.5 2028 | esbuild: 0.19.12 2029 | esbuild-register: 3.6.0(esbuild@0.19.12) 2030 | transitivePeerDependencies: 2031 | - supports-color 2032 | 2033 | drizzle-orm@0.31.4(@types/better-sqlite3@7.6.13)(better-sqlite3@11.9.1): 2034 | optionalDependencies: 2035 | '@types/better-sqlite3': 7.6.13 2036 | better-sqlite3: 11.9.1 2037 | 2038 | end-of-stream@1.4.4: 2039 | dependencies: 2040 | once: 1.4.0 2041 | 2042 | esbuild-register@3.6.0(esbuild@0.19.12): 2043 | dependencies: 2044 | debug: 4.4.0 2045 | esbuild: 0.19.12 2046 | transitivePeerDependencies: 2047 | - supports-color 2048 | 2049 | esbuild@0.18.20: 2050 | optionalDependencies: 2051 | '@esbuild/android-arm': 0.18.20 2052 | '@esbuild/android-arm64': 0.18.20 2053 | '@esbuild/android-x64': 0.18.20 2054 | '@esbuild/darwin-arm64': 0.18.20 2055 | '@esbuild/darwin-x64': 0.18.20 2056 | '@esbuild/freebsd-arm64': 0.18.20 2057 | '@esbuild/freebsd-x64': 0.18.20 2058 | '@esbuild/linux-arm': 0.18.20 2059 | '@esbuild/linux-arm64': 0.18.20 2060 | '@esbuild/linux-ia32': 0.18.20 2061 | '@esbuild/linux-loong64': 0.18.20 2062 | '@esbuild/linux-mips64el': 0.18.20 2063 | '@esbuild/linux-ppc64': 0.18.20 2064 | '@esbuild/linux-riscv64': 0.18.20 2065 | '@esbuild/linux-s390x': 0.18.20 2066 | '@esbuild/linux-x64': 0.18.20 2067 | '@esbuild/netbsd-x64': 0.18.20 2068 | '@esbuild/openbsd-x64': 0.18.20 2069 | '@esbuild/sunos-x64': 0.18.20 2070 | '@esbuild/win32-arm64': 0.18.20 2071 | '@esbuild/win32-ia32': 0.18.20 2072 | '@esbuild/win32-x64': 0.18.20 2073 | 2074 | esbuild@0.19.12: 2075 | optionalDependencies: 2076 | '@esbuild/aix-ppc64': 0.19.12 2077 | '@esbuild/android-arm': 0.19.12 2078 | '@esbuild/android-arm64': 0.19.12 2079 | '@esbuild/android-x64': 0.19.12 2080 | '@esbuild/darwin-arm64': 0.19.12 2081 | '@esbuild/darwin-x64': 0.19.12 2082 | '@esbuild/freebsd-arm64': 0.19.12 2083 | '@esbuild/freebsd-x64': 0.19.12 2084 | '@esbuild/linux-arm': 0.19.12 2085 | '@esbuild/linux-arm64': 0.19.12 2086 | '@esbuild/linux-ia32': 0.19.12 2087 | '@esbuild/linux-loong64': 0.19.12 2088 | '@esbuild/linux-mips64el': 0.19.12 2089 | '@esbuild/linux-ppc64': 0.19.12 2090 | '@esbuild/linux-riscv64': 0.19.12 2091 | '@esbuild/linux-s390x': 0.19.12 2092 | '@esbuild/linux-x64': 0.19.12 2093 | '@esbuild/netbsd-x64': 0.19.12 2094 | '@esbuild/openbsd-x64': 0.19.12 2095 | '@esbuild/sunos-x64': 0.19.12 2096 | '@esbuild/win32-arm64': 0.19.12 2097 | '@esbuild/win32-ia32': 0.19.12 2098 | '@esbuild/win32-x64': 0.19.12 2099 | 2100 | esbuild@0.20.2: 2101 | optionalDependencies: 2102 | '@esbuild/aix-ppc64': 0.20.2 2103 | '@esbuild/android-arm': 0.20.2 2104 | '@esbuild/android-arm64': 0.20.2 2105 | '@esbuild/android-x64': 0.20.2 2106 | '@esbuild/darwin-arm64': 0.20.2 2107 | '@esbuild/darwin-x64': 0.20.2 2108 | '@esbuild/freebsd-arm64': 0.20.2 2109 | '@esbuild/freebsd-x64': 0.20.2 2110 | '@esbuild/linux-arm': 0.20.2 2111 | '@esbuild/linux-arm64': 0.20.2 2112 | '@esbuild/linux-ia32': 0.20.2 2113 | '@esbuild/linux-loong64': 0.20.2 2114 | '@esbuild/linux-mips64el': 0.20.2 2115 | '@esbuild/linux-ppc64': 0.20.2 2116 | '@esbuild/linux-riscv64': 0.20.2 2117 | '@esbuild/linux-s390x': 0.20.2 2118 | '@esbuild/linux-x64': 0.20.2 2119 | '@esbuild/netbsd-x64': 0.20.2 2120 | '@esbuild/openbsd-x64': 0.20.2 2121 | '@esbuild/sunos-x64': 0.20.2 2122 | '@esbuild/win32-arm64': 0.20.2 2123 | '@esbuild/win32-ia32': 0.20.2 2124 | '@esbuild/win32-x64': 0.20.2 2125 | 2126 | esbuild@0.25.2: 2127 | optionalDependencies: 2128 | '@esbuild/aix-ppc64': 0.25.2 2129 | '@esbuild/android-arm': 0.25.2 2130 | '@esbuild/android-arm64': 0.25.2 2131 | '@esbuild/android-x64': 0.25.2 2132 | '@esbuild/darwin-arm64': 0.25.2 2133 | '@esbuild/darwin-x64': 0.25.2 2134 | '@esbuild/freebsd-arm64': 0.25.2 2135 | '@esbuild/freebsd-x64': 0.25.2 2136 | '@esbuild/linux-arm': 0.25.2 2137 | '@esbuild/linux-arm64': 0.25.2 2138 | '@esbuild/linux-ia32': 0.25.2 2139 | '@esbuild/linux-loong64': 0.25.2 2140 | '@esbuild/linux-mips64el': 0.25.2 2141 | '@esbuild/linux-ppc64': 0.25.2 2142 | '@esbuild/linux-riscv64': 0.25.2 2143 | '@esbuild/linux-s390x': 0.25.2 2144 | '@esbuild/linux-x64': 0.25.2 2145 | '@esbuild/netbsd-arm64': 0.25.2 2146 | '@esbuild/netbsd-x64': 0.25.2 2147 | '@esbuild/openbsd-arm64': 0.25.2 2148 | '@esbuild/openbsd-x64': 0.25.2 2149 | '@esbuild/sunos-x64': 0.25.2 2150 | '@esbuild/win32-arm64': 0.25.2 2151 | '@esbuild/win32-ia32': 0.25.2 2152 | '@esbuild/win32-x64': 0.25.2 2153 | 2154 | escape-string-regexp@4.0.0: {} 2155 | 2156 | eslint-plugin-simple-import-sort@12.1.1(eslint@8.57.1): 2157 | dependencies: 2158 | eslint: 8.57.1 2159 | 2160 | eslint-plugin-unused-imports@3.2.0(eslint@8.57.1): 2161 | dependencies: 2162 | eslint: 8.57.1 2163 | eslint-rule-composer: 0.3.0 2164 | 2165 | eslint-rule-composer@0.3.0: {} 2166 | 2167 | eslint-scope@7.2.2: 2168 | dependencies: 2169 | esrecurse: 4.3.0 2170 | estraverse: 5.3.0 2171 | 2172 | eslint-visitor-keys@3.4.3: {} 2173 | 2174 | eslint@8.57.1: 2175 | dependencies: 2176 | '@eslint-community/eslint-utils': 4.5.1(eslint@8.57.1) 2177 | '@eslint-community/regexpp': 4.12.1 2178 | '@eslint/eslintrc': 2.1.4 2179 | '@eslint/js': 8.57.1 2180 | '@humanwhocodes/config-array': 0.13.0 2181 | '@humanwhocodes/module-importer': 1.0.1 2182 | '@nodelib/fs.walk': 1.2.8 2183 | '@ungap/structured-clone': 1.3.0 2184 | ajv: 6.12.6 2185 | chalk: 4.1.2 2186 | cross-spawn: 7.0.6 2187 | debug: 4.4.0 2188 | doctrine: 3.0.0 2189 | escape-string-regexp: 4.0.0 2190 | eslint-scope: 7.2.2 2191 | eslint-visitor-keys: 3.4.3 2192 | espree: 9.6.1 2193 | esquery: 1.6.0 2194 | esutils: 2.0.3 2195 | fast-deep-equal: 3.1.3 2196 | file-entry-cache: 6.0.1 2197 | find-up: 5.0.0 2198 | glob-parent: 6.0.2 2199 | globals: 13.24.0 2200 | graphemer: 1.4.0 2201 | ignore: 5.3.2 2202 | imurmurhash: 0.1.4 2203 | is-glob: 4.0.3 2204 | is-path-inside: 3.0.3 2205 | js-yaml: 4.1.0 2206 | json-stable-stringify-without-jsonify: 1.0.1 2207 | levn: 0.4.1 2208 | lodash.merge: 4.6.2 2209 | minimatch: 3.1.2 2210 | natural-compare: 1.4.0 2211 | optionator: 0.9.4 2212 | strip-ansi: 6.0.1 2213 | text-table: 0.2.0 2214 | transitivePeerDependencies: 2215 | - supports-color 2216 | 2217 | espree@9.6.1: 2218 | dependencies: 2219 | acorn: 8.14.1 2220 | acorn-jsx: 5.3.2(acorn@8.14.1) 2221 | eslint-visitor-keys: 3.4.3 2222 | 2223 | esquery@1.6.0: 2224 | dependencies: 2225 | estraverse: 5.3.0 2226 | 2227 | esrecurse@4.3.0: 2228 | dependencies: 2229 | estraverse: 5.3.0 2230 | 2231 | estraverse@5.3.0: {} 2232 | 2233 | esutils@2.0.3: {} 2234 | 2235 | execa@8.0.1: 2236 | dependencies: 2237 | cross-spawn: 7.0.6 2238 | get-stream: 8.0.1 2239 | human-signals: 5.0.0 2240 | is-stream: 3.0.0 2241 | merge-stream: 2.0.0 2242 | npm-run-path: 5.3.0 2243 | onetime: 6.0.0 2244 | signal-exit: 4.1.0 2245 | strip-final-newline: 3.0.0 2246 | 2247 | expand-template@2.0.3: {} 2248 | 2249 | fast-deep-equal@3.1.3: {} 2250 | 2251 | fast-glob@3.3.3: 2252 | dependencies: 2253 | '@nodelib/fs.stat': 2.0.5 2254 | '@nodelib/fs.walk': 1.2.8 2255 | glob-parent: 5.1.2 2256 | merge2: 1.4.1 2257 | micromatch: 4.0.8 2258 | 2259 | fast-json-stable-stringify@2.1.0: {} 2260 | 2261 | fast-levenshtein@2.0.6: {} 2262 | 2263 | fastq@1.19.1: 2264 | dependencies: 2265 | reusify: 1.1.0 2266 | 2267 | file-entry-cache@6.0.1: 2268 | dependencies: 2269 | flat-cache: 3.2.0 2270 | 2271 | file-uri-to-path@1.0.0: {} 2272 | 2273 | fill-range@7.1.1: 2274 | dependencies: 2275 | to-regex-range: 5.0.1 2276 | 2277 | find-up@5.0.0: 2278 | dependencies: 2279 | locate-path: 6.0.0 2280 | path-exists: 4.0.0 2281 | 2282 | flat-cache@3.2.0: 2283 | dependencies: 2284 | flatted: 3.3.3 2285 | keyv: 4.5.4 2286 | rimraf: 3.0.2 2287 | 2288 | flatted@3.3.3: {} 2289 | 2290 | fs-constants@1.0.0: {} 2291 | 2292 | fs.realpath@1.0.0: {} 2293 | 2294 | fsevents@2.3.3: 2295 | optional: true 2296 | 2297 | get-stream@8.0.1: {} 2298 | 2299 | get-tsconfig@4.10.0: 2300 | dependencies: 2301 | resolve-pkg-maps: 1.0.0 2302 | 2303 | github-from-package@0.0.0: {} 2304 | 2305 | glob-parent@5.1.2: 2306 | dependencies: 2307 | is-glob: 4.0.3 2308 | 2309 | glob-parent@6.0.2: 2310 | dependencies: 2311 | is-glob: 4.0.3 2312 | 2313 | glob@7.2.3: 2314 | dependencies: 2315 | fs.realpath: 1.0.0 2316 | inflight: 1.0.6 2317 | inherits: 2.0.4 2318 | minimatch: 3.1.2 2319 | once: 1.4.0 2320 | path-is-absolute: 1.0.1 2321 | 2322 | globals@13.24.0: 2323 | dependencies: 2324 | type-fest: 0.20.2 2325 | 2326 | globby@11.1.0: 2327 | dependencies: 2328 | array-union: 2.1.0 2329 | dir-glob: 3.0.1 2330 | fast-glob: 3.3.3 2331 | ignore: 5.3.2 2332 | merge2: 1.4.1 2333 | slash: 3.0.0 2334 | 2335 | graphemer@1.4.0: {} 2336 | 2337 | has-flag@4.0.0: {} 2338 | 2339 | human-signals@5.0.0: {} 2340 | 2341 | ieee754@1.2.1: {} 2342 | 2343 | ignore@5.3.2: {} 2344 | 2345 | import-fresh@3.3.1: 2346 | dependencies: 2347 | parent-module: 1.0.1 2348 | resolve-from: 4.0.0 2349 | 2350 | imurmurhash@0.1.4: {} 2351 | 2352 | inflight@1.0.6: 2353 | dependencies: 2354 | once: 1.4.0 2355 | wrappy: 1.0.2 2356 | 2357 | inherits@2.0.4: {} 2358 | 2359 | ini@1.3.8: {} 2360 | 2361 | is-extglob@2.1.1: {} 2362 | 2363 | is-glob@4.0.3: 2364 | dependencies: 2365 | is-extglob: 2.1.1 2366 | 2367 | is-number@7.0.0: {} 2368 | 2369 | is-path-inside@3.0.3: {} 2370 | 2371 | is-stream@3.0.0: {} 2372 | 2373 | isexe@2.0.0: {} 2374 | 2375 | js-yaml@4.1.0: 2376 | dependencies: 2377 | argparse: 2.0.1 2378 | 2379 | json-buffer@3.0.1: {} 2380 | 2381 | json-schema-traverse@0.4.1: {} 2382 | 2383 | json-stable-stringify-without-jsonify@1.0.1: {} 2384 | 2385 | keyv@4.5.4: 2386 | dependencies: 2387 | json-buffer: 3.0.1 2388 | 2389 | levn@0.4.1: 2390 | dependencies: 2391 | prelude-ls: 1.2.1 2392 | type-check: 0.4.0 2393 | 2394 | locate-path@6.0.0: 2395 | dependencies: 2396 | p-locate: 5.0.0 2397 | 2398 | lodash.merge@4.6.2: {} 2399 | 2400 | merge-stream@2.0.0: {} 2401 | 2402 | merge2@1.4.1: {} 2403 | 2404 | micromatch@4.0.8: 2405 | dependencies: 2406 | braces: 3.0.3 2407 | picomatch: 2.3.1 2408 | 2409 | mimic-fn@4.0.0: {} 2410 | 2411 | mimic-response@3.1.0: {} 2412 | 2413 | minimatch@3.1.2: 2414 | dependencies: 2415 | brace-expansion: 1.1.11 2416 | 2417 | minimatch@9.0.5: 2418 | dependencies: 2419 | brace-expansion: 2.0.1 2420 | 2421 | minimist@1.2.8: {} 2422 | 2423 | mkdirp-classic@0.5.3: {} 2424 | 2425 | ms@2.1.3: {} 2426 | 2427 | napi-build-utils@2.0.0: {} 2428 | 2429 | natural-compare@1.4.0: {} 2430 | 2431 | node-abi@3.74.0: 2432 | dependencies: 2433 | semver: 7.7.1 2434 | 2435 | npm-run-path@5.3.0: 2436 | dependencies: 2437 | path-key: 4.0.0 2438 | 2439 | oceanic.js@1.10.4: 2440 | dependencies: 2441 | tslib: 2.8.1 2442 | ws: 8.18.1 2443 | optionalDependencies: 2444 | '@discordjs/voice': 0.16.1 2445 | transitivePeerDependencies: 2446 | - '@discordjs/opus' 2447 | - bufferutil 2448 | - ffmpeg-static 2449 | - node-opus 2450 | - opusscript 2451 | - utf-8-validate 2452 | 2453 | once@1.4.0: 2454 | dependencies: 2455 | wrappy: 1.0.2 2456 | 2457 | onetime@6.0.0: 2458 | dependencies: 2459 | mimic-fn: 4.0.0 2460 | 2461 | optionator@0.9.4: 2462 | dependencies: 2463 | deep-is: 0.1.4 2464 | fast-levenshtein: 2.0.6 2465 | levn: 0.4.1 2466 | prelude-ls: 1.2.1 2467 | type-check: 0.4.0 2468 | word-wrap: 1.2.5 2469 | 2470 | p-limit@3.1.0: 2471 | dependencies: 2472 | yocto-queue: 0.1.0 2473 | 2474 | p-locate@5.0.0: 2475 | dependencies: 2476 | p-limit: 3.1.0 2477 | 2478 | pako@2.1.0: {} 2479 | 2480 | parent-module@1.0.1: 2481 | dependencies: 2482 | callsites: 3.1.0 2483 | 2484 | path-exists@4.0.0: {} 2485 | 2486 | path-is-absolute@1.0.1: {} 2487 | 2488 | path-key@3.1.1: {} 2489 | 2490 | path-key@4.0.0: {} 2491 | 2492 | path-type@4.0.0: {} 2493 | 2494 | picomatch@2.3.1: {} 2495 | 2496 | prebuild-install@7.1.3: 2497 | dependencies: 2498 | detect-libc: 2.0.3 2499 | expand-template: 2.0.3 2500 | github-from-package: 0.0.0 2501 | minimist: 1.2.8 2502 | mkdirp-classic: 0.5.3 2503 | napi-build-utils: 2.0.0 2504 | node-abi: 3.74.0 2505 | pump: 3.0.2 2506 | rc: 1.2.8 2507 | simple-get: 4.0.1 2508 | tar-fs: 2.1.2 2509 | tunnel-agent: 0.6.0 2510 | 2511 | prelude-ls@1.2.1: {} 2512 | 2513 | prism-media@1.3.5: 2514 | optional: true 2515 | 2516 | pump@3.0.2: 2517 | dependencies: 2518 | end-of-stream: 1.4.4 2519 | once: 1.4.0 2520 | 2521 | punycode@2.3.1: {} 2522 | 2523 | queue-microtask@1.2.3: {} 2524 | 2525 | rc@1.2.8: 2526 | dependencies: 2527 | deep-extend: 0.6.0 2528 | ini: 1.3.8 2529 | minimist: 1.2.8 2530 | strip-json-comments: 2.0.1 2531 | 2532 | readable-stream@3.6.2: 2533 | dependencies: 2534 | inherits: 2.0.4 2535 | string_decoder: 1.3.0 2536 | util-deprecate: 1.0.2 2537 | 2538 | resolve-from@4.0.0: {} 2539 | 2540 | resolve-pkg-maps@1.0.0: {} 2541 | 2542 | reusify@1.1.0: {} 2543 | 2544 | rimraf@3.0.2: 2545 | dependencies: 2546 | glob: 7.2.3 2547 | 2548 | run-parallel@1.2.0: 2549 | dependencies: 2550 | queue-microtask: 1.2.3 2551 | 2552 | safe-buffer@5.2.1: {} 2553 | 2554 | semver@7.7.1: {} 2555 | 2556 | shebang-command@2.0.0: 2557 | dependencies: 2558 | shebang-regex: 3.0.0 2559 | 2560 | shebang-regex@3.0.0: {} 2561 | 2562 | signal-exit@4.1.0: {} 2563 | 2564 | simple-concat@1.0.1: {} 2565 | 2566 | simple-get@4.0.1: 2567 | dependencies: 2568 | decompress-response: 6.0.0 2569 | once: 1.4.0 2570 | simple-concat: 1.0.1 2571 | 2572 | slash@3.0.0: {} 2573 | 2574 | source-map-support@0.5.21: 2575 | dependencies: 2576 | buffer-from: 1.1.2 2577 | source-map: 0.6.1 2578 | 2579 | source-map@0.6.1: {} 2580 | 2581 | string_decoder@1.3.0: 2582 | dependencies: 2583 | safe-buffer: 5.2.1 2584 | 2585 | strip-ansi@6.0.1: 2586 | dependencies: 2587 | ansi-regex: 5.0.1 2588 | 2589 | strip-final-newline@3.0.0: {} 2590 | 2591 | strip-json-comments@2.0.1: {} 2592 | 2593 | strip-json-comments@3.1.1: {} 2594 | 2595 | supports-color@7.2.0: 2596 | dependencies: 2597 | has-flag: 4.0.0 2598 | 2599 | tar-fs@2.1.2: 2600 | dependencies: 2601 | chownr: 1.1.4 2602 | mkdirp-classic: 0.5.3 2603 | pump: 3.0.2 2604 | tar-stream: 2.2.0 2605 | 2606 | tar-stream@2.2.0: 2607 | dependencies: 2608 | bl: 4.1.0 2609 | end-of-stream: 1.4.4 2610 | fs-constants: 1.0.0 2611 | inherits: 2.0.4 2612 | readable-stream: 3.6.2 2613 | 2614 | text-table@0.2.0: {} 2615 | 2616 | to-regex-range@5.0.1: 2617 | dependencies: 2618 | is-number: 7.0.0 2619 | 2620 | ts-api-utils@1.4.3(typescript@5.8.3): 2621 | dependencies: 2622 | typescript: 5.8.3 2623 | 2624 | tslib@2.8.1: {} 2625 | 2626 | tsx@4.19.3: 2627 | dependencies: 2628 | esbuild: 0.25.2 2629 | get-tsconfig: 4.10.0 2630 | optionalDependencies: 2631 | fsevents: 2.3.3 2632 | 2633 | tunnel-agent@0.6.0: 2634 | dependencies: 2635 | safe-buffer: 5.2.1 2636 | 2637 | type-check@0.4.0: 2638 | dependencies: 2639 | prelude-ls: 1.2.1 2640 | 2641 | type-fest@0.20.2: {} 2642 | 2643 | typescript@5.8.3: {} 2644 | 2645 | undici-types@6.19.8: {} 2646 | 2647 | uri-js@4.4.1: 2648 | dependencies: 2649 | punycode: 2.3.1 2650 | 2651 | util-deprecate@1.0.2: {} 2652 | 2653 | which@2.0.2: 2654 | dependencies: 2655 | isexe: 2.0.0 2656 | 2657 | word-wrap@1.2.5: {} 2658 | 2659 | wrappy@1.0.2: {} 2660 | 2661 | ws@8.18.1: {} 2662 | 2663 | yocto-queue@0.1.0: {} 2664 | --------------------------------------------------------------------------------