├── .gitignore ├── environment.d.ts ├── package-lock.json ├── package.json ├── src ├── commands │ └── info │ │ └── ping.ts ├── events │ ├── interactionCreate.ts │ └── ready.ts ├── index.ts ├── structures │ ├── Client.ts │ ├── Command.ts │ └── Event.ts └── typings │ ├── Command.ts │ └── client.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | .env -------------------------------------------------------------------------------- /environment.d.ts: -------------------------------------------------------------------------------- 1 | declare global { 2 | namespace NodeJS { 3 | interface ProcessEnv { 4 | botToken: string; 5 | guildId: string; 6 | environment: "dev" | "prod" | "debug"; 7 | } 8 | } 9 | } 10 | 11 | export {}; 12 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typescript-bot", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "typescript-bot", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "discord.js": "^13.3.1", 13 | "dotenv": "^10.0.0", 14 | "glob": "^7.2.0" 15 | }, 16 | "devDependencies": { 17 | "@types/glob": "^7.2.0", 18 | "@types/node": "^16.11.6", 19 | "ts-node": "^10.4.0", 20 | "ts-node-dev": "^1.1.8", 21 | "typescript": "^4.4.4" 22 | } 23 | }, 24 | "node_modules/@cspotcode/source-map-consumer": { 25 | "version": "0.8.0", 26 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", 27 | "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", 28 | "dev": true, 29 | "engines": { 30 | "node": ">= 12" 31 | } 32 | }, 33 | "node_modules/@cspotcode/source-map-support": { 34 | "version": "0.7.0", 35 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", 36 | "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", 37 | "dev": true, 38 | "dependencies": { 39 | "@cspotcode/source-map-consumer": "0.8.0" 40 | }, 41 | "engines": { 42 | "node": ">=12" 43 | } 44 | }, 45 | "node_modules/@discordjs/builders": { 46 | "version": "0.8.2", 47 | "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.8.2.tgz", 48 | "integrity": "sha512-/YRd11SrcluqXkKppq/FAVzLIPRVlIVmc6X8ZklspzMIHDtJ+A4W37D43SHvLdH//+NnK+SHW/WeOF4Ts54PeQ==", 49 | "dependencies": { 50 | "@sindresorhus/is": "^4.2.0", 51 | "discord-api-types": "^0.24.0", 52 | "ow": "^0.27.0", 53 | "ts-mixer": "^6.0.0", 54 | "tslib": "^2.3.1" 55 | }, 56 | "engines": { 57 | "node": ">=16.0.0", 58 | "npm": ">=7.0.0" 59 | } 60 | }, 61 | "node_modules/@discordjs/collection": { 62 | "version": "0.3.2", 63 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.3.2.tgz", 64 | "integrity": "sha512-dMjLl60b2DMqObbH1MQZKePgWhsNe49XkKBZ0W5Acl5uVV43SN414i2QfZwRI7dXAqIn8pEWD2+XXQFn9KWxqg==", 65 | "engines": { 66 | "node": ">=16.0.0", 67 | "npm": ">=7.0.0" 68 | } 69 | }, 70 | "node_modules/@discordjs/form-data": { 71 | "version": "3.0.1", 72 | "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz", 73 | "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==", 74 | "dependencies": { 75 | "asynckit": "^0.4.0", 76 | "combined-stream": "^1.0.8", 77 | "mime-types": "^2.1.12" 78 | }, 79 | "engines": { 80 | "node": ">= 6" 81 | } 82 | }, 83 | "node_modules/@sapphire/async-queue": { 84 | "version": "1.1.9", 85 | "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.9.tgz", 86 | "integrity": "sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ==", 87 | "engines": { 88 | "node": ">=v14.0.0", 89 | "npm": ">=7.0.0" 90 | } 91 | }, 92 | "node_modules/@sindresorhus/is": { 93 | "version": "4.2.0", 94 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", 95 | "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==", 96 | "engines": { 97 | "node": ">=10" 98 | }, 99 | "funding": { 100 | "url": "https://github.com/sindresorhus/is?sponsor=1" 101 | } 102 | }, 103 | "node_modules/@tsconfig/node10": { 104 | "version": "1.0.8", 105 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", 106 | "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", 107 | "dev": true 108 | }, 109 | "node_modules/@tsconfig/node12": { 110 | "version": "1.0.9", 111 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", 112 | "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", 113 | "dev": true 114 | }, 115 | "node_modules/@tsconfig/node14": { 116 | "version": "1.0.1", 117 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", 118 | "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", 119 | "dev": true 120 | }, 121 | "node_modules/@tsconfig/node16": { 122 | "version": "1.0.2", 123 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", 124 | "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", 125 | "dev": true 126 | }, 127 | "node_modules/@types/glob": { 128 | "version": "7.2.0", 129 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", 130 | "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", 131 | "dev": true, 132 | "dependencies": { 133 | "@types/minimatch": "*", 134 | "@types/node": "*" 135 | } 136 | }, 137 | "node_modules/@types/minimatch": { 138 | "version": "3.0.5", 139 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", 140 | "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", 141 | "dev": true 142 | }, 143 | "node_modules/@types/node": { 144 | "version": "16.11.6", 145 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", 146 | "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" 147 | }, 148 | "node_modules/@types/node-fetch": { 149 | "version": "2.5.12", 150 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", 151 | "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", 152 | "dependencies": { 153 | "@types/node": "*", 154 | "form-data": "^3.0.0" 155 | } 156 | }, 157 | "node_modules/@types/strip-bom": { 158 | "version": "3.0.0", 159 | "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", 160 | "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", 161 | "dev": true 162 | }, 163 | "node_modules/@types/strip-json-comments": { 164 | "version": "0.0.30", 165 | "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", 166 | "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", 167 | "dev": true 168 | }, 169 | "node_modules/@types/ws": { 170 | "version": "8.2.0", 171 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.0.tgz", 172 | "integrity": "sha512-cyeefcUCgJlEk+hk2h3N+MqKKsPViQgF5boi9TTHSK+PoR9KWBb/C5ccPcDyAqgsbAYHTwulch725DV84+pSpg==", 173 | "dependencies": { 174 | "@types/node": "*" 175 | } 176 | }, 177 | "node_modules/acorn": { 178 | "version": "8.5.0", 179 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", 180 | "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", 181 | "dev": true, 182 | "bin": { 183 | "acorn": "bin/acorn" 184 | }, 185 | "engines": { 186 | "node": ">=0.4.0" 187 | } 188 | }, 189 | "node_modules/acorn-walk": { 190 | "version": "8.2.0", 191 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 192 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 193 | "dev": true, 194 | "engines": { 195 | "node": ">=0.4.0" 196 | } 197 | }, 198 | "node_modules/anymatch": { 199 | "version": "3.1.2", 200 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 201 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 202 | "dev": true, 203 | "dependencies": { 204 | "normalize-path": "^3.0.0", 205 | "picomatch": "^2.0.4" 206 | }, 207 | "engines": { 208 | "node": ">= 8" 209 | } 210 | }, 211 | "node_modules/arg": { 212 | "version": "4.1.3", 213 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 214 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 215 | "dev": true 216 | }, 217 | "node_modules/asynckit": { 218 | "version": "0.4.0", 219 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 220 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 221 | }, 222 | "node_modules/balanced-match": { 223 | "version": "1.0.2", 224 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 225 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 226 | }, 227 | "node_modules/binary-extensions": { 228 | "version": "2.2.0", 229 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 230 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 231 | "dev": true, 232 | "engines": { 233 | "node": ">=8" 234 | } 235 | }, 236 | "node_modules/brace-expansion": { 237 | "version": "1.1.11", 238 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 239 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 240 | "dependencies": { 241 | "balanced-match": "^1.0.0", 242 | "concat-map": "0.0.1" 243 | } 244 | }, 245 | "node_modules/braces": { 246 | "version": "3.0.2", 247 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 248 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 249 | "dev": true, 250 | "dependencies": { 251 | "fill-range": "^7.0.1" 252 | }, 253 | "engines": { 254 | "node": ">=8" 255 | } 256 | }, 257 | "node_modules/buffer-from": { 258 | "version": "1.1.2", 259 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 260 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 261 | "dev": true 262 | }, 263 | "node_modules/callsites": { 264 | "version": "3.1.0", 265 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 266 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 267 | "engines": { 268 | "node": ">=6" 269 | } 270 | }, 271 | "node_modules/chokidar": { 272 | "version": "3.5.2", 273 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", 274 | "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", 275 | "dev": true, 276 | "dependencies": { 277 | "anymatch": "~3.1.2", 278 | "braces": "~3.0.2", 279 | "glob-parent": "~5.1.2", 280 | "is-binary-path": "~2.1.0", 281 | "is-glob": "~4.0.1", 282 | "normalize-path": "~3.0.0", 283 | "readdirp": "~3.6.0" 284 | }, 285 | "engines": { 286 | "node": ">= 8.10.0" 287 | }, 288 | "optionalDependencies": { 289 | "fsevents": "~2.3.2" 290 | } 291 | }, 292 | "node_modules/combined-stream": { 293 | "version": "1.0.8", 294 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 295 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 296 | "dependencies": { 297 | "delayed-stream": "~1.0.0" 298 | }, 299 | "engines": { 300 | "node": ">= 0.8" 301 | } 302 | }, 303 | "node_modules/concat-map": { 304 | "version": "0.0.1", 305 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 306 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 307 | }, 308 | "node_modules/create-require": { 309 | "version": "1.1.1", 310 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 311 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 312 | "dev": true 313 | }, 314 | "node_modules/delayed-stream": { 315 | "version": "1.0.0", 316 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 317 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 318 | "engines": { 319 | "node": ">=0.4.0" 320 | } 321 | }, 322 | "node_modules/diff": { 323 | "version": "4.0.2", 324 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 325 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 326 | "dev": true, 327 | "engines": { 328 | "node": ">=0.3.1" 329 | } 330 | }, 331 | "node_modules/discord-api-types": { 332 | "version": "0.24.0", 333 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.24.0.tgz", 334 | "integrity": "sha512-X0uA2a92cRjowUEXpLZIHWl4jiX1NsUpDhcEOpa1/hpO1vkaokgZ8kkPtPih9hHth5UVQ3mHBu/PpB4qjyfJ4A==", 335 | "engines": { 336 | "node": ">=12" 337 | } 338 | }, 339 | "node_modules/discord.js": { 340 | "version": "13.3.1", 341 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.3.1.tgz", 342 | "integrity": "sha512-zn4G8tL5+tMV00+0aSsVYNYcIfMSdT2g0nudKny+Ikd+XKv7m6bqI7n3Vji0GIRqXDr5ArPaw+iYFM2I1Iw3vg==", 343 | "dependencies": { 344 | "@discordjs/builders": "^0.8.1", 345 | "@discordjs/collection": "^0.3.2", 346 | "@discordjs/form-data": "^3.0.1", 347 | "@sapphire/async-queue": "^1.1.8", 348 | "@types/node-fetch": "^2.5.12", 349 | "@types/ws": "^8.2.0", 350 | "discord-api-types": "^0.24.0", 351 | "node-fetch": "^2.6.1", 352 | "ws": "^8.2.3" 353 | }, 354 | "engines": { 355 | "node": ">=16.6.0", 356 | "npm": ">=7.0.0" 357 | } 358 | }, 359 | "node_modules/dot-prop": { 360 | "version": "6.0.1", 361 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", 362 | "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", 363 | "dependencies": { 364 | "is-obj": "^2.0.0" 365 | }, 366 | "engines": { 367 | "node": ">=10" 368 | }, 369 | "funding": { 370 | "url": "https://github.com/sponsors/sindresorhus" 371 | } 372 | }, 373 | "node_modules/dotenv": { 374 | "version": "10.0.0", 375 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", 376 | "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", 377 | "engines": { 378 | "node": ">=10" 379 | } 380 | }, 381 | "node_modules/dynamic-dedupe": { 382 | "version": "0.3.0", 383 | "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", 384 | "integrity": "sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE=", 385 | "dev": true, 386 | "dependencies": { 387 | "xtend": "^4.0.0" 388 | } 389 | }, 390 | "node_modules/fill-range": { 391 | "version": "7.0.1", 392 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 393 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 394 | "dev": true, 395 | "dependencies": { 396 | "to-regex-range": "^5.0.1" 397 | }, 398 | "engines": { 399 | "node": ">=8" 400 | } 401 | }, 402 | "node_modules/form-data": { 403 | "version": "3.0.1", 404 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", 405 | "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", 406 | "dependencies": { 407 | "asynckit": "^0.4.0", 408 | "combined-stream": "^1.0.8", 409 | "mime-types": "^2.1.12" 410 | }, 411 | "engines": { 412 | "node": ">= 6" 413 | } 414 | }, 415 | "node_modules/fs.realpath": { 416 | "version": "1.0.0", 417 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 418 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 419 | }, 420 | "node_modules/fsevents": { 421 | "version": "2.3.2", 422 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 423 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 424 | "dev": true, 425 | "hasInstallScript": true, 426 | "optional": true, 427 | "os": [ 428 | "darwin" 429 | ], 430 | "engines": { 431 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 432 | } 433 | }, 434 | "node_modules/function-bind": { 435 | "version": "1.1.1", 436 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 437 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 438 | "dev": true 439 | }, 440 | "node_modules/glob": { 441 | "version": "7.2.0", 442 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 443 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 444 | "dependencies": { 445 | "fs.realpath": "^1.0.0", 446 | "inflight": "^1.0.4", 447 | "inherits": "2", 448 | "minimatch": "^3.0.4", 449 | "once": "^1.3.0", 450 | "path-is-absolute": "^1.0.0" 451 | }, 452 | "engines": { 453 | "node": "*" 454 | }, 455 | "funding": { 456 | "url": "https://github.com/sponsors/isaacs" 457 | } 458 | }, 459 | "node_modules/glob-parent": { 460 | "version": "5.1.2", 461 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 462 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 463 | "dev": true, 464 | "dependencies": { 465 | "is-glob": "^4.0.1" 466 | }, 467 | "engines": { 468 | "node": ">= 6" 469 | } 470 | }, 471 | "node_modules/has": { 472 | "version": "1.0.3", 473 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 474 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 475 | "dev": true, 476 | "dependencies": { 477 | "function-bind": "^1.1.1" 478 | }, 479 | "engines": { 480 | "node": ">= 0.4.0" 481 | } 482 | }, 483 | "node_modules/inflight": { 484 | "version": "1.0.6", 485 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 486 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 487 | "dependencies": { 488 | "once": "^1.3.0", 489 | "wrappy": "1" 490 | } 491 | }, 492 | "node_modules/inherits": { 493 | "version": "2.0.4", 494 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 495 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 496 | }, 497 | "node_modules/is-binary-path": { 498 | "version": "2.1.0", 499 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 500 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 501 | "dev": true, 502 | "dependencies": { 503 | "binary-extensions": "^2.0.0" 504 | }, 505 | "engines": { 506 | "node": ">=8" 507 | } 508 | }, 509 | "node_modules/is-core-module": { 510 | "version": "2.8.0", 511 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", 512 | "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", 513 | "dev": true, 514 | "dependencies": { 515 | "has": "^1.0.3" 516 | }, 517 | "funding": { 518 | "url": "https://github.com/sponsors/ljharb" 519 | } 520 | }, 521 | "node_modules/is-extglob": { 522 | "version": "2.1.1", 523 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 524 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 525 | "dev": true, 526 | "engines": { 527 | "node": ">=0.10.0" 528 | } 529 | }, 530 | "node_modules/is-glob": { 531 | "version": "4.0.3", 532 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 533 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 534 | "dev": true, 535 | "dependencies": { 536 | "is-extglob": "^2.1.1" 537 | }, 538 | "engines": { 539 | "node": ">=0.10.0" 540 | } 541 | }, 542 | "node_modules/is-number": { 543 | "version": "7.0.0", 544 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 545 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 546 | "dev": true, 547 | "engines": { 548 | "node": ">=0.12.0" 549 | } 550 | }, 551 | "node_modules/is-obj": { 552 | "version": "2.0.0", 553 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", 554 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", 555 | "engines": { 556 | "node": ">=8" 557 | } 558 | }, 559 | "node_modules/lodash.isequal": { 560 | "version": "4.5.0", 561 | "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", 562 | "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" 563 | }, 564 | "node_modules/make-error": { 565 | "version": "1.3.6", 566 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 567 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 568 | "dev": true 569 | }, 570 | "node_modules/mime-db": { 571 | "version": "1.50.0", 572 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", 573 | "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", 574 | "engines": { 575 | "node": ">= 0.6" 576 | } 577 | }, 578 | "node_modules/mime-types": { 579 | "version": "2.1.33", 580 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", 581 | "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", 582 | "dependencies": { 583 | "mime-db": "1.50.0" 584 | }, 585 | "engines": { 586 | "node": ">= 0.6" 587 | } 588 | }, 589 | "node_modules/minimatch": { 590 | "version": "3.0.4", 591 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 592 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 593 | "dependencies": { 594 | "brace-expansion": "^1.1.7" 595 | }, 596 | "engines": { 597 | "node": "*" 598 | } 599 | }, 600 | "node_modules/minimist": { 601 | "version": "1.2.5", 602 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 603 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 604 | "dev": true 605 | }, 606 | "node_modules/mkdirp": { 607 | "version": "1.0.4", 608 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 609 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 610 | "dev": true, 611 | "bin": { 612 | "mkdirp": "bin/cmd.js" 613 | }, 614 | "engines": { 615 | "node": ">=10" 616 | } 617 | }, 618 | "node_modules/node-fetch": { 619 | "version": "2.6.6", 620 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", 621 | "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", 622 | "dependencies": { 623 | "whatwg-url": "^5.0.0" 624 | }, 625 | "engines": { 626 | "node": "4.x || >=6.0.0" 627 | } 628 | }, 629 | "node_modules/normalize-path": { 630 | "version": "3.0.0", 631 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 632 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 633 | "dev": true, 634 | "engines": { 635 | "node": ">=0.10.0" 636 | } 637 | }, 638 | "node_modules/once": { 639 | "version": "1.4.0", 640 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 641 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 642 | "dependencies": { 643 | "wrappy": "1" 644 | } 645 | }, 646 | "node_modules/ow": { 647 | "version": "0.27.0", 648 | "resolved": "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz", 649 | "integrity": "sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==", 650 | "dependencies": { 651 | "@sindresorhus/is": "^4.0.1", 652 | "callsites": "^3.1.0", 653 | "dot-prop": "^6.0.1", 654 | "lodash.isequal": "^4.5.0", 655 | "type-fest": "^1.2.1", 656 | "vali-date": "^1.0.0" 657 | }, 658 | "engines": { 659 | "node": ">=12" 660 | }, 661 | "funding": { 662 | "url": "https://github.com/sponsors/sindresorhus" 663 | } 664 | }, 665 | "node_modules/path-is-absolute": { 666 | "version": "1.0.1", 667 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 668 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 669 | "engines": { 670 | "node": ">=0.10.0" 671 | } 672 | }, 673 | "node_modules/path-parse": { 674 | "version": "1.0.7", 675 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 676 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 677 | "dev": true 678 | }, 679 | "node_modules/picomatch": { 680 | "version": "2.3.0", 681 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 682 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 683 | "dev": true, 684 | "engines": { 685 | "node": ">=8.6" 686 | }, 687 | "funding": { 688 | "url": "https://github.com/sponsors/jonschlinkert" 689 | } 690 | }, 691 | "node_modules/readdirp": { 692 | "version": "3.6.0", 693 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 694 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 695 | "dev": true, 696 | "dependencies": { 697 | "picomatch": "^2.2.1" 698 | }, 699 | "engines": { 700 | "node": ">=8.10.0" 701 | } 702 | }, 703 | "node_modules/resolve": { 704 | "version": "1.20.0", 705 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 706 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 707 | "dev": true, 708 | "dependencies": { 709 | "is-core-module": "^2.2.0", 710 | "path-parse": "^1.0.6" 711 | }, 712 | "funding": { 713 | "url": "https://github.com/sponsors/ljharb" 714 | } 715 | }, 716 | "node_modules/rimraf": { 717 | "version": "2.7.1", 718 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 719 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 720 | "dev": true, 721 | "dependencies": { 722 | "glob": "^7.1.3" 723 | }, 724 | "bin": { 725 | "rimraf": "bin.js" 726 | } 727 | }, 728 | "node_modules/source-map": { 729 | "version": "0.6.1", 730 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 731 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 732 | "dev": true, 733 | "engines": { 734 | "node": ">=0.10.0" 735 | } 736 | }, 737 | "node_modules/source-map-support": { 738 | "version": "0.5.20", 739 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", 740 | "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", 741 | "dev": true, 742 | "dependencies": { 743 | "buffer-from": "^1.0.0", 744 | "source-map": "^0.6.0" 745 | } 746 | }, 747 | "node_modules/strip-bom": { 748 | "version": "3.0.0", 749 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 750 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 751 | "dev": true, 752 | "engines": { 753 | "node": ">=4" 754 | } 755 | }, 756 | "node_modules/strip-json-comments": { 757 | "version": "2.0.1", 758 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 759 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 760 | "dev": true, 761 | "engines": { 762 | "node": ">=0.10.0" 763 | } 764 | }, 765 | "node_modules/to-regex-range": { 766 | "version": "5.0.1", 767 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 768 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 769 | "dev": true, 770 | "dependencies": { 771 | "is-number": "^7.0.0" 772 | }, 773 | "engines": { 774 | "node": ">=8.0" 775 | } 776 | }, 777 | "node_modules/tr46": { 778 | "version": "0.0.3", 779 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 780 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 781 | }, 782 | "node_modules/tree-kill": { 783 | "version": "1.2.2", 784 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", 785 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", 786 | "dev": true, 787 | "bin": { 788 | "tree-kill": "cli.js" 789 | } 790 | }, 791 | "node_modules/ts-mixer": { 792 | "version": "6.0.0", 793 | "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz", 794 | "integrity": "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ==" 795 | }, 796 | "node_modules/ts-node": { 797 | "version": "10.4.0", 798 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", 799 | "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", 800 | "dev": true, 801 | "dependencies": { 802 | "@cspotcode/source-map-support": "0.7.0", 803 | "@tsconfig/node10": "^1.0.7", 804 | "@tsconfig/node12": "^1.0.7", 805 | "@tsconfig/node14": "^1.0.0", 806 | "@tsconfig/node16": "^1.0.2", 807 | "acorn": "^8.4.1", 808 | "acorn-walk": "^8.1.1", 809 | "arg": "^4.1.0", 810 | "create-require": "^1.1.0", 811 | "diff": "^4.0.1", 812 | "make-error": "^1.1.1", 813 | "yn": "3.1.1" 814 | }, 815 | "bin": { 816 | "ts-node": "dist/bin.js", 817 | "ts-node-cwd": "dist/bin-cwd.js", 818 | "ts-node-script": "dist/bin-script.js", 819 | "ts-node-transpile-only": "dist/bin-transpile.js", 820 | "ts-script": "dist/bin-script-deprecated.js" 821 | }, 822 | "peerDependencies": { 823 | "@swc/core": ">=1.2.50", 824 | "@swc/wasm": ">=1.2.50", 825 | "@types/node": "*", 826 | "typescript": ">=2.7" 827 | }, 828 | "peerDependenciesMeta": { 829 | "@swc/core": { 830 | "optional": true 831 | }, 832 | "@swc/wasm": { 833 | "optional": true 834 | } 835 | } 836 | }, 837 | "node_modules/ts-node-dev": { 838 | "version": "1.1.8", 839 | "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-1.1.8.tgz", 840 | "integrity": "sha512-Q/m3vEwzYwLZKmV6/0VlFxcZzVV/xcgOt+Tx/VjaaRHyiBcFlV0541yrT09QjzzCxlDZ34OzKjrFAynlmtflEg==", 841 | "dev": true, 842 | "dependencies": { 843 | "chokidar": "^3.5.1", 844 | "dynamic-dedupe": "^0.3.0", 845 | "minimist": "^1.2.5", 846 | "mkdirp": "^1.0.4", 847 | "resolve": "^1.0.0", 848 | "rimraf": "^2.6.1", 849 | "source-map-support": "^0.5.12", 850 | "tree-kill": "^1.2.2", 851 | "ts-node": "^9.0.0", 852 | "tsconfig": "^7.0.0" 853 | }, 854 | "bin": { 855 | "ts-node-dev": "lib/bin.js", 856 | "tsnd": "lib/bin.js" 857 | }, 858 | "engines": { 859 | "node": ">=0.8.0" 860 | }, 861 | "peerDependencies": { 862 | "node-notifier": "*", 863 | "typescript": "*" 864 | }, 865 | "peerDependenciesMeta": { 866 | "node-notifier": { 867 | "optional": true 868 | } 869 | } 870 | }, 871 | "node_modules/ts-node-dev/node_modules/ts-node": { 872 | "version": "9.1.1", 873 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", 874 | "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", 875 | "dev": true, 876 | "dependencies": { 877 | "arg": "^4.1.0", 878 | "create-require": "^1.1.0", 879 | "diff": "^4.0.1", 880 | "make-error": "^1.1.1", 881 | "source-map-support": "^0.5.17", 882 | "yn": "3.1.1" 883 | }, 884 | "bin": { 885 | "ts-node": "dist/bin.js", 886 | "ts-node-script": "dist/bin-script.js", 887 | "ts-node-transpile-only": "dist/bin-transpile.js", 888 | "ts-script": "dist/bin-script-deprecated.js" 889 | }, 890 | "engines": { 891 | "node": ">=10.0.0" 892 | }, 893 | "peerDependencies": { 894 | "typescript": ">=2.7" 895 | } 896 | }, 897 | "node_modules/tsconfig": { 898 | "version": "7.0.0", 899 | "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", 900 | "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", 901 | "dev": true, 902 | "dependencies": { 903 | "@types/strip-bom": "^3.0.0", 904 | "@types/strip-json-comments": "0.0.30", 905 | "strip-bom": "^3.0.0", 906 | "strip-json-comments": "^2.0.0" 907 | } 908 | }, 909 | "node_modules/tslib": { 910 | "version": "2.3.1", 911 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", 912 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" 913 | }, 914 | "node_modules/type-fest": { 915 | "version": "1.4.0", 916 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", 917 | "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", 918 | "engines": { 919 | "node": ">=10" 920 | }, 921 | "funding": { 922 | "url": "https://github.com/sponsors/sindresorhus" 923 | } 924 | }, 925 | "node_modules/typescript": { 926 | "version": "4.4.4", 927 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", 928 | "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", 929 | "dev": true, 930 | "bin": { 931 | "tsc": "bin/tsc", 932 | "tsserver": "bin/tsserver" 933 | }, 934 | "engines": { 935 | "node": ">=4.2.0" 936 | } 937 | }, 938 | "node_modules/vali-date": { 939 | "version": "1.0.0", 940 | "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", 941 | "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", 942 | "engines": { 943 | "node": ">=0.10.0" 944 | } 945 | }, 946 | "node_modules/webidl-conversions": { 947 | "version": "3.0.1", 948 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 949 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 950 | }, 951 | "node_modules/whatwg-url": { 952 | "version": "5.0.0", 953 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 954 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 955 | "dependencies": { 956 | "tr46": "~0.0.3", 957 | "webidl-conversions": "^3.0.0" 958 | } 959 | }, 960 | "node_modules/wrappy": { 961 | "version": "1.0.2", 962 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 963 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 964 | }, 965 | "node_modules/ws": { 966 | "version": "8.2.3", 967 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", 968 | "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", 969 | "engines": { 970 | "node": ">=10.0.0" 971 | }, 972 | "peerDependencies": { 973 | "bufferutil": "^4.0.1", 974 | "utf-8-validate": "^5.0.2" 975 | }, 976 | "peerDependenciesMeta": { 977 | "bufferutil": { 978 | "optional": true 979 | }, 980 | "utf-8-validate": { 981 | "optional": true 982 | } 983 | } 984 | }, 985 | "node_modules/xtend": { 986 | "version": "4.0.2", 987 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 988 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 989 | "dev": true, 990 | "engines": { 991 | "node": ">=0.4" 992 | } 993 | }, 994 | "node_modules/yn": { 995 | "version": "3.1.1", 996 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 997 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 998 | "dev": true, 999 | "engines": { 1000 | "node": ">=6" 1001 | } 1002 | } 1003 | }, 1004 | "dependencies": { 1005 | "@cspotcode/source-map-consumer": { 1006 | "version": "0.8.0", 1007 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", 1008 | "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", 1009 | "dev": true 1010 | }, 1011 | "@cspotcode/source-map-support": { 1012 | "version": "0.7.0", 1013 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", 1014 | "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", 1015 | "dev": true, 1016 | "requires": { 1017 | "@cspotcode/source-map-consumer": "0.8.0" 1018 | } 1019 | }, 1020 | "@discordjs/builders": { 1021 | "version": "0.8.2", 1022 | "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.8.2.tgz", 1023 | "integrity": "sha512-/YRd11SrcluqXkKppq/FAVzLIPRVlIVmc6X8ZklspzMIHDtJ+A4W37D43SHvLdH//+NnK+SHW/WeOF4Ts54PeQ==", 1024 | "requires": { 1025 | "@sindresorhus/is": "^4.2.0", 1026 | "discord-api-types": "^0.24.0", 1027 | "ow": "^0.27.0", 1028 | "ts-mixer": "^6.0.0", 1029 | "tslib": "^2.3.1" 1030 | } 1031 | }, 1032 | "@discordjs/collection": { 1033 | "version": "0.3.2", 1034 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.3.2.tgz", 1035 | "integrity": "sha512-dMjLl60b2DMqObbH1MQZKePgWhsNe49XkKBZ0W5Acl5uVV43SN414i2QfZwRI7dXAqIn8pEWD2+XXQFn9KWxqg==" 1036 | }, 1037 | "@discordjs/form-data": { 1038 | "version": "3.0.1", 1039 | "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz", 1040 | "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==", 1041 | "requires": { 1042 | "asynckit": "^0.4.0", 1043 | "combined-stream": "^1.0.8", 1044 | "mime-types": "^2.1.12" 1045 | } 1046 | }, 1047 | "@sapphire/async-queue": { 1048 | "version": "1.1.9", 1049 | "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.9.tgz", 1050 | "integrity": "sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ==" 1051 | }, 1052 | "@sindresorhus/is": { 1053 | "version": "4.2.0", 1054 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", 1055 | "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==" 1056 | }, 1057 | "@tsconfig/node10": { 1058 | "version": "1.0.8", 1059 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", 1060 | "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", 1061 | "dev": true 1062 | }, 1063 | "@tsconfig/node12": { 1064 | "version": "1.0.9", 1065 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", 1066 | "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", 1067 | "dev": true 1068 | }, 1069 | "@tsconfig/node14": { 1070 | "version": "1.0.1", 1071 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", 1072 | "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", 1073 | "dev": true 1074 | }, 1075 | "@tsconfig/node16": { 1076 | "version": "1.0.2", 1077 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", 1078 | "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", 1079 | "dev": true 1080 | }, 1081 | "@types/glob": { 1082 | "version": "7.2.0", 1083 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", 1084 | "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", 1085 | "dev": true, 1086 | "requires": { 1087 | "@types/minimatch": "*", 1088 | "@types/node": "*" 1089 | } 1090 | }, 1091 | "@types/minimatch": { 1092 | "version": "3.0.5", 1093 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", 1094 | "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", 1095 | "dev": true 1096 | }, 1097 | "@types/node": { 1098 | "version": "16.11.6", 1099 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", 1100 | "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" 1101 | }, 1102 | "@types/node-fetch": { 1103 | "version": "2.5.12", 1104 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", 1105 | "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", 1106 | "requires": { 1107 | "@types/node": "*", 1108 | "form-data": "^3.0.0" 1109 | } 1110 | }, 1111 | "@types/strip-bom": { 1112 | "version": "3.0.0", 1113 | "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", 1114 | "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", 1115 | "dev": true 1116 | }, 1117 | "@types/strip-json-comments": { 1118 | "version": "0.0.30", 1119 | "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", 1120 | "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", 1121 | "dev": true 1122 | }, 1123 | "@types/ws": { 1124 | "version": "8.2.0", 1125 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.0.tgz", 1126 | "integrity": "sha512-cyeefcUCgJlEk+hk2h3N+MqKKsPViQgF5boi9TTHSK+PoR9KWBb/C5ccPcDyAqgsbAYHTwulch725DV84+pSpg==", 1127 | "requires": { 1128 | "@types/node": "*" 1129 | } 1130 | }, 1131 | "acorn": { 1132 | "version": "8.5.0", 1133 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", 1134 | "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", 1135 | "dev": true 1136 | }, 1137 | "acorn-walk": { 1138 | "version": "8.2.0", 1139 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 1140 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 1141 | "dev": true 1142 | }, 1143 | "anymatch": { 1144 | "version": "3.1.2", 1145 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 1146 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 1147 | "dev": true, 1148 | "requires": { 1149 | "normalize-path": "^3.0.0", 1150 | "picomatch": "^2.0.4" 1151 | } 1152 | }, 1153 | "arg": { 1154 | "version": "4.1.3", 1155 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 1156 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 1157 | "dev": true 1158 | }, 1159 | "asynckit": { 1160 | "version": "0.4.0", 1161 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 1162 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 1163 | }, 1164 | "balanced-match": { 1165 | "version": "1.0.2", 1166 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1167 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 1168 | }, 1169 | "binary-extensions": { 1170 | "version": "2.2.0", 1171 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1172 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 1173 | "dev": true 1174 | }, 1175 | "brace-expansion": { 1176 | "version": "1.1.11", 1177 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1178 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1179 | "requires": { 1180 | "balanced-match": "^1.0.0", 1181 | "concat-map": "0.0.1" 1182 | } 1183 | }, 1184 | "braces": { 1185 | "version": "3.0.2", 1186 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1187 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1188 | "dev": true, 1189 | "requires": { 1190 | "fill-range": "^7.0.1" 1191 | } 1192 | }, 1193 | "buffer-from": { 1194 | "version": "1.1.2", 1195 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 1196 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 1197 | "dev": true 1198 | }, 1199 | "callsites": { 1200 | "version": "3.1.0", 1201 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1202 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 1203 | }, 1204 | "chokidar": { 1205 | "version": "3.5.2", 1206 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", 1207 | "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", 1208 | "dev": true, 1209 | "requires": { 1210 | "anymatch": "~3.1.2", 1211 | "braces": "~3.0.2", 1212 | "fsevents": "~2.3.2", 1213 | "glob-parent": "~5.1.2", 1214 | "is-binary-path": "~2.1.0", 1215 | "is-glob": "~4.0.1", 1216 | "normalize-path": "~3.0.0", 1217 | "readdirp": "~3.6.0" 1218 | } 1219 | }, 1220 | "combined-stream": { 1221 | "version": "1.0.8", 1222 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 1223 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 1224 | "requires": { 1225 | "delayed-stream": "~1.0.0" 1226 | } 1227 | }, 1228 | "concat-map": { 1229 | "version": "0.0.1", 1230 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1231 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 1232 | }, 1233 | "create-require": { 1234 | "version": "1.1.1", 1235 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 1236 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 1237 | "dev": true 1238 | }, 1239 | "delayed-stream": { 1240 | "version": "1.0.0", 1241 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1242 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 1243 | }, 1244 | "diff": { 1245 | "version": "4.0.2", 1246 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 1247 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 1248 | "dev": true 1249 | }, 1250 | "discord-api-types": { 1251 | "version": "0.24.0", 1252 | "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.24.0.tgz", 1253 | "integrity": "sha512-X0uA2a92cRjowUEXpLZIHWl4jiX1NsUpDhcEOpa1/hpO1vkaokgZ8kkPtPih9hHth5UVQ3mHBu/PpB4qjyfJ4A==" 1254 | }, 1255 | "discord.js": { 1256 | "version": "13.3.1", 1257 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.3.1.tgz", 1258 | "integrity": "sha512-zn4G8tL5+tMV00+0aSsVYNYcIfMSdT2g0nudKny+Ikd+XKv7m6bqI7n3Vji0GIRqXDr5ArPaw+iYFM2I1Iw3vg==", 1259 | "requires": { 1260 | "@discordjs/builders": "^0.8.1", 1261 | "@discordjs/collection": "^0.3.2", 1262 | "@discordjs/form-data": "^3.0.1", 1263 | "@sapphire/async-queue": "^1.1.8", 1264 | "@types/node-fetch": "^2.5.12", 1265 | "@types/ws": "^8.2.0", 1266 | "discord-api-types": "^0.24.0", 1267 | "node-fetch": "^2.6.1", 1268 | "ws": "^8.2.3" 1269 | } 1270 | }, 1271 | "dot-prop": { 1272 | "version": "6.0.1", 1273 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", 1274 | "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", 1275 | "requires": { 1276 | "is-obj": "^2.0.0" 1277 | } 1278 | }, 1279 | "dotenv": { 1280 | "version": "10.0.0", 1281 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", 1282 | "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" 1283 | }, 1284 | "dynamic-dedupe": { 1285 | "version": "0.3.0", 1286 | "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", 1287 | "integrity": "sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE=", 1288 | "dev": true, 1289 | "requires": { 1290 | "xtend": "^4.0.0" 1291 | } 1292 | }, 1293 | "fill-range": { 1294 | "version": "7.0.1", 1295 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1296 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1297 | "dev": true, 1298 | "requires": { 1299 | "to-regex-range": "^5.0.1" 1300 | } 1301 | }, 1302 | "form-data": { 1303 | "version": "3.0.1", 1304 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", 1305 | "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", 1306 | "requires": { 1307 | "asynckit": "^0.4.0", 1308 | "combined-stream": "^1.0.8", 1309 | "mime-types": "^2.1.12" 1310 | } 1311 | }, 1312 | "fs.realpath": { 1313 | "version": "1.0.0", 1314 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1315 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 1316 | }, 1317 | "fsevents": { 1318 | "version": "2.3.2", 1319 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1320 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1321 | "dev": true, 1322 | "optional": true 1323 | }, 1324 | "function-bind": { 1325 | "version": "1.1.1", 1326 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1327 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1328 | "dev": true 1329 | }, 1330 | "glob": { 1331 | "version": "7.2.0", 1332 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 1333 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 1334 | "requires": { 1335 | "fs.realpath": "^1.0.0", 1336 | "inflight": "^1.0.4", 1337 | "inherits": "2", 1338 | "minimatch": "^3.0.4", 1339 | "once": "^1.3.0", 1340 | "path-is-absolute": "^1.0.0" 1341 | } 1342 | }, 1343 | "glob-parent": { 1344 | "version": "5.1.2", 1345 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1346 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1347 | "dev": true, 1348 | "requires": { 1349 | "is-glob": "^4.0.1" 1350 | } 1351 | }, 1352 | "has": { 1353 | "version": "1.0.3", 1354 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1355 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1356 | "dev": true, 1357 | "requires": { 1358 | "function-bind": "^1.1.1" 1359 | } 1360 | }, 1361 | "inflight": { 1362 | "version": "1.0.6", 1363 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1364 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1365 | "requires": { 1366 | "once": "^1.3.0", 1367 | "wrappy": "1" 1368 | } 1369 | }, 1370 | "inherits": { 1371 | "version": "2.0.4", 1372 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1373 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1374 | }, 1375 | "is-binary-path": { 1376 | "version": "2.1.0", 1377 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1378 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1379 | "dev": true, 1380 | "requires": { 1381 | "binary-extensions": "^2.0.0" 1382 | } 1383 | }, 1384 | "is-core-module": { 1385 | "version": "2.8.0", 1386 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", 1387 | "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", 1388 | "dev": true, 1389 | "requires": { 1390 | "has": "^1.0.3" 1391 | } 1392 | }, 1393 | "is-extglob": { 1394 | "version": "2.1.1", 1395 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1396 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1397 | "dev": true 1398 | }, 1399 | "is-glob": { 1400 | "version": "4.0.3", 1401 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1402 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1403 | "dev": true, 1404 | "requires": { 1405 | "is-extglob": "^2.1.1" 1406 | } 1407 | }, 1408 | "is-number": { 1409 | "version": "7.0.0", 1410 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1411 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1412 | "dev": true 1413 | }, 1414 | "is-obj": { 1415 | "version": "2.0.0", 1416 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", 1417 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" 1418 | }, 1419 | "lodash.isequal": { 1420 | "version": "4.5.0", 1421 | "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", 1422 | "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" 1423 | }, 1424 | "make-error": { 1425 | "version": "1.3.6", 1426 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 1427 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 1428 | "dev": true 1429 | }, 1430 | "mime-db": { 1431 | "version": "1.50.0", 1432 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", 1433 | "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" 1434 | }, 1435 | "mime-types": { 1436 | "version": "2.1.33", 1437 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", 1438 | "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", 1439 | "requires": { 1440 | "mime-db": "1.50.0" 1441 | } 1442 | }, 1443 | "minimatch": { 1444 | "version": "3.0.4", 1445 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1446 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1447 | "requires": { 1448 | "brace-expansion": "^1.1.7" 1449 | } 1450 | }, 1451 | "minimist": { 1452 | "version": "1.2.5", 1453 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1454 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1455 | "dev": true 1456 | }, 1457 | "mkdirp": { 1458 | "version": "1.0.4", 1459 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 1460 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 1461 | "dev": true 1462 | }, 1463 | "node-fetch": { 1464 | "version": "2.6.6", 1465 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", 1466 | "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", 1467 | "requires": { 1468 | "whatwg-url": "^5.0.0" 1469 | } 1470 | }, 1471 | "normalize-path": { 1472 | "version": "3.0.0", 1473 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1474 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1475 | "dev": true 1476 | }, 1477 | "once": { 1478 | "version": "1.4.0", 1479 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1480 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1481 | "requires": { 1482 | "wrappy": "1" 1483 | } 1484 | }, 1485 | "ow": { 1486 | "version": "0.27.0", 1487 | "resolved": "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz", 1488 | "integrity": "sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==", 1489 | "requires": { 1490 | "@sindresorhus/is": "^4.0.1", 1491 | "callsites": "^3.1.0", 1492 | "dot-prop": "^6.0.1", 1493 | "lodash.isequal": "^4.5.0", 1494 | "type-fest": "^1.2.1", 1495 | "vali-date": "^1.0.0" 1496 | } 1497 | }, 1498 | "path-is-absolute": { 1499 | "version": "1.0.1", 1500 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1501 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 1502 | }, 1503 | "path-parse": { 1504 | "version": "1.0.7", 1505 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1506 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1507 | "dev": true 1508 | }, 1509 | "picomatch": { 1510 | "version": "2.3.0", 1511 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", 1512 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", 1513 | "dev": true 1514 | }, 1515 | "readdirp": { 1516 | "version": "3.6.0", 1517 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1518 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1519 | "dev": true, 1520 | "requires": { 1521 | "picomatch": "^2.2.1" 1522 | } 1523 | }, 1524 | "resolve": { 1525 | "version": "1.20.0", 1526 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 1527 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 1528 | "dev": true, 1529 | "requires": { 1530 | "is-core-module": "^2.2.0", 1531 | "path-parse": "^1.0.6" 1532 | } 1533 | }, 1534 | "rimraf": { 1535 | "version": "2.7.1", 1536 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 1537 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 1538 | "dev": true, 1539 | "requires": { 1540 | "glob": "^7.1.3" 1541 | } 1542 | }, 1543 | "source-map": { 1544 | "version": "0.6.1", 1545 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1546 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1547 | "dev": true 1548 | }, 1549 | "source-map-support": { 1550 | "version": "0.5.20", 1551 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", 1552 | "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", 1553 | "dev": true, 1554 | "requires": { 1555 | "buffer-from": "^1.0.0", 1556 | "source-map": "^0.6.0" 1557 | } 1558 | }, 1559 | "strip-bom": { 1560 | "version": "3.0.0", 1561 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1562 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 1563 | "dev": true 1564 | }, 1565 | "strip-json-comments": { 1566 | "version": "2.0.1", 1567 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1568 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 1569 | "dev": true 1570 | }, 1571 | "to-regex-range": { 1572 | "version": "5.0.1", 1573 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1574 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1575 | "dev": true, 1576 | "requires": { 1577 | "is-number": "^7.0.0" 1578 | } 1579 | }, 1580 | "tr46": { 1581 | "version": "0.0.3", 1582 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1583 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 1584 | }, 1585 | "tree-kill": { 1586 | "version": "1.2.2", 1587 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", 1588 | "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", 1589 | "dev": true 1590 | }, 1591 | "ts-mixer": { 1592 | "version": "6.0.0", 1593 | "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz", 1594 | "integrity": "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ==" 1595 | }, 1596 | "ts-node": { 1597 | "version": "10.4.0", 1598 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", 1599 | "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", 1600 | "dev": true, 1601 | "requires": { 1602 | "@cspotcode/source-map-support": "0.7.0", 1603 | "@tsconfig/node10": "^1.0.7", 1604 | "@tsconfig/node12": "^1.0.7", 1605 | "@tsconfig/node14": "^1.0.0", 1606 | "@tsconfig/node16": "^1.0.2", 1607 | "acorn": "^8.4.1", 1608 | "acorn-walk": "^8.1.1", 1609 | "arg": "^4.1.0", 1610 | "create-require": "^1.1.0", 1611 | "diff": "^4.0.1", 1612 | "make-error": "^1.1.1", 1613 | "yn": "3.1.1" 1614 | } 1615 | }, 1616 | "ts-node-dev": { 1617 | "version": "1.1.8", 1618 | "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-1.1.8.tgz", 1619 | "integrity": "sha512-Q/m3vEwzYwLZKmV6/0VlFxcZzVV/xcgOt+Tx/VjaaRHyiBcFlV0541yrT09QjzzCxlDZ34OzKjrFAynlmtflEg==", 1620 | "dev": true, 1621 | "requires": { 1622 | "chokidar": "^3.5.1", 1623 | "dynamic-dedupe": "^0.3.0", 1624 | "minimist": "^1.2.5", 1625 | "mkdirp": "^1.0.4", 1626 | "resolve": "^1.0.0", 1627 | "rimraf": "^2.6.1", 1628 | "source-map-support": "^0.5.12", 1629 | "tree-kill": "^1.2.2", 1630 | "ts-node": "^9.0.0", 1631 | "tsconfig": "^7.0.0" 1632 | }, 1633 | "dependencies": { 1634 | "ts-node": { 1635 | "version": "9.1.1", 1636 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", 1637 | "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", 1638 | "dev": true, 1639 | "requires": { 1640 | "arg": "^4.1.0", 1641 | "create-require": "^1.1.0", 1642 | "diff": "^4.0.1", 1643 | "make-error": "^1.1.1", 1644 | "source-map-support": "^0.5.17", 1645 | "yn": "3.1.1" 1646 | } 1647 | } 1648 | } 1649 | }, 1650 | "tsconfig": { 1651 | "version": "7.0.0", 1652 | "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", 1653 | "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", 1654 | "dev": true, 1655 | "requires": { 1656 | "@types/strip-bom": "^3.0.0", 1657 | "@types/strip-json-comments": "0.0.30", 1658 | "strip-bom": "^3.0.0", 1659 | "strip-json-comments": "^2.0.0" 1660 | } 1661 | }, 1662 | "tslib": { 1663 | "version": "2.3.1", 1664 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", 1665 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" 1666 | }, 1667 | "type-fest": { 1668 | "version": "1.4.0", 1669 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", 1670 | "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" 1671 | }, 1672 | "typescript": { 1673 | "version": "4.4.4", 1674 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", 1675 | "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", 1676 | "dev": true 1677 | }, 1678 | "vali-date": { 1679 | "version": "1.0.0", 1680 | "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", 1681 | "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=" 1682 | }, 1683 | "webidl-conversions": { 1684 | "version": "3.0.1", 1685 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1686 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 1687 | }, 1688 | "whatwg-url": { 1689 | "version": "5.0.0", 1690 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1691 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 1692 | "requires": { 1693 | "tr46": "~0.0.3", 1694 | "webidl-conversions": "^3.0.0" 1695 | } 1696 | }, 1697 | "wrappy": { 1698 | "version": "1.0.2", 1699 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1700 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1701 | }, 1702 | "ws": { 1703 | "version": "8.2.3", 1704 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", 1705 | "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", 1706 | "requires": {} 1707 | }, 1708 | "xtend": { 1709 | "version": "4.0.2", 1710 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1711 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 1712 | "dev": true 1713 | }, 1714 | "yn": { 1715 | "version": "3.1.1", 1716 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 1717 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 1718 | "dev": true 1719 | } 1720 | } 1721 | } 1722 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typescript-bot", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "start": "ts-node src/index.ts", 7 | "start:dev": "ts-node-dev src/index.ts", 8 | "start:prod": "node dist/index.js", 9 | "build": "tsc", 10 | "watch": "tsc -w" 11 | }, 12 | "keywords": [], 13 | "author": "", 14 | "license": "ISC", 15 | "description": "", 16 | "dependencies": { 17 | "discord.js": "^13.5.0", 18 | "dotenv": "^10.0.0", 19 | "glob": "^7.2.0" 20 | }, 21 | "devDependencies": { 22 | "@types/glob": "^7.2.0", 23 | "@types/node": "^16.11.6", 24 | "ts-node": "^10.4.0", 25 | "ts-node-dev": "^1.1.8", 26 | "typescript": "^4.4.4" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/commands/info/ping.ts: -------------------------------------------------------------------------------- 1 | import { Command } from "../../structures/Command"; 2 | 3 | export default new Command({ 4 | name: "ping", 5 | description: "replies with pong", 6 | run: async ({ interaction }) => { 7 | interaction.followUp("Pong3"); 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /src/events/interactionCreate.ts: -------------------------------------------------------------------------------- 1 | import { CommandInteractionOptionResolver } from "discord.js"; 2 | import { client } from ".."; 3 | import { Event } from "../structures/Event"; 4 | import { ExtendedInteraction } from "../typings/Command"; 5 | 6 | export default new Event("interactionCreate", async (interaction) => { 7 | // Chat Input Commands 8 | if (interaction.isCommand()) { 9 | await interaction.deferReply(); 10 | const command = client.commands.get(interaction.commandName); 11 | if (!command) 12 | return interaction.followUp("You have used a non existent command"); 13 | 14 | command.run({ 15 | args: interaction.options as CommandInteractionOptionResolver, 16 | client, 17 | interaction: interaction as ExtendedInteraction 18 | }); 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /src/events/ready.ts: -------------------------------------------------------------------------------- 1 | import { Event } from "../structures/Event"; 2 | 3 | export default new Event("ready", () => { 4 | console.log("Bot is online"); 5 | }); 6 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | import { ExtendedClient } from "./structures/Client"; 3 | 4 | export const client = new ExtendedClient(); 5 | 6 | client.start(); 7 | -------------------------------------------------------------------------------- /src/structures/Client.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ApplicationCommandDataResolvable, 3 | Client, 4 | ClientEvents, 5 | Collection 6 | } from "discord.js"; 7 | import { CommandType } from "../typings/Command"; 8 | import glob from "glob"; 9 | import { promisify } from "util"; 10 | import { RegisterCommandsOptions } from "../typings/client"; 11 | import { Event } from "./Event"; 12 | 13 | const globPromise = promisify(glob); 14 | 15 | export class ExtendedClient extends Client { 16 | commands: Collection = new Collection(); 17 | 18 | constructor() { 19 | super({ intents: 32767 }); 20 | } 21 | 22 | start() { 23 | this.registerModules(); 24 | this.login(process.env.botToken); 25 | } 26 | async importFile(filePath: string) { 27 | return (await import(filePath))?.default; 28 | } 29 | 30 | async registerCommands({ commands, guildId }: RegisterCommandsOptions) { 31 | if (guildId) { 32 | this.guilds.cache.get(guildId)?.commands.set(commands); 33 | console.log(`Registering commands to ${guildId}`); 34 | } else { 35 | this.application?.commands.set(commands); 36 | console.log("Registering global commands"); 37 | } 38 | } 39 | 40 | async registerModules() { 41 | // Commands 42 | const slashCommands: ApplicationCommandDataResolvable[] = []; 43 | const commandFiles = await globPromise( 44 | `${__dirname}/../commands/*/*{.ts,.js}` 45 | ); 46 | commandFiles.forEach(async (filePath) => { 47 | const command: CommandType = await this.importFile(filePath); 48 | if (!command.name) return; 49 | console.log(command); 50 | 51 | this.commands.set(command.name, command); 52 | slashCommands.push(command); 53 | }); 54 | 55 | this.on("ready", () => { 56 | this.registerCommands({ 57 | commands: slashCommands, 58 | guildId: process.env.guildId 59 | }); 60 | }); 61 | 62 | // Event 63 | const eventFiles = await globPromise( 64 | `${__dirname}/../events/*{.ts,.js}` 65 | ); 66 | eventFiles.forEach(async (filePath) => { 67 | const event: Event = await this.importFile( 68 | filePath 69 | ); 70 | this.on(event.event, event.run); 71 | }); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/structures/Command.ts: -------------------------------------------------------------------------------- 1 | import { CommandType } from "../typings/Command"; 2 | 3 | export class Command { 4 | constructor(commandOptions: CommandType) { 5 | Object.assign(this, commandOptions); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/structures/Event.ts: -------------------------------------------------------------------------------- 1 | import { ClientEvents } from "discord.js"; 2 | 3 | export class Event { 4 | constructor( 5 | public event: Key, 6 | public run: (...args: ClientEvents[Key]) => any 7 | ) {} 8 | } 9 | -------------------------------------------------------------------------------- /src/typings/Command.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ChatInputApplicationCommandData, 3 | CommandInteraction, 4 | CommandInteractionOptionResolver, 5 | GuildMember, 6 | PermissionResolvable 7 | } from "discord.js"; 8 | import { ExtendedClient } from "../structures/Client"; 9 | 10 | /** 11 | * { 12 | * name: "commandname", 13 | * description: "any description", 14 | * run: async({ interaction }) => { 15 | * 16 | * } 17 | * } 18 | */ 19 | export interface ExtendedInteraction extends CommandInteraction { 20 | member: GuildMember; 21 | } 22 | 23 | interface RunOptions { 24 | client: ExtendedClient; 25 | interaction: ExtendedInteraction; 26 | args: CommandInteractionOptionResolver; 27 | } 28 | 29 | type RunFunction = (options: RunOptions) => any; 30 | 31 | export type CommandType = { 32 | userPermissions?: PermissionResolvable[]; 33 | run: RunFunction; 34 | } & ChatInputApplicationCommandData; 35 | -------------------------------------------------------------------------------- /src/typings/client.ts: -------------------------------------------------------------------------------- 1 | import { ApplicationCommandDataResolvable } from "discord.js"; 2 | 3 | export interface RegisterCommandsOptions { 4 | guildId?: string; 5 | commands: ApplicationCommandDataResolvable[]; 6 | } 7 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["ESNext"], 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "target": "ESNext", 7 | "outDir": "dist", 8 | "sourceMap": false, 9 | "esModuleInterop": true, 10 | "experimentalDecorators": true, 11 | "emitDecoratorMetadata": true, 12 | "allowSyntheticDefaultImports": true, 13 | "skipLibCheck": true, 14 | "skipDefaultLibCheck": true, 15 | "resolveJsonModule": true, 16 | "importHelpers": true 17 | }, 18 | "include": ["src", "environment.d.ts"], 19 | "exclude": ["node_modules", "**/*.spec.ts"] 20 | } 21 | --------------------------------------------------------------------------------