├── .eslintrc.json ├── .gitignore ├── README.md ├── bot.js ├── demo └── demo.gif ├── package-lock.json ├── package.json └── renovate.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "env": { 4 | "node": true, 5 | "es6": true 6 | }, 7 | "parserOptions": { 8 | "ecmaVersion": 2020 9 | }, 10 | "rules": { 11 | "brace-style": ["error", "stroustrup", { "allowSingleLine": true }], 12 | "comma-dangle": ["error", "always-multiline"], 13 | "comma-spacing": "error", 14 | "comma-style": "error", 15 | "curly": ["error", "multi-line", "consistent"], 16 | "dot-location": ["error", "property"], 17 | "handle-callback-err": "off", 18 | "indent": ["error", "tab"], 19 | "max-nested-callbacks": ["error", { "max": 4 }], 20 | "max-statements-per-line": ["error", { "max": 2 }], 21 | "no-console": "off", 22 | "no-empty-function": "error", 23 | "no-floating-decimal": "error", 24 | "no-inline-comments": "error", 25 | "no-lonely-if": "error", 26 | "no-multi-spaces": "error", 27 | "no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }], 28 | "no-shadow": ["error", { "allow": ["err", "resolve", "reject"] }], 29 | "no-trailing-spaces": ["error"], 30 | "no-var": "error", 31 | "object-curly-spacing": ["error", "always"], 32 | "prefer-const": "error", 33 | "quotes": ["error", "single"], 34 | "semi": ["error", "always"], 35 | "space-before-blocks": "error", 36 | "space-before-function-paren": ["error", { 37 | "anonymous": "never", 38 | "named": "never", 39 | "asyncArrow": "always" 40 | }], 41 | "space-in-parens": "error", 42 | "space-infix-ops": "error", 43 | "space-unary-ops": "error", 44 | "spaced-comment": "error", 45 | "yoda": "error" 46 | } 47 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | .env -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Leetcode-discord-bot 2 | Discord bot that posts a random [leetcode](https://leetcode.com/) question based on custom commands. 3 | 4 | > NOTE: I have an AWS free tier, and have a limit warning in place for the EC2 instance this bot is hosted on. Depending on monthly usage, the service will go down so I don't incur charges for the month. You can check if it's up [here](https://discord.bots.gg/bots/730413116172796007) (if the status symbol is green, it's up!). Sorry, in advance! 5 | 6 | ### Installation and running locally 7 | 8 | 1. Clone this project to your system using 9 | ```bash 10 | git clone https://github.com/chakrakan/leetcode-disc.git 11 | ``` 12 | 13 | 2. `cd leetcode-disc` to switch directory to the bot's directory 14 | 3. `npm i` or `npm install` to get all its dependencies 15 | 4. Create a `.env` file at the root of the project folder 16 | ```bash 17 | touch .env 18 | ``` 19 | Add a variable `DISCORD_BOT_TOKEN=` and leave it empty for now. 20 | 21 | 5. Now make sure to create a `New Application` on Discord from their [portal](https://discord.com/developers/applications/) 22 | - once created, visit its `Bot` tab and grab the `token` and paste it as the value for `DISCORD_BOT_TOKEN` 23 | 6. Run the bot using `npm start` and you should be able to use the commands once you invite your own app to a server of your choice. 24 | 25 | 26 | ### Usage 27 | 28 | ##### Regular Commands 29 | 30 | `!problem (without args) - gives you a random problem of any difficulty either paid/free.` 31 | `!problem info - gives you an overview of problems and your progress` (WIP) 32 | `!problem free - gives you a random freely accessible problem of any difficulty.` 33 | `!problem paid - gives you a random paid/locked problem of any difficulty.` 34 | 35 | #### Adding difficulty modifiers: 36 | 37 | `!problem - lets you pick a random free or paid problem of the chosen difficulty.` 38 | 39 | ### Sample 40 | 41 | ![](https://github.com/chakrakan/leetcode-disc/blob/master/demo/demo.gif) 42 | 43 | 44 | ### ToDo 45 | 46 | - add more feature for per user experience See [#1](https://github.com/chakrakan/leetcode-disc/issues/1#issue-656379593) 47 | -------------------------------------------------------------------------------- /bot.js: -------------------------------------------------------------------------------- 1 | const { Client, MessageEmbed } = require('discord.js'); 2 | const axios = require('axios'); 3 | const client = new Client(); 4 | 5 | const prefix = '!problem'; 6 | const problemUrlBase = 'https://leetcode.com/problems/'; 7 | const ltApiUrl = 'https://leetcode.com/api/problems/all/'; 8 | const allProblems = []; 9 | const freeProblems = []; 10 | const paidProblems = []; 11 | let totalProblems; 12 | 13 | /** 14 | * Returns a random number based on provided max constraint. 15 | * @param {int} max 16 | */ 17 | function getRandomInt(max) { 18 | return Math.floor(Math.random() * Math.floor(max)); 19 | } 20 | 21 | /** 22 | * Problem class to help parse the revelant properties of a problem from the Leetcode API 23 | * @param {*} problemObject 24 | */ 25 | function Problem(problemObject) { 26 | this.id = problemObject.stat.question_id; 27 | this.title = problemObject.stat.question__title; 28 | this.titleSlug = problemObject.stat.question__title_slug; 29 | this.difficulty = 30 | problemObject.difficulty.level === 3 ? 'Hard' : problemObject.difficulty.level === 2 ? 'Medium' : 'Easy'; 31 | this.paidOnly = problemObject.paid_only; 32 | this.description = `Problem ID: ${this.id}\nTitle: ${this.title}\nSlug Title: ${this.titleSlug}\nDifficulty: ${this.difficulty}\nIs Paid? ${this.paidOnly}`; 33 | } 34 | 35 | /** 36 | * REST call to populate our arrays with data. 37 | */ 38 | axios 39 | .get(ltApiUrl) 40 | .then((resp) => { 41 | totalProblems = resp.data.num_total; 42 | resp.data.stat_status_pairs.forEach((problem) => { 43 | const newProblem = new Problem(problem); 44 | // ToDo need to fix .filter but this works in the mean time 45 | if (newProblem.paidOnly === false) { 46 | freeProblems.push(newProblem); 47 | } 48 | else { 49 | paidProblems.push(newProblem); 50 | } 51 | allProblems.push(newProblem); 52 | }); 53 | }) 54 | .catch((err) => { 55 | console.log(err); 56 | }); 57 | 58 | // Bot code 59 | 60 | client.on('ready', () => { 61 | console.log(`Logged in as ${client.user.tag}!`); 62 | }); 63 | 64 | /** 65 | * Takes in the relevant array for the operation based on command and the message received by the bot. 66 | * Builds the MessageEmbed object with relevant info to be sent out to the particular channel/user. 67 | * @param {*} data 68 | * @param {*} msg 69 | * @param {string} diff 70 | */ 71 | function problemType(data, msg, diff = '') { 72 | if (diff != '') { 73 | const filteredByDiff = data.filter( 74 | (problem) => problem.difficulty.toLowerCase() === diff, 75 | ); 76 | data = filteredByDiff; 77 | } 78 | const dataLen = data.length; 79 | const randProblem = getRandomInt(dataLen); 80 | const aProblem = data[randProblem]; 81 | const problemUrl = problemUrlBase + aProblem.titleSlug + '/'; 82 | 83 | const embed = new MessageEmbed() 84 | .setTitle(aProblem.title) 85 | .setColor('#f89f1b') 86 | // online image from leetcode website for thumbnail (pls don't go down) 87 | .setThumbnail('https://leetcode.com/static/images/LeetCode_logo_rvs.png') 88 | // ToDo Scrape problem descriptions, add to object and embed (haHA might not do this) 89 | .setDescription(`${aProblem.difficulty} ${ 90 | aProblem.paidOnly ? 'locked/paid' : 'unlocked/free' 91 | } problem.`) 92 | .setURL(problemUrl); 93 | msg.channel.send(embed); 94 | } 95 | 96 | client.on('message', (msg) => { 97 | if (!msg.content.startsWith(prefix) || msg.author.bot) return; 98 | 99 | const args = msg.content.slice(prefix.length).trim().split(' '); 100 | const command = args.shift().toLowerCase(); 101 | let diff; 102 | 103 | if (typeof args[0] != 'undefined') { 104 | const temp = args[0].toLowerCase(); 105 | if (['easy', 'medium', 'hard'].indexOf(temp) >= 0) { 106 | diff = temp; 107 | } 108 | } 109 | 110 | if (command === 'info') { 111 | msg.channel.send( 112 | `Leetcode currently has a total of ${totalProblems} problems of which ${freeProblems.length} are free, and ${paidProblems.length} are paid.`, 113 | ); 114 | } 115 | else if (command === 'free') { 116 | problemType(freeProblems, msg, diff); 117 | } 118 | else if (command === 'paid') { 119 | problemType(paidProblems, msg, diff); 120 | } 121 | else if (command === 'help') { 122 | msg.channel.send( 123 | '```Usage:\n\n\t!problem (without args) - gives you a random problem of any difficulty either paid/free.' + 124 | '\n\n\t!problem free - gives you a random freely accessible problem of any difficulty.' + 125 | '\n\n\t!problem paid - gives you a random paid/locked problem of any difficulty.' + 126 | '\n\nAdding difficulty modifiers:\n\n\t!problem - lets you pick a random free or paid problem of the chosen difficulty.```', 127 | ); 128 | } 129 | else { 130 | problemType(allProblems, msg, diff); 131 | } 132 | }); 133 | 134 | client.login(process.env.DISCORD_BOT_TOKEN); 135 | -------------------------------------------------------------------------------- /demo/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chakrakan/leetcode-disc/1c69ed3dbccba2f62e8131d739b87e2df18bc2a9/demo/demo.gif -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "leetcode-disc", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "leetcode-disc", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "axios": "^1.0.0", 13 | "discord.js": "^14.0.0", 14 | "dotenv": "^16.0.0", 15 | "eslint": "^8.0.0" 16 | } 17 | }, 18 | "node_modules/@aashutoshrathi/word-wrap": { 19 | "version": "1.2.6", 20 | "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", 21 | "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", 22 | "engines": { 23 | "node": ">=0.10.0" 24 | } 25 | }, 26 | "node_modules/@discordjs/builders": { 27 | "version": "1.7.0", 28 | "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.7.0.tgz", 29 | "integrity": "sha512-GDtbKMkg433cOZur8Dv6c25EHxduNIBsxeHrsRoIM8+AwmEZ8r0tEpckx/sHwTLwQPOF3e2JWloZh9ofCaMfAw==", 30 | "dependencies": { 31 | "@discordjs/formatters": "^0.3.3", 32 | "@discordjs/util": "^1.0.2", 33 | "@sapphire/shapeshift": "^3.9.3", 34 | "discord-api-types": "0.37.61", 35 | "fast-deep-equal": "^3.1.3", 36 | "ts-mixer": "^6.0.3", 37 | "tslib": "^2.6.2" 38 | }, 39 | "engines": { 40 | "node": ">=16.11.0" 41 | } 42 | }, 43 | "node_modules/@discordjs/collection": { 44 | "version": "1.5.3", 45 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz", 46 | "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==", 47 | "engines": { 48 | "node": ">=16.11.0" 49 | } 50 | }, 51 | "node_modules/@discordjs/formatters": { 52 | "version": "0.3.3", 53 | "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.3.tgz", 54 | "integrity": "sha512-wTcI1Q5cps1eSGhl6+6AzzZkBBlVrBdc9IUhJbijRgVjCNIIIZPgqnUj3ntFODsHrdbGU8BEG9XmDQmgEEYn3w==", 55 | "dependencies": { 56 | "discord-api-types": "0.37.61" 57 | }, 58 | "engines": { 59 | "node": ">=16.11.0" 60 | } 61 | }, 62 | "node_modules/@discordjs/rest": { 63 | "version": "2.1.0", 64 | "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.1.0.tgz", 65 | "integrity": "sha512-5gFWFkZX2JCFSRzs8ltx8bWmyVi0wPMk6pBa9KGIQSDPMmrP+uOrZ9j9HOwvmVWGe+LmZ5Bov0jMnQd6/jVReg==", 66 | "dependencies": { 67 | "@discordjs/collection": "^2.0.0", 68 | "@discordjs/util": "^1.0.2", 69 | "@sapphire/async-queue": "^1.5.0", 70 | "@sapphire/snowflake": "^3.5.1", 71 | "@vladfrangu/async_event_emitter": "^2.2.2", 72 | "discord-api-types": "0.37.61", 73 | "magic-bytes.js": "^1.5.0", 74 | "tslib": "^2.6.2", 75 | "undici": "5.27.2" 76 | }, 77 | "engines": { 78 | "node": ">=16.11.0" 79 | } 80 | }, 81 | "node_modules/@discordjs/rest/node_modules/@discordjs/collection": { 82 | "version": "2.0.0", 83 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.0.0.tgz", 84 | "integrity": "sha512-YTWIXLrf5FsrLMycpMM9Q6vnZoR/lN2AWX23/Cuo8uOOtS8eHB2dyQaaGnaF8aZPYnttf2bkLMcXn/j6JUOi3w==", 85 | "engines": { 86 | "node": ">=18" 87 | } 88 | }, 89 | "node_modules/@discordjs/util": { 90 | "version": "1.0.2", 91 | "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.0.2.tgz", 92 | "integrity": "sha512-IRNbimrmfb75GMNEjyznqM1tkI7HrZOf14njX7tCAAUetyZM1Pr8hX/EK2lxBCOgWDRmigbp24fD1hdMfQK5lw==", 93 | "engines": { 94 | "node": ">=16.11.0" 95 | } 96 | }, 97 | "node_modules/@discordjs/ws": { 98 | "version": "1.0.2", 99 | "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.0.2.tgz", 100 | "integrity": "sha512-+XI82Rm2hKnFwAySXEep4A7Kfoowt6weO6381jgW+wVdTpMS/56qCvoXyFRY0slcv7c/U8My2PwIB2/wEaAh7Q==", 101 | "dependencies": { 102 | "@discordjs/collection": "^2.0.0", 103 | "@discordjs/rest": "^2.1.0", 104 | "@discordjs/util": "^1.0.2", 105 | "@sapphire/async-queue": "^1.5.0", 106 | "@types/ws": "^8.5.9", 107 | "@vladfrangu/async_event_emitter": "^2.2.2", 108 | "discord-api-types": "0.37.61", 109 | "tslib": "^2.6.2", 110 | "ws": "^8.14.2" 111 | }, 112 | "engines": { 113 | "node": ">=16.11.0" 114 | } 115 | }, 116 | "node_modules/@discordjs/ws/node_modules/@discordjs/collection": { 117 | "version": "2.0.0", 118 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.0.0.tgz", 119 | "integrity": "sha512-YTWIXLrf5FsrLMycpMM9Q6vnZoR/lN2AWX23/Cuo8uOOtS8eHB2dyQaaGnaF8aZPYnttf2bkLMcXn/j6JUOi3w==", 120 | "engines": { 121 | "node": ">=18" 122 | } 123 | }, 124 | "node_modules/@eslint-community/eslint-utils": { 125 | "version": "4.4.0", 126 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 127 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 128 | "dependencies": { 129 | "eslint-visitor-keys": "^3.3.0" 130 | }, 131 | "engines": { 132 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 133 | }, 134 | "peerDependencies": { 135 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 136 | } 137 | }, 138 | "node_modules/@eslint-community/regexpp": { 139 | "version": "4.8.0", 140 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", 141 | "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", 142 | "engines": { 143 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 144 | } 145 | }, 146 | "node_modules/@eslint/eslintrc": { 147 | "version": "2.1.4", 148 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 149 | "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 150 | "dependencies": { 151 | "ajv": "^6.12.4", 152 | "debug": "^4.3.2", 153 | "espree": "^9.6.0", 154 | "globals": "^13.19.0", 155 | "ignore": "^5.2.0", 156 | "import-fresh": "^3.2.1", 157 | "js-yaml": "^4.1.0", 158 | "minimatch": "^3.1.2", 159 | "strip-json-comments": "^3.1.1" 160 | }, 161 | "engines": { 162 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 163 | }, 164 | "funding": { 165 | "url": "https://opencollective.com/eslint" 166 | } 167 | }, 168 | "node_modules/@eslint/js": { 169 | "version": "8.56.0", 170 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", 171 | "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", 172 | "engines": { 173 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 174 | } 175 | }, 176 | "node_modules/@fastify/busboy": { 177 | "version": "2.1.0", 178 | "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", 179 | "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", 180 | "engines": { 181 | "node": ">=14" 182 | } 183 | }, 184 | "node_modules/@humanwhocodes/config-array": { 185 | "version": "0.11.13", 186 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", 187 | "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", 188 | "dependencies": { 189 | "@humanwhocodes/object-schema": "^2.0.1", 190 | "debug": "^4.1.1", 191 | "minimatch": "^3.0.5" 192 | }, 193 | "engines": { 194 | "node": ">=10.10.0" 195 | } 196 | }, 197 | "node_modules/@humanwhocodes/module-importer": { 198 | "version": "1.0.1", 199 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 200 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 201 | "engines": { 202 | "node": ">=12.22" 203 | }, 204 | "funding": { 205 | "type": "github", 206 | "url": "https://github.com/sponsors/nzakas" 207 | } 208 | }, 209 | "node_modules/@humanwhocodes/object-schema": { 210 | "version": "2.0.1", 211 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", 212 | "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==" 213 | }, 214 | "node_modules/@nodelib/fs.scandir": { 215 | "version": "2.1.5", 216 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 217 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 218 | "dependencies": { 219 | "@nodelib/fs.stat": "2.0.5", 220 | "run-parallel": "^1.1.9" 221 | }, 222 | "engines": { 223 | "node": ">= 8" 224 | } 225 | }, 226 | "node_modules/@nodelib/fs.stat": { 227 | "version": "2.0.5", 228 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 229 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 230 | "engines": { 231 | "node": ">= 8" 232 | } 233 | }, 234 | "node_modules/@nodelib/fs.walk": { 235 | "version": "1.2.8", 236 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 237 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 238 | "dependencies": { 239 | "@nodelib/fs.scandir": "2.1.5", 240 | "fastq": "^1.6.0" 241 | }, 242 | "engines": { 243 | "node": ">= 8" 244 | } 245 | }, 246 | "node_modules/@sapphire/async-queue": { 247 | "version": "1.5.0", 248 | "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", 249 | "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", 250 | "engines": { 251 | "node": ">=v14.0.0", 252 | "npm": ">=7.0.0" 253 | } 254 | }, 255 | "node_modules/@sapphire/shapeshift": { 256 | "version": "3.9.3", 257 | "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.3.tgz", 258 | "integrity": "sha512-WzKJSwDYloSkHoBbE8rkRW8UNKJiSRJ/P8NqJ5iVq7U2Yr/kriIBx2hW+wj2Z5e5EnXL1hgYomgaFsdK6b+zqQ==", 259 | "dependencies": { 260 | "fast-deep-equal": "^3.1.3", 261 | "lodash": "^4.17.21" 262 | }, 263 | "engines": { 264 | "node": ">=v14.0.0", 265 | "npm": ">=7.0.0" 266 | } 267 | }, 268 | "node_modules/@sapphire/snowflake": { 269 | "version": "3.5.1", 270 | "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.1.tgz", 271 | "integrity": "sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==", 272 | "engines": { 273 | "node": ">=v14.0.0", 274 | "npm": ">=7.0.0" 275 | } 276 | }, 277 | "node_modules/@types/node": { 278 | "version": "20.9.0", 279 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", 280 | "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", 281 | "dependencies": { 282 | "undici-types": "~5.26.4" 283 | } 284 | }, 285 | "node_modules/@types/ws": { 286 | "version": "8.5.9", 287 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.9.tgz", 288 | "integrity": "sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==", 289 | "dependencies": { 290 | "@types/node": "*" 291 | } 292 | }, 293 | "node_modules/@ungap/structured-clone": { 294 | "version": "1.2.0", 295 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 296 | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" 297 | }, 298 | "node_modules/@vladfrangu/async_event_emitter": { 299 | "version": "2.2.2", 300 | "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.2.tgz", 301 | "integrity": "sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ==", 302 | "engines": { 303 | "node": ">=v14.0.0", 304 | "npm": ">=7.0.0" 305 | } 306 | }, 307 | "node_modules/acorn": { 308 | "version": "8.10.0", 309 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", 310 | "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", 311 | "bin": { 312 | "acorn": "bin/acorn" 313 | }, 314 | "engines": { 315 | "node": ">=0.4.0" 316 | } 317 | }, 318 | "node_modules/acorn-jsx": { 319 | "version": "5.3.2", 320 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 321 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 322 | "peerDependencies": { 323 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 324 | } 325 | }, 326 | "node_modules/ajv": { 327 | "version": "6.12.6", 328 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 329 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 330 | "dependencies": { 331 | "fast-deep-equal": "^3.1.1", 332 | "fast-json-stable-stringify": "^2.0.0", 333 | "json-schema-traverse": "^0.4.1", 334 | "uri-js": "^4.2.2" 335 | }, 336 | "funding": { 337 | "type": "github", 338 | "url": "https://github.com/sponsors/epoberezkin" 339 | } 340 | }, 341 | "node_modules/ansi-regex": { 342 | "version": "5.0.1", 343 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 344 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 345 | "engines": { 346 | "node": ">=8" 347 | } 348 | }, 349 | "node_modules/ansi-styles": { 350 | "version": "4.3.0", 351 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 352 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 353 | "dependencies": { 354 | "color-convert": "^2.0.1" 355 | }, 356 | "engines": { 357 | "node": ">=8" 358 | }, 359 | "funding": { 360 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 361 | } 362 | }, 363 | "node_modules/argparse": { 364 | "version": "2.0.1", 365 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 366 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 367 | }, 368 | "node_modules/asynckit": { 369 | "version": "0.4.0", 370 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 371 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 372 | }, 373 | "node_modules/axios": { 374 | "version": "1.6.7", 375 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", 376 | "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", 377 | "dependencies": { 378 | "follow-redirects": "^1.15.4", 379 | "form-data": "^4.0.0", 380 | "proxy-from-env": "^1.1.0" 381 | } 382 | }, 383 | "node_modules/balanced-match": { 384 | "version": "1.0.2", 385 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 386 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 387 | }, 388 | "node_modules/brace-expansion": { 389 | "version": "1.1.11", 390 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 391 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 392 | "dependencies": { 393 | "balanced-match": "^1.0.0", 394 | "concat-map": "0.0.1" 395 | } 396 | }, 397 | "node_modules/callsites": { 398 | "version": "3.1.0", 399 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 400 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 401 | "engines": { 402 | "node": ">=6" 403 | } 404 | }, 405 | "node_modules/chalk": { 406 | "version": "4.1.2", 407 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 408 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 409 | "dependencies": { 410 | "ansi-styles": "^4.1.0", 411 | "supports-color": "^7.1.0" 412 | }, 413 | "engines": { 414 | "node": ">=10" 415 | }, 416 | "funding": { 417 | "url": "https://github.com/chalk/chalk?sponsor=1" 418 | } 419 | }, 420 | "node_modules/color-convert": { 421 | "version": "2.0.1", 422 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 423 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 424 | "dependencies": { 425 | "color-name": "~1.1.4" 426 | }, 427 | "engines": { 428 | "node": ">=7.0.0" 429 | } 430 | }, 431 | "node_modules/color-name": { 432 | "version": "1.1.4", 433 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 434 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 435 | }, 436 | "node_modules/combined-stream": { 437 | "version": "1.0.8", 438 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 439 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 440 | "dependencies": { 441 | "delayed-stream": "~1.0.0" 442 | }, 443 | "engines": { 444 | "node": ">= 0.8" 445 | } 446 | }, 447 | "node_modules/concat-map": { 448 | "version": "0.0.1", 449 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 450 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 451 | }, 452 | "node_modules/cross-spawn": { 453 | "version": "7.0.3", 454 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 455 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 456 | "dependencies": { 457 | "path-key": "^3.1.0", 458 | "shebang-command": "^2.0.0", 459 | "which": "^2.0.1" 460 | }, 461 | "engines": { 462 | "node": ">= 8" 463 | } 464 | }, 465 | "node_modules/debug": { 466 | "version": "4.3.4", 467 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 468 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 469 | "dependencies": { 470 | "ms": "2.1.2" 471 | }, 472 | "engines": { 473 | "node": ">=6.0" 474 | }, 475 | "peerDependenciesMeta": { 476 | "supports-color": { 477 | "optional": true 478 | } 479 | } 480 | }, 481 | "node_modules/deep-is": { 482 | "version": "0.1.4", 483 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 484 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" 485 | }, 486 | "node_modules/delayed-stream": { 487 | "version": "1.0.0", 488 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 489 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 490 | "engines": { 491 | "node": ">=0.4.0" 492 | } 493 | }, 494 | "node_modules/discord-api-types": { 495 | "version": "0.37.61", 496 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.61.tgz", 497 | "integrity": "sha512-o/dXNFfhBpYHpQFdT6FWzeO7pKc838QeeZ9d91CfVAtpr5XLK4B/zYxQbYgPdoMiTDvJfzcsLW5naXgmHGDNXw==" 498 | }, 499 | "node_modules/discord.js": { 500 | "version": "14.14.1", 501 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.14.1.tgz", 502 | "integrity": "sha512-/hUVzkIerxKHyRKopJy5xejp4MYKDPTszAnpYxzVVv4qJYf+Tkt+jnT2N29PIPschicaEEpXwF2ARrTYHYwQ5w==", 503 | "dependencies": { 504 | "@discordjs/builders": "^1.7.0", 505 | "@discordjs/collection": "1.5.3", 506 | "@discordjs/formatters": "^0.3.3", 507 | "@discordjs/rest": "^2.1.0", 508 | "@discordjs/util": "^1.0.2", 509 | "@discordjs/ws": "^1.0.2", 510 | "@sapphire/snowflake": "3.5.1", 511 | "@types/ws": "8.5.9", 512 | "discord-api-types": "0.37.61", 513 | "fast-deep-equal": "3.1.3", 514 | "lodash.snakecase": "4.1.1", 515 | "tslib": "2.6.2", 516 | "undici": "5.27.2", 517 | "ws": "8.14.2" 518 | }, 519 | "engines": { 520 | "node": ">=16.11.0" 521 | } 522 | }, 523 | "node_modules/doctrine": { 524 | "version": "3.0.0", 525 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 526 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 527 | "dependencies": { 528 | "esutils": "^2.0.2" 529 | }, 530 | "engines": { 531 | "node": ">=6.0.0" 532 | } 533 | }, 534 | "node_modules/dotenv": { 535 | "version": "16.4.3", 536 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.3.tgz", 537 | "integrity": "sha512-II98GFrje5psQTSve0E7bnwMFybNLqT8Vu8JIFWRjsE3khyNUm/loZupuy5DVzG2IXf/ysxvrixYOQnM6mjD3A==", 538 | "engines": { 539 | "node": ">=12" 540 | }, 541 | "funding": { 542 | "url": "https://dotenvx.com" 543 | } 544 | }, 545 | "node_modules/escape-string-regexp": { 546 | "version": "4.0.0", 547 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 548 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 549 | "engines": { 550 | "node": ">=10" 551 | }, 552 | "funding": { 553 | "url": "https://github.com/sponsors/sindresorhus" 554 | } 555 | }, 556 | "node_modules/eslint": { 557 | "version": "8.56.0", 558 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", 559 | "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", 560 | "dependencies": { 561 | "@eslint-community/eslint-utils": "^4.2.0", 562 | "@eslint-community/regexpp": "^4.6.1", 563 | "@eslint/eslintrc": "^2.1.4", 564 | "@eslint/js": "8.56.0", 565 | "@humanwhocodes/config-array": "^0.11.13", 566 | "@humanwhocodes/module-importer": "^1.0.1", 567 | "@nodelib/fs.walk": "^1.2.8", 568 | "@ungap/structured-clone": "^1.2.0", 569 | "ajv": "^6.12.4", 570 | "chalk": "^4.0.0", 571 | "cross-spawn": "^7.0.2", 572 | "debug": "^4.3.2", 573 | "doctrine": "^3.0.0", 574 | "escape-string-regexp": "^4.0.0", 575 | "eslint-scope": "^7.2.2", 576 | "eslint-visitor-keys": "^3.4.3", 577 | "espree": "^9.6.1", 578 | "esquery": "^1.4.2", 579 | "esutils": "^2.0.2", 580 | "fast-deep-equal": "^3.1.3", 581 | "file-entry-cache": "^6.0.1", 582 | "find-up": "^5.0.0", 583 | "glob-parent": "^6.0.2", 584 | "globals": "^13.19.0", 585 | "graphemer": "^1.4.0", 586 | "ignore": "^5.2.0", 587 | "imurmurhash": "^0.1.4", 588 | "is-glob": "^4.0.0", 589 | "is-path-inside": "^3.0.3", 590 | "js-yaml": "^4.1.0", 591 | "json-stable-stringify-without-jsonify": "^1.0.1", 592 | "levn": "^0.4.1", 593 | "lodash.merge": "^4.6.2", 594 | "minimatch": "^3.1.2", 595 | "natural-compare": "^1.4.0", 596 | "optionator": "^0.9.3", 597 | "strip-ansi": "^6.0.1", 598 | "text-table": "^0.2.0" 599 | }, 600 | "bin": { 601 | "eslint": "bin/eslint.js" 602 | }, 603 | "engines": { 604 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 605 | }, 606 | "funding": { 607 | "url": "https://opencollective.com/eslint" 608 | } 609 | }, 610 | "node_modules/eslint-scope": { 611 | "version": "7.2.2", 612 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 613 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 614 | "dependencies": { 615 | "esrecurse": "^4.3.0", 616 | "estraverse": "^5.2.0" 617 | }, 618 | "engines": { 619 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 620 | }, 621 | "funding": { 622 | "url": "https://opencollective.com/eslint" 623 | } 624 | }, 625 | "node_modules/eslint-visitor-keys": { 626 | "version": "3.4.3", 627 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 628 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 629 | "engines": { 630 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 631 | }, 632 | "funding": { 633 | "url": "https://opencollective.com/eslint" 634 | } 635 | }, 636 | "node_modules/espree": { 637 | "version": "9.6.1", 638 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 639 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 640 | "dependencies": { 641 | "acorn": "^8.9.0", 642 | "acorn-jsx": "^5.3.2", 643 | "eslint-visitor-keys": "^3.4.1" 644 | }, 645 | "engines": { 646 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 647 | }, 648 | "funding": { 649 | "url": "https://opencollective.com/eslint" 650 | } 651 | }, 652 | "node_modules/esquery": { 653 | "version": "1.5.0", 654 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 655 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 656 | "dependencies": { 657 | "estraverse": "^5.1.0" 658 | }, 659 | "engines": { 660 | "node": ">=0.10" 661 | } 662 | }, 663 | "node_modules/esrecurse": { 664 | "version": "4.3.0", 665 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 666 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 667 | "dependencies": { 668 | "estraverse": "^5.2.0" 669 | }, 670 | "engines": { 671 | "node": ">=4.0" 672 | } 673 | }, 674 | "node_modules/estraverse": { 675 | "version": "5.3.0", 676 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 677 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 678 | "engines": { 679 | "node": ">=4.0" 680 | } 681 | }, 682 | "node_modules/esutils": { 683 | "version": "2.0.3", 684 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 685 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 686 | "engines": { 687 | "node": ">=0.10.0" 688 | } 689 | }, 690 | "node_modules/fast-deep-equal": { 691 | "version": "3.1.3", 692 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 693 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 694 | }, 695 | "node_modules/fast-json-stable-stringify": { 696 | "version": "2.1.0", 697 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 698 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 699 | }, 700 | "node_modules/fast-levenshtein": { 701 | "version": "2.0.6", 702 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 703 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" 704 | }, 705 | "node_modules/fastq": { 706 | "version": "1.15.0", 707 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 708 | "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 709 | "dependencies": { 710 | "reusify": "^1.0.4" 711 | } 712 | }, 713 | "node_modules/file-entry-cache": { 714 | "version": "6.0.1", 715 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 716 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 717 | "dependencies": { 718 | "flat-cache": "^3.0.4" 719 | }, 720 | "engines": { 721 | "node": "^10.12.0 || >=12.0.0" 722 | } 723 | }, 724 | "node_modules/find-up": { 725 | "version": "5.0.0", 726 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 727 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 728 | "dependencies": { 729 | "locate-path": "^6.0.0", 730 | "path-exists": "^4.0.0" 731 | }, 732 | "engines": { 733 | "node": ">=10" 734 | }, 735 | "funding": { 736 | "url": "https://github.com/sponsors/sindresorhus" 737 | } 738 | }, 739 | "node_modules/flat-cache": { 740 | "version": "3.0.4", 741 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 742 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 743 | "dependencies": { 744 | "flatted": "^3.1.0", 745 | "rimraf": "^3.0.2" 746 | }, 747 | "engines": { 748 | "node": "^10.12.0 || >=12.0.0" 749 | } 750 | }, 751 | "node_modules/flatted": { 752 | "version": "3.2.7", 753 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 754 | "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" 755 | }, 756 | "node_modules/follow-redirects": { 757 | "version": "1.15.4", 758 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", 759 | "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", 760 | "funding": [ 761 | { 762 | "type": "individual", 763 | "url": "https://github.com/sponsors/RubenVerborgh" 764 | } 765 | ], 766 | "engines": { 767 | "node": ">=4.0" 768 | }, 769 | "peerDependenciesMeta": { 770 | "debug": { 771 | "optional": true 772 | } 773 | } 774 | }, 775 | "node_modules/form-data": { 776 | "version": "4.0.0", 777 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 778 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 779 | "dependencies": { 780 | "asynckit": "^0.4.0", 781 | "combined-stream": "^1.0.8", 782 | "mime-types": "^2.1.12" 783 | }, 784 | "engines": { 785 | "node": ">= 6" 786 | } 787 | }, 788 | "node_modules/fs.realpath": { 789 | "version": "1.0.0", 790 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 791 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 792 | }, 793 | "node_modules/glob": { 794 | "version": "7.2.3", 795 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 796 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 797 | "dependencies": { 798 | "fs.realpath": "^1.0.0", 799 | "inflight": "^1.0.4", 800 | "inherits": "2", 801 | "minimatch": "^3.1.1", 802 | "once": "^1.3.0", 803 | "path-is-absolute": "^1.0.0" 804 | }, 805 | "engines": { 806 | "node": "*" 807 | }, 808 | "funding": { 809 | "url": "https://github.com/sponsors/isaacs" 810 | } 811 | }, 812 | "node_modules/glob-parent": { 813 | "version": "6.0.2", 814 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 815 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 816 | "dependencies": { 817 | "is-glob": "^4.0.3" 818 | }, 819 | "engines": { 820 | "node": ">=10.13.0" 821 | } 822 | }, 823 | "node_modules/globals": { 824 | "version": "13.20.0", 825 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", 826 | "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", 827 | "dependencies": { 828 | "type-fest": "^0.20.2" 829 | }, 830 | "engines": { 831 | "node": ">=8" 832 | }, 833 | "funding": { 834 | "url": "https://github.com/sponsors/sindresorhus" 835 | } 836 | }, 837 | "node_modules/graphemer": { 838 | "version": "1.4.0", 839 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 840 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" 841 | }, 842 | "node_modules/has-flag": { 843 | "version": "4.0.0", 844 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 845 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 846 | "engines": { 847 | "node": ">=8" 848 | } 849 | }, 850 | "node_modules/ignore": { 851 | "version": "5.2.4", 852 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", 853 | "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", 854 | "engines": { 855 | "node": ">= 4" 856 | } 857 | }, 858 | "node_modules/import-fresh": { 859 | "version": "3.3.0", 860 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 861 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 862 | "dependencies": { 863 | "parent-module": "^1.0.0", 864 | "resolve-from": "^4.0.0" 865 | }, 866 | "engines": { 867 | "node": ">=6" 868 | }, 869 | "funding": { 870 | "url": "https://github.com/sponsors/sindresorhus" 871 | } 872 | }, 873 | "node_modules/imurmurhash": { 874 | "version": "0.1.4", 875 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 876 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 877 | "engines": { 878 | "node": ">=0.8.19" 879 | } 880 | }, 881 | "node_modules/inflight": { 882 | "version": "1.0.6", 883 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 884 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 885 | "dependencies": { 886 | "once": "^1.3.0", 887 | "wrappy": "1" 888 | } 889 | }, 890 | "node_modules/inherits": { 891 | "version": "2.0.4", 892 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 893 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 894 | }, 895 | "node_modules/is-extglob": { 896 | "version": "2.1.1", 897 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 898 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 899 | "engines": { 900 | "node": ">=0.10.0" 901 | } 902 | }, 903 | "node_modules/is-glob": { 904 | "version": "4.0.3", 905 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 906 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 907 | "dependencies": { 908 | "is-extglob": "^2.1.1" 909 | }, 910 | "engines": { 911 | "node": ">=0.10.0" 912 | } 913 | }, 914 | "node_modules/is-path-inside": { 915 | "version": "3.0.3", 916 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 917 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 918 | "engines": { 919 | "node": ">=8" 920 | } 921 | }, 922 | "node_modules/isexe": { 923 | "version": "2.0.0", 924 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 925 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 926 | }, 927 | "node_modules/js-yaml": { 928 | "version": "4.1.0", 929 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 930 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 931 | "dependencies": { 932 | "argparse": "^2.0.1" 933 | }, 934 | "bin": { 935 | "js-yaml": "bin/js-yaml.js" 936 | } 937 | }, 938 | "node_modules/json-schema-traverse": { 939 | "version": "0.4.1", 940 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 941 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 942 | }, 943 | "node_modules/json-stable-stringify-without-jsonify": { 944 | "version": "1.0.1", 945 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 946 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" 947 | }, 948 | "node_modules/levn": { 949 | "version": "0.4.1", 950 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 951 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 952 | "dependencies": { 953 | "prelude-ls": "^1.2.1", 954 | "type-check": "~0.4.0" 955 | }, 956 | "engines": { 957 | "node": ">= 0.8.0" 958 | } 959 | }, 960 | "node_modules/locate-path": { 961 | "version": "6.0.0", 962 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 963 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 964 | "dependencies": { 965 | "p-locate": "^5.0.0" 966 | }, 967 | "engines": { 968 | "node": ">=10" 969 | }, 970 | "funding": { 971 | "url": "https://github.com/sponsors/sindresorhus" 972 | } 973 | }, 974 | "node_modules/lodash": { 975 | "version": "4.17.21", 976 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 977 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 978 | }, 979 | "node_modules/lodash.merge": { 980 | "version": "4.6.2", 981 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 982 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" 983 | }, 984 | "node_modules/lodash.snakecase": { 985 | "version": "4.1.1", 986 | "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", 987 | "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" 988 | }, 989 | "node_modules/magic-bytes.js": { 990 | "version": "1.5.0", 991 | "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.5.0.tgz", 992 | "integrity": "sha512-wJkXvutRbNWcc37tt5j1HyOK1nosspdh3dj6LUYYAvF6JYNqs53IfRvK9oEpcwiDA1NdoIi64yAMfdivPeVAyw==" 993 | }, 994 | "node_modules/mime-db": { 995 | "version": "1.52.0", 996 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 997 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 998 | "engines": { 999 | "node": ">= 0.6" 1000 | } 1001 | }, 1002 | "node_modules/mime-types": { 1003 | "version": "2.1.35", 1004 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1005 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1006 | "dependencies": { 1007 | "mime-db": "1.52.0" 1008 | }, 1009 | "engines": { 1010 | "node": ">= 0.6" 1011 | } 1012 | }, 1013 | "node_modules/minimatch": { 1014 | "version": "3.1.2", 1015 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1016 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1017 | "dependencies": { 1018 | "brace-expansion": "^1.1.7" 1019 | }, 1020 | "engines": { 1021 | "node": "*" 1022 | } 1023 | }, 1024 | "node_modules/ms": { 1025 | "version": "2.1.2", 1026 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1027 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1028 | }, 1029 | "node_modules/natural-compare": { 1030 | "version": "1.4.0", 1031 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1032 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" 1033 | }, 1034 | "node_modules/once": { 1035 | "version": "1.4.0", 1036 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1037 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1038 | "dependencies": { 1039 | "wrappy": "1" 1040 | } 1041 | }, 1042 | "node_modules/optionator": { 1043 | "version": "0.9.3", 1044 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", 1045 | "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", 1046 | "dependencies": { 1047 | "@aashutoshrathi/word-wrap": "^1.2.3", 1048 | "deep-is": "^0.1.3", 1049 | "fast-levenshtein": "^2.0.6", 1050 | "levn": "^0.4.1", 1051 | "prelude-ls": "^1.2.1", 1052 | "type-check": "^0.4.0" 1053 | }, 1054 | "engines": { 1055 | "node": ">= 0.8.0" 1056 | } 1057 | }, 1058 | "node_modules/p-limit": { 1059 | "version": "3.1.0", 1060 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1061 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1062 | "dependencies": { 1063 | "yocto-queue": "^0.1.0" 1064 | }, 1065 | "engines": { 1066 | "node": ">=10" 1067 | }, 1068 | "funding": { 1069 | "url": "https://github.com/sponsors/sindresorhus" 1070 | } 1071 | }, 1072 | "node_modules/p-locate": { 1073 | "version": "5.0.0", 1074 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1075 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1076 | "dependencies": { 1077 | "p-limit": "^3.0.2" 1078 | }, 1079 | "engines": { 1080 | "node": ">=10" 1081 | }, 1082 | "funding": { 1083 | "url": "https://github.com/sponsors/sindresorhus" 1084 | } 1085 | }, 1086 | "node_modules/parent-module": { 1087 | "version": "1.0.1", 1088 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1089 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1090 | "dependencies": { 1091 | "callsites": "^3.0.0" 1092 | }, 1093 | "engines": { 1094 | "node": ">=6" 1095 | } 1096 | }, 1097 | "node_modules/path-exists": { 1098 | "version": "4.0.0", 1099 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1100 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1101 | "engines": { 1102 | "node": ">=8" 1103 | } 1104 | }, 1105 | "node_modules/path-is-absolute": { 1106 | "version": "1.0.1", 1107 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1108 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1109 | "engines": { 1110 | "node": ">=0.10.0" 1111 | } 1112 | }, 1113 | "node_modules/path-key": { 1114 | "version": "3.1.1", 1115 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1116 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1117 | "engines": { 1118 | "node": ">=8" 1119 | } 1120 | }, 1121 | "node_modules/prelude-ls": { 1122 | "version": "1.2.1", 1123 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1124 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1125 | "engines": { 1126 | "node": ">= 0.8.0" 1127 | } 1128 | }, 1129 | "node_modules/proxy-from-env": { 1130 | "version": "1.1.0", 1131 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 1132 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 1133 | }, 1134 | "node_modules/punycode": { 1135 | "version": "2.3.0", 1136 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", 1137 | "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", 1138 | "engines": { 1139 | "node": ">=6" 1140 | } 1141 | }, 1142 | "node_modules/queue-microtask": { 1143 | "version": "1.2.3", 1144 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1145 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1146 | "funding": [ 1147 | { 1148 | "type": "github", 1149 | "url": "https://github.com/sponsors/feross" 1150 | }, 1151 | { 1152 | "type": "patreon", 1153 | "url": "https://www.patreon.com/feross" 1154 | }, 1155 | { 1156 | "type": "consulting", 1157 | "url": "https://feross.org/support" 1158 | } 1159 | ] 1160 | }, 1161 | "node_modules/resolve-from": { 1162 | "version": "4.0.0", 1163 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1164 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1165 | "engines": { 1166 | "node": ">=4" 1167 | } 1168 | }, 1169 | "node_modules/reusify": { 1170 | "version": "1.0.4", 1171 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1172 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1173 | "engines": { 1174 | "iojs": ">=1.0.0", 1175 | "node": ">=0.10.0" 1176 | } 1177 | }, 1178 | "node_modules/rimraf": { 1179 | "version": "3.0.2", 1180 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1181 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1182 | "dependencies": { 1183 | "glob": "^7.1.3" 1184 | }, 1185 | "bin": { 1186 | "rimraf": "bin.js" 1187 | }, 1188 | "funding": { 1189 | "url": "https://github.com/sponsors/isaacs" 1190 | } 1191 | }, 1192 | "node_modules/run-parallel": { 1193 | "version": "1.2.0", 1194 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1195 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1196 | "funding": [ 1197 | { 1198 | "type": "github", 1199 | "url": "https://github.com/sponsors/feross" 1200 | }, 1201 | { 1202 | "type": "patreon", 1203 | "url": "https://www.patreon.com/feross" 1204 | }, 1205 | { 1206 | "type": "consulting", 1207 | "url": "https://feross.org/support" 1208 | } 1209 | ], 1210 | "dependencies": { 1211 | "queue-microtask": "^1.2.2" 1212 | } 1213 | }, 1214 | "node_modules/shebang-command": { 1215 | "version": "2.0.0", 1216 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1217 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1218 | "dependencies": { 1219 | "shebang-regex": "^3.0.0" 1220 | }, 1221 | "engines": { 1222 | "node": ">=8" 1223 | } 1224 | }, 1225 | "node_modules/shebang-regex": { 1226 | "version": "3.0.0", 1227 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1228 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1229 | "engines": { 1230 | "node": ">=8" 1231 | } 1232 | }, 1233 | "node_modules/strip-ansi": { 1234 | "version": "6.0.1", 1235 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1236 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1237 | "dependencies": { 1238 | "ansi-regex": "^5.0.1" 1239 | }, 1240 | "engines": { 1241 | "node": ">=8" 1242 | } 1243 | }, 1244 | "node_modules/strip-json-comments": { 1245 | "version": "3.1.1", 1246 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1247 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1248 | "engines": { 1249 | "node": ">=8" 1250 | }, 1251 | "funding": { 1252 | "url": "https://github.com/sponsors/sindresorhus" 1253 | } 1254 | }, 1255 | "node_modules/supports-color": { 1256 | "version": "7.2.0", 1257 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1258 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1259 | "dependencies": { 1260 | "has-flag": "^4.0.0" 1261 | }, 1262 | "engines": { 1263 | "node": ">=8" 1264 | } 1265 | }, 1266 | "node_modules/text-table": { 1267 | "version": "0.2.0", 1268 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1269 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" 1270 | }, 1271 | "node_modules/ts-mixer": { 1272 | "version": "6.0.3", 1273 | "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz", 1274 | "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==" 1275 | }, 1276 | "node_modules/tslib": { 1277 | "version": "2.6.2", 1278 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 1279 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" 1280 | }, 1281 | "node_modules/type-check": { 1282 | "version": "0.4.0", 1283 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1284 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1285 | "dependencies": { 1286 | "prelude-ls": "^1.2.1" 1287 | }, 1288 | "engines": { 1289 | "node": ">= 0.8.0" 1290 | } 1291 | }, 1292 | "node_modules/type-fest": { 1293 | "version": "0.20.2", 1294 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1295 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1296 | "engines": { 1297 | "node": ">=10" 1298 | }, 1299 | "funding": { 1300 | "url": "https://github.com/sponsors/sindresorhus" 1301 | } 1302 | }, 1303 | "node_modules/undici": { 1304 | "version": "5.27.2", 1305 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz", 1306 | "integrity": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==", 1307 | "dependencies": { 1308 | "@fastify/busboy": "^2.0.0" 1309 | }, 1310 | "engines": { 1311 | "node": ">=14.0" 1312 | } 1313 | }, 1314 | "node_modules/undici-types": { 1315 | "version": "5.26.5", 1316 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 1317 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" 1318 | }, 1319 | "node_modules/uri-js": { 1320 | "version": "4.4.1", 1321 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1322 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1323 | "dependencies": { 1324 | "punycode": "^2.1.0" 1325 | } 1326 | }, 1327 | "node_modules/which": { 1328 | "version": "2.0.2", 1329 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1330 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1331 | "dependencies": { 1332 | "isexe": "^2.0.0" 1333 | }, 1334 | "bin": { 1335 | "node-which": "bin/node-which" 1336 | }, 1337 | "engines": { 1338 | "node": ">= 8" 1339 | } 1340 | }, 1341 | "node_modules/wrappy": { 1342 | "version": "1.0.2", 1343 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1344 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1345 | }, 1346 | "node_modules/ws": { 1347 | "version": "8.14.2", 1348 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", 1349 | "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", 1350 | "engines": { 1351 | "node": ">=10.0.0" 1352 | }, 1353 | "peerDependencies": { 1354 | "bufferutil": "^4.0.1", 1355 | "utf-8-validate": ">=5.0.2" 1356 | }, 1357 | "peerDependenciesMeta": { 1358 | "bufferutil": { 1359 | "optional": true 1360 | }, 1361 | "utf-8-validate": { 1362 | "optional": true 1363 | } 1364 | } 1365 | }, 1366 | "node_modules/yocto-queue": { 1367 | "version": "0.1.0", 1368 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1369 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1370 | "engines": { 1371 | "node": ">=10" 1372 | }, 1373 | "funding": { 1374 | "url": "https://github.com/sponsors/sindresorhus" 1375 | } 1376 | } 1377 | } 1378 | } 1379 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "leetcode-disc", 3 | "version": "1.0.0", 4 | "description": "Discord bot that posts a leetcode questions into chosen server as per scheduled time", 5 | "main": "bot.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "node -r dotenv/config bot.js" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/chakrakan/leetcode-disc.git" 13 | }, 14 | "keywords": [ 15 | "leetcode", 16 | "discord", 17 | "bot" 18 | ], 19 | "author": "Kanisk Chakraborty", 20 | "license": "ISC", 21 | "bugs": { 22 | "url": "https://github.com/chakrakan/leetcode-disc/issues" 23 | }, 24 | "homepage": "https://github.com/chakrakan/leetcode-disc#readme", 25 | "dependencies": { 26 | "axios": "^1.0.0", 27 | "discord.js": "^14.0.0", 28 | "dotenv": "^16.0.0", 29 | "eslint": "^8.0.0" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "config:base" 4 | ], 5 | "packageRules": [ 6 | { 7 | "updateTypes": ["minor", "patch", "pin", "digest"], 8 | "automerge": true 9 | } 10 | ] 11 | } 12 | --------------------------------------------------------------------------------