├── .eslintrc.json ├── .gitattributes ├── .gitignore ├── .prettierrc.json ├── LICENSE ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src ├── commands │ ├── autoplay.ts │ ├── filter.ts │ ├── play.ts │ ├── queue.ts │ ├── seek.ts │ ├── skip.ts │ ├── skipto.ts │ ├── stop.ts │ └── volume.ts ├── events │ ├── client │ │ ├── error.ts │ │ ├── interactionCreate.ts │ │ └── ready.ts │ └── distube │ │ ├── addList.ts │ │ ├── addSong.ts │ │ ├── debug.ts │ │ ├── error.ts │ │ ├── ffmpegDebug.ts │ │ ├── finish.ts │ │ ├── initQueue.ts │ │ ├── noRelated.ts │ │ └── playSong.ts └── index.ts ├── tsconfig.eslint.json └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "parserOptions": { 3 | "project": "./tsconfig.eslint.json" 4 | }, 5 | "rules": { 6 | "valid-jsdoc": "off", 7 | "jsdoc/check-tag-names": "off", 8 | "no-console": "off" 9 | }, 10 | "extends": "distube" 11 | } 12 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | pnpm-lock.yaml 2 | node_modules -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "all", 3 | "printWidth": 120, 4 | "endOfLine": "lf", 5 | "quoteProps": "as-needed", 6 | "arrowParens": "avoid", 7 | "tabWidth": 2 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Skick 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DisTube Example 2 | 3 | DisTube v5 example music bot with command handler 4 | 5 | **Dependencies maybe outdated. You should update them yourself!** 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "distube-example", 3 | "version": "1.0.0", 4 | "description": "DisTube example music bot.", 5 | "scripts": { 6 | "start": "ts-node src/index.ts", 7 | "lint": "eslint .", 8 | "lint:fix": "eslint --fix .", 9 | "p": "prettier . --write" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+ssh://git@github.com/distubejs/example.git" 14 | }, 15 | "author": "Skick", 16 | "license": "MIT", 17 | "bugs": { 18 | "url": "https://github.com/distubejs/example/issues" 19 | }, 20 | "homepage": "https://github.com/distubejs/example#readme", 21 | "dependencies": { 22 | "@discordjs/opus": "^0.9.0", 23 | "@discordjs/voice": "^0.17.0", 24 | "@distube/deezer": "^2.0.0", 25 | "@distube/direct-link": "^1.0.0", 26 | "@distube/file": "^1.0.0", 27 | "@distube/soundcloud": "^2.0.0", 28 | "@distube/spotify": "^2.0.0", 29 | "@distube/youtube": "^1.0.0", 30 | "discord.js": "^14.15.3", 31 | "distube": "^5.0.1", 32 | "sodium-native": "^4.1.1" 33 | }, 34 | "devDependencies": { 35 | "@types/node": "^20.14.1", 36 | "discord.js": "^14.15.2", 37 | "eslint": "^8.57.0", 38 | "eslint-config-distube": "^1.7.0", 39 | "prettier": "^3.3.0", 40 | "ts-node": "^10.9.2", 41 | "tsup": "^8.1.0", 42 | "typescript": "^5.4.5" 43 | }, 44 | "nano-staged": { 45 | "*.js": [ 46 | "prettier --write", 47 | "eslint --fix" 48 | ], 49 | "*.{json,yml,yaml,md}": [ 50 | "prettier --write" 51 | ] 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@discordjs/opus': 12 | specifier: ^0.9.0 13 | version: 0.9.0 14 | '@discordjs/voice': 15 | specifier: ^0.17.0 16 | version: 0.17.0(@discordjs/opus@0.9.0) 17 | '@distube/deezer': 18 | specifier: ^2.0.0 19 | version: 2.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3)) 20 | '@distube/direct-link': 21 | specifier: ^1.0.0 22 | version: 1.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3)) 23 | '@distube/file': 24 | specifier: ^1.0.0 25 | version: 1.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3)) 26 | '@distube/soundcloud': 27 | specifier: ^2.0.0 28 | version: 2.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3)) 29 | '@distube/spotify': 30 | specifier: ^2.0.0 31 | version: 2.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3)) 32 | '@distube/youtube': 33 | specifier: ^1.0.0 34 | version: 1.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3)) 35 | discord.js: 36 | specifier: ^14.15.3 37 | version: 14.15.3 38 | distube: 39 | specifier: ^5.0.1 40 | version: 5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3) 41 | sodium-native: 42 | specifier: ^4.1.1 43 | version: 4.1.1 44 | devDependencies: 45 | '@types/node': 46 | specifier: ^20.14.1 47 | version: 20.14.1 48 | eslint: 49 | specifier: ^8.57.0 50 | version: 8.57.0 51 | eslint-config-distube: 52 | specifier: ^1.7.0 53 | version: 1.7.0(eslint@8.57.0)(typescript@5.4.5) 54 | prettier: 55 | specifier: ^3.3.0 56 | version: 3.3.0 57 | ts-node: 58 | specifier: ^10.9.2 59 | version: 10.9.2(@types/node@20.14.1)(typescript@5.4.5) 60 | tsup: 61 | specifier: ^8.1.0 62 | version: 8.1.0(ts-node@10.9.2(@types/node@20.14.1)(typescript@5.4.5))(typescript@5.4.5) 63 | typescript: 64 | specifier: ^5.4.5 65 | version: 5.4.5 66 | 67 | packages: 68 | 69 | '@cspotcode/source-map-support@0.8.1': 70 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 71 | engines: {node: '>=12'} 72 | 73 | '@discordjs/builders@1.8.2': 74 | resolution: {integrity: sha512-6wvG3QaCjtMu0xnle4SoOIeFB4y6fKMN6WZfy3BMKJdQQtPLik8KGzDwBVL/+wTtcE/ZlFjgEk74GublyEVZ7g==} 75 | engines: {node: '>=16.11.0'} 76 | 77 | '@discordjs/collection@1.5.3': 78 | resolution: {integrity: sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==} 79 | engines: {node: '>=16.11.0'} 80 | 81 | '@discordjs/collection@2.1.0': 82 | resolution: {integrity: sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw==} 83 | engines: {node: '>=18'} 84 | 85 | '@discordjs/formatters@0.4.0': 86 | resolution: {integrity: sha512-fJ06TLC1NiruF35470q3Nr1bi95BdvKFAF+T5bNfZJ4bNdqZ3VZ+Ttg6SThqTxm6qumSG3choxLBHMC69WXNXQ==} 87 | engines: {node: '>=16.11.0'} 88 | 89 | '@discordjs/node-pre-gyp@0.4.5': 90 | resolution: {integrity: sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ==} 91 | hasBin: true 92 | 93 | '@discordjs/opus@0.9.0': 94 | resolution: {integrity: sha512-NEE76A96FtQ5YuoAVlOlB3ryMPrkXbUCTQICHGKb8ShtjXyubGicjRMouHtP1RpuDdm16cDa+oI3aAMo1zQRUQ==} 95 | engines: {node: '>=12.0.0'} 96 | 97 | '@discordjs/rest@2.3.0': 98 | resolution: {integrity: sha512-C1kAJK8aSYRv3ZwMG8cvrrW4GN0g5eMdP8AuN8ODH5DyOCbHgJspze1my3xHOAgwLJdKUbWNVyAeJ9cEdduqIg==} 99 | engines: {node: '>=16.11.0'} 100 | 101 | '@discordjs/util@1.1.0': 102 | resolution: {integrity: sha512-IndcI5hzlNZ7GS96RV3Xw1R2kaDuXEp7tRIy/KlhidpN/BQ1qh1NZt3377dMLTa44xDUNKT7hnXkA/oUAzD/lg==} 103 | engines: {node: '>=16.11.0'} 104 | 105 | '@discordjs/voice@0.17.0': 106 | resolution: {integrity: sha512-hArn9FF5ZYi1IkxdJEVnJi+OxlwLV0NJYWpKXsmNOojtGtAZHxmsELA+MZlu2KW1F/K1/nt7lFOfcMXNYweq9w==} 107 | engines: {node: '>=16.11.0'} 108 | 109 | '@discordjs/ws@1.1.1': 110 | resolution: {integrity: sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==} 111 | engines: {node: '>=16.11.0'} 112 | 113 | '@distube/deezer@2.0.0': 114 | resolution: {integrity: sha512-e0dUV5t1eYbM8FFUdg86SKt3lsoZuOWQ071MPmkDi6b2qraU8GGpj34ovsg1i4r1qvlSz66cKmfX3z9h02cfdQ==} 115 | peerDependencies: 116 | distube: '5' 117 | 118 | '@distube/direct-link@1.0.0': 119 | resolution: {integrity: sha512-oeNBjERUoGvP9g4Tk9UixOYOjxsQ4FhABNuxRTAKu5V+b7/kOONC6rJ0qas/G5pWxzfV9JGyw5gAcm6eQxaZiA==} 120 | peerDependencies: 121 | distube: '5' 122 | 123 | '@distube/file@1.0.0': 124 | resolution: {integrity: sha512-6oo8Lt2m/mjmm4RJo+A0jn7qu1ec+KL6/R1xMYUnrpC/EW/nuiE5NJsaCezILPkudT49PJ828SRwkpnj8a7ECw==} 125 | peerDependencies: 126 | distube: '5' 127 | 128 | '@distube/soundcloud@2.0.0': 129 | resolution: {integrity: sha512-/ftKSZo3cHruMn+FHJqKS+QvNb5jwjgYjif9/AAEg26oSD/+WBibrGnTgR2/NDwPQc/oHR18QWvrN4TY9jMbeg==} 130 | peerDependencies: 131 | distube: '5' 132 | 133 | '@distube/spotify@2.0.0': 134 | resolution: {integrity: sha512-5/x4fXlFhUGjL/i8vaU7FFXNsG0E0VAS46JUmluGyDOqkwX2lapBhxbnKbwgzFa0M6xafBX7DMzQ6tcMxtCs7Q==} 135 | peerDependencies: 136 | distube: '5' 137 | 138 | '@distube/youtube@1.0.0': 139 | resolution: {integrity: sha512-Z81ysd1nLPtR2BOwcsGsyrnjN7Re6WgbrxPuHJ4RBtcFa3dlVlAPfg8X9xRZJuDYT9zcWNSVoAILXytSryFzvA==} 140 | peerDependencies: 141 | distube: '5' 142 | 143 | '@distube/ytdl-core@4.13.3': 144 | resolution: {integrity: sha512-WHVzp0NyUkmdxRkfU8tN7eRquL7bnia2U/EDNWVupCptRo7EToTdBKHwJrDFqvavbXsdqLG/kR1r+1LaPglrFQ==} 145 | engines: {node: '>=12'} 146 | 147 | '@distube/ytpl@1.2.1': 148 | resolution: {integrity: sha512-cp9nDYyGTZ2DNHURQXS76ptKWijLMspoxJEj03i++9tJf0LFGTWkskL3sLwcY4qQPLXjlH9FAXwwpjVttdXvZQ==} 149 | engines: {node: '>=8'} 150 | 151 | '@distube/ytsr@2.0.0': 152 | resolution: {integrity: sha512-N9z8IMbBCQ/gNnJmBgc0TBOU7tdl2nYDOnT6adN1utzIlrKWa2Ux+3UdAPV38f/qRrWohcmyMHPbSbex80ap3A==} 153 | engines: {node: '>=18.0'} 154 | 155 | '@esbuild/aix-ppc64@0.21.4': 156 | resolution: {integrity: sha512-Zrm+B33R4LWPLjDEVnEqt2+SLTATlru1q/xYKVn8oVTbiRBGmK2VIMoIYGJDGyftnGaC788IuzGFAlb7IQ0Y8A==} 157 | engines: {node: '>=12'} 158 | cpu: [ppc64] 159 | os: [aix] 160 | 161 | '@esbuild/android-arm64@0.21.4': 162 | resolution: {integrity: sha512-fYFnz+ObClJ3dNiITySBUx+oNalYUT18/AryMxfovLkYWbutXsct3Wz2ZWAcGGppp+RVVX5FiXeLYGi97umisA==} 163 | engines: {node: '>=12'} 164 | cpu: [arm64] 165 | os: [android] 166 | 167 | '@esbuild/android-arm@0.21.4': 168 | resolution: {integrity: sha512-E7H/yTd8kGQfY4z9t3nRPk/hrhaCajfA3YSQSBrst8B+3uTcgsi8N+ZWYCaeIDsiVs6m65JPCaQN/DxBRclF3A==} 169 | engines: {node: '>=12'} 170 | cpu: [arm] 171 | os: [android] 172 | 173 | '@esbuild/android-x64@0.21.4': 174 | resolution: {integrity: sha512-mDqmlge3hFbEPbCWxp4fM6hqq7aZfLEHZAKGP9viq9wMUBVQx202aDIfc3l+d2cKhUJM741VrCXEzRFhPDKH3Q==} 175 | engines: {node: '>=12'} 176 | cpu: [x64] 177 | os: [android] 178 | 179 | '@esbuild/darwin-arm64@0.21.4': 180 | resolution: {integrity: sha512-72eaIrDZDSiWqpmCzVaBD58c8ea8cw/U0fq/PPOTqE3c53D0xVMRt2ooIABZ6/wj99Y+h4ksT/+I+srCDLU9TA==} 181 | engines: {node: '>=12'} 182 | cpu: [arm64] 183 | os: [darwin] 184 | 185 | '@esbuild/darwin-x64@0.21.4': 186 | resolution: {integrity: sha512-uBsuwRMehGmw1JC7Vecu/upOjTsMhgahmDkWhGLWxIgUn2x/Y4tIwUZngsmVb6XyPSTXJYS4YiASKPcm9Zitag==} 187 | engines: {node: '>=12'} 188 | cpu: [x64] 189 | os: [darwin] 190 | 191 | '@esbuild/freebsd-arm64@0.21.4': 192 | resolution: {integrity: sha512-8JfuSC6YMSAEIZIWNL3GtdUT5NhUA/CMUCpZdDRolUXNAXEE/Vbpe6qlGLpfThtY5NwXq8Hi4nJy4YfPh+TwAg==} 193 | engines: {node: '>=12'} 194 | cpu: [arm64] 195 | os: [freebsd] 196 | 197 | '@esbuild/freebsd-x64@0.21.4': 198 | resolution: {integrity: sha512-8d9y9eQhxv4ef7JmXny7591P/PYsDFc4+STaxC1GBv0tMyCdyWfXu2jBuqRsyhY8uL2HU8uPyscgE2KxCY9imQ==} 199 | engines: {node: '>=12'} 200 | cpu: [x64] 201 | os: [freebsd] 202 | 203 | '@esbuild/linux-arm64@0.21.4': 204 | resolution: {integrity: sha512-/GLD2orjNU50v9PcxNpYZi+y8dJ7e7/LhQukN3S4jNDXCKkyyiyAz9zDw3siZ7Eh1tRcnCHAo/WcqKMzmi4eMQ==} 205 | engines: {node: '>=12'} 206 | cpu: [arm64] 207 | os: [linux] 208 | 209 | '@esbuild/linux-arm@0.21.4': 210 | resolution: {integrity: sha512-2rqFFefpYmpMs+FWjkzSgXg5vViocqpq5a1PSRgT0AvSgxoXmGF17qfGAzKedg6wAwyM7UltrKVo9kxaJLMF/g==} 211 | engines: {node: '>=12'} 212 | cpu: [arm] 213 | os: [linux] 214 | 215 | '@esbuild/linux-ia32@0.21.4': 216 | resolution: {integrity: sha512-pNftBl7m/tFG3t2m/tSjuYeWIffzwAZT9m08+9DPLizxVOsUl8DdFzn9HvJrTQwe3wvJnwTdl92AonY36w/25g==} 217 | engines: {node: '>=12'} 218 | cpu: [ia32] 219 | os: [linux] 220 | 221 | '@esbuild/linux-loong64@0.21.4': 222 | resolution: {integrity: sha512-cSD2gzCK5LuVX+hszzXQzlWya6c7hilO71L9h4KHwqI4qeqZ57bAtkgcC2YioXjsbfAv4lPn3qe3b00Zt+jIfQ==} 223 | engines: {node: '>=12'} 224 | cpu: [loong64] 225 | os: [linux] 226 | 227 | '@esbuild/linux-mips64el@0.21.4': 228 | resolution: {integrity: sha512-qtzAd3BJh7UdbiXCrg6npWLYU0YpufsV9XlufKhMhYMJGJCdfX/G6+PNd0+v877X1JG5VmjBLUiFB0o8EUSicA==} 229 | engines: {node: '>=12'} 230 | cpu: [mips64el] 231 | os: [linux] 232 | 233 | '@esbuild/linux-ppc64@0.21.4': 234 | resolution: {integrity: sha512-yB8AYzOTaL0D5+2a4xEy7OVvbcypvDR05MsB/VVPVA7nL4hc5w5Dyd/ddnayStDgJE59fAgNEOdLhBxjfx5+dg==} 235 | engines: {node: '>=12'} 236 | cpu: [ppc64] 237 | os: [linux] 238 | 239 | '@esbuild/linux-riscv64@0.21.4': 240 | resolution: {integrity: sha512-Y5AgOuVzPjQdgU59ramLoqSSiXddu7F3F+LI5hYy/d1UHN7K5oLzYBDZe23QmQJ9PIVUXwOdKJ/jZahPdxzm9w==} 241 | engines: {node: '>=12'} 242 | cpu: [riscv64] 243 | os: [linux] 244 | 245 | '@esbuild/linux-s390x@0.21.4': 246 | resolution: {integrity: sha512-Iqc/l/FFwtt8FoTK9riYv9zQNms7B8u+vAI/rxKuN10HgQIXaPzKZc479lZ0x6+vKVQbu55GdpYpeNWzjOhgbA==} 247 | engines: {node: '>=12'} 248 | cpu: [s390x] 249 | os: [linux] 250 | 251 | '@esbuild/linux-x64@0.21.4': 252 | resolution: {integrity: sha512-Td9jv782UMAFsuLZINfUpoF5mZIbAj+jv1YVtE58rFtfvoKRiKSkRGQfHTgKamLVT/fO7203bHa3wU122V/Bdg==} 253 | engines: {node: '>=12'} 254 | cpu: [x64] 255 | os: [linux] 256 | 257 | '@esbuild/netbsd-x64@0.21.4': 258 | resolution: {integrity: sha512-Awn38oSXxsPMQxaV0Ipb7W/gxZtk5Tx3+W+rAPdZkyEhQ6968r9NvtkjhnhbEgWXYbgV+JEONJ6PcdBS+nlcpA==} 259 | engines: {node: '>=12'} 260 | cpu: [x64] 261 | os: [netbsd] 262 | 263 | '@esbuild/openbsd-x64@0.21.4': 264 | resolution: {integrity: sha512-IsUmQeCY0aU374R82fxIPu6vkOybWIMc3hVGZ3ChRwL9hA1TwY+tS0lgFWV5+F1+1ssuvvXt3HFqe8roCip8Hg==} 265 | engines: {node: '>=12'} 266 | cpu: [x64] 267 | os: [openbsd] 268 | 269 | '@esbuild/sunos-x64@0.21.4': 270 | resolution: {integrity: sha512-hsKhgZ4teLUaDA6FG/QIu2q0rI6I36tZVfM4DBZv3BG0mkMIdEnMbhc4xwLvLJSS22uWmaVkFkqWgIS0gPIm+A==} 271 | engines: {node: '>=12'} 272 | cpu: [x64] 273 | os: [sunos] 274 | 275 | '@esbuild/win32-arm64@0.21.4': 276 | resolution: {integrity: sha512-UUfMgMoXPoA/bvGUNfUBFLCh0gt9dxZYIx9W4rfJr7+hKe5jxxHmfOK8YSH4qsHLLN4Ck8JZ+v7Q5fIm1huErg==} 277 | engines: {node: '>=12'} 278 | cpu: [arm64] 279 | os: [win32] 280 | 281 | '@esbuild/win32-ia32@0.21.4': 282 | resolution: {integrity: sha512-yIxbspZb5kGCAHWm8dexALQ9en1IYDfErzjSEq1KzXFniHv019VT3mNtTK7t8qdy4TwT6QYHI9sEZabONHg+aw==} 283 | engines: {node: '>=12'} 284 | cpu: [ia32] 285 | os: [win32] 286 | 287 | '@esbuild/win32-x64@0.21.4': 288 | resolution: {integrity: sha512-sywLRD3UK/qRJt0oBwdpYLBibk7KiRfbswmWRDabuncQYSlf8aLEEUor/oP6KRz8KEG+HoiVLBhPRD5JWjS8Sg==} 289 | engines: {node: '>=12'} 290 | cpu: [x64] 291 | os: [win32] 292 | 293 | '@eslint-community/eslint-utils@4.4.0': 294 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 295 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 296 | peerDependencies: 297 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 298 | 299 | '@eslint-community/regexpp@4.10.1': 300 | resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} 301 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 302 | 303 | '@eslint/eslintrc@2.1.4': 304 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 305 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 306 | 307 | '@eslint/js@8.57.0': 308 | resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} 309 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 310 | 311 | '@fastify/busboy@2.1.1': 312 | resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 313 | engines: {node: '>=14'} 314 | 315 | '@humanwhocodes/config-array@0.11.14': 316 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} 317 | engines: {node: '>=10.10.0'} 318 | 319 | '@humanwhocodes/module-importer@1.0.1': 320 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 321 | engines: {node: '>=12.22'} 322 | 323 | '@humanwhocodes/object-schema@2.0.3': 324 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} 325 | 326 | '@isaacs/cliui@8.0.2': 327 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 328 | engines: {node: '>=12'} 329 | 330 | '@jridgewell/gen-mapping@0.3.5': 331 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 332 | engines: {node: '>=6.0.0'} 333 | 334 | '@jridgewell/resolve-uri@3.1.2': 335 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 336 | engines: {node: '>=6.0.0'} 337 | 338 | '@jridgewell/set-array@1.2.1': 339 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 340 | engines: {node: '>=6.0.0'} 341 | 342 | '@jridgewell/sourcemap-codec@1.4.15': 343 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 344 | 345 | '@jridgewell/trace-mapping@0.3.25': 346 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 347 | 348 | '@jridgewell/trace-mapping@0.3.9': 349 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 350 | 351 | '@nodelib/fs.scandir@2.1.5': 352 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 353 | engines: {node: '>= 8'} 354 | 355 | '@nodelib/fs.stat@2.0.5': 356 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 357 | engines: {node: '>= 8'} 358 | 359 | '@nodelib/fs.walk@1.2.8': 360 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 361 | engines: {node: '>= 8'} 362 | 363 | '@pkgjs/parseargs@0.11.0': 364 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 365 | engines: {node: '>=14'} 366 | 367 | '@rollup/rollup-android-arm-eabi@4.18.0': 368 | resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} 369 | cpu: [arm] 370 | os: [android] 371 | 372 | '@rollup/rollup-android-arm64@4.18.0': 373 | resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} 374 | cpu: [arm64] 375 | os: [android] 376 | 377 | '@rollup/rollup-darwin-arm64@4.18.0': 378 | resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} 379 | cpu: [arm64] 380 | os: [darwin] 381 | 382 | '@rollup/rollup-darwin-x64@4.18.0': 383 | resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} 384 | cpu: [x64] 385 | os: [darwin] 386 | 387 | '@rollup/rollup-linux-arm-gnueabihf@4.18.0': 388 | resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} 389 | cpu: [arm] 390 | os: [linux] 391 | 392 | '@rollup/rollup-linux-arm-musleabihf@4.18.0': 393 | resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} 394 | cpu: [arm] 395 | os: [linux] 396 | 397 | '@rollup/rollup-linux-arm64-gnu@4.18.0': 398 | resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} 399 | cpu: [arm64] 400 | os: [linux] 401 | 402 | '@rollup/rollup-linux-arm64-musl@4.18.0': 403 | resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} 404 | cpu: [arm64] 405 | os: [linux] 406 | 407 | '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': 408 | resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} 409 | cpu: [ppc64] 410 | os: [linux] 411 | 412 | '@rollup/rollup-linux-riscv64-gnu@4.18.0': 413 | resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} 414 | cpu: [riscv64] 415 | os: [linux] 416 | 417 | '@rollup/rollup-linux-s390x-gnu@4.18.0': 418 | resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} 419 | cpu: [s390x] 420 | os: [linux] 421 | 422 | '@rollup/rollup-linux-x64-gnu@4.18.0': 423 | resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} 424 | cpu: [x64] 425 | os: [linux] 426 | 427 | '@rollup/rollup-linux-x64-musl@4.18.0': 428 | resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} 429 | cpu: [x64] 430 | os: [linux] 431 | 432 | '@rollup/rollup-win32-arm64-msvc@4.18.0': 433 | resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} 434 | cpu: [arm64] 435 | os: [win32] 436 | 437 | '@rollup/rollup-win32-ia32-msvc@4.18.0': 438 | resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} 439 | cpu: [ia32] 440 | os: [win32] 441 | 442 | '@rollup/rollup-win32-x64-msvc@4.18.0': 443 | resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} 444 | cpu: [x64] 445 | os: [win32] 446 | 447 | '@sapphire/async-queue@1.5.2': 448 | resolution: {integrity: sha512-7X7FFAA4DngXUl95+hYbUF19bp1LGiffjJtu7ygrZrbdCSsdDDBaSjB7Akw0ZbOu6k0xpXyljnJ6/RZUvLfRdg==} 449 | engines: {node: '>=v14.0.0', npm: '>=7.0.0'} 450 | 451 | '@sapphire/shapeshift@3.9.7': 452 | resolution: {integrity: sha512-4It2mxPSr4OGn4HSQWGmhFMsNFGfFVhWeRPCRwbH972Ek2pzfGRZtb0pJ4Ze6oIzcyh2jw7nUDa6qGlWofgd9g==} 453 | engines: {node: '>=v16'} 454 | 455 | '@sapphire/snowflake@3.5.3': 456 | resolution: {integrity: sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==} 457 | engines: {node: '>=v14.0.0', npm: '>=7.0.0'} 458 | 459 | '@tsconfig/node10@1.0.11': 460 | resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} 461 | 462 | '@tsconfig/node12@1.0.11': 463 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 464 | 465 | '@tsconfig/node14@1.0.3': 466 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 467 | 468 | '@tsconfig/node16@1.0.4': 469 | resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} 470 | 471 | '@types/estree@1.0.5': 472 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 473 | 474 | '@types/node@20.14.1': 475 | resolution: {integrity: sha512-T2MzSGEu+ysB/FkWfqmhV3PLyQlowdptmmgD20C6QxsS8Fmv5SjpZ1ayXaEC0S21/h5UJ9iA6W/5vSNU5l00OA==} 476 | 477 | '@types/ws@8.5.10': 478 | resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} 479 | 480 | '@typescript-eslint/eslint-plugin@7.12.0': 481 | resolution: {integrity: sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==} 482 | engines: {node: ^18.18.0 || >=20.0.0} 483 | peerDependencies: 484 | '@typescript-eslint/parser': ^7.0.0 485 | eslint: ^8.56.0 486 | typescript: '*' 487 | peerDependenciesMeta: 488 | typescript: 489 | optional: true 490 | 491 | '@typescript-eslint/parser@7.12.0': 492 | resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} 493 | engines: {node: ^18.18.0 || >=20.0.0} 494 | peerDependencies: 495 | eslint: ^8.56.0 496 | typescript: '*' 497 | peerDependenciesMeta: 498 | typescript: 499 | optional: true 500 | 501 | '@typescript-eslint/scope-manager@7.12.0': 502 | resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} 503 | engines: {node: ^18.18.0 || >=20.0.0} 504 | 505 | '@typescript-eslint/type-utils@7.12.0': 506 | resolution: {integrity: sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==} 507 | engines: {node: ^18.18.0 || >=20.0.0} 508 | peerDependencies: 509 | eslint: ^8.56.0 510 | typescript: '*' 511 | peerDependenciesMeta: 512 | typescript: 513 | optional: true 514 | 515 | '@typescript-eslint/types@7.12.0': 516 | resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} 517 | engines: {node: ^18.18.0 || >=20.0.0} 518 | 519 | '@typescript-eslint/typescript-estree@7.12.0': 520 | resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} 521 | engines: {node: ^18.18.0 || >=20.0.0} 522 | peerDependencies: 523 | typescript: '*' 524 | peerDependenciesMeta: 525 | typescript: 526 | optional: true 527 | 528 | '@typescript-eslint/utils@7.12.0': 529 | resolution: {integrity: sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==} 530 | engines: {node: ^18.18.0 || >=20.0.0} 531 | peerDependencies: 532 | eslint: ^8.56.0 533 | 534 | '@typescript-eslint/visitor-keys@7.12.0': 535 | resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} 536 | engines: {node: ^18.18.0 || >=20.0.0} 537 | 538 | '@ungap/structured-clone@1.2.0': 539 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 540 | 541 | '@vladfrangu/async_event_emitter@2.2.4': 542 | resolution: {integrity: sha512-ButUPz9E9cXMLgvAW8aLAKKJJsPu1dY1/l/E8xzLFuysowXygs6GBcyunK9rnGC4zTsnIc2mQo71rGw9U+Ykug==} 543 | engines: {node: '>=v14.0.0', npm: '>=7.0.0'} 544 | 545 | abbrev@1.1.1: 546 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 547 | 548 | acorn-jsx@5.3.2: 549 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 550 | peerDependencies: 551 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 552 | 553 | acorn-walk@8.3.2: 554 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 555 | engines: {node: '>=0.4.0'} 556 | 557 | acorn@8.11.3: 558 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 559 | engines: {node: '>=0.4.0'} 560 | hasBin: true 561 | 562 | agent-base@6.0.2: 563 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 564 | engines: {node: '>= 6.0.0'} 565 | 566 | agent-base@7.1.1: 567 | resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} 568 | engines: {node: '>= 14'} 569 | 570 | ajv@6.12.6: 571 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 572 | 573 | ansi-regex@5.0.1: 574 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 575 | engines: {node: '>=8'} 576 | 577 | ansi-regex@6.0.1: 578 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 579 | engines: {node: '>=12'} 580 | 581 | ansi-styles@4.3.0: 582 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 583 | engines: {node: '>=8'} 584 | 585 | ansi-styles@6.2.1: 586 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 587 | engines: {node: '>=12'} 588 | 589 | any-promise@1.3.0: 590 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 591 | 592 | anymatch@3.1.3: 593 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 594 | engines: {node: '>= 8'} 595 | 596 | aproba@2.0.0: 597 | resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} 598 | 599 | are-we-there-yet@2.0.0: 600 | resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} 601 | engines: {node: '>=10'} 602 | deprecated: This package is no longer supported. 603 | 604 | arg@4.1.3: 605 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 606 | 607 | argparse@2.0.1: 608 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 609 | 610 | array-union@2.1.0: 611 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 612 | engines: {node: '>=8'} 613 | 614 | asynckit@0.4.0: 615 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 616 | 617 | balanced-match@1.0.2: 618 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 619 | 620 | binary-extensions@2.3.0: 621 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 622 | engines: {node: '>=8'} 623 | 624 | brace-expansion@1.1.11: 625 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 626 | 627 | brace-expansion@2.0.1: 628 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 629 | 630 | braces@3.0.3: 631 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 632 | engines: {node: '>=8'} 633 | 634 | bundle-require@4.2.1: 635 | resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} 636 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 637 | peerDependencies: 638 | esbuild: '>=0.17' 639 | 640 | cac@6.7.14: 641 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 642 | engines: {node: '>=8'} 643 | 644 | call-bind@1.0.7: 645 | resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} 646 | engines: {node: '>= 0.4'} 647 | 648 | callsites@3.1.0: 649 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 650 | engines: {node: '>=6'} 651 | 652 | chalk@4.1.2: 653 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 654 | engines: {node: '>=10'} 655 | 656 | chokidar@3.6.0: 657 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 658 | engines: {node: '>= 8.10.0'} 659 | 660 | chownr@2.0.0: 661 | resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} 662 | engines: {node: '>=10'} 663 | 664 | color-convert@2.0.1: 665 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 666 | engines: {node: '>=7.0.0'} 667 | 668 | color-name@1.1.4: 669 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 670 | 671 | color-support@1.1.3: 672 | resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} 673 | hasBin: true 674 | 675 | combined-stream@1.0.8: 676 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 677 | engines: {node: '>= 0.8'} 678 | 679 | commander@4.1.1: 680 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 681 | engines: {node: '>= 6'} 682 | 683 | component-emitter@1.3.1: 684 | resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} 685 | 686 | concat-map@0.0.1: 687 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 688 | 689 | console-control-strings@1.1.0: 690 | resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 691 | 692 | cookiejar@2.1.4: 693 | resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} 694 | 695 | create-require@1.1.1: 696 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 697 | 698 | cross-spawn@7.0.3: 699 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 700 | engines: {node: '>= 8'} 701 | 702 | debug@4.3.5: 703 | resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} 704 | engines: {node: '>=6.0'} 705 | peerDependencies: 706 | supports-color: '*' 707 | peerDependenciesMeta: 708 | supports-color: 709 | optional: true 710 | 711 | deep-is@0.1.4: 712 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 713 | 714 | define-data-property@1.1.4: 715 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 716 | engines: {node: '>= 0.4'} 717 | 718 | delayed-stream@1.0.0: 719 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 720 | engines: {node: '>=0.4.0'} 721 | 722 | delegates@1.0.0: 723 | resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 724 | 725 | detect-libc@2.0.3: 726 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} 727 | engines: {node: '>=8'} 728 | 729 | diff@4.0.2: 730 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 731 | engines: {node: '>=0.3.1'} 732 | 733 | dir-glob@3.0.1: 734 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 735 | engines: {node: '>=8'} 736 | 737 | discord-api-types@0.37.83: 738 | resolution: {integrity: sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==} 739 | 740 | discord.js@14.15.3: 741 | resolution: {integrity: sha512-/UJDQO10VuU6wQPglA4kz2bw2ngeeSbogiIPx/TsnctfzV/tNf+q+i1HlgtX1OGpeOBpJH9erZQNO5oRM2uAtQ==} 742 | engines: {node: '>=16.11.0'} 743 | 744 | distube@5.0.1: 745 | resolution: {integrity: sha512-mpRBAVYe2rgDysSQasFFU+oCCz6WIExfgysylvQtmJR0b08Abje9CZRBp1Os9LxdeoDAakb/P6yS9p71xi+Tww==} 746 | engines: {node: '>=18.17'} 747 | peerDependencies: 748 | '@discordjs/voice': '*' 749 | discord.js: '14' 750 | 751 | doctrine@3.0.0: 752 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 753 | engines: {node: '>=6.0.0'} 754 | 755 | eastasianwidth@0.2.0: 756 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 757 | 758 | emoji-regex@8.0.0: 759 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 760 | 761 | emoji-regex@9.2.2: 762 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 763 | 764 | es-define-property@1.0.0: 765 | resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} 766 | engines: {node: '>= 0.4'} 767 | 768 | es-errors@1.3.0: 769 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 770 | engines: {node: '>= 0.4'} 771 | 772 | esbuild@0.21.4: 773 | resolution: {integrity: sha512-sFMcNNrj+Q0ZDolrp5pDhH0nRPN9hLIM3fRPwgbLYJeSHHgnXSnbV3xYgSVuOeLWH9c73VwmEverVzupIv5xuA==} 774 | engines: {node: '>=12'} 775 | hasBin: true 776 | 777 | escape-string-regexp@4.0.0: 778 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 779 | engines: {node: '>=10'} 780 | 781 | eslint-config-distube@1.7.0: 782 | resolution: {integrity: sha512-8MTsR0MFzro9CaHSNeAzuPtm+Lm0KnLWfYBGhjMrq4VZbWxdqZeKaune3Rto6DEAVJPavTXeLmNrvhD+HhoncA==} 783 | 784 | eslint-config-prettier@9.1.0: 785 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 786 | hasBin: true 787 | peerDependencies: 788 | eslint: '>=7.0.0' 789 | 790 | eslint-plugin-deprecation@3.0.0: 791 | resolution: {integrity: sha512-JuVLdNg/uf0Adjg2tpTyYoYaMbwQNn/c78P1HcccokvhtRphgnRjZDKmhlxbxYptppex03zO76f97DD/yQHv7A==} 792 | peerDependencies: 793 | eslint: ^8.0.0 794 | typescript: ^4.2.4 || ^5.0.0 795 | 796 | eslint-scope@7.2.2: 797 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 798 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 799 | 800 | eslint-visitor-keys@3.4.3: 801 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 802 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 803 | 804 | eslint@8.57.0: 805 | resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} 806 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 807 | hasBin: true 808 | 809 | espree@9.6.1: 810 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 811 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 812 | 813 | esquery@1.5.0: 814 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 815 | engines: {node: '>=0.10'} 816 | 817 | esrecurse@4.3.0: 818 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 819 | engines: {node: '>=4.0'} 820 | 821 | estraverse@5.3.0: 822 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 823 | engines: {node: '>=4.0'} 824 | 825 | esutils@2.0.3: 826 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 827 | engines: {node: '>=0.10.0'} 828 | 829 | execa@5.1.1: 830 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 831 | engines: {node: '>=10'} 832 | 833 | fast-deep-equal@3.1.3: 834 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 835 | 836 | fast-glob@3.3.2: 837 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 838 | engines: {node: '>=8.6.0'} 839 | 840 | fast-json-stable-stringify@2.1.0: 841 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 842 | 843 | fast-levenshtein@2.0.6: 844 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 845 | 846 | fast-safe-stringify@2.1.1: 847 | resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} 848 | 849 | fastq@1.17.1: 850 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 851 | 852 | file-entry-cache@6.0.1: 853 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 854 | engines: {node: ^10.12.0 || >=12.0.0} 855 | 856 | fill-range@7.1.1: 857 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 858 | engines: {node: '>=8'} 859 | 860 | find-up@5.0.0: 861 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 862 | engines: {node: '>=10'} 863 | 864 | flat-cache@3.2.0: 865 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 866 | engines: {node: ^10.12.0 || >=12.0.0} 867 | 868 | flatted@3.3.1: 869 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 870 | 871 | foreground-child@3.1.1: 872 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 873 | engines: {node: '>=14'} 874 | 875 | form-data@3.0.1: 876 | resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} 877 | engines: {node: '>= 6'} 878 | 879 | formidable@1.2.6: 880 | resolution: {integrity: sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==} 881 | deprecated: 'Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau' 882 | 883 | fs-minipass@2.1.0: 884 | resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} 885 | engines: {node: '>= 8'} 886 | 887 | fs.realpath@1.0.0: 888 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 889 | 890 | fsevents@2.3.3: 891 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 892 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 893 | os: [darwin] 894 | 895 | function-bind@1.1.2: 896 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 897 | 898 | gauge@3.0.2: 899 | resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} 900 | engines: {node: '>=10'} 901 | deprecated: This package is no longer supported. 902 | 903 | get-intrinsic@1.2.4: 904 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} 905 | engines: {node: '>= 0.4'} 906 | 907 | get-stream@6.0.1: 908 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 909 | engines: {node: '>=10'} 910 | 911 | glob-parent@5.1.2: 912 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 913 | engines: {node: '>= 6'} 914 | 915 | glob-parent@6.0.2: 916 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 917 | engines: {node: '>=10.13.0'} 918 | 919 | glob@10.4.1: 920 | resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} 921 | engines: {node: '>=16 || 14 >=14.18'} 922 | hasBin: true 923 | 924 | glob@7.2.3: 925 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 926 | deprecated: Glob versions prior to v9 are no longer supported 927 | 928 | globals@13.24.0: 929 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 930 | engines: {node: '>=8'} 931 | 932 | globby@11.1.0: 933 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 934 | engines: {node: '>=10'} 935 | 936 | gopd@1.0.1: 937 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 938 | 939 | graphemer@1.4.0: 940 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 941 | 942 | has-flag@4.0.0: 943 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 944 | engines: {node: '>=8'} 945 | 946 | has-property-descriptors@1.0.2: 947 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 948 | 949 | has-proto@1.0.3: 950 | resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} 951 | engines: {node: '>= 0.4'} 952 | 953 | has-symbols@1.0.3: 954 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 955 | engines: {node: '>= 0.4'} 956 | 957 | has-unicode@2.0.1: 958 | resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 959 | 960 | hasown@2.0.2: 961 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 962 | engines: {node: '>= 0.4'} 963 | 964 | himalaya@1.1.0: 965 | resolution: {integrity: sha512-LLase1dHCRMel68/HZTFft0N0wti0epHr3nNY7ynpLbyZpmrKMQ8YIpiOV77TM97cNpC8Wb2n6f66IRggwdWPw==} 966 | 967 | http-cookie-agent@5.0.4: 968 | resolution: {integrity: sha512-OtvikW69RvfyP6Lsequ0fN5R49S+8QcS9zwd58k6VSr6r57T8G29BkPdyrBcSwLq6ExLs9V+rBlfxu7gDstJag==} 969 | engines: {node: '>=14.18.0 <15.0.0 || >=16.0.0'} 970 | peerDependencies: 971 | deasync: ^0.1.26 972 | tough-cookie: ^4.0.0 973 | undici: ^5.11.0 974 | peerDependenciesMeta: 975 | deasync: 976 | optional: true 977 | undici: 978 | optional: true 979 | 980 | https-proxy-agent@5.0.1: 981 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 982 | engines: {node: '>= 6'} 983 | 984 | human-signals@2.1.0: 985 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 986 | engines: {node: '>=10.17.0'} 987 | 988 | ignore@5.3.1: 989 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 990 | engines: {node: '>= 4'} 991 | 992 | import-fresh@3.3.0: 993 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 994 | engines: {node: '>=6'} 995 | 996 | imurmurhash@0.1.4: 997 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 998 | engines: {node: '>=0.8.19'} 999 | 1000 | inflight@1.0.6: 1001 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1002 | 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. 1003 | 1004 | inherits@2.0.4: 1005 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1006 | 1007 | is-binary-path@2.1.0: 1008 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1009 | engines: {node: '>=8'} 1010 | 1011 | is-extglob@2.1.1: 1012 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1013 | engines: {node: '>=0.10.0'} 1014 | 1015 | is-fullwidth-code-point@3.0.0: 1016 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1017 | engines: {node: '>=8'} 1018 | 1019 | is-glob@4.0.3: 1020 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1021 | engines: {node: '>=0.10.0'} 1022 | 1023 | is-number@7.0.0: 1024 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1025 | engines: {node: '>=0.12.0'} 1026 | 1027 | is-path-inside@3.0.3: 1028 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1029 | engines: {node: '>=8'} 1030 | 1031 | is-stream@2.0.1: 1032 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1033 | engines: {node: '>=8'} 1034 | 1035 | isexe@2.0.0: 1036 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1037 | 1038 | jackspeak@3.3.0: 1039 | resolution: {integrity: sha512-glPiBfKguqA7v8JsXO3iLjJWZ9FV1vNpoI0I9hI9Mnk5yetO9uPLSpiCEmiVijAssv2f54HpvtzvAHfhPieiDQ==} 1040 | engines: {node: '>=14'} 1041 | 1042 | joycon@3.1.1: 1043 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1044 | engines: {node: '>=10'} 1045 | 1046 | js-yaml@4.1.0: 1047 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1048 | hasBin: true 1049 | 1050 | json-buffer@3.0.1: 1051 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1052 | 1053 | json-schema-traverse@0.4.1: 1054 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1055 | 1056 | json-stable-stringify-without-jsonify@1.0.1: 1057 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1058 | 1059 | keyv@4.5.4: 1060 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1061 | 1062 | levn@0.4.1: 1063 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1064 | engines: {node: '>= 0.8.0'} 1065 | 1066 | lilconfig@3.1.1: 1067 | resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} 1068 | engines: {node: '>=14'} 1069 | 1070 | lines-and-columns@1.2.4: 1071 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1072 | 1073 | load-tsconfig@0.2.5: 1074 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1075 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1076 | 1077 | locate-path@6.0.0: 1078 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1079 | engines: {node: '>=10'} 1080 | 1081 | lodash.merge@4.6.2: 1082 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1083 | 1084 | lodash.snakecase@4.1.1: 1085 | resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} 1086 | 1087 | lodash.sortby@4.7.0: 1088 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1089 | 1090 | lodash@4.17.21: 1091 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1092 | 1093 | lru-cache@10.2.2: 1094 | resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} 1095 | engines: {node: 14 || >=16.14} 1096 | 1097 | m3u8stream@0.8.6: 1098 | resolution: {integrity: sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==} 1099 | engines: {node: '>=12'} 1100 | 1101 | magic-bytes.js@1.10.0: 1102 | resolution: {integrity: sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==} 1103 | 1104 | make-dir@3.1.0: 1105 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 1106 | engines: {node: '>=8'} 1107 | 1108 | make-error@1.3.6: 1109 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 1110 | 1111 | merge-stream@2.0.0: 1112 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1113 | 1114 | merge2@1.4.1: 1115 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1116 | engines: {node: '>= 8'} 1117 | 1118 | methods@1.1.2: 1119 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 1120 | engines: {node: '>= 0.6'} 1121 | 1122 | micromatch@4.0.7: 1123 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} 1124 | engines: {node: '>=8.6'} 1125 | 1126 | mime-db@1.52.0: 1127 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1128 | engines: {node: '>= 0.6'} 1129 | 1130 | mime-types@2.1.35: 1131 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1132 | engines: {node: '>= 0.6'} 1133 | 1134 | mime@2.6.0: 1135 | resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} 1136 | engines: {node: '>=4.0.0'} 1137 | hasBin: true 1138 | 1139 | mimic-fn@2.1.0: 1140 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1141 | engines: {node: '>=6'} 1142 | 1143 | miniget@4.2.3: 1144 | resolution: {integrity: sha512-SjbDPDICJ1zT+ZvQwK0hUcRY4wxlhhNpHL9nJOB2MEAXRGagTljsO8MEDzQMTFf0Q8g4QNi8P9lEm/g7e+qgzA==} 1145 | engines: {node: '>=12'} 1146 | 1147 | minimatch@3.1.2: 1148 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1149 | 1150 | minimatch@9.0.4: 1151 | resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} 1152 | engines: {node: '>=16 || 14 >=14.17'} 1153 | 1154 | minipass@3.3.6: 1155 | resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} 1156 | engines: {node: '>=8'} 1157 | 1158 | minipass@5.0.0: 1159 | resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} 1160 | engines: {node: '>=8'} 1161 | 1162 | minipass@7.1.2: 1163 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1164 | engines: {node: '>=16 || 14 >=14.17'} 1165 | 1166 | minizlib@2.1.2: 1167 | resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} 1168 | engines: {node: '>= 8'} 1169 | 1170 | mkdirp@1.0.4: 1171 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 1172 | engines: {node: '>=10'} 1173 | hasBin: true 1174 | 1175 | ms@2.1.2: 1176 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1177 | 1178 | mz@2.7.0: 1179 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1180 | 1181 | natural-compare@1.4.0: 1182 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1183 | 1184 | node-addon-api@5.1.0: 1185 | resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} 1186 | 1187 | node-fetch@2.7.0: 1188 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 1189 | engines: {node: 4.x || >=6.0.0} 1190 | peerDependencies: 1191 | encoding: ^0.1.0 1192 | peerDependenciesMeta: 1193 | encoding: 1194 | optional: true 1195 | 1196 | node-gyp-build@4.8.1: 1197 | resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} 1198 | hasBin: true 1199 | 1200 | nopt@5.0.0: 1201 | resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} 1202 | engines: {node: '>=6'} 1203 | hasBin: true 1204 | 1205 | normalize-path@3.0.0: 1206 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1207 | engines: {node: '>=0.10.0'} 1208 | 1209 | npm-run-path@4.0.1: 1210 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1211 | engines: {node: '>=8'} 1212 | 1213 | npmlog@5.0.1: 1214 | resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} 1215 | deprecated: This package is no longer supported. 1216 | 1217 | object-assign@4.1.1: 1218 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1219 | engines: {node: '>=0.10.0'} 1220 | 1221 | object-inspect@1.13.1: 1222 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} 1223 | 1224 | once@1.4.0: 1225 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1226 | 1227 | onetime@5.1.2: 1228 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1229 | engines: {node: '>=6'} 1230 | 1231 | optionator@0.9.4: 1232 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1233 | engines: {node: '>= 0.8.0'} 1234 | 1235 | p-limit@3.1.0: 1236 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1237 | engines: {node: '>=10'} 1238 | 1239 | p-locate@5.0.0: 1240 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1241 | engines: {node: '>=10'} 1242 | 1243 | parent-module@1.0.1: 1244 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1245 | engines: {node: '>=6'} 1246 | 1247 | path-exists@4.0.0: 1248 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1249 | engines: {node: '>=8'} 1250 | 1251 | path-is-absolute@1.0.1: 1252 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1253 | engines: {node: '>=0.10.0'} 1254 | 1255 | path-key@3.1.1: 1256 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1257 | engines: {node: '>=8'} 1258 | 1259 | path-scurry@1.11.1: 1260 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1261 | engines: {node: '>=16 || 14 >=14.18'} 1262 | 1263 | path-type@4.0.0: 1264 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1265 | engines: {node: '>=8'} 1266 | 1267 | picomatch@2.3.1: 1268 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1269 | engines: {node: '>=8.6'} 1270 | 1271 | pirates@4.0.6: 1272 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1273 | engines: {node: '>= 6'} 1274 | 1275 | postcss-load-config@4.0.2: 1276 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 1277 | engines: {node: '>= 14'} 1278 | peerDependencies: 1279 | postcss: '>=8.0.9' 1280 | ts-node: '>=9.0.0' 1281 | peerDependenciesMeta: 1282 | postcss: 1283 | optional: true 1284 | ts-node: 1285 | optional: true 1286 | 1287 | prelude-ls@1.2.1: 1288 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1289 | engines: {node: '>= 0.8.0'} 1290 | 1291 | prettier@3.3.0: 1292 | resolution: {integrity: sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==} 1293 | engines: {node: '>=14'} 1294 | hasBin: true 1295 | 1296 | prism-media@1.3.5: 1297 | resolution: {integrity: sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==} 1298 | peerDependencies: 1299 | '@discordjs/opus': '>=0.8.0 <1.0.0' 1300 | ffmpeg-static: ^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0 1301 | node-opus: ^0.3.3 1302 | opusscript: ^0.0.8 1303 | peerDependenciesMeta: 1304 | '@discordjs/opus': 1305 | optional: true 1306 | ffmpeg-static: 1307 | optional: true 1308 | node-opus: 1309 | optional: true 1310 | opusscript: 1311 | optional: true 1312 | 1313 | psl@1.9.0: 1314 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} 1315 | 1316 | punycode@2.3.1: 1317 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1318 | engines: {node: '>=6'} 1319 | 1320 | qs@6.12.1: 1321 | resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} 1322 | engines: {node: '>=0.6'} 1323 | 1324 | querystringify@2.2.0: 1325 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} 1326 | 1327 | queue-microtask@1.2.3: 1328 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1329 | 1330 | readable-stream@3.6.2: 1331 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 1332 | engines: {node: '>= 6'} 1333 | 1334 | readdirp@3.6.0: 1335 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1336 | engines: {node: '>=8.10.0'} 1337 | 1338 | requires-port@1.0.0: 1339 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} 1340 | 1341 | resolve-from@4.0.0: 1342 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1343 | engines: {node: '>=4'} 1344 | 1345 | resolve-from@5.0.0: 1346 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1347 | engines: {node: '>=8'} 1348 | 1349 | reusify@1.0.4: 1350 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1351 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1352 | 1353 | rimraf@3.0.2: 1354 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1355 | deprecated: Rimraf versions prior to v4 are no longer supported 1356 | hasBin: true 1357 | 1358 | rollup@4.18.0: 1359 | resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} 1360 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1361 | hasBin: true 1362 | 1363 | run-parallel@1.2.0: 1364 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1365 | 1366 | safe-buffer@5.2.1: 1367 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1368 | 1369 | sax@1.4.1: 1370 | resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} 1371 | 1372 | semver@6.3.1: 1373 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1374 | hasBin: true 1375 | 1376 | semver@7.6.2: 1377 | resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} 1378 | engines: {node: '>=10'} 1379 | hasBin: true 1380 | 1381 | set-blocking@2.0.0: 1382 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 1383 | 1384 | set-function-length@1.2.2: 1385 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 1386 | engines: {node: '>= 0.4'} 1387 | 1388 | shebang-command@2.0.0: 1389 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1390 | engines: {node: '>=8'} 1391 | 1392 | shebang-regex@3.0.0: 1393 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1394 | engines: {node: '>=8'} 1395 | 1396 | side-channel@1.0.6: 1397 | resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} 1398 | engines: {node: '>= 0.4'} 1399 | 1400 | signal-exit@3.0.7: 1401 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1402 | 1403 | signal-exit@4.1.0: 1404 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1405 | engines: {node: '>=14'} 1406 | 1407 | slash@3.0.0: 1408 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1409 | engines: {node: '>=8'} 1410 | 1411 | sodium-native@4.1.1: 1412 | resolution: {integrity: sha512-LXkAfRd4FHtkQS4X6g+nRcVaN7mWVNepV06phIsC6+IZFvGh1voW5TNQiQp2twVaMf05gZqQjuS+uWLM6gHhNQ==} 1413 | 1414 | soundcloud.ts@0.5.3: 1415 | resolution: {integrity: sha512-ZMH6gG5e7WqJrIYXTv14MNArPhx3WzfrL1Ij/2qBDW8mVbNJc8lxOQOc4kLvrfvDl5TkCdZa7zXOiwD6ESXq+g==} 1416 | 1417 | source-map@0.8.0-beta.0: 1418 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 1419 | engines: {node: '>= 8'} 1420 | 1421 | spotify-uri@4.1.0: 1422 | resolution: {integrity: sha512-SFpBt8pQqO7DOFBsdUjv3GxGZAKYP7UqcTflfE7h3YL1lynl/6Motq7NERoJJR8eF9kXQRSpcdMmV5ou84rbng==} 1423 | engines: {node: '>= 16'} 1424 | 1425 | spotify-url-info@3.2.15: 1426 | resolution: {integrity: sha512-NlolD2mqZjvt91hq0XVy3db55FCL2li1XBivkf/i+zUW1K9RP9nIOK5Bpg82DmBf96sjl4TYRI3zPOS94LPulQ==} 1427 | engines: {node: '>= 12'} 1428 | 1429 | spotify-web-api-node@5.0.2: 1430 | resolution: {integrity: sha512-r82dRWU9PMimHvHEzL0DwEJrzFk+SMCVfq249SLt3I7EFez7R+jeoKQd+M1//QcnjqlXPs2am4DFsGk8/GCsrA==} 1431 | 1432 | string-width@4.2.3: 1433 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1434 | engines: {node: '>=8'} 1435 | 1436 | string-width@5.1.2: 1437 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1438 | engines: {node: '>=12'} 1439 | 1440 | string_decoder@1.3.0: 1441 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1442 | 1443 | strip-ansi@6.0.1: 1444 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1445 | engines: {node: '>=8'} 1446 | 1447 | strip-ansi@7.1.0: 1448 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1449 | engines: {node: '>=12'} 1450 | 1451 | strip-final-newline@2.0.0: 1452 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1453 | engines: {node: '>=6'} 1454 | 1455 | strip-json-comments@3.1.1: 1456 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1457 | engines: {node: '>=8'} 1458 | 1459 | sucrase@3.35.0: 1460 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1461 | engines: {node: '>=16 || 14 >=14.17'} 1462 | hasBin: true 1463 | 1464 | superagent@6.1.0: 1465 | resolution: {integrity: sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==} 1466 | engines: {node: '>= 7.0.0'} 1467 | deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net 1468 | 1469 | supports-color@7.2.0: 1470 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1471 | engines: {node: '>=8'} 1472 | 1473 | tar@6.2.1: 1474 | resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} 1475 | engines: {node: '>=10'} 1476 | 1477 | text-table@0.2.0: 1478 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1479 | 1480 | thenify-all@1.6.0: 1481 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1482 | engines: {node: '>=0.8'} 1483 | 1484 | thenify@3.3.1: 1485 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1486 | 1487 | tiny-typed-emitter@2.1.0: 1488 | resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} 1489 | 1490 | to-regex-range@5.0.1: 1491 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1492 | engines: {node: '>=8.0'} 1493 | 1494 | tough-cookie@4.1.4: 1495 | resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} 1496 | engines: {node: '>=6'} 1497 | 1498 | tr46@0.0.3: 1499 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 1500 | 1501 | tr46@1.0.1: 1502 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 1503 | 1504 | tree-kill@1.2.2: 1505 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1506 | hasBin: true 1507 | 1508 | ts-api-utils@1.3.0: 1509 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 1510 | engines: {node: '>=16'} 1511 | peerDependencies: 1512 | typescript: '>=4.2.0' 1513 | 1514 | ts-interface-checker@0.1.13: 1515 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1516 | 1517 | ts-mixer@6.0.4: 1518 | resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} 1519 | 1520 | ts-node@10.9.2: 1521 | resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} 1522 | hasBin: true 1523 | peerDependencies: 1524 | '@swc/core': '>=1.2.50' 1525 | '@swc/wasm': '>=1.2.50' 1526 | '@types/node': '*' 1527 | typescript: '>=2.7' 1528 | peerDependenciesMeta: 1529 | '@swc/core': 1530 | optional: true 1531 | '@swc/wasm': 1532 | optional: true 1533 | 1534 | tslib@2.6.2: 1535 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 1536 | 1537 | tslib@2.6.3: 1538 | resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} 1539 | 1540 | tsup@8.1.0: 1541 | resolution: {integrity: sha512-UFdfCAXukax+U6KzeTNO2kAARHcWxmKsnvSPXUcfA1D+kU05XDccCrkffCQpFaWDsZfV0jMyTsxU39VfCp6EOg==} 1542 | engines: {node: '>=18'} 1543 | hasBin: true 1544 | peerDependencies: 1545 | '@microsoft/api-extractor': ^7.36.0 1546 | '@swc/core': ^1 1547 | postcss: ^8.4.12 1548 | typescript: '>=4.5.0' 1549 | peerDependenciesMeta: 1550 | '@microsoft/api-extractor': 1551 | optional: true 1552 | '@swc/core': 1553 | optional: true 1554 | postcss: 1555 | optional: true 1556 | typescript: 1557 | optional: true 1558 | 1559 | type-check@0.4.0: 1560 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1561 | engines: {node: '>= 0.8.0'} 1562 | 1563 | type-fest@0.20.2: 1564 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1565 | engines: {node: '>=10'} 1566 | 1567 | typescript@5.4.5: 1568 | resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} 1569 | engines: {node: '>=14.17'} 1570 | hasBin: true 1571 | 1572 | undici-types@5.26.5: 1573 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 1574 | 1575 | undici@5.28.4: 1576 | resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} 1577 | engines: {node: '>=14.0'} 1578 | 1579 | undici@6.0.1: 1580 | resolution: {integrity: sha512-eZFYQLeS9BiXpsU0cuFhCwfeda2MnC48EVmmOz/eCjsTgmyTdaHdVsPSC/kwC2GtW2e0uH0HIPbadf3/bRWSxw==} 1581 | engines: {node: '>=18.0'} 1582 | 1583 | undici@6.13.0: 1584 | resolution: {integrity: sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==} 1585 | engines: {node: '>=18.0'} 1586 | 1587 | undici@6.18.2: 1588 | resolution: {integrity: sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==} 1589 | engines: {node: '>=18.17'} 1590 | 1591 | universalify@0.2.0: 1592 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} 1593 | engines: {node: '>= 4.0.0'} 1594 | 1595 | uri-js@4.4.1: 1596 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1597 | 1598 | url-parse@1.5.10: 1599 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} 1600 | 1601 | util-deprecate@1.0.2: 1602 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1603 | 1604 | v8-compile-cache-lib@3.0.1: 1605 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 1606 | 1607 | webidl-conversions@3.0.1: 1608 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 1609 | 1610 | webidl-conversions@4.0.2: 1611 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 1612 | 1613 | whatwg-url@5.0.0: 1614 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 1615 | 1616 | whatwg-url@7.1.0: 1617 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 1618 | 1619 | which@2.0.2: 1620 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1621 | engines: {node: '>= 8'} 1622 | hasBin: true 1623 | 1624 | wide-align@1.1.5: 1625 | resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 1626 | 1627 | word-wrap@1.2.5: 1628 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1629 | engines: {node: '>=0.10.0'} 1630 | 1631 | wrap-ansi@7.0.0: 1632 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1633 | engines: {node: '>=10'} 1634 | 1635 | wrap-ansi@8.1.0: 1636 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1637 | engines: {node: '>=12'} 1638 | 1639 | wrappy@1.0.2: 1640 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1641 | 1642 | ws@8.17.0: 1643 | resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} 1644 | engines: {node: '>=10.0.0'} 1645 | peerDependencies: 1646 | bufferutil: ^4.0.1 1647 | utf-8-validate: '>=5.0.2' 1648 | peerDependenciesMeta: 1649 | bufferutil: 1650 | optional: true 1651 | utf-8-validate: 1652 | optional: true 1653 | 1654 | yallist@4.0.0: 1655 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1656 | 1657 | yaml@2.4.3: 1658 | resolution: {integrity: sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==} 1659 | engines: {node: '>= 14'} 1660 | hasBin: true 1661 | 1662 | yn@3.1.1: 1663 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 1664 | engines: {node: '>=6'} 1665 | 1666 | yocto-queue@0.1.0: 1667 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1668 | engines: {node: '>=10'} 1669 | 1670 | snapshots: 1671 | 1672 | '@cspotcode/source-map-support@0.8.1': 1673 | dependencies: 1674 | '@jridgewell/trace-mapping': 0.3.9 1675 | 1676 | '@discordjs/builders@1.8.2': 1677 | dependencies: 1678 | '@discordjs/formatters': 0.4.0 1679 | '@discordjs/util': 1.1.0 1680 | '@sapphire/shapeshift': 3.9.7 1681 | discord-api-types: 0.37.83 1682 | fast-deep-equal: 3.1.3 1683 | ts-mixer: 6.0.4 1684 | tslib: 2.6.2 1685 | 1686 | '@discordjs/collection@1.5.3': {} 1687 | 1688 | '@discordjs/collection@2.1.0': {} 1689 | 1690 | '@discordjs/formatters@0.4.0': 1691 | dependencies: 1692 | discord-api-types: 0.37.83 1693 | 1694 | '@discordjs/node-pre-gyp@0.4.5': 1695 | dependencies: 1696 | detect-libc: 2.0.3 1697 | https-proxy-agent: 5.0.1 1698 | make-dir: 3.1.0 1699 | node-fetch: 2.7.0 1700 | nopt: 5.0.0 1701 | npmlog: 5.0.1 1702 | rimraf: 3.0.2 1703 | semver: 7.6.2 1704 | tar: 6.2.1 1705 | transitivePeerDependencies: 1706 | - encoding 1707 | - supports-color 1708 | 1709 | '@discordjs/opus@0.9.0': 1710 | dependencies: 1711 | '@discordjs/node-pre-gyp': 0.4.5 1712 | node-addon-api: 5.1.0 1713 | transitivePeerDependencies: 1714 | - encoding 1715 | - supports-color 1716 | 1717 | '@discordjs/rest@2.3.0': 1718 | dependencies: 1719 | '@discordjs/collection': 2.1.0 1720 | '@discordjs/util': 1.1.0 1721 | '@sapphire/async-queue': 1.5.2 1722 | '@sapphire/snowflake': 3.5.3 1723 | '@vladfrangu/async_event_emitter': 2.2.4 1724 | discord-api-types: 0.37.83 1725 | magic-bytes.js: 1.10.0 1726 | tslib: 2.6.2 1727 | undici: 6.13.0 1728 | 1729 | '@discordjs/util@1.1.0': {} 1730 | 1731 | '@discordjs/voice@0.17.0(@discordjs/opus@0.9.0)': 1732 | dependencies: 1733 | '@types/ws': 8.5.10 1734 | discord-api-types: 0.37.83 1735 | prism-media: 1.3.5(@discordjs/opus@0.9.0) 1736 | tslib: 2.6.3 1737 | ws: 8.17.0 1738 | transitivePeerDependencies: 1739 | - '@discordjs/opus' 1740 | - bufferutil 1741 | - ffmpeg-static 1742 | - node-opus 1743 | - opusscript 1744 | - utf-8-validate 1745 | 1746 | '@discordjs/ws@1.1.1': 1747 | dependencies: 1748 | '@discordjs/collection': 2.1.0 1749 | '@discordjs/rest': 2.3.0 1750 | '@discordjs/util': 1.1.0 1751 | '@sapphire/async-queue': 1.5.2 1752 | '@types/ws': 8.5.10 1753 | '@vladfrangu/async_event_emitter': 2.2.4 1754 | discord-api-types: 0.37.83 1755 | tslib: 2.6.2 1756 | ws: 8.17.0 1757 | transitivePeerDependencies: 1758 | - bufferutil 1759 | - utf-8-validate 1760 | 1761 | '@distube/deezer@2.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3))': 1762 | dependencies: 1763 | distube: 5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3) 1764 | undici: 6.18.2 1765 | 1766 | '@distube/direct-link@1.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3))': 1767 | dependencies: 1768 | distube: 5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3) 1769 | undici: 6.18.2 1770 | 1771 | '@distube/file@1.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3))': 1772 | dependencies: 1773 | distube: 5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3) 1774 | 1775 | '@distube/soundcloud@2.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3))': 1776 | dependencies: 1777 | distube: 5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3) 1778 | soundcloud.ts: 0.5.3 1779 | 1780 | '@distube/spotify@2.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3))': 1781 | dependencies: 1782 | distube: 5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3) 1783 | spotify-uri: 4.1.0 1784 | spotify-url-info: 3.2.15 1785 | spotify-web-api-node: 5.0.2 1786 | undici: 6.18.2 1787 | transitivePeerDependencies: 1788 | - supports-color 1789 | 1790 | '@distube/youtube@1.0.0(distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3))': 1791 | dependencies: 1792 | '@distube/ytdl-core': 4.13.3 1793 | '@distube/ytpl': 1.2.1 1794 | '@distube/ytsr': 2.0.0 1795 | distube: 5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3) 1796 | transitivePeerDependencies: 1797 | - deasync 1798 | - supports-color 1799 | 1800 | '@distube/ytdl-core@4.13.3': 1801 | dependencies: 1802 | http-cookie-agent: 5.0.4(tough-cookie@4.1.4)(undici@5.28.4) 1803 | m3u8stream: 0.8.6 1804 | miniget: 4.2.3 1805 | sax: 1.4.1 1806 | tough-cookie: 4.1.4 1807 | undici: 5.28.4 1808 | transitivePeerDependencies: 1809 | - deasync 1810 | - supports-color 1811 | 1812 | '@distube/ytpl@1.2.1': 1813 | dependencies: 1814 | undici: 5.28.4 1815 | 1816 | '@distube/ytsr@2.0.0': 1817 | dependencies: 1818 | undici: 6.0.1 1819 | 1820 | '@esbuild/aix-ppc64@0.21.4': 1821 | optional: true 1822 | 1823 | '@esbuild/android-arm64@0.21.4': 1824 | optional: true 1825 | 1826 | '@esbuild/android-arm@0.21.4': 1827 | optional: true 1828 | 1829 | '@esbuild/android-x64@0.21.4': 1830 | optional: true 1831 | 1832 | '@esbuild/darwin-arm64@0.21.4': 1833 | optional: true 1834 | 1835 | '@esbuild/darwin-x64@0.21.4': 1836 | optional: true 1837 | 1838 | '@esbuild/freebsd-arm64@0.21.4': 1839 | optional: true 1840 | 1841 | '@esbuild/freebsd-x64@0.21.4': 1842 | optional: true 1843 | 1844 | '@esbuild/linux-arm64@0.21.4': 1845 | optional: true 1846 | 1847 | '@esbuild/linux-arm@0.21.4': 1848 | optional: true 1849 | 1850 | '@esbuild/linux-ia32@0.21.4': 1851 | optional: true 1852 | 1853 | '@esbuild/linux-loong64@0.21.4': 1854 | optional: true 1855 | 1856 | '@esbuild/linux-mips64el@0.21.4': 1857 | optional: true 1858 | 1859 | '@esbuild/linux-ppc64@0.21.4': 1860 | optional: true 1861 | 1862 | '@esbuild/linux-riscv64@0.21.4': 1863 | optional: true 1864 | 1865 | '@esbuild/linux-s390x@0.21.4': 1866 | optional: true 1867 | 1868 | '@esbuild/linux-x64@0.21.4': 1869 | optional: true 1870 | 1871 | '@esbuild/netbsd-x64@0.21.4': 1872 | optional: true 1873 | 1874 | '@esbuild/openbsd-x64@0.21.4': 1875 | optional: true 1876 | 1877 | '@esbuild/sunos-x64@0.21.4': 1878 | optional: true 1879 | 1880 | '@esbuild/win32-arm64@0.21.4': 1881 | optional: true 1882 | 1883 | '@esbuild/win32-ia32@0.21.4': 1884 | optional: true 1885 | 1886 | '@esbuild/win32-x64@0.21.4': 1887 | optional: true 1888 | 1889 | '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': 1890 | dependencies: 1891 | eslint: 8.57.0 1892 | eslint-visitor-keys: 3.4.3 1893 | 1894 | '@eslint-community/regexpp@4.10.1': {} 1895 | 1896 | '@eslint/eslintrc@2.1.4': 1897 | dependencies: 1898 | ajv: 6.12.6 1899 | debug: 4.3.5 1900 | espree: 9.6.1 1901 | globals: 13.24.0 1902 | ignore: 5.3.1 1903 | import-fresh: 3.3.0 1904 | js-yaml: 4.1.0 1905 | minimatch: 3.1.2 1906 | strip-json-comments: 3.1.1 1907 | transitivePeerDependencies: 1908 | - supports-color 1909 | 1910 | '@eslint/js@8.57.0': {} 1911 | 1912 | '@fastify/busboy@2.1.1': {} 1913 | 1914 | '@humanwhocodes/config-array@0.11.14': 1915 | dependencies: 1916 | '@humanwhocodes/object-schema': 2.0.3 1917 | debug: 4.3.5 1918 | minimatch: 3.1.2 1919 | transitivePeerDependencies: 1920 | - supports-color 1921 | 1922 | '@humanwhocodes/module-importer@1.0.1': {} 1923 | 1924 | '@humanwhocodes/object-schema@2.0.3': {} 1925 | 1926 | '@isaacs/cliui@8.0.2': 1927 | dependencies: 1928 | string-width: 5.1.2 1929 | string-width-cjs: string-width@4.2.3 1930 | strip-ansi: 7.1.0 1931 | strip-ansi-cjs: strip-ansi@6.0.1 1932 | wrap-ansi: 8.1.0 1933 | wrap-ansi-cjs: wrap-ansi@7.0.0 1934 | 1935 | '@jridgewell/gen-mapping@0.3.5': 1936 | dependencies: 1937 | '@jridgewell/set-array': 1.2.1 1938 | '@jridgewell/sourcemap-codec': 1.4.15 1939 | '@jridgewell/trace-mapping': 0.3.25 1940 | 1941 | '@jridgewell/resolve-uri@3.1.2': {} 1942 | 1943 | '@jridgewell/set-array@1.2.1': {} 1944 | 1945 | '@jridgewell/sourcemap-codec@1.4.15': {} 1946 | 1947 | '@jridgewell/trace-mapping@0.3.25': 1948 | dependencies: 1949 | '@jridgewell/resolve-uri': 3.1.2 1950 | '@jridgewell/sourcemap-codec': 1.4.15 1951 | 1952 | '@jridgewell/trace-mapping@0.3.9': 1953 | dependencies: 1954 | '@jridgewell/resolve-uri': 3.1.2 1955 | '@jridgewell/sourcemap-codec': 1.4.15 1956 | 1957 | '@nodelib/fs.scandir@2.1.5': 1958 | dependencies: 1959 | '@nodelib/fs.stat': 2.0.5 1960 | run-parallel: 1.2.0 1961 | 1962 | '@nodelib/fs.stat@2.0.5': {} 1963 | 1964 | '@nodelib/fs.walk@1.2.8': 1965 | dependencies: 1966 | '@nodelib/fs.scandir': 2.1.5 1967 | fastq: 1.17.1 1968 | 1969 | '@pkgjs/parseargs@0.11.0': 1970 | optional: true 1971 | 1972 | '@rollup/rollup-android-arm-eabi@4.18.0': 1973 | optional: true 1974 | 1975 | '@rollup/rollup-android-arm64@4.18.0': 1976 | optional: true 1977 | 1978 | '@rollup/rollup-darwin-arm64@4.18.0': 1979 | optional: true 1980 | 1981 | '@rollup/rollup-darwin-x64@4.18.0': 1982 | optional: true 1983 | 1984 | '@rollup/rollup-linux-arm-gnueabihf@4.18.0': 1985 | optional: true 1986 | 1987 | '@rollup/rollup-linux-arm-musleabihf@4.18.0': 1988 | optional: true 1989 | 1990 | '@rollup/rollup-linux-arm64-gnu@4.18.0': 1991 | optional: true 1992 | 1993 | '@rollup/rollup-linux-arm64-musl@4.18.0': 1994 | optional: true 1995 | 1996 | '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': 1997 | optional: true 1998 | 1999 | '@rollup/rollup-linux-riscv64-gnu@4.18.0': 2000 | optional: true 2001 | 2002 | '@rollup/rollup-linux-s390x-gnu@4.18.0': 2003 | optional: true 2004 | 2005 | '@rollup/rollup-linux-x64-gnu@4.18.0': 2006 | optional: true 2007 | 2008 | '@rollup/rollup-linux-x64-musl@4.18.0': 2009 | optional: true 2010 | 2011 | '@rollup/rollup-win32-arm64-msvc@4.18.0': 2012 | optional: true 2013 | 2014 | '@rollup/rollup-win32-ia32-msvc@4.18.0': 2015 | optional: true 2016 | 2017 | '@rollup/rollup-win32-x64-msvc@4.18.0': 2018 | optional: true 2019 | 2020 | '@sapphire/async-queue@1.5.2': {} 2021 | 2022 | '@sapphire/shapeshift@3.9.7': 2023 | dependencies: 2024 | fast-deep-equal: 3.1.3 2025 | lodash: 4.17.21 2026 | 2027 | '@sapphire/snowflake@3.5.3': {} 2028 | 2029 | '@tsconfig/node10@1.0.11': {} 2030 | 2031 | '@tsconfig/node12@1.0.11': {} 2032 | 2033 | '@tsconfig/node14@1.0.3': {} 2034 | 2035 | '@tsconfig/node16@1.0.4': {} 2036 | 2037 | '@types/estree@1.0.5': {} 2038 | 2039 | '@types/node@20.14.1': 2040 | dependencies: 2041 | undici-types: 5.26.5 2042 | 2043 | '@types/ws@8.5.10': 2044 | dependencies: 2045 | '@types/node': 20.14.1 2046 | 2047 | '@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': 2048 | dependencies: 2049 | '@eslint-community/regexpp': 4.10.1 2050 | '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.4.5) 2051 | '@typescript-eslint/scope-manager': 7.12.0 2052 | '@typescript-eslint/type-utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5) 2053 | '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5) 2054 | '@typescript-eslint/visitor-keys': 7.12.0 2055 | eslint: 8.57.0 2056 | graphemer: 1.4.0 2057 | ignore: 5.3.1 2058 | natural-compare: 1.4.0 2059 | ts-api-utils: 1.3.0(typescript@5.4.5) 2060 | optionalDependencies: 2061 | typescript: 5.4.5 2062 | transitivePeerDependencies: 2063 | - supports-color 2064 | 2065 | '@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.4.5)': 2066 | dependencies: 2067 | '@typescript-eslint/scope-manager': 7.12.0 2068 | '@typescript-eslint/types': 7.12.0 2069 | '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) 2070 | '@typescript-eslint/visitor-keys': 7.12.0 2071 | debug: 4.3.5 2072 | eslint: 8.57.0 2073 | optionalDependencies: 2074 | typescript: 5.4.5 2075 | transitivePeerDependencies: 2076 | - supports-color 2077 | 2078 | '@typescript-eslint/scope-manager@7.12.0': 2079 | dependencies: 2080 | '@typescript-eslint/types': 7.12.0 2081 | '@typescript-eslint/visitor-keys': 7.12.0 2082 | 2083 | '@typescript-eslint/type-utils@7.12.0(eslint@8.57.0)(typescript@5.4.5)': 2084 | dependencies: 2085 | '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) 2086 | '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5) 2087 | debug: 4.3.5 2088 | eslint: 8.57.0 2089 | ts-api-utils: 1.3.0(typescript@5.4.5) 2090 | optionalDependencies: 2091 | typescript: 5.4.5 2092 | transitivePeerDependencies: 2093 | - supports-color 2094 | 2095 | '@typescript-eslint/types@7.12.0': {} 2096 | 2097 | '@typescript-eslint/typescript-estree@7.12.0(typescript@5.4.5)': 2098 | dependencies: 2099 | '@typescript-eslint/types': 7.12.0 2100 | '@typescript-eslint/visitor-keys': 7.12.0 2101 | debug: 4.3.5 2102 | globby: 11.1.0 2103 | is-glob: 4.0.3 2104 | minimatch: 9.0.4 2105 | semver: 7.6.2 2106 | ts-api-utils: 1.3.0(typescript@5.4.5) 2107 | optionalDependencies: 2108 | typescript: 5.4.5 2109 | transitivePeerDependencies: 2110 | - supports-color 2111 | 2112 | '@typescript-eslint/utils@7.12.0(eslint@8.57.0)(typescript@5.4.5)': 2113 | dependencies: 2114 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) 2115 | '@typescript-eslint/scope-manager': 7.12.0 2116 | '@typescript-eslint/types': 7.12.0 2117 | '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) 2118 | eslint: 8.57.0 2119 | transitivePeerDependencies: 2120 | - supports-color 2121 | - typescript 2122 | 2123 | '@typescript-eslint/visitor-keys@7.12.0': 2124 | dependencies: 2125 | '@typescript-eslint/types': 7.12.0 2126 | eslint-visitor-keys: 3.4.3 2127 | 2128 | '@ungap/structured-clone@1.2.0': {} 2129 | 2130 | '@vladfrangu/async_event_emitter@2.2.4': {} 2131 | 2132 | abbrev@1.1.1: {} 2133 | 2134 | acorn-jsx@5.3.2(acorn@8.11.3): 2135 | dependencies: 2136 | acorn: 8.11.3 2137 | 2138 | acorn-walk@8.3.2: {} 2139 | 2140 | acorn@8.11.3: {} 2141 | 2142 | agent-base@6.0.2: 2143 | dependencies: 2144 | debug: 4.3.5 2145 | transitivePeerDependencies: 2146 | - supports-color 2147 | 2148 | agent-base@7.1.1: 2149 | dependencies: 2150 | debug: 4.3.5 2151 | transitivePeerDependencies: 2152 | - supports-color 2153 | 2154 | ajv@6.12.6: 2155 | dependencies: 2156 | fast-deep-equal: 3.1.3 2157 | fast-json-stable-stringify: 2.1.0 2158 | json-schema-traverse: 0.4.1 2159 | uri-js: 4.4.1 2160 | 2161 | ansi-regex@5.0.1: {} 2162 | 2163 | ansi-regex@6.0.1: {} 2164 | 2165 | ansi-styles@4.3.0: 2166 | dependencies: 2167 | color-convert: 2.0.1 2168 | 2169 | ansi-styles@6.2.1: {} 2170 | 2171 | any-promise@1.3.0: {} 2172 | 2173 | anymatch@3.1.3: 2174 | dependencies: 2175 | normalize-path: 3.0.0 2176 | picomatch: 2.3.1 2177 | 2178 | aproba@2.0.0: {} 2179 | 2180 | are-we-there-yet@2.0.0: 2181 | dependencies: 2182 | delegates: 1.0.0 2183 | readable-stream: 3.6.2 2184 | 2185 | arg@4.1.3: {} 2186 | 2187 | argparse@2.0.1: {} 2188 | 2189 | array-union@2.1.0: {} 2190 | 2191 | asynckit@0.4.0: {} 2192 | 2193 | balanced-match@1.0.2: {} 2194 | 2195 | binary-extensions@2.3.0: {} 2196 | 2197 | brace-expansion@1.1.11: 2198 | dependencies: 2199 | balanced-match: 1.0.2 2200 | concat-map: 0.0.1 2201 | 2202 | brace-expansion@2.0.1: 2203 | dependencies: 2204 | balanced-match: 1.0.2 2205 | 2206 | braces@3.0.3: 2207 | dependencies: 2208 | fill-range: 7.1.1 2209 | 2210 | bundle-require@4.2.1(esbuild@0.21.4): 2211 | dependencies: 2212 | esbuild: 0.21.4 2213 | load-tsconfig: 0.2.5 2214 | 2215 | cac@6.7.14: {} 2216 | 2217 | call-bind@1.0.7: 2218 | dependencies: 2219 | es-define-property: 1.0.0 2220 | es-errors: 1.3.0 2221 | function-bind: 1.1.2 2222 | get-intrinsic: 1.2.4 2223 | set-function-length: 1.2.2 2224 | 2225 | callsites@3.1.0: {} 2226 | 2227 | chalk@4.1.2: 2228 | dependencies: 2229 | ansi-styles: 4.3.0 2230 | supports-color: 7.2.0 2231 | 2232 | chokidar@3.6.0: 2233 | dependencies: 2234 | anymatch: 3.1.3 2235 | braces: 3.0.3 2236 | glob-parent: 5.1.2 2237 | is-binary-path: 2.1.0 2238 | is-glob: 4.0.3 2239 | normalize-path: 3.0.0 2240 | readdirp: 3.6.0 2241 | optionalDependencies: 2242 | fsevents: 2.3.3 2243 | 2244 | chownr@2.0.0: {} 2245 | 2246 | color-convert@2.0.1: 2247 | dependencies: 2248 | color-name: 1.1.4 2249 | 2250 | color-name@1.1.4: {} 2251 | 2252 | color-support@1.1.3: {} 2253 | 2254 | combined-stream@1.0.8: 2255 | dependencies: 2256 | delayed-stream: 1.0.0 2257 | 2258 | commander@4.1.1: {} 2259 | 2260 | component-emitter@1.3.1: {} 2261 | 2262 | concat-map@0.0.1: {} 2263 | 2264 | console-control-strings@1.1.0: {} 2265 | 2266 | cookiejar@2.1.4: {} 2267 | 2268 | create-require@1.1.1: {} 2269 | 2270 | cross-spawn@7.0.3: 2271 | dependencies: 2272 | path-key: 3.1.1 2273 | shebang-command: 2.0.0 2274 | which: 2.0.2 2275 | 2276 | debug@4.3.5: 2277 | dependencies: 2278 | ms: 2.1.2 2279 | 2280 | deep-is@0.1.4: {} 2281 | 2282 | define-data-property@1.1.4: 2283 | dependencies: 2284 | es-define-property: 1.0.0 2285 | es-errors: 1.3.0 2286 | gopd: 1.0.1 2287 | 2288 | delayed-stream@1.0.0: {} 2289 | 2290 | delegates@1.0.0: {} 2291 | 2292 | detect-libc@2.0.3: {} 2293 | 2294 | diff@4.0.2: {} 2295 | 2296 | dir-glob@3.0.1: 2297 | dependencies: 2298 | path-type: 4.0.0 2299 | 2300 | discord-api-types@0.37.83: {} 2301 | 2302 | discord.js@14.15.3: 2303 | dependencies: 2304 | '@discordjs/builders': 1.8.2 2305 | '@discordjs/collection': 1.5.3 2306 | '@discordjs/formatters': 0.4.0 2307 | '@discordjs/rest': 2.3.0 2308 | '@discordjs/util': 1.1.0 2309 | '@discordjs/ws': 1.1.1 2310 | '@sapphire/snowflake': 3.5.3 2311 | discord-api-types: 0.37.83 2312 | fast-deep-equal: 3.1.3 2313 | lodash.snakecase: 4.1.1 2314 | tslib: 2.6.2 2315 | undici: 6.13.0 2316 | transitivePeerDependencies: 2317 | - bufferutil 2318 | - utf-8-validate 2319 | 2320 | distube@5.0.1(@discordjs/voice@0.17.0(@discordjs/opus@0.9.0))(discord.js@14.15.3): 2321 | dependencies: 2322 | '@discordjs/voice': 0.17.0(@discordjs/opus@0.9.0) 2323 | discord.js: 14.15.3 2324 | tiny-typed-emitter: 2.1.0 2325 | undici: 6.18.2 2326 | 2327 | doctrine@3.0.0: 2328 | dependencies: 2329 | esutils: 2.0.3 2330 | 2331 | eastasianwidth@0.2.0: {} 2332 | 2333 | emoji-regex@8.0.0: {} 2334 | 2335 | emoji-regex@9.2.2: {} 2336 | 2337 | es-define-property@1.0.0: 2338 | dependencies: 2339 | get-intrinsic: 1.2.4 2340 | 2341 | es-errors@1.3.0: {} 2342 | 2343 | esbuild@0.21.4: 2344 | optionalDependencies: 2345 | '@esbuild/aix-ppc64': 0.21.4 2346 | '@esbuild/android-arm': 0.21.4 2347 | '@esbuild/android-arm64': 0.21.4 2348 | '@esbuild/android-x64': 0.21.4 2349 | '@esbuild/darwin-arm64': 0.21.4 2350 | '@esbuild/darwin-x64': 0.21.4 2351 | '@esbuild/freebsd-arm64': 0.21.4 2352 | '@esbuild/freebsd-x64': 0.21.4 2353 | '@esbuild/linux-arm': 0.21.4 2354 | '@esbuild/linux-arm64': 0.21.4 2355 | '@esbuild/linux-ia32': 0.21.4 2356 | '@esbuild/linux-loong64': 0.21.4 2357 | '@esbuild/linux-mips64el': 0.21.4 2358 | '@esbuild/linux-ppc64': 0.21.4 2359 | '@esbuild/linux-riscv64': 0.21.4 2360 | '@esbuild/linux-s390x': 0.21.4 2361 | '@esbuild/linux-x64': 0.21.4 2362 | '@esbuild/netbsd-x64': 0.21.4 2363 | '@esbuild/openbsd-x64': 0.21.4 2364 | '@esbuild/sunos-x64': 0.21.4 2365 | '@esbuild/win32-arm64': 0.21.4 2366 | '@esbuild/win32-ia32': 0.21.4 2367 | '@esbuild/win32-x64': 0.21.4 2368 | 2369 | escape-string-regexp@4.0.0: {} 2370 | 2371 | eslint-config-distube@1.7.0(eslint@8.57.0)(typescript@5.4.5): 2372 | dependencies: 2373 | '@typescript-eslint/eslint-plugin': 7.12.0(@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) 2374 | '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.4.5) 2375 | eslint-config-prettier: 9.1.0(eslint@8.57.0) 2376 | eslint-plugin-deprecation: 3.0.0(eslint@8.57.0)(typescript@5.4.5) 2377 | transitivePeerDependencies: 2378 | - eslint 2379 | - supports-color 2380 | - typescript 2381 | 2382 | eslint-config-prettier@9.1.0(eslint@8.57.0): 2383 | dependencies: 2384 | eslint: 8.57.0 2385 | 2386 | eslint-plugin-deprecation@3.0.0(eslint@8.57.0)(typescript@5.4.5): 2387 | dependencies: 2388 | '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5) 2389 | eslint: 8.57.0 2390 | ts-api-utils: 1.3.0(typescript@5.4.5) 2391 | tslib: 2.6.3 2392 | typescript: 5.4.5 2393 | transitivePeerDependencies: 2394 | - supports-color 2395 | 2396 | eslint-scope@7.2.2: 2397 | dependencies: 2398 | esrecurse: 4.3.0 2399 | estraverse: 5.3.0 2400 | 2401 | eslint-visitor-keys@3.4.3: {} 2402 | 2403 | eslint@8.57.0: 2404 | dependencies: 2405 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) 2406 | '@eslint-community/regexpp': 4.10.1 2407 | '@eslint/eslintrc': 2.1.4 2408 | '@eslint/js': 8.57.0 2409 | '@humanwhocodes/config-array': 0.11.14 2410 | '@humanwhocodes/module-importer': 1.0.1 2411 | '@nodelib/fs.walk': 1.2.8 2412 | '@ungap/structured-clone': 1.2.0 2413 | ajv: 6.12.6 2414 | chalk: 4.1.2 2415 | cross-spawn: 7.0.3 2416 | debug: 4.3.5 2417 | doctrine: 3.0.0 2418 | escape-string-regexp: 4.0.0 2419 | eslint-scope: 7.2.2 2420 | eslint-visitor-keys: 3.4.3 2421 | espree: 9.6.1 2422 | esquery: 1.5.0 2423 | esutils: 2.0.3 2424 | fast-deep-equal: 3.1.3 2425 | file-entry-cache: 6.0.1 2426 | find-up: 5.0.0 2427 | glob-parent: 6.0.2 2428 | globals: 13.24.0 2429 | graphemer: 1.4.0 2430 | ignore: 5.3.1 2431 | imurmurhash: 0.1.4 2432 | is-glob: 4.0.3 2433 | is-path-inside: 3.0.3 2434 | js-yaml: 4.1.0 2435 | json-stable-stringify-without-jsonify: 1.0.1 2436 | levn: 0.4.1 2437 | lodash.merge: 4.6.2 2438 | minimatch: 3.1.2 2439 | natural-compare: 1.4.0 2440 | optionator: 0.9.4 2441 | strip-ansi: 6.0.1 2442 | text-table: 0.2.0 2443 | transitivePeerDependencies: 2444 | - supports-color 2445 | 2446 | espree@9.6.1: 2447 | dependencies: 2448 | acorn: 8.11.3 2449 | acorn-jsx: 5.3.2(acorn@8.11.3) 2450 | eslint-visitor-keys: 3.4.3 2451 | 2452 | esquery@1.5.0: 2453 | dependencies: 2454 | estraverse: 5.3.0 2455 | 2456 | esrecurse@4.3.0: 2457 | dependencies: 2458 | estraverse: 5.3.0 2459 | 2460 | estraverse@5.3.0: {} 2461 | 2462 | esutils@2.0.3: {} 2463 | 2464 | execa@5.1.1: 2465 | dependencies: 2466 | cross-spawn: 7.0.3 2467 | get-stream: 6.0.1 2468 | human-signals: 2.1.0 2469 | is-stream: 2.0.1 2470 | merge-stream: 2.0.0 2471 | npm-run-path: 4.0.1 2472 | onetime: 5.1.2 2473 | signal-exit: 3.0.7 2474 | strip-final-newline: 2.0.0 2475 | 2476 | fast-deep-equal@3.1.3: {} 2477 | 2478 | fast-glob@3.3.2: 2479 | dependencies: 2480 | '@nodelib/fs.stat': 2.0.5 2481 | '@nodelib/fs.walk': 1.2.8 2482 | glob-parent: 5.1.2 2483 | merge2: 1.4.1 2484 | micromatch: 4.0.7 2485 | 2486 | fast-json-stable-stringify@2.1.0: {} 2487 | 2488 | fast-levenshtein@2.0.6: {} 2489 | 2490 | fast-safe-stringify@2.1.1: {} 2491 | 2492 | fastq@1.17.1: 2493 | dependencies: 2494 | reusify: 1.0.4 2495 | 2496 | file-entry-cache@6.0.1: 2497 | dependencies: 2498 | flat-cache: 3.2.0 2499 | 2500 | fill-range@7.1.1: 2501 | dependencies: 2502 | to-regex-range: 5.0.1 2503 | 2504 | find-up@5.0.0: 2505 | dependencies: 2506 | locate-path: 6.0.0 2507 | path-exists: 4.0.0 2508 | 2509 | flat-cache@3.2.0: 2510 | dependencies: 2511 | flatted: 3.3.1 2512 | keyv: 4.5.4 2513 | rimraf: 3.0.2 2514 | 2515 | flatted@3.3.1: {} 2516 | 2517 | foreground-child@3.1.1: 2518 | dependencies: 2519 | cross-spawn: 7.0.3 2520 | signal-exit: 4.1.0 2521 | 2522 | form-data@3.0.1: 2523 | dependencies: 2524 | asynckit: 0.4.0 2525 | combined-stream: 1.0.8 2526 | mime-types: 2.1.35 2527 | 2528 | formidable@1.2.6: {} 2529 | 2530 | fs-minipass@2.1.0: 2531 | dependencies: 2532 | minipass: 3.3.6 2533 | 2534 | fs.realpath@1.0.0: {} 2535 | 2536 | fsevents@2.3.3: 2537 | optional: true 2538 | 2539 | function-bind@1.1.2: {} 2540 | 2541 | gauge@3.0.2: 2542 | dependencies: 2543 | aproba: 2.0.0 2544 | color-support: 1.1.3 2545 | console-control-strings: 1.1.0 2546 | has-unicode: 2.0.1 2547 | object-assign: 4.1.1 2548 | signal-exit: 3.0.7 2549 | string-width: 4.2.3 2550 | strip-ansi: 6.0.1 2551 | wide-align: 1.1.5 2552 | 2553 | get-intrinsic@1.2.4: 2554 | dependencies: 2555 | es-errors: 1.3.0 2556 | function-bind: 1.1.2 2557 | has-proto: 1.0.3 2558 | has-symbols: 1.0.3 2559 | hasown: 2.0.2 2560 | 2561 | get-stream@6.0.1: {} 2562 | 2563 | glob-parent@5.1.2: 2564 | dependencies: 2565 | is-glob: 4.0.3 2566 | 2567 | glob-parent@6.0.2: 2568 | dependencies: 2569 | is-glob: 4.0.3 2570 | 2571 | glob@10.4.1: 2572 | dependencies: 2573 | foreground-child: 3.1.1 2574 | jackspeak: 3.3.0 2575 | minimatch: 9.0.4 2576 | minipass: 7.1.2 2577 | path-scurry: 1.11.1 2578 | 2579 | glob@7.2.3: 2580 | dependencies: 2581 | fs.realpath: 1.0.0 2582 | inflight: 1.0.6 2583 | inherits: 2.0.4 2584 | minimatch: 3.1.2 2585 | once: 1.4.0 2586 | path-is-absolute: 1.0.1 2587 | 2588 | globals@13.24.0: 2589 | dependencies: 2590 | type-fest: 0.20.2 2591 | 2592 | globby@11.1.0: 2593 | dependencies: 2594 | array-union: 2.1.0 2595 | dir-glob: 3.0.1 2596 | fast-glob: 3.3.2 2597 | ignore: 5.3.1 2598 | merge2: 1.4.1 2599 | slash: 3.0.0 2600 | 2601 | gopd@1.0.1: 2602 | dependencies: 2603 | get-intrinsic: 1.2.4 2604 | 2605 | graphemer@1.4.0: {} 2606 | 2607 | has-flag@4.0.0: {} 2608 | 2609 | has-property-descriptors@1.0.2: 2610 | dependencies: 2611 | es-define-property: 1.0.0 2612 | 2613 | has-proto@1.0.3: {} 2614 | 2615 | has-symbols@1.0.3: {} 2616 | 2617 | has-unicode@2.0.1: {} 2618 | 2619 | hasown@2.0.2: 2620 | dependencies: 2621 | function-bind: 1.1.2 2622 | 2623 | himalaya@1.1.0: {} 2624 | 2625 | http-cookie-agent@5.0.4(tough-cookie@4.1.4)(undici@5.28.4): 2626 | dependencies: 2627 | agent-base: 7.1.1 2628 | tough-cookie: 4.1.4 2629 | optionalDependencies: 2630 | undici: 5.28.4 2631 | transitivePeerDependencies: 2632 | - supports-color 2633 | 2634 | https-proxy-agent@5.0.1: 2635 | dependencies: 2636 | agent-base: 6.0.2 2637 | debug: 4.3.5 2638 | transitivePeerDependencies: 2639 | - supports-color 2640 | 2641 | human-signals@2.1.0: {} 2642 | 2643 | ignore@5.3.1: {} 2644 | 2645 | import-fresh@3.3.0: 2646 | dependencies: 2647 | parent-module: 1.0.1 2648 | resolve-from: 4.0.0 2649 | 2650 | imurmurhash@0.1.4: {} 2651 | 2652 | inflight@1.0.6: 2653 | dependencies: 2654 | once: 1.4.0 2655 | wrappy: 1.0.2 2656 | 2657 | inherits@2.0.4: {} 2658 | 2659 | is-binary-path@2.1.0: 2660 | dependencies: 2661 | binary-extensions: 2.3.0 2662 | 2663 | is-extglob@2.1.1: {} 2664 | 2665 | is-fullwidth-code-point@3.0.0: {} 2666 | 2667 | is-glob@4.0.3: 2668 | dependencies: 2669 | is-extglob: 2.1.1 2670 | 2671 | is-number@7.0.0: {} 2672 | 2673 | is-path-inside@3.0.3: {} 2674 | 2675 | is-stream@2.0.1: {} 2676 | 2677 | isexe@2.0.0: {} 2678 | 2679 | jackspeak@3.3.0: 2680 | dependencies: 2681 | '@isaacs/cliui': 8.0.2 2682 | optionalDependencies: 2683 | '@pkgjs/parseargs': 0.11.0 2684 | 2685 | joycon@3.1.1: {} 2686 | 2687 | js-yaml@4.1.0: 2688 | dependencies: 2689 | argparse: 2.0.1 2690 | 2691 | json-buffer@3.0.1: {} 2692 | 2693 | json-schema-traverse@0.4.1: {} 2694 | 2695 | json-stable-stringify-without-jsonify@1.0.1: {} 2696 | 2697 | keyv@4.5.4: 2698 | dependencies: 2699 | json-buffer: 3.0.1 2700 | 2701 | levn@0.4.1: 2702 | dependencies: 2703 | prelude-ls: 1.2.1 2704 | type-check: 0.4.0 2705 | 2706 | lilconfig@3.1.1: {} 2707 | 2708 | lines-and-columns@1.2.4: {} 2709 | 2710 | load-tsconfig@0.2.5: {} 2711 | 2712 | locate-path@6.0.0: 2713 | dependencies: 2714 | p-locate: 5.0.0 2715 | 2716 | lodash.merge@4.6.2: {} 2717 | 2718 | lodash.snakecase@4.1.1: {} 2719 | 2720 | lodash.sortby@4.7.0: {} 2721 | 2722 | lodash@4.17.21: {} 2723 | 2724 | lru-cache@10.2.2: {} 2725 | 2726 | m3u8stream@0.8.6: 2727 | dependencies: 2728 | miniget: 4.2.3 2729 | sax: 1.4.1 2730 | 2731 | magic-bytes.js@1.10.0: {} 2732 | 2733 | make-dir@3.1.0: 2734 | dependencies: 2735 | semver: 6.3.1 2736 | 2737 | make-error@1.3.6: {} 2738 | 2739 | merge-stream@2.0.0: {} 2740 | 2741 | merge2@1.4.1: {} 2742 | 2743 | methods@1.1.2: {} 2744 | 2745 | micromatch@4.0.7: 2746 | dependencies: 2747 | braces: 3.0.3 2748 | picomatch: 2.3.1 2749 | 2750 | mime-db@1.52.0: {} 2751 | 2752 | mime-types@2.1.35: 2753 | dependencies: 2754 | mime-db: 1.52.0 2755 | 2756 | mime@2.6.0: {} 2757 | 2758 | mimic-fn@2.1.0: {} 2759 | 2760 | miniget@4.2.3: {} 2761 | 2762 | minimatch@3.1.2: 2763 | dependencies: 2764 | brace-expansion: 1.1.11 2765 | 2766 | minimatch@9.0.4: 2767 | dependencies: 2768 | brace-expansion: 2.0.1 2769 | 2770 | minipass@3.3.6: 2771 | dependencies: 2772 | yallist: 4.0.0 2773 | 2774 | minipass@5.0.0: {} 2775 | 2776 | minipass@7.1.2: {} 2777 | 2778 | minizlib@2.1.2: 2779 | dependencies: 2780 | minipass: 3.3.6 2781 | yallist: 4.0.0 2782 | 2783 | mkdirp@1.0.4: {} 2784 | 2785 | ms@2.1.2: {} 2786 | 2787 | mz@2.7.0: 2788 | dependencies: 2789 | any-promise: 1.3.0 2790 | object-assign: 4.1.1 2791 | thenify-all: 1.6.0 2792 | 2793 | natural-compare@1.4.0: {} 2794 | 2795 | node-addon-api@5.1.0: {} 2796 | 2797 | node-fetch@2.7.0: 2798 | dependencies: 2799 | whatwg-url: 5.0.0 2800 | 2801 | node-gyp-build@4.8.1: {} 2802 | 2803 | nopt@5.0.0: 2804 | dependencies: 2805 | abbrev: 1.1.1 2806 | 2807 | normalize-path@3.0.0: {} 2808 | 2809 | npm-run-path@4.0.1: 2810 | dependencies: 2811 | path-key: 3.1.1 2812 | 2813 | npmlog@5.0.1: 2814 | dependencies: 2815 | are-we-there-yet: 2.0.0 2816 | console-control-strings: 1.1.0 2817 | gauge: 3.0.2 2818 | set-blocking: 2.0.0 2819 | 2820 | object-assign@4.1.1: {} 2821 | 2822 | object-inspect@1.13.1: {} 2823 | 2824 | once@1.4.0: 2825 | dependencies: 2826 | wrappy: 1.0.2 2827 | 2828 | onetime@5.1.2: 2829 | dependencies: 2830 | mimic-fn: 2.1.0 2831 | 2832 | optionator@0.9.4: 2833 | dependencies: 2834 | deep-is: 0.1.4 2835 | fast-levenshtein: 2.0.6 2836 | levn: 0.4.1 2837 | prelude-ls: 1.2.1 2838 | type-check: 0.4.0 2839 | word-wrap: 1.2.5 2840 | 2841 | p-limit@3.1.0: 2842 | dependencies: 2843 | yocto-queue: 0.1.0 2844 | 2845 | p-locate@5.0.0: 2846 | dependencies: 2847 | p-limit: 3.1.0 2848 | 2849 | parent-module@1.0.1: 2850 | dependencies: 2851 | callsites: 3.1.0 2852 | 2853 | path-exists@4.0.0: {} 2854 | 2855 | path-is-absolute@1.0.1: {} 2856 | 2857 | path-key@3.1.1: {} 2858 | 2859 | path-scurry@1.11.1: 2860 | dependencies: 2861 | lru-cache: 10.2.2 2862 | minipass: 7.1.2 2863 | 2864 | path-type@4.0.0: {} 2865 | 2866 | picomatch@2.3.1: {} 2867 | 2868 | pirates@4.0.6: {} 2869 | 2870 | postcss-load-config@4.0.2(ts-node@10.9.2(@types/node@20.14.1)(typescript@5.4.5)): 2871 | dependencies: 2872 | lilconfig: 3.1.1 2873 | yaml: 2.4.3 2874 | optionalDependencies: 2875 | ts-node: 10.9.2(@types/node@20.14.1)(typescript@5.4.5) 2876 | 2877 | prelude-ls@1.2.1: {} 2878 | 2879 | prettier@3.3.0: {} 2880 | 2881 | prism-media@1.3.5(@discordjs/opus@0.9.0): 2882 | optionalDependencies: 2883 | '@discordjs/opus': 0.9.0 2884 | 2885 | psl@1.9.0: {} 2886 | 2887 | punycode@2.3.1: {} 2888 | 2889 | qs@6.12.1: 2890 | dependencies: 2891 | side-channel: 1.0.6 2892 | 2893 | querystringify@2.2.0: {} 2894 | 2895 | queue-microtask@1.2.3: {} 2896 | 2897 | readable-stream@3.6.2: 2898 | dependencies: 2899 | inherits: 2.0.4 2900 | string_decoder: 1.3.0 2901 | util-deprecate: 1.0.2 2902 | 2903 | readdirp@3.6.0: 2904 | dependencies: 2905 | picomatch: 2.3.1 2906 | 2907 | requires-port@1.0.0: {} 2908 | 2909 | resolve-from@4.0.0: {} 2910 | 2911 | resolve-from@5.0.0: {} 2912 | 2913 | reusify@1.0.4: {} 2914 | 2915 | rimraf@3.0.2: 2916 | dependencies: 2917 | glob: 7.2.3 2918 | 2919 | rollup@4.18.0: 2920 | dependencies: 2921 | '@types/estree': 1.0.5 2922 | optionalDependencies: 2923 | '@rollup/rollup-android-arm-eabi': 4.18.0 2924 | '@rollup/rollup-android-arm64': 4.18.0 2925 | '@rollup/rollup-darwin-arm64': 4.18.0 2926 | '@rollup/rollup-darwin-x64': 4.18.0 2927 | '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 2928 | '@rollup/rollup-linux-arm-musleabihf': 4.18.0 2929 | '@rollup/rollup-linux-arm64-gnu': 4.18.0 2930 | '@rollup/rollup-linux-arm64-musl': 4.18.0 2931 | '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 2932 | '@rollup/rollup-linux-riscv64-gnu': 4.18.0 2933 | '@rollup/rollup-linux-s390x-gnu': 4.18.0 2934 | '@rollup/rollup-linux-x64-gnu': 4.18.0 2935 | '@rollup/rollup-linux-x64-musl': 4.18.0 2936 | '@rollup/rollup-win32-arm64-msvc': 4.18.0 2937 | '@rollup/rollup-win32-ia32-msvc': 4.18.0 2938 | '@rollup/rollup-win32-x64-msvc': 4.18.0 2939 | fsevents: 2.3.3 2940 | 2941 | run-parallel@1.2.0: 2942 | dependencies: 2943 | queue-microtask: 1.2.3 2944 | 2945 | safe-buffer@5.2.1: {} 2946 | 2947 | sax@1.4.1: {} 2948 | 2949 | semver@6.3.1: {} 2950 | 2951 | semver@7.6.2: {} 2952 | 2953 | set-blocking@2.0.0: {} 2954 | 2955 | set-function-length@1.2.2: 2956 | dependencies: 2957 | define-data-property: 1.1.4 2958 | es-errors: 1.3.0 2959 | function-bind: 1.1.2 2960 | get-intrinsic: 1.2.4 2961 | gopd: 1.0.1 2962 | has-property-descriptors: 1.0.2 2963 | 2964 | shebang-command@2.0.0: 2965 | dependencies: 2966 | shebang-regex: 3.0.0 2967 | 2968 | shebang-regex@3.0.0: {} 2969 | 2970 | side-channel@1.0.6: 2971 | dependencies: 2972 | call-bind: 1.0.7 2973 | es-errors: 1.3.0 2974 | get-intrinsic: 1.2.4 2975 | object-inspect: 1.13.1 2976 | 2977 | signal-exit@3.0.7: {} 2978 | 2979 | signal-exit@4.1.0: {} 2980 | 2981 | slash@3.0.0: {} 2982 | 2983 | sodium-native@4.1.1: 2984 | dependencies: 2985 | node-gyp-build: 4.8.1 2986 | 2987 | soundcloud.ts@0.5.3: 2988 | dependencies: 2989 | undici: 6.18.2 2990 | 2991 | source-map@0.8.0-beta.0: 2992 | dependencies: 2993 | whatwg-url: 7.1.0 2994 | 2995 | spotify-uri@4.1.0: {} 2996 | 2997 | spotify-url-info@3.2.15: 2998 | dependencies: 2999 | himalaya: 1.1.0 3000 | spotify-uri: 4.1.0 3001 | 3002 | spotify-web-api-node@5.0.2: 3003 | dependencies: 3004 | superagent: 6.1.0 3005 | transitivePeerDependencies: 3006 | - supports-color 3007 | 3008 | string-width@4.2.3: 3009 | dependencies: 3010 | emoji-regex: 8.0.0 3011 | is-fullwidth-code-point: 3.0.0 3012 | strip-ansi: 6.0.1 3013 | 3014 | string-width@5.1.2: 3015 | dependencies: 3016 | eastasianwidth: 0.2.0 3017 | emoji-regex: 9.2.2 3018 | strip-ansi: 7.1.0 3019 | 3020 | string_decoder@1.3.0: 3021 | dependencies: 3022 | safe-buffer: 5.2.1 3023 | 3024 | strip-ansi@6.0.1: 3025 | dependencies: 3026 | ansi-regex: 5.0.1 3027 | 3028 | strip-ansi@7.1.0: 3029 | dependencies: 3030 | ansi-regex: 6.0.1 3031 | 3032 | strip-final-newline@2.0.0: {} 3033 | 3034 | strip-json-comments@3.1.1: {} 3035 | 3036 | sucrase@3.35.0: 3037 | dependencies: 3038 | '@jridgewell/gen-mapping': 0.3.5 3039 | commander: 4.1.1 3040 | glob: 10.4.1 3041 | lines-and-columns: 1.2.4 3042 | mz: 2.7.0 3043 | pirates: 4.0.6 3044 | ts-interface-checker: 0.1.13 3045 | 3046 | superagent@6.1.0: 3047 | dependencies: 3048 | component-emitter: 1.3.1 3049 | cookiejar: 2.1.4 3050 | debug: 4.3.5 3051 | fast-safe-stringify: 2.1.1 3052 | form-data: 3.0.1 3053 | formidable: 1.2.6 3054 | methods: 1.1.2 3055 | mime: 2.6.0 3056 | qs: 6.12.1 3057 | readable-stream: 3.6.2 3058 | semver: 7.6.2 3059 | transitivePeerDependencies: 3060 | - supports-color 3061 | 3062 | supports-color@7.2.0: 3063 | dependencies: 3064 | has-flag: 4.0.0 3065 | 3066 | tar@6.2.1: 3067 | dependencies: 3068 | chownr: 2.0.0 3069 | fs-minipass: 2.1.0 3070 | minipass: 5.0.0 3071 | minizlib: 2.1.2 3072 | mkdirp: 1.0.4 3073 | yallist: 4.0.0 3074 | 3075 | text-table@0.2.0: {} 3076 | 3077 | thenify-all@1.6.0: 3078 | dependencies: 3079 | thenify: 3.3.1 3080 | 3081 | thenify@3.3.1: 3082 | dependencies: 3083 | any-promise: 1.3.0 3084 | 3085 | tiny-typed-emitter@2.1.0: {} 3086 | 3087 | to-regex-range@5.0.1: 3088 | dependencies: 3089 | is-number: 7.0.0 3090 | 3091 | tough-cookie@4.1.4: 3092 | dependencies: 3093 | psl: 1.9.0 3094 | punycode: 2.3.1 3095 | universalify: 0.2.0 3096 | url-parse: 1.5.10 3097 | 3098 | tr46@0.0.3: {} 3099 | 3100 | tr46@1.0.1: 3101 | dependencies: 3102 | punycode: 2.3.1 3103 | 3104 | tree-kill@1.2.2: {} 3105 | 3106 | ts-api-utils@1.3.0(typescript@5.4.5): 3107 | dependencies: 3108 | typescript: 5.4.5 3109 | 3110 | ts-interface-checker@0.1.13: {} 3111 | 3112 | ts-mixer@6.0.4: {} 3113 | 3114 | ts-node@10.9.2(@types/node@20.14.1)(typescript@5.4.5): 3115 | dependencies: 3116 | '@cspotcode/source-map-support': 0.8.1 3117 | '@tsconfig/node10': 1.0.11 3118 | '@tsconfig/node12': 1.0.11 3119 | '@tsconfig/node14': 1.0.3 3120 | '@tsconfig/node16': 1.0.4 3121 | '@types/node': 20.14.1 3122 | acorn: 8.11.3 3123 | acorn-walk: 8.3.2 3124 | arg: 4.1.3 3125 | create-require: 1.1.1 3126 | diff: 4.0.2 3127 | make-error: 1.3.6 3128 | typescript: 5.4.5 3129 | v8-compile-cache-lib: 3.0.1 3130 | yn: 3.1.1 3131 | 3132 | tslib@2.6.2: {} 3133 | 3134 | tslib@2.6.3: {} 3135 | 3136 | tsup@8.1.0(ts-node@10.9.2(@types/node@20.14.1)(typescript@5.4.5))(typescript@5.4.5): 3137 | dependencies: 3138 | bundle-require: 4.2.1(esbuild@0.21.4) 3139 | cac: 6.7.14 3140 | chokidar: 3.6.0 3141 | debug: 4.3.5 3142 | esbuild: 0.21.4 3143 | execa: 5.1.1 3144 | globby: 11.1.0 3145 | joycon: 3.1.1 3146 | postcss-load-config: 4.0.2(ts-node@10.9.2(@types/node@20.14.1)(typescript@5.4.5)) 3147 | resolve-from: 5.0.0 3148 | rollup: 4.18.0 3149 | source-map: 0.8.0-beta.0 3150 | sucrase: 3.35.0 3151 | tree-kill: 1.2.2 3152 | optionalDependencies: 3153 | typescript: 5.4.5 3154 | transitivePeerDependencies: 3155 | - supports-color 3156 | - ts-node 3157 | 3158 | type-check@0.4.0: 3159 | dependencies: 3160 | prelude-ls: 1.2.1 3161 | 3162 | type-fest@0.20.2: {} 3163 | 3164 | typescript@5.4.5: {} 3165 | 3166 | undici-types@5.26.5: {} 3167 | 3168 | undici@5.28.4: 3169 | dependencies: 3170 | '@fastify/busboy': 2.1.1 3171 | 3172 | undici@6.0.1: 3173 | dependencies: 3174 | '@fastify/busboy': 2.1.1 3175 | 3176 | undici@6.13.0: {} 3177 | 3178 | undici@6.18.2: {} 3179 | 3180 | universalify@0.2.0: {} 3181 | 3182 | uri-js@4.4.1: 3183 | dependencies: 3184 | punycode: 2.3.1 3185 | 3186 | url-parse@1.5.10: 3187 | dependencies: 3188 | querystringify: 2.2.0 3189 | requires-port: 1.0.0 3190 | 3191 | util-deprecate@1.0.2: {} 3192 | 3193 | v8-compile-cache-lib@3.0.1: {} 3194 | 3195 | webidl-conversions@3.0.1: {} 3196 | 3197 | webidl-conversions@4.0.2: {} 3198 | 3199 | whatwg-url@5.0.0: 3200 | dependencies: 3201 | tr46: 0.0.3 3202 | webidl-conversions: 3.0.1 3203 | 3204 | whatwg-url@7.1.0: 3205 | dependencies: 3206 | lodash.sortby: 4.7.0 3207 | tr46: 1.0.1 3208 | webidl-conversions: 4.0.2 3209 | 3210 | which@2.0.2: 3211 | dependencies: 3212 | isexe: 2.0.0 3213 | 3214 | wide-align@1.1.5: 3215 | dependencies: 3216 | string-width: 4.2.3 3217 | 3218 | word-wrap@1.2.5: {} 3219 | 3220 | wrap-ansi@7.0.0: 3221 | dependencies: 3222 | ansi-styles: 4.3.0 3223 | string-width: 4.2.3 3224 | strip-ansi: 6.0.1 3225 | 3226 | wrap-ansi@8.1.0: 3227 | dependencies: 3228 | ansi-styles: 6.2.1 3229 | string-width: 5.1.2 3230 | strip-ansi: 7.1.0 3231 | 3232 | wrappy@1.0.2: {} 3233 | 3234 | ws@8.17.0: {} 3235 | 3236 | yallist@4.0.0: {} 3237 | 3238 | yaml@2.4.3: {} 3239 | 3240 | yn@3.1.1: {} 3241 | 3242 | yocto-queue@0.1.0: {} 3243 | -------------------------------------------------------------------------------- /src/commands/autoplay.ts: -------------------------------------------------------------------------------- 1 | import { Command } from ".."; 2 | import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; 3 | import type { ChatInputCommandInteraction } from "discord.js"; 4 | 5 | export default class AutoplayCommand extends Command { 6 | readonly name = "autoplay"; 7 | override readonly inVoiceChannel = true; 8 | override readonly playing = true; 9 | readonly slashBuilder = new SlashCommandBuilder().setName("autoplay").setDescription("Toggle autoplay"); 10 | async onChatInput(interaction: ChatInputCommandInteraction<"cached">) { 11 | try { 12 | await interaction.reply({ 13 | embeds: [ 14 | new EmbedBuilder() 15 | .setColor("Blurple") 16 | .setTitle("DisTube") 17 | .setDescription(`Autoplay: \`${this.distube.toggleAutoplay(interaction) ? "On" : "Off"}\``), 18 | ], 19 | }); 20 | } catch (e) { 21 | console.error(e); 22 | interaction.reply({ 23 | embeds: [new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription(`Error: \`${e}\``)], 24 | }); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/commands/filter.ts: -------------------------------------------------------------------------------- 1 | import { Command } from ".."; 2 | import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; 3 | import type { ChatInputCommandInteraction } from "discord.js"; 4 | import { defaultFilters } from "distube"; 5 | 6 | export default class FilterCommand extends Command { 7 | readonly name = "filter"; 8 | override readonly inVoiceChannel = true; 9 | override readonly playing = true; 10 | readonly slashBuilder = new SlashCommandBuilder() 11 | .setName("filter") 12 | .setDescription("Set the filter") 13 | .addStringOption(option => 14 | option 15 | .setName("filter") 16 | .setDescription("The filter to set") 17 | .setRequired(true) 18 | .addChoices(...Object.keys(defaultFilters).map(k => ({ name: k, value: k }))), 19 | ); 20 | async onChatInput(interaction: ChatInputCommandInteraction<"cached">) { 21 | const filter = interaction.options.getString("filter", true); 22 | const filters = this.distube.getQueue(interaction)!.filters; 23 | if (filters.has(filter)) filters.remove(filter); 24 | else filters.add(filter); 25 | await interaction.reply({ 26 | embeds: [ 27 | new EmbedBuilder() 28 | .setColor("Blurple") 29 | .setTitle("DisTube") 30 | .setDescription(`Current filter: \`${filters.names.join(", ") || "Off"}\``), 31 | ], 32 | }); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/commands/play.ts: -------------------------------------------------------------------------------- 1 | import { Command } from ".."; 2 | import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; 3 | import type { Metadata } from ".."; 4 | import type { ChatInputCommandInteraction } from "discord.js"; 5 | 6 | export default class PlayCommand extends Command { 7 | readonly name = "play"; 8 | override readonly inVoiceChannel = true; 9 | readonly slashBuilder = new SlashCommandBuilder() 10 | .setName("play") 11 | .setDescription("Play music from a supported URL (all provider) or search a query") 12 | .addStringOption(opt => opt.setName("input").setDescription("A supported URL or a search query").setRequired(true)) 13 | .addBooleanOption(opt => 14 | opt.setName("skip").setDescription("Skip the current song (Available if vote skip is off)").setRequired(false), 15 | ) 16 | .addIntegerOption(opt => 17 | opt.setName("position").setDescription("Position will be added to the queue").setRequired(false), 18 | ); 19 | async onChatInput(interaction: ChatInputCommandInteraction<"cached">) { 20 | const input = interaction.options.getString("input", true); 21 | const skip = interaction.options.getBoolean("skip", false) ?? false; 22 | const position = interaction.options.getInteger("position", false) ?? undefined; 23 | const vc = interaction.member?.voice?.channel; 24 | if (!vc) return; // Handled by inVoiceChannel property 25 | await interaction.deferReply(); 26 | this.client.distube 27 | .play(vc, input, { 28 | skip, 29 | position, 30 | textChannel: interaction.channel ?? undefined, 31 | member: interaction.member, 32 | metadata: { interaction }, 33 | }) 34 | .catch(e => { 35 | console.error(e); 36 | interaction.editReply({ 37 | embeds: [ 38 | new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription(`Error: \`${e.message}\``), 39 | ], 40 | }); 41 | }); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/commands/queue.ts: -------------------------------------------------------------------------------- 1 | import { Command } from ".."; 2 | import { RepeatMode } from "distube"; 3 | import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; 4 | import type { ChatInputCommandInteraction } from "discord.js"; 5 | 6 | export default class QueueCommand extends Command { 7 | readonly name = "queue"; 8 | override readonly inVoiceChannel = true; 9 | override readonly playing = true; 10 | readonly slashBuilder = new SlashCommandBuilder().setName("queue").setDescription("Show the current queue status"); 11 | async onChatInput(interaction: ChatInputCommandInteraction<"cached">) { 12 | const queue = this.distube.getQueue(interaction); 13 | if (!queue) return; // Handled by playing property 14 | const song = queue.songs[0]; 15 | await interaction.reply({ 16 | embeds: [ 17 | new EmbedBuilder() 18 | .setColor("Blurple") 19 | .setTitle("DisTube") 20 | .setDescription( 21 | [ 22 | `**Current:** \`${song.name || song.url}\` - \`${queue.formattedCurrentTime}\`/\`${ 23 | song.stream.playFromSource ? song.formattedDuration : song.stream.song?.formattedDuration 24 | }\`\n`, 25 | `**Up next**\n${ 26 | queue.songs 27 | .slice(1, 10) 28 | .map((song, i) => `**${i + 1}.** \`${song.name || song.url}\``) 29 | .join("\n") || "None" 30 | }`, 31 | ].join("\n"), 32 | ) 33 | .addFields( 34 | { 35 | name: "Volume", 36 | value: `${queue.volume}%`, 37 | inline: true, 38 | }, 39 | { 40 | name: "Autoplay", 41 | value: `${queue.autoplay ? "On" : "Off"}`, 42 | inline: true, 43 | }, 44 | { 45 | name: "Loop", 46 | value: `${ 47 | queue.repeatMode === RepeatMode.QUEUE ? "Queue" : queue.repeatMode === RepeatMode.SONG ? "Song" : "Off" 48 | }`, 49 | inline: true, 50 | }, 51 | { 52 | name: "Filters", 53 | value: `${queue.filters.names.join(", ") || "Off"}`, 54 | inline: false, 55 | }, 56 | ), 57 | ], 58 | }); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/commands/seek.ts: -------------------------------------------------------------------------------- 1 | import { Command } from ".."; 2 | import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; 3 | import type { ChatInputCommandInteraction } from "discord.js"; 4 | 5 | export default class SeekCommand extends Command { 6 | readonly name = "seek"; 7 | override readonly inVoiceChannel = true; 8 | override readonly playing = true; 9 | readonly slashBuilder = new SlashCommandBuilder() 10 | .setName("seek") 11 | .setDescription("Seek the current song") 12 | .addNumberOption(option => 13 | option.setName("time").setDescription("The time to seek (in seconds)").setMinValue(0).setRequired(true), 14 | ); 15 | async onChatInput(interaction: ChatInputCommandInteraction<"cached">) { 16 | const time = interaction.options.getNumber("time", true); 17 | this.distube.seek(interaction, time); 18 | await interaction.reply({ 19 | embeds: [ 20 | new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription(`Seeked to \`${time}\` seconds`), 21 | ], 22 | }); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/commands/skip.ts: -------------------------------------------------------------------------------- 1 | import { Command } from ".."; 2 | import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; 3 | import type { ChatInputCommandInteraction } from "discord.js"; 4 | 5 | export default class SkipCommand extends Command { 6 | readonly name = "skip"; 7 | override readonly inVoiceChannel = true; 8 | override readonly playing = true; 9 | readonly slashBuilder = new SlashCommandBuilder().setName("skip").setDescription("Skip the current song"); 10 | async onChatInput(interaction: ChatInputCommandInteraction<"cached">) { 11 | try { 12 | const song = await this.distube.skip(interaction); 13 | interaction.reply({ 14 | embeds: [ 15 | new EmbedBuilder() 16 | .setColor("Blurple") 17 | .setTitle("DisTube") 18 | .setDescription(`Skipped to \`${song.name || song.url}\``), 19 | ], 20 | }); 21 | } catch (e) { 22 | console.error(e); 23 | interaction.reply({ 24 | embeds: [new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription(`Error: \`${e}\``)], 25 | }); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/commands/skipto.ts: -------------------------------------------------------------------------------- 1 | import { Command } from ".."; 2 | import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; 3 | import type { ChatInputCommandInteraction } from "discord.js"; 4 | 5 | export default class SkipToCommand extends Command { 6 | readonly name = "skipto"; 7 | override readonly inVoiceChannel = true; 8 | override readonly playing = true; 9 | readonly slashBuilder = new SlashCommandBuilder() 10 | .setName("skipto") 11 | .setDescription("Skip to a specific position") 12 | .addIntegerOption(option => option.setName("position").setDescription("Position to skip to").setRequired(true)); 13 | async onChatInput(interaction: ChatInputCommandInteraction<"cached">) { 14 | try { 15 | const position = interaction.options.getInteger("position", true); 16 | const song = await this.distube.jump(interaction, position); 17 | interaction.reply({ 18 | embeds: [ 19 | new EmbedBuilder() 20 | .setColor("Blurple") 21 | .setTitle("DisTube") 22 | .setDescription(`Skipped to \`${song.name || song.url}\``), 23 | ], 24 | }); 25 | } catch (e) { 26 | console.error(e); 27 | interaction.reply({ 28 | embeds: [new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription(`Error: \`${e}\``)], 29 | }); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/commands/stop.ts: -------------------------------------------------------------------------------- 1 | import { Command } from ".."; 2 | import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; 3 | import type { ChatInputCommandInteraction } from "discord.js"; 4 | 5 | export default class StopCommand extends Command { 6 | readonly name = "stop"; 7 | override readonly inVoiceChannel = true; 8 | override readonly playing = true; 9 | readonly slashBuilder = new SlashCommandBuilder().setName("stop").setDescription("Stop the playing queue"); 10 | async onChatInput(interaction: ChatInputCommandInteraction<"cached">) { 11 | try { 12 | await this.distube.stop(interaction); 13 | interaction.reply({ 14 | embeds: [new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription("Stopped!")], 15 | }); 16 | } catch (e) { 17 | console.error(e); 18 | interaction.reply({ 19 | embeds: [new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription(`Error: \`${e}\``)], 20 | }); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/commands/volume.ts: -------------------------------------------------------------------------------- 1 | import { Command } from ".."; 2 | import { EmbedBuilder, SlashCommandBuilder } from "discord.js"; 3 | import type { ChatInputCommandInteraction } from "discord.js"; 4 | 5 | export default class VolumeCommand extends Command { 6 | readonly name = "volume"; 7 | override readonly inVoiceChannel = true; 8 | override readonly playing = true; 9 | readonly slashBuilder = new SlashCommandBuilder() 10 | .setName("volume") 11 | .setDescription("Set the volume") 12 | .addNumberOption(option => 13 | option.setName("volume").setDescription("The volume to set").setMinValue(0).setMaxValue(1000).setRequired(true), 14 | ); 15 | async onChatInput(interaction: ChatInputCommandInteraction<"cached">) { 16 | const volume = interaction.options.getNumber("volume", true); 17 | this.distube.setVolume(interaction, volume); 18 | await interaction.reply({ 19 | embeds: [ 20 | new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription(`Set volume to \`${volume}\``), 21 | ], 22 | }); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/events/client/error.ts: -------------------------------------------------------------------------------- 1 | import { ClientEvent } from "../.."; 2 | 3 | export default class ErrorEvent extends ClientEvent<"error"> { 4 | readonly name = "error"; 5 | run(error: Error) { 6 | console.error(error); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/events/client/interactionCreate.ts: -------------------------------------------------------------------------------- 1 | import { ClientEvent } from "../.."; 2 | import type { Interaction } from "discord.js"; 3 | 4 | export default class InteractionCreateEvent extends ClientEvent<"interactionCreate"> { 5 | readonly name = "interactionCreate"; 6 | async run(interaction: Interaction) { 7 | if (!interaction.inCachedGuild()) return; 8 | if (interaction.isChatInputCommand()) { 9 | const cmd = this.client.commands.get(interaction.commandName); 10 | if (!cmd) return; 11 | if (cmd.inVoiceChannel && !interaction.member.voice.channel) { 12 | interaction.reply("You must be in a voice channel to use this command!"); 13 | return; 14 | } 15 | if (cmd.playing && !this.distube.getQueue(interaction)) { 16 | interaction.reply("You must play something before using this command!"); 17 | return; 18 | } 19 | await cmd.onChatInput(interaction); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/events/client/ready.ts: -------------------------------------------------------------------------------- 1 | import { ClientEvent } from "../.."; 2 | import { type Client, Routes } from "discord.js"; 3 | 4 | export default class ErrorEvent extends ClientEvent<"ready"> { 5 | readonly name = "ready"; 6 | async run(c: Client) { 7 | console.log(`Logged in as ${c.user.tag}!`); 8 | 9 | await c.rest.put(Routes.applicationCommands(c.user.id), { 10 | body: this.client.commands.map(c => c.slashBuilder.toJSON()), 11 | }); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/events/distube/addList.ts: -------------------------------------------------------------------------------- 1 | import { Events } from "distube"; 2 | import { EmbedBuilder } from "discord.js"; 3 | import { DisTubeEvent, type Metadata } from "../.."; 4 | import type { Playlist, Queue } from "distube"; 5 | 6 | export default class AddListEvent extends DisTubeEvent { 7 | readonly name = Events.ADD_LIST; 8 | run(_queue: Queue, playlist: Playlist) { 9 | playlist.metadata.interaction.editReply({ 10 | embeds: [ 11 | new EmbedBuilder() 12 | .setColor("Blurple") 13 | .setTitle("DisTube") 14 | .setDescription(`Added \`${playlist.name}\` (${playlist.songs.length} songs) to the queue`), 15 | ], 16 | }); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/events/distube/addSong.ts: -------------------------------------------------------------------------------- 1 | import { Events } from "distube"; 2 | import { EmbedBuilder } from "discord.js"; 3 | import { DisTubeEvent, type Metadata } from "../.."; 4 | import type { Queue, Song } from "distube"; 5 | 6 | export default class AddSongEvent extends DisTubeEvent { 7 | readonly name = Events.ADD_SONG; 8 | run(_queue: Queue, song: Song) { 9 | song.metadata.interaction.editReply({ 10 | embeds: [ 11 | new EmbedBuilder() 12 | .setColor("Blurple") 13 | .setTitle("DisTube") 14 | .setDescription(`Added \`${song.name}\` to the queue`), 15 | ], 16 | }); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/events/distube/debug.ts: -------------------------------------------------------------------------------- 1 | import { Events } from "distube"; 2 | import { DisTubeEvent } from "../.."; 3 | 4 | export default class DebugEvent extends DisTubeEvent { 5 | readonly name = Events.DEBUG; 6 | run(message: string) { 7 | console.log(message); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/events/distube/error.ts: -------------------------------------------------------------------------------- 1 | import { Events } from "distube"; 2 | import { EmbedBuilder } from "discord.js"; 3 | import { DisTubeEvent, type Metadata, followUp } from "../.."; 4 | import type { Queue, Song } from "distube"; 5 | 6 | export default class ErrorEvent extends DisTubeEvent { 7 | readonly name = Events.ERROR; 8 | async run(error: Error, queue: Queue, song?: Song) { 9 | if (song) { 10 | await followUp( 11 | song.metadata.interaction, 12 | new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription(`Error: \`${error.message}\``), 13 | queue.textChannel!, 14 | ); 15 | } else if (queue.textChannel) { 16 | await queue.textChannel.send({ 17 | embeds: [ 18 | new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription(`Error: \`${error.message}\``), 19 | ], 20 | }); 21 | } else { 22 | console.error(error); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/events/distube/ffmpegDebug.ts: -------------------------------------------------------------------------------- 1 | import { Events } from "distube"; 2 | import { DisTubeEvent } from "../.."; 3 | 4 | export default class FFmpegDebugEvent extends DisTubeEvent { 5 | readonly name = Events.FFMPEG_DEBUG; 6 | run(message: string) { 7 | console.log(message); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/events/distube/finish.ts: -------------------------------------------------------------------------------- 1 | import { DisTubeEvent } from "../.."; 2 | import { EmbedBuilder } from "discord.js"; 3 | import { Events, type Queue } from "distube"; 4 | 5 | export default class FinishEvent extends DisTubeEvent { 6 | readonly name = Events.FINISH; 7 | run(queue: Queue) { 8 | queue.textChannel?.send({ 9 | embeds: [new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription("Finished!")], 10 | }); 11 | queue.voice.leave(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/events/distube/initQueue.ts: -------------------------------------------------------------------------------- 1 | import { DisTubeEvent } from "../.."; 2 | import { Events, type Queue } from "distube"; 3 | 4 | export default class InitQueueEvent extends DisTubeEvent { 5 | readonly name = Events.INIT_QUEUE; 6 | run(queue: Queue) { 7 | queue.volume = 100; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/events/distube/noRelated.ts: -------------------------------------------------------------------------------- 1 | import { Events } from "distube"; 2 | import { DisTubeEvent } from "../.."; 3 | import { Colors, EmbedBuilder } from "discord.js"; 4 | import type { DisTubeError, Queue } from "distube"; 5 | 6 | export default class NoRelatedEvent extends DisTubeEvent { 7 | readonly name = Events.NO_RELATED; 8 | run(queue: Queue, error: DisTubeError) { 9 | queue.textChannel?.send({ 10 | embeds: [new EmbedBuilder().setColor(Colors.Red).setTitle("DisTube").setDescription(error.message)], 11 | }); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/events/distube/playSong.ts: -------------------------------------------------------------------------------- 1 | import { Events } from "distube"; 2 | import { EmbedBuilder } from "discord.js"; 3 | import { DisTubeEvent, type Metadata, followUp } from "../.."; 4 | import type { Queue, Song } from "distube"; 5 | 6 | export default class PlaySongEvent extends DisTubeEvent { 7 | readonly name = Events.PLAY_SONG; 8 | run(queue: Queue, song: Song) { 9 | followUp( 10 | song.metadata.interaction, 11 | new EmbedBuilder().setColor("Blurple").setTitle("DisTube").setDescription(`Playing: \`${song.name}\``), 12 | queue.textChannel!, 13 | ).catch(console.error); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { join } from "path"; 2 | import { readdirSync } from "fs"; 3 | import { DisTube } from "distube"; 4 | import { FilePlugin } from "@distube/file"; 5 | import { YouTubePlugin } from "@distube/youtube"; 6 | import { SpotifyPlugin } from "@distube/spotify"; 7 | import { Client, Collection, GatewayIntentBits } from "discord.js"; 8 | import type { Awaitable, DisTubeEvents } from "distube"; 9 | import type { 10 | ChatInputCommandInteraction, 11 | ClientEvents, 12 | ClientOptions, 13 | ContextMenuCommandBuilder, 14 | EmbedBuilder, 15 | GuildTextBasedChannel, 16 | SlashCommandBuilder, 17 | SlashCommandOptionsOnlyBuilder, 18 | SlashCommandSubcommandsOnlyBuilder, 19 | } from "discord.js"; 20 | import SoundCloudPlugin from "@distube/soundcloud"; 21 | import DeezerPlugin from "@distube/deezer"; 22 | import { DirectLinkPlugin } from "@distube/direct-link"; 23 | 24 | const TOKEN = process.env.TOKEN; 25 | 26 | export const followUp = async ( 27 | interaction: ChatInputCommandInteraction, 28 | embed: EmbedBuilder, 29 | textChannel: GuildTextBasedChannel, 30 | ) => { 31 | // Follow up interaction if created time is less than 15 minutes 32 | if (Date.now() - interaction.createdTimestamp < 15 * 60 * 1000) { 33 | await interaction.followUp({ embeds: [embed] }); 34 | } else { 35 | await textChannel.send({ embeds: [embed] }); 36 | } 37 | }; 38 | 39 | class DisTubeClient extends Client { 40 | distube = new DisTube(this, { 41 | plugins: [ 42 | new YouTubePlugin(), 43 | new SoundCloudPlugin(), 44 | new SpotifyPlugin(), 45 | new DeezerPlugin(), 46 | new DirectLinkPlugin(), 47 | new FilePlugin(), 48 | ], 49 | emitAddListWhenCreatingQueue: true, 50 | emitAddSongWhenCreatingQueue: true, 51 | }); 52 | commands = new Collection(); 53 | 54 | constructor(options: ClientOptions) { 55 | super(options); 56 | 57 | readdirSync(join(__dirname, "events", "client")).forEach(this.loadEvent.bind(this)); 58 | readdirSync(join(__dirname, "events", "distube")).forEach(this.loadDisTubeEvent.bind(this)); 59 | readdirSync(join(__dirname, "commands")).forEach(this.loadCommand.bind(this)); 60 | } 61 | async loadCommand(name: string) { 62 | try { 63 | const CMD = await import(`./commands/${name}`); 64 | const cmd: Command = new CMD.default(this); 65 | this.commands.set(cmd.name, cmd); 66 | console.log(`Loaded command: ${cmd.name}.`); 67 | return false; 68 | } catch (err: any) { 69 | const e = `Unable to load command ${name}: ${err.stack || err}`; 70 | console.error(e); 71 | return e; 72 | } 73 | } 74 | async loadEvent(name: string) { 75 | try { 76 | const E = await import(`./events/client/${name}`); 77 | const event = new E.default(this); 78 | const fn = event.run.bind(event); 79 | this.on(event.name, fn); 80 | console.log(`Listened client event: ${event.name}.`); 81 | return false; 82 | } catch (err: any) { 83 | const e = `Unable to listen "${name}" event: ${err.stack || err}`; 84 | console.error(e); 85 | return e; 86 | } 87 | } 88 | 89 | async loadDisTubeEvent(name: string) { 90 | try { 91 | const E = await import(`./events/distube/${name}`); 92 | const event = new E.default(this); 93 | const fn = event.run.bind(event); 94 | this.distube.on(event.name, fn); 95 | console.log(`Listened DisTube event: ${event.name}.`); 96 | return false; 97 | } catch (err: any) { 98 | const e = `Unable to listen "${name}" event: ${err.stack || err}`; 99 | console.error(e); 100 | return e; 101 | } 102 | } 103 | } 104 | 105 | const client = new DisTubeClient({ 106 | intents: [ 107 | GatewayIntentBits.Guilds, 108 | GatewayIntentBits.GuildMessages, 109 | GatewayIntentBits.GuildVoiceStates, 110 | GatewayIntentBits.MessageContent, 111 | ], 112 | }); 113 | 114 | client.login(TOKEN); 115 | 116 | export interface Metadata { 117 | interaction: ChatInputCommandInteraction<"cached">; 118 | // Example for strict typing 119 | } 120 | 121 | export abstract class Command { 122 | abstract readonly name: string; 123 | abstract readonly slashBuilder: 124 | | SlashCommandBuilder 125 | | ContextMenuCommandBuilder 126 | | SlashCommandSubcommandsOnlyBuilder 127 | | SlashCommandOptionsOnlyBuilder; 128 | readonly client: DisTubeClient; 129 | readonly inVoiceChannel: boolean = false; 130 | readonly playing: boolean = false; 131 | constructor(client: DisTubeClient) { 132 | this.client = client; 133 | } 134 | get distube() { 135 | return this.client.distube; 136 | } 137 | abstract onChatInput(interaction: ChatInputCommandInteraction<"cached">): Awaitable; 138 | } 139 | 140 | export abstract class ClientEvent { 141 | client: DisTubeClient; 142 | abstract readonly name: T; 143 | constructor(client: DisTubeClient) { 144 | this.client = client; 145 | } 146 | 147 | get distube() { 148 | return this.client.distube; 149 | } 150 | 151 | abstract run(...args: ClientEvents[T]): Awaitable; 152 | 153 | async execute(...args: ClientEvents[T]) { 154 | try { 155 | await this.run(...args); 156 | } catch (err) { 157 | console.error(err); 158 | } 159 | } 160 | } 161 | 162 | export abstract class DisTubeEvent { 163 | client: DisTubeClient; 164 | abstract readonly name: T; 165 | constructor(client: DisTubeClient) { 166 | this.client = client; 167 | } 168 | 169 | get distube() { 170 | return this.client.distube; 171 | } 172 | 173 | abstract run(...args: DisTubeEvents[T]): Awaitable; 174 | 175 | async execute(...args: DisTubeEvents[T]) { 176 | try { 177 | await this.run(...args); 178 | } catch (err) { 179 | console.error(err); 180 | } 181 | } 182 | } 183 | -------------------------------------------------------------------------------- /tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true 5 | }, 6 | "include": [ 7 | "**/*.ts", 8 | "**/*.tsx", 9 | "**/*.js", 10 | "**/*.mjs", 11 | "**/*.jsx", 12 | "**/*.test.ts", 13 | "**/*.test.js", 14 | "**/*.test.mjs", 15 | "**/*.spec.ts", 16 | "**/*.spec.js", 17 | "**/*.spec.mjs" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "CommonJS", 4 | "moduleResolution": "Node", 5 | "lib": ["ESNext"], 6 | "target": "ES2022", 7 | "emitDecoratorMetadata": false, 8 | "experimentalDecorators": true, 9 | "useDefineForClassFields": true, 10 | "allowUnreachableCode": false, 11 | "allowUnusedLabels": false, 12 | "noFallthroughCasesInSwitch": true, 13 | "noImplicitOverride": true, 14 | "noImplicitReturns": true, 15 | "noUnusedLocals": true, 16 | "noUnusedParameters": true, 17 | "strict": true, 18 | "declaration": true, 19 | "inlineSources": true, 20 | "newLine": "lf", 21 | "noEmitHelpers": true, 22 | "outDir": "dist", 23 | "preserveConstEnums": true, 24 | "removeComments": false, 25 | "sourceMap": true, 26 | "esModuleInterop": true, 27 | "forceConsistentCasingInFileNames": true, 28 | "downlevelIteration": true, 29 | "skipLibCheck": true, 30 | "isolatedModules": true 31 | }, 32 | "exclude": ["node_modules"], 33 | "include": ["src/**/*.ts"] 34 | } 35 | --------------------------------------------------------------------------------