A Deno-powered backend service for Plants vs. Zombies: MODDED. [Read-only GitHub mirror] docs.pvzm.net
express typescript expressjs plant deno jspvz pvzm game online backend plants-vs-zombies zombie javascript plants modded vs plantsvszombies openapi pvz noads
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix shitass auth not working

Clay 587e027d 82fc9106

+828 -1155
+1
deno.jsonc
··· 41 41 "express-msgpack": "npm:express-msgpack@^6.0.0", 42 42 "express-session": "npm:express-session@^1.18.0", 43 43 "express": "npm:express@^5.1.0", 44 + "memorystore": "npm:memorystore@^1.6.7", 44 45 "passport": "npm:passport@^0.7.0", 45 46 "passport-github2": "npm:passport-github2@^0.1.12", 46 47 "pako": "npm:pako@^2.1.0",
+816 -1063
deno.lock
··· 1 1 { 2 - "version": "5", 3 - "specifiers": { 4 - "jsr:@db/sqlite@*": "0.12.0", 5 - "jsr:@db/sqlite@0.12": "0.12.0", 6 - "jsr:@denosaurs/plug@1": "1.0.6", 7 - "jsr:@mathis/turnstile-verify@*": "1.2.0", 8 - "jsr:@mathis/turnstile-verify@^1.2.0": "1.2.0", 9 - "jsr:@openai/openai@*": "5.20.1", 10 - "jsr:@openai/openai@^5.20.1": "5.20.1", 11 - "jsr:@std/assert@0.217": "0.217.0", 12 - "jsr:@std/assert@0.221": "0.221.0", 13 - "jsr:@std/encoding@0.221": "0.221.0", 14 - "jsr:@std/fmt@0.221": "0.221.0", 15 - "jsr:@std/fs@*": "0.221.0", 16 - "jsr:@std/fs@0.221": "0.221.0", 17 - "jsr:@std/fs@^1.0.19": "1.0.19", 18 - "jsr:@std/internal@^1.0.10": "1.0.10", 19 - "jsr:@std/internal@^1.0.9": "1.0.10", 20 - "jsr:@std/json@*": "1.0.2", 21 - "jsr:@std/path@*": "0.221.0", 22 - "jsr:@std/path@0.217": "0.217.0", 23 - "jsr:@std/path@0.221": "0.221.0", 24 - "jsr:@std/path@^1.1.1": "1.1.2", 25 - "jsr:@std/streams@^1.0.9": "1.0.9", 26 - "npm:@msgpack/msgpack@*": "3.1.2", 27 - "npm:@msgpack/msgpack@^3.1.2": "3.1.2", 28 - "npm:@types/cors@^2.8.19": "2.8.19", 29 - "npm:@types/express@^5.0.3": "5.0.3", 30 - "npm:@types/node@*": "24.3.1", 31 - "npm:@types/node@^24.3.1": "24.3.1", 32 - "npm:@types/pako@^2.0.4": "2.0.4", 33 - "npm:cors@*": "2.8.5", 34 - "npm:cors@2.8.5": "2.8.5", 35 - "npm:cors@^2.8.5": "2.8.5", 36 - "npm:discord.js@^14.25.1": "14.25.1", 37 - "npm:express-msgpack@6": "6.0.0_express@4.21.2", 38 - "npm:express-serve-static-core@*": "0.1.1", 39 - "npm:express-session@*": "1.18.1", 40 - "npm:express-session@^1.18.0": "1.18.1", 41 - "npm:express@*": "5.1.0", 42 - "npm:express@4": "4.21.2", 43 - "npm:express@5.1.0": "5.1.0", 44 - "npm:express@^5.1.0": "5.1.0", 45 - "npm:pako@*": "2.1.0", 46 - "npm:pako@^2.1.0": "2.1.0", 47 - "npm:passport-github2@*": "0.1.12", 48 - "npm:passport-github2@~0.1.12": "0.1.12", 49 - "npm:passport@*": "0.7.0", 50 - "npm:passport@0.7": "0.7.0", 51 - "npm:qs@*": "6.13.0", 52 - "npm:zod@3": "3.25.76" 53 - }, 54 - "jsr": { 55 - "@db/sqlite@0.12.0": { 56 - "integrity": "dd1ef7f621ad50fc1e073a1c3609c4470bd51edc0994139c5bf9851de7a6d85f", 57 - "dependencies": [ 58 - "jsr:@denosaurs/plug", 59 - "jsr:@std/path@0.217" 60 - ] 61 - }, 62 - "@denosaurs/plug@1.0.6": { 63 - "integrity": "6cf5b9daba7799837b9ffbe89f3450510f588fafef8115ddab1ff0be9cb7c1a7", 64 - "dependencies": [ 65 - "jsr:@std/encoding", 66 - "jsr:@std/fmt", 67 - "jsr:@std/fs@0.221", 68 - "jsr:@std/path@0.221" 69 - ] 70 - }, 71 - "@mathis/turnstile-verify@1.2.0": { 72 - "integrity": "52fb351400780627660e0fbb4c1ff1000fcd0b28d7eebf13753ac9548fa77030" 73 - }, 74 - "@openai/openai@5.20.1": { 75 - "integrity": "2dd3fb05426d17e459a29ba3691bc90601aee3b6e2574f7556c2fd2a35d9448d", 76 - "dependencies": [ 77 - "npm:zod" 78 - ] 79 - }, 80 - "@std/assert@0.217.0": { 81 - "integrity": "c98e279362ca6982d5285c3b89517b757c1e3477ee9f14eb2fdf80a45aaa9642" 82 - }, 83 - "@std/assert@0.221.0": { 84 - "integrity": "a5f1aa6e7909dbea271754fd4ab3f4e687aeff4873b4cef9a320af813adb489a" 85 - }, 86 - "@std/encoding@0.221.0": { 87 - "integrity": "d1dd76ef0dc5d14088411e6dc1dede53bf8308c95d1537df1214c97137208e45" 88 - }, 89 - "@std/fmt@0.221.0": { 90 - "integrity": "379fed69bdd9731110f26b9085aeb740606b20428ce6af31ef6bd45ef8efa62a" 91 - }, 92 - "@std/fs@0.221.0": { 93 - "integrity": "028044450299de8ed5a716ade4e6d524399f035513b85913794f4e81f07da286", 94 - "dependencies": [ 95 - "jsr:@std/assert@0.221", 96 - "jsr:@std/path@0.221" 97 - ] 98 - }, 99 - "@std/fs@1.0.19": { 100 - "integrity": "051968c2b1eae4d2ea9f79a08a3845740ef6af10356aff43d3e2ef11ed09fb06", 101 - "dependencies": [ 102 - "jsr:@std/internal@^1.0.9", 103 - "jsr:@std/path@^1.1.1" 104 - ] 105 - }, 106 - "@std/internal@1.0.10": { 107 - "integrity": "e3be62ce42cab0e177c27698e5d9800122f67b766a0bea6ca4867886cbde8cf7" 108 - }, 109 - "@std/json@1.0.2": { 110 - "integrity": "d9e5497801c15fb679f55a2c01c7794ad7a5dfda4dd1bebab5e409cb5e0d34d4", 111 - "dependencies": [ 112 - "jsr:@std/streams" 113 - ] 114 - }, 115 - "@std/path@0.217.0": { 116 - "integrity": "1217cc25534bca9a2f672d7fe7c6f356e4027df400c0e85c0ef3e4343bc67d11", 117 - "dependencies": [ 118 - "jsr:@std/assert@0.217" 119 - ] 120 - }, 121 - "@std/path@0.221.0": { 122 - "integrity": "0a36f6b17314ef653a3a1649740cc8db51b25a133ecfe838f20b79a56ebe0095", 123 - "dependencies": [ 124 - "jsr:@std/assert@0.221" 125 - ] 126 - }, 127 - "@std/path@1.1.2": { 128 - "integrity": "c0b13b97dfe06546d5e16bf3966b1cadf92e1cc83e56ba5476ad8b498d9e3038", 129 - "dependencies": [ 130 - "jsr:@std/internal@^1.0.10" 131 - ] 132 - }, 133 - "@std/streams@1.0.9": { 134 - "integrity": "a9d26b1988cdd7aa7b1f4b51e1c36c1557f3f252880fa6cc5b9f37078b1a5035" 135 - } 136 - }, 137 - "npm": { 138 - "@discordjs/builders@1.13.1": { 139 - "integrity": "sha512-cOU0UDHc3lp/5nKByDxkmRiNZBpdp0kx55aarbiAfakfKJHlxv/yFW1zmIqCAmwH5CRlrH9iMFKJMpvW4DPB+w==", 140 - "dependencies": [ 141 - "@discordjs/formatters", 142 - "@discordjs/util", 143 - "@sapphire/shapeshift", 144 - "discord-api-types", 145 - "fast-deep-equal", 146 - "ts-mixer", 147 - "tslib" 148 - ] 149 - }, 150 - "@discordjs/collection@1.5.3": { 151 - "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==" 152 - }, 153 - "@discordjs/collection@2.1.1": { 154 - "integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==" 155 - }, 156 - "@discordjs/formatters@0.6.2": { 157 - "integrity": "sha512-y4UPwWhH6vChKRkGdMB4odasUbHOUwy7KL+OVwF86PvT6QVOwElx+TiI1/6kcmcEe+g5YRXJFiXSXUdabqZOvQ==", 158 - "dependencies": [ 159 - "discord-api-types" 160 - ] 161 - }, 162 - "@discordjs/rest@2.6.0": { 163 - "integrity": "sha512-RDYrhmpB7mTvmCKcpj+pc5k7POKszS4E2O9TYc+U+Y4iaCP+r910QdO43qmpOja8LRr1RJ0b3U+CqVsnPqzf4w==", 164 - "dependencies": [ 165 - "@discordjs/collection@2.1.1", 166 - "@discordjs/util", 167 - "@sapphire/async-queue", 168 - "@sapphire/snowflake", 169 - "@vladfrangu/async_event_emitter", 170 - "discord-api-types", 171 - "magic-bytes.js", 172 - "tslib", 173 - "undici" 174 - ] 175 - }, 176 - "@discordjs/util@1.2.0": { 177 - "integrity": "sha512-3LKP7F2+atl9vJFhaBjn4nOaSWahZ/yWjOvA4e5pnXkt2qyXRCHLxoBQy81GFtLGCq7K9lPm9R517M1U+/90Qg==", 178 - "dependencies": [ 179 - "discord-api-types" 180 - ] 181 - }, 182 - "@discordjs/ws@1.2.3": { 183 - "integrity": "sha512-wPlQDxEmlDg5IxhJPuxXr3Vy9AjYq5xCvFWGJyD7w7Np8ZGu+Mc+97LCoEc/+AYCo2IDpKioiH0/c/mj5ZR9Uw==", 184 - "dependencies": [ 185 - "@discordjs/collection@2.1.1", 186 - "@discordjs/rest", 187 - "@discordjs/util", 188 - "@sapphire/async-queue", 189 - "@types/ws", 190 - "@vladfrangu/async_event_emitter", 191 - "discord-api-types", 192 - "tslib", 193 - "ws" 194 - ] 195 - }, 196 - "@msgpack/msgpack@2.8.0": { 197 - "integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==" 198 - }, 199 - "@msgpack/msgpack@3.1.2": { 200 - "integrity": "sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ==" 201 - }, 202 - "@sapphire/async-queue@1.5.5": { 203 - "integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==" 204 - }, 205 - "@sapphire/shapeshift@4.0.0": { 206 - "integrity": "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==", 207 - "dependencies": [ 208 - "fast-deep-equal", 209 - "lodash" 210 - ] 211 - }, 212 - "@sapphire/snowflake@3.5.3": { 213 - "integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==" 214 - }, 215 - "@types/body-parser@1.19.6": { 216 - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", 217 - "dependencies": [ 218 - "@types/connect", 219 - "@types/node@24.2.0" 220 - ] 221 - }, 222 - "@types/connect@3.4.38": { 223 - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", 224 - "dependencies": [ 225 - "@types/node@24.2.0" 226 - ] 227 - }, 228 - "@types/cors@2.8.19": { 229 - "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", 230 - "dependencies": [ 231 - "@types/node@24.2.0" 232 - ] 233 - }, 234 - "@types/express-serve-static-core@5.0.7": { 235 - "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", 236 - "dependencies": [ 237 - "@types/node@24.2.0", 238 - "@types/qs", 239 - "@types/range-parser", 240 - "@types/send" 241 - ] 242 - }, 243 - "@types/express@5.0.3": { 244 - "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", 245 - "dependencies": [ 246 - "@types/body-parser", 247 - "@types/express-serve-static-core", 248 - "@types/serve-static" 249 - ] 250 - }, 251 - "@types/http-errors@2.0.5": { 252 - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==" 253 - }, 254 - "@types/mime@1.3.5": { 255 - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" 256 - }, 257 - "@types/node@24.2.0": { 258 - "integrity": "sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==", 259 - "dependencies": [ 260 - "undici-types" 261 - ] 262 - }, 263 - "@types/node@24.3.1": { 264 - "integrity": "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==", 265 - "dependencies": [ 266 - "undici-types" 267 - ] 268 - }, 269 - "@types/pako@2.0.4": { 270 - "integrity": "sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==" 271 - }, 272 - "@types/qs@6.14.0": { 273 - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==" 274 - }, 275 - "@types/range-parser@1.2.7": { 276 - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" 277 - }, 278 - "@types/send@0.17.5": { 279 - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", 280 - "dependencies": [ 281 - "@types/mime", 282 - "@types/node@24.2.0" 283 - ] 284 - }, 285 - "@types/serve-static@1.15.8": { 286 - "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", 287 - "dependencies": [ 288 - "@types/http-errors", 289 - "@types/node@24.2.0", 290 - "@types/send" 291 - ] 292 - }, 293 - "@types/ws@8.18.1": { 294 - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", 295 - "dependencies": [ 296 - "@types/node@24.3.1" 297 - ] 298 - }, 299 - "@vladfrangu/async_event_emitter@2.4.7": { 300 - "integrity": "sha512-Xfe6rpCTxSxfbswi/W/Pz7zp1WWSNn4A0eW4mLkQUewCrXXtMj31lCg+iQyTkh/CkusZSq9eDflu7tjEDXUY6g==" 301 - }, 302 - "accepts@1.3.8": { 303 - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 304 - "dependencies": [ 305 - "mime-types@2.1.35", 306 - "negotiator@0.6.3" 307 - ] 308 - }, 309 - "accepts@2.0.0": { 310 - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", 311 - "dependencies": [ 312 - "mime-types@3.0.1", 313 - "negotiator@1.0.0" 314 - ] 315 - }, 316 - "array-flatten@1.1.1": { 317 - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 318 - }, 319 - "base64url@3.0.1": { 320 - "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" 321 - }, 322 - "body-parser@1.20.3": { 323 - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", 324 - "dependencies": [ 325 - "bytes", 326 - "content-type", 327 - "debug@2.6.9", 328 - "depd", 329 - "destroy", 330 - "http-errors@2.0.0", 331 - "iconv-lite@0.4.24", 332 - "on-finished", 333 - "qs@6.13.0", 334 - "raw-body@2.5.2", 335 - "type-is@1.6.18", 336 - "unpipe" 337 - ] 338 - }, 339 - "body-parser@2.2.0": { 340 - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", 341 - "dependencies": [ 342 - "bytes", 343 - "content-type", 344 - "debug@4.4.0", 345 - "http-errors@2.0.0", 346 - "iconv-lite@0.6.3", 347 - "on-finished", 348 - "qs@6.14.0", 349 - "raw-body@3.0.0", 350 - "type-is@2.0.1" 351 - ] 352 - }, 353 - "bytes@3.1.2": { 354 - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 355 - }, 356 - "call-bind-apply-helpers@1.0.2": { 357 - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 358 - "dependencies": [ 359 - "es-errors", 360 - "function-bind" 361 - ] 362 - }, 363 - "call-bound@1.0.4": { 364 - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", 365 - "dependencies": [ 366 - "call-bind-apply-helpers", 367 - "get-intrinsic" 368 - ] 369 - }, 370 - "content-disposition@0.5.4": { 371 - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 372 - "dependencies": [ 373 - "safe-buffer" 374 - ] 375 - }, 376 - "content-disposition@1.0.0": { 377 - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", 378 - "dependencies": [ 379 - "safe-buffer" 380 - ] 381 - }, 382 - "content-type@1.0.5": { 383 - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" 384 - }, 385 - "cookie-signature@1.0.6": { 386 - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 387 - }, 388 - "cookie-signature@1.0.7": { 389 - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" 390 - }, 391 - "cookie-signature@1.2.2": { 392 - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==" 393 - }, 394 - "cookie@0.7.1": { 395 - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" 396 - }, 397 - "cookie@0.7.2": { 398 - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==" 399 - }, 400 - "cors@2.8.5": { 401 - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 402 - "dependencies": [ 403 - "object-assign", 404 - "vary" 405 - ] 406 - }, 407 - "debug@2.6.9": { 408 - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 409 - "dependencies": [ 410 - "ms@2.0.0" 411 - ] 412 - }, 413 - "debug@4.4.0": { 414 - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 415 - "dependencies": [ 416 - "ms@2.1.3" 417 - ] 418 - }, 419 - "depd@2.0.0": { 420 - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 421 - }, 422 - "destroy@1.2.0": { 423 - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 424 - }, 425 - "discord-api-types@0.38.37": { 426 - "integrity": "sha512-Cv47jzY1jkGkh5sv0bfHYqGgKOWO1peOrGMkDFM4UmaGMOTgOW8QSexhvixa9sVOiz8MnVOBryWYyw/CEVhj7w==" 427 - }, 428 - "discord.js@14.25.1": { 429 - "integrity": "sha512-2l0gsPOLPs5t6GFZfQZKnL1OJNYFcuC/ETWsW4VtKVD/tg4ICa9x+jb9bkPffkMdRpRpuUaO/fKkHCBeiCKh8g==", 430 - "dependencies": [ 431 - "@discordjs/builders", 432 - "@discordjs/collection@1.5.3", 433 - "@discordjs/formatters", 434 - "@discordjs/rest", 435 - "@discordjs/util", 436 - "@discordjs/ws", 437 - "@sapphire/snowflake", 438 - "discord-api-types", 439 - "fast-deep-equal", 440 - "lodash.snakecase", 441 - "magic-bytes.js", 442 - "tslib", 443 - "undici" 444 - ] 445 - }, 446 - "dunder-proto@1.0.1": { 447 - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 448 - "dependencies": [ 449 - "call-bind-apply-helpers", 450 - "es-errors", 451 - "gopd" 452 - ] 453 - }, 454 - "ee-first@1.1.1": { 455 - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 456 - }, 457 - "encodeurl@1.0.2": { 458 - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 459 - }, 460 - "encodeurl@2.0.0": { 461 - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" 462 - }, 463 - "es-define-property@1.0.1": { 464 - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" 465 - }, 466 - "es-errors@1.3.0": { 467 - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" 468 - }, 469 - "es-object-atoms@1.1.1": { 470 - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 471 - "dependencies": [ 472 - "es-errors" 473 - ] 474 - }, 475 - "escape-html@1.0.3": { 476 - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 477 - }, 478 - "etag@1.8.1": { 479 - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 480 - }, 481 - "express-msgpack@6.0.0_express@4.21.2": { 482 - "integrity": "sha512-bbZk3kfBacPesWboki8gCs7UjUA2VetcGeJmdKAIMugOGe1Ws1RzmYF/4/CcWrpwwswu8s4ip0WbBUEDCjidwg==", 483 - "dependencies": [ 484 - "express@4.21.2", 485 - "raw-body@3.0.2" 486 - ], 487 - "optionalDependencies": [ 488 - "@msgpack/msgpack@2.8.0" 489 - ] 490 - }, 491 - "express-serve-static-core@0.1.1": { 492 - "integrity": "sha512-phQFPo1vVwBLOjDq+EspUY6PpWZIs/s62Lvu6QuReViQ9j9ANBnMqPBRwdxs3zxNmpMJ9KBKrmMqCjMwHnGRyQ==" 493 - }, 494 - "express-session@1.18.1": { 495 - "integrity": "sha512-a5mtTqEaZvBCL9A9aqkrtfz+3SMDhOVUnjafjo+s7A9Txkq+SVX2DLvSp1Zrv4uCXa3lMSK3viWnh9Gg07PBUA==", 496 - "dependencies": [ 497 - "cookie@0.7.2", 498 - "cookie-signature@1.0.7", 499 - "debug@2.6.9", 500 - "depd", 501 - "on-headers", 502 - "parseurl", 503 - "safe-buffer", 504 - "uid-safe" 505 - ] 506 - }, 507 - "express@4.21.2": { 508 - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", 509 - "dependencies": [ 510 - "accepts@1.3.8", 511 - "array-flatten", 512 - "body-parser@1.20.3", 513 - "content-disposition@0.5.4", 514 - "content-type", 515 - "cookie@0.7.1", 516 - "cookie-signature@1.0.6", 517 - "debug@2.6.9", 518 - "depd", 519 - "encodeurl@2.0.0", 520 - "escape-html", 521 - "etag", 522 - "finalhandler@1.3.1", 523 - "fresh@0.5.2", 524 - "http-errors@2.0.0", 525 - "merge-descriptors@1.0.3", 526 - "methods", 527 - "on-finished", 528 - "parseurl", 529 - "path-to-regexp@0.1.12", 530 - "proxy-addr", 531 - "qs@6.13.0", 532 - "range-parser", 533 - "safe-buffer", 534 - "send@0.19.0", 535 - "serve-static@1.16.2", 536 - "setprototypeof", 537 - "statuses@2.0.1", 538 - "type-is@1.6.18", 539 - "utils-merge", 540 - "vary" 541 - ] 542 - }, 543 - "express@5.1.0": { 544 - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", 545 - "dependencies": [ 546 - "accepts@2.0.0", 547 - "body-parser@2.2.0", 548 - "content-disposition@1.0.0", 549 - "content-type", 550 - "cookie@0.7.2", 551 - "cookie-signature@1.2.2", 552 - "debug@4.4.0", 553 - "encodeurl@2.0.0", 554 - "escape-html", 555 - "etag", 556 - "finalhandler@2.1.0", 557 - "fresh@2.0.0", 558 - "http-errors@2.0.0", 559 - "merge-descriptors@2.0.0", 560 - "mime-types@3.0.1", 561 - "on-finished", 562 - "once", 563 - "parseurl", 564 - "proxy-addr", 565 - "qs@6.14.0", 566 - "range-parser", 567 - "router", 568 - "send@1.2.0", 569 - "serve-static@2.2.0", 570 - "statuses@2.0.1", 571 - "type-is@2.0.1", 572 - "vary" 573 - ] 574 - }, 575 - "fast-deep-equal@3.1.3": { 576 - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 577 - }, 578 - "finalhandler@1.3.1": { 579 - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", 580 - "dependencies": [ 581 - "debug@2.6.9", 582 - "encodeurl@2.0.0", 583 - "escape-html", 584 - "on-finished", 585 - "parseurl", 586 - "statuses@2.0.1", 587 - "unpipe" 588 - ] 589 - }, 590 - "finalhandler@2.1.0": { 591 - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", 592 - "dependencies": [ 593 - "debug@4.4.0", 594 - "encodeurl@2.0.0", 595 - "escape-html", 596 - "on-finished", 597 - "parseurl", 598 - "statuses@2.0.1" 599 - ] 600 - }, 601 - "forwarded@0.2.0": { 602 - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 603 - }, 604 - "fresh@0.5.2": { 605 - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 606 - }, 607 - "fresh@2.0.0": { 608 - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==" 609 - }, 610 - "function-bind@1.1.2": { 611 - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" 612 - }, 613 - "get-intrinsic@1.3.0": { 614 - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", 615 - "dependencies": [ 616 - "call-bind-apply-helpers", 617 - "es-define-property", 618 - "es-errors", 619 - "es-object-atoms", 620 - "function-bind", 621 - "get-proto", 622 - "gopd", 623 - "has-symbols", 624 - "hasown", 625 - "math-intrinsics" 626 - ] 627 - }, 628 - "get-proto@1.0.1": { 629 - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 630 - "dependencies": [ 631 - "dunder-proto", 632 - "es-object-atoms" 633 - ] 634 - }, 635 - "gopd@1.2.0": { 636 - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" 637 - }, 638 - "has-symbols@1.1.0": { 639 - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" 640 - }, 641 - "hasown@2.0.2": { 642 - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 643 - "dependencies": [ 644 - "function-bind" 645 - ] 646 - }, 647 - "http-errors@2.0.0": { 648 - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 649 - "dependencies": [ 650 - "depd", 651 - "inherits", 652 - "setprototypeof", 653 - "statuses@2.0.1", 654 - "toidentifier" 655 - ] 656 - }, 657 - "http-errors@2.0.1": { 658 - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", 659 - "dependencies": [ 660 - "depd", 661 - "inherits", 662 - "setprototypeof", 663 - "statuses@2.0.2", 664 - "toidentifier" 665 - ] 666 - }, 667 - "iconv-lite@0.4.24": { 668 - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 669 - "dependencies": [ 670 - "safer-buffer" 671 - ] 672 - }, 673 - "iconv-lite@0.6.3": { 674 - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 675 - "dependencies": [ 676 - "safer-buffer" 677 - ] 678 - }, 679 - "iconv-lite@0.7.1": { 680 - "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", 681 - "dependencies": [ 682 - "safer-buffer" 683 - ] 684 - }, 685 - "inherits@2.0.4": { 686 - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 687 - }, 688 - "ipaddr.js@1.9.1": { 689 - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 690 - }, 691 - "is-promise@4.0.0": { 692 - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" 693 - }, 694 - "lodash.snakecase@4.1.1": { 695 - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" 696 - }, 697 - "lodash@4.17.21": { 698 - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 699 - }, 700 - "magic-bytes.js@1.12.1": { 701 - "integrity": "sha512-ThQLOhN86ZkJ7qemtVRGYM+gRgR8GEXNli9H/PMvpnZsE44Xfh3wx9kGJaldg314v85m+bFW6WBMaVHJc/c3zA==" 702 - }, 703 - "math-intrinsics@1.1.0": { 704 - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" 705 - }, 706 - "media-typer@0.3.0": { 707 - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 708 - }, 709 - "media-typer@1.1.0": { 710 - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==" 711 - }, 712 - "merge-descriptors@1.0.3": { 713 - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" 714 - }, 715 - "merge-descriptors@2.0.0": { 716 - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==" 717 - }, 718 - "methods@1.1.2": { 719 - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 720 - }, 721 - "mime-db@1.52.0": { 722 - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 723 - }, 724 - "mime-db@1.54.0": { 725 - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==" 726 - }, 727 - "mime-types@2.1.35": { 728 - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 729 - "dependencies": [ 730 - "mime-db@1.52.0" 731 - ] 732 - }, 733 - "mime-types@3.0.1": { 734 - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", 735 - "dependencies": [ 736 - "mime-db@1.54.0" 737 - ] 738 - }, 739 - "mime@1.6.0": { 740 - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 741 - "bin": true 742 - }, 743 - "ms@2.0.0": { 744 - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 745 - }, 746 - "ms@2.1.3": { 747 - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 748 - }, 749 - "negotiator@0.6.3": { 750 - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 751 - }, 752 - "negotiator@1.0.0": { 753 - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==" 754 - }, 755 - "oauth@0.10.2": { 756 - "integrity": "sha512-JtFnB+8nxDEXgNyniwz573xxbKSOu3R8D40xQKqcjwJ2CDkYqUDI53o6IuzDJBx60Z8VKCm271+t8iFjakrl8Q==" 757 - }, 758 - "object-assign@4.1.1": { 759 - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 760 - }, 761 - "object-inspect@1.13.4": { 762 - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" 763 - }, 764 - "on-finished@2.4.1": { 765 - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 766 - "dependencies": [ 767 - "ee-first" 768 - ] 769 - }, 770 - "on-headers@1.0.2": { 771 - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" 772 - }, 773 - "once@1.4.0": { 774 - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 775 - "dependencies": [ 776 - "wrappy" 777 - ] 778 - }, 779 - "pako@2.1.0": { 780 - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" 781 - }, 782 - "parseurl@1.3.3": { 783 - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 784 - }, 785 - "passport-github2@0.1.12": { 786 - "integrity": "sha512-3nPUCc7ttF/3HSP/k9sAXjz3SkGv5Nki84I05kSQPo01Jqq1NzJACgMblCK0fGcv9pKCG/KXU3AJRDGLqHLoIw==", 787 - "dependencies": [ 788 - "passport-oauth2" 789 - ] 790 - }, 791 - "passport-oauth2@1.8.0": { 792 - "integrity": "sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA==", 793 - "dependencies": [ 794 - "base64url", 795 - "oauth", 796 - "passport-strategy", 797 - "uid2", 798 - "utils-merge" 799 - ] 800 - }, 801 - "passport-strategy@1.0.0": { 802 - "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==" 803 - }, 804 - "passport@0.7.0": { 805 - "integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==", 806 - "dependencies": [ 807 - "passport-strategy", 808 - "pause", 809 - "utils-merge" 810 - ] 811 - }, 812 - "path-to-regexp@0.1.12": { 813 - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" 814 - }, 815 - "path-to-regexp@8.2.0": { 816 - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==" 817 - }, 818 - "pause@0.0.1": { 819 - "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" 820 - }, 821 - "proxy-addr@2.0.7": { 822 - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 823 - "dependencies": [ 824 - "forwarded", 825 - "ipaddr.js" 826 - ] 827 - }, 828 - "qs@6.13.0": { 829 - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", 830 - "dependencies": [ 831 - "side-channel" 832 - ] 833 - }, 834 - "qs@6.14.0": { 835 - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", 836 - "dependencies": [ 837 - "side-channel" 838 - ] 839 - }, 840 - "random-bytes@1.0.0": { 841 - "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==" 842 - }, 843 - "range-parser@1.2.1": { 844 - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 845 - }, 846 - "raw-body@2.5.2": { 847 - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", 848 - "dependencies": [ 849 - "bytes", 850 - "http-errors@2.0.0", 851 - "iconv-lite@0.4.24", 852 - "unpipe" 853 - ] 854 - }, 855 - "raw-body@3.0.0": { 856 - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", 857 - "dependencies": [ 858 - "bytes", 859 - "http-errors@2.0.0", 860 - "iconv-lite@0.6.3", 861 - "unpipe" 862 - ] 863 - }, 864 - "raw-body@3.0.2": { 865 - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", 866 - "dependencies": [ 867 - "bytes", 868 - "http-errors@2.0.1", 869 - "iconv-lite@0.7.1", 870 - "unpipe" 871 - ] 872 - }, 873 - "router@2.2.0": { 874 - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", 875 - "dependencies": [ 876 - "debug@4.4.0", 877 - "depd", 878 - "is-promise", 879 - "parseurl", 880 - "path-to-regexp@8.2.0" 881 - ] 882 - }, 883 - "safe-buffer@5.2.1": { 884 - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 885 - }, 886 - "safer-buffer@2.1.2": { 887 - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 888 - }, 889 - "send@0.19.0": { 890 - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", 891 - "dependencies": [ 892 - "debug@2.6.9", 893 - "depd", 894 - "destroy", 895 - "encodeurl@1.0.2", 896 - "escape-html", 897 - "etag", 898 - "fresh@0.5.2", 899 - "http-errors@2.0.0", 900 - "mime", 901 - "ms@2.1.3", 902 - "on-finished", 903 - "range-parser", 904 - "statuses@2.0.1" 905 - ] 906 - }, 907 - "send@1.2.0": { 908 - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", 909 - "dependencies": [ 910 - "debug@4.4.0", 911 - "encodeurl@2.0.0", 912 - "escape-html", 913 - "etag", 914 - "fresh@2.0.0", 915 - "http-errors@2.0.0", 916 - "mime-types@3.0.1", 917 - "ms@2.1.3", 918 - "on-finished", 919 - "range-parser", 920 - "statuses@2.0.1" 921 - ] 922 - }, 923 - "serve-static@1.16.2": { 924 - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", 925 - "dependencies": [ 926 - "encodeurl@2.0.0", 927 - "escape-html", 928 - "parseurl", 929 - "send@0.19.0" 930 - ] 931 - }, 932 - "serve-static@2.2.0": { 933 - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", 934 - "dependencies": [ 935 - "encodeurl@2.0.0", 936 - "escape-html", 937 - "parseurl", 938 - "send@1.2.0" 939 - ] 940 - }, 941 - "setprototypeof@1.2.0": { 942 - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 943 - }, 944 - "side-channel-list@1.0.0": { 945 - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", 946 - "dependencies": [ 947 - "es-errors", 948 - "object-inspect" 949 - ] 950 - }, 951 - "side-channel-map@1.0.1": { 952 - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", 953 - "dependencies": [ 954 - "call-bound", 955 - "es-errors", 956 - "get-intrinsic", 957 - "object-inspect" 958 - ] 959 - }, 960 - "side-channel-weakmap@1.0.2": { 961 - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", 962 - "dependencies": [ 963 - "call-bound", 964 - "es-errors", 965 - "get-intrinsic", 966 - "object-inspect", 967 - "side-channel-map" 968 - ] 969 - }, 970 - "side-channel@1.1.0": { 971 - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", 972 - "dependencies": [ 973 - "es-errors", 974 - "object-inspect", 975 - "side-channel-list", 976 - "side-channel-map", 977 - "side-channel-weakmap" 978 - ] 979 - }, 980 - "statuses@2.0.1": { 981 - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 982 - }, 983 - "statuses@2.0.2": { 984 - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" 985 - }, 986 - "toidentifier@1.0.1": { 987 - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 988 - }, 989 - "ts-mixer@6.0.4": { 990 - "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==" 991 - }, 992 - "tslib@2.8.1": { 993 - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" 994 - }, 995 - "type-is@1.6.18": { 996 - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 997 - "dependencies": [ 998 - "media-typer@0.3.0", 999 - "mime-types@2.1.35" 1000 - ] 1001 - }, 1002 - "type-is@2.0.1": { 1003 - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", 1004 - "dependencies": [ 1005 - "content-type", 1006 - "media-typer@1.1.0", 1007 - "mime-types@3.0.1" 1008 - ] 1009 - }, 1010 - "uid-safe@2.1.5": { 1011 - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", 1012 - "dependencies": [ 1013 - "random-bytes" 1014 - ] 1015 - }, 1016 - "uid2@0.0.4": { 1017 - "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" 1018 - }, 1019 - "undici-types@7.10.0": { 1020 - "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==" 1021 - }, 1022 - "undici@6.21.3": { 1023 - "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==" 1024 - }, 1025 - "unpipe@1.0.0": { 1026 - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 1027 - }, 1028 - "utils-merge@1.0.1": { 1029 - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 1030 - }, 1031 - "vary@1.1.2": { 1032 - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 1033 - }, 1034 - "wrappy@1.0.2": { 1035 - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1036 - }, 1037 - "ws@8.18.3": { 1038 - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==" 1039 - }, 1040 - "zod@3.25.76": { 1041 - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==" 1042 - } 1043 - }, 1044 - "workspace": { 1045 - "dependencies": [ 1046 - "jsr:@db/sqlite@0.12", 1047 - "jsr:@mathis/turnstile-verify@^1.2.0", 1048 - "jsr:@openai/openai@^5.20.1", 1049 - "jsr:@std/fs@^1.0.19", 1050 - "npm:@msgpack/msgpack@^3.1.2", 1051 - "npm:@types/cors@^2.8.19", 1052 - "npm:@types/express@^5.0.3", 1053 - "npm:@types/node@^24.3.1", 1054 - "npm:@types/pako@^2.0.4", 1055 - "npm:cors@^2.8.5", 1056 - "npm:discord.js@^14.25.1", 1057 - "npm:express-msgpack@6", 1058 - "npm:express-session@^1.18.0", 1059 - "npm:express@^5.1.0", 1060 - "npm:pako@^2.1.0", 1061 - "npm:passport-github2@~0.1.12", 1062 - "npm:passport@0.7" 1063 - ] 1064 - } 2 + "version": "5", 3 + "specifiers": { 4 + "jsr:@db/sqlite@0.12": "0.12.0", 5 + "jsr:@denosaurs/plug@1": "1.1.0", 6 + "jsr:@mathis/turnstile-verify@^1.2.0": "1.2.0", 7 + "jsr:@openai/openai@^5.20.1": "5.23.2", 8 + "jsr:@std/assert@0.217": "0.217.0", 9 + "jsr:@std/encoding@1": "1.0.10", 10 + "jsr:@std/fmt@1": "1.0.8", 11 + "jsr:@std/fs@1": "1.0.19", 12 + "jsr:@std/fs@^1.0.19": "1.0.19", 13 + "jsr:@std/internal@^1.0.12": "1.0.12", 14 + "jsr:@std/internal@^1.0.9": "1.0.12", 15 + "jsr:@std/path@0.217": "0.217.0", 16 + "jsr:@std/path@1": "1.1.3", 17 + "jsr:@std/path@^1.1.1": "1.1.3", 18 + "npm:@msgpack/msgpack@^3.1.2": "3.1.3", 19 + "npm:@types/cors@^2.8.19": "2.8.19", 20 + "npm:@types/express@^5.0.3": "5.0.6", 21 + "npm:@types/node@^24.3.1": "24.10.4", 22 + "npm:@types/pako@^2.0.4": "2.0.4", 23 + "npm:cors@^2.8.5": "2.8.5", 24 + "npm:discord.js@^14.25.1": "14.25.1", 25 + "npm:express-msgpack@6": "6.0.0_express@5.2.1", 26 + "npm:express-session@^1.18.0": "1.18.2", 27 + "npm:express@^5.1.0": "5.2.1", 28 + "npm:memorystore@^1.6.7": "1.6.7", 29 + "npm:pako@^2.1.0": "2.1.0", 30 + "npm:passport-github2@~0.1.12": "0.1.12", 31 + "npm:passport@0.7": "0.7.0", 32 + "npm:zod@3": "3.25.76" 33 + }, 34 + "jsr": { 35 + "@db/sqlite@0.12.0": { 36 + "integrity": "dd1ef7f621ad50fc1e073a1c3609c4470bd51edc0994139c5bf9851de7a6d85f", 37 + "dependencies": [ 38 + "jsr:@denosaurs/plug", 39 + "jsr:@std/path@0.217" 40 + ] 41 + }, 42 + "@denosaurs/plug@1.1.0": { 43 + "integrity": "eb2f0b7546c7bca2000d8b0282c54d50d91cf6d75cb26a80df25a6de8c4bc044", 44 + "dependencies": [ 45 + "jsr:@std/encoding", 46 + "jsr:@std/fmt", 47 + "jsr:@std/fs@1", 48 + "jsr:@std/path@1" 49 + ] 50 + }, 51 + "@mathis/turnstile-verify@1.2.0": { 52 + "integrity": "52fb351400780627660e0fbb4c1ff1000fcd0b28d7eebf13753ac9548fa77030" 53 + }, 54 + "@openai/openai@5.23.2": { 55 + "integrity": "283883704f9e16df3b2984f3c211eb323d4179cad021ed430238379c4a925d73", 56 + "dependencies": [ 57 + "npm:zod" 58 + ] 59 + }, 60 + "@std/assert@0.217.0": { 61 + "integrity": "c98e279362ca6982d5285c3b89517b757c1e3477ee9f14eb2fdf80a45aaa9642" 62 + }, 63 + "@std/encoding@1.0.10": { 64 + "integrity": "8783c6384a2d13abd5e9e87a7ae0520a30e9f56aeeaa3bdf910a3eaaf5c811a1" 65 + }, 66 + "@std/fmt@1.0.8": { 67 + "integrity": "71e1fc498787e4434d213647a6e43e794af4fd393ef8f52062246e06f7e372b7" 68 + }, 69 + "@std/fs@1.0.19": { 70 + "integrity": "051968c2b1eae4d2ea9f79a08a3845740ef6af10356aff43d3e2ef11ed09fb06", 71 + "dependencies": [ 72 + "jsr:@std/internal@^1.0.9", 73 + "jsr:@std/path@^1.1.1" 74 + ] 75 + }, 76 + "@std/internal@1.0.12": { 77 + "integrity": "972a634fd5bc34b242024402972cd5143eac68d8dffaca5eaa4dba30ce17b027" 78 + }, 79 + "@std/path@0.217.0": { 80 + "integrity": "1217cc25534bca9a2f672d7fe7c6f356e4027df400c0e85c0ef3e4343bc67d11", 81 + "dependencies": [ 82 + "jsr:@std/assert" 83 + ] 84 + }, 85 + "@std/path@1.1.3": { 86 + "integrity": "b015962d82a5e6daea980c32b82d2c40142149639968549c649031a230b1afb3", 87 + "dependencies": [ 88 + "jsr:@std/internal@^1.0.12" 89 + ] 90 + } 91 + }, 92 + "npm": { 93 + "@discordjs/builders@1.13.1": { 94 + "integrity": "sha512-cOU0UDHc3lp/5nKByDxkmRiNZBpdp0kx55aarbiAfakfKJHlxv/yFW1zmIqCAmwH5CRlrH9iMFKJMpvW4DPB+w==", 95 + "dependencies": [ 96 + "@discordjs/formatters", 97 + "@discordjs/util", 98 + "@sapphire/shapeshift", 99 + "discord-api-types", 100 + "fast-deep-equal", 101 + "ts-mixer", 102 + "tslib" 103 + ] 104 + }, 105 + "@discordjs/collection@1.5.3": { 106 + "integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==" 107 + }, 108 + "@discordjs/collection@2.1.1": { 109 + "integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==" 110 + }, 111 + "@discordjs/formatters@0.6.2": { 112 + "integrity": "sha512-y4UPwWhH6vChKRkGdMB4odasUbHOUwy7KL+OVwF86PvT6QVOwElx+TiI1/6kcmcEe+g5YRXJFiXSXUdabqZOvQ==", 113 + "dependencies": [ 114 + "discord-api-types" 115 + ] 116 + }, 117 + "@discordjs/rest@2.6.0": { 118 + "integrity": "sha512-RDYrhmpB7mTvmCKcpj+pc5k7POKszS4E2O9TYc+U+Y4iaCP+r910QdO43qmpOja8LRr1RJ0b3U+CqVsnPqzf4w==", 119 + "dependencies": [ 120 + "@discordjs/collection@2.1.1", 121 + "@discordjs/util", 122 + "@sapphire/async-queue", 123 + "@sapphire/snowflake", 124 + "@vladfrangu/async_event_emitter", 125 + "discord-api-types", 126 + "magic-bytes.js", 127 + "tslib", 128 + "undici" 129 + ] 130 + }, 131 + "@discordjs/util@1.2.0": { 132 + "integrity": "sha512-3LKP7F2+atl9vJFhaBjn4nOaSWahZ/yWjOvA4e5pnXkt2qyXRCHLxoBQy81GFtLGCq7K9lPm9R517M1U+/90Qg==", 133 + "dependencies": [ 134 + "discord-api-types" 135 + ] 136 + }, 137 + "@discordjs/ws@1.2.3": { 138 + "integrity": "sha512-wPlQDxEmlDg5IxhJPuxXr3Vy9AjYq5xCvFWGJyD7w7Np8ZGu+Mc+97LCoEc/+AYCo2IDpKioiH0/c/mj5ZR9Uw==", 139 + "dependencies": [ 140 + "@discordjs/collection@2.1.1", 141 + "@discordjs/rest", 142 + "@discordjs/util", 143 + "@sapphire/async-queue", 144 + "@types/ws", 145 + "@vladfrangu/async_event_emitter", 146 + "discord-api-types", 147 + "tslib", 148 + "ws" 149 + ] 150 + }, 151 + "@msgpack/msgpack@2.8.0": { 152 + "integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==" 153 + }, 154 + "@msgpack/msgpack@3.1.3": { 155 + "integrity": "sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA==" 156 + }, 157 + "@sapphire/async-queue@1.5.5": { 158 + "integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==" 159 + }, 160 + "@sapphire/shapeshift@4.0.0": { 161 + "integrity": "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==", 162 + "dependencies": [ 163 + "fast-deep-equal", 164 + "lodash" 165 + ] 166 + }, 167 + "@sapphire/snowflake@3.5.3": { 168 + "integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==" 169 + }, 170 + "@types/body-parser@1.19.6": { 171 + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", 172 + "dependencies": [ 173 + "@types/connect", 174 + "@types/node" 175 + ] 176 + }, 177 + "@types/connect@3.4.38": { 178 + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", 179 + "dependencies": [ 180 + "@types/node" 181 + ] 182 + }, 183 + "@types/cors@2.8.19": { 184 + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", 185 + "dependencies": [ 186 + "@types/node" 187 + ] 188 + }, 189 + "@types/express-serve-static-core@5.1.0": { 190 + "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==", 191 + "dependencies": [ 192 + "@types/node", 193 + "@types/qs", 194 + "@types/range-parser", 195 + "@types/send" 196 + ] 197 + }, 198 + "@types/express@5.0.6": { 199 + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", 200 + "dependencies": [ 201 + "@types/body-parser", 202 + "@types/express-serve-static-core", 203 + "@types/serve-static" 204 + ] 205 + }, 206 + "@types/http-errors@2.0.5": { 207 + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==" 208 + }, 209 + "@types/node@24.10.4": { 210 + "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", 211 + "dependencies": [ 212 + "undici-types" 213 + ] 214 + }, 215 + "@types/pako@2.0.4": { 216 + "integrity": "sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==" 217 + }, 218 + "@types/qs@6.14.0": { 219 + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==" 220 + }, 221 + "@types/range-parser@1.2.7": { 222 + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" 223 + }, 224 + "@types/send@1.2.1": { 225 + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", 226 + "dependencies": [ 227 + "@types/node" 228 + ] 229 + }, 230 + "@types/serve-static@2.2.0": { 231 + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", 232 + "dependencies": [ 233 + "@types/http-errors", 234 + "@types/node" 235 + ] 236 + }, 237 + "@types/ws@8.18.1": { 238 + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", 239 + "dependencies": [ 240 + "@types/node" 241 + ] 242 + }, 243 + "@vladfrangu/async_event_emitter@2.4.7": { 244 + "integrity": "sha512-Xfe6rpCTxSxfbswi/W/Pz7zp1WWSNn4A0eW4mLkQUewCrXXtMj31lCg+iQyTkh/CkusZSq9eDflu7tjEDXUY6g==" 245 + }, 246 + "accepts@2.0.0": { 247 + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", 248 + "dependencies": [ 249 + "mime-types", 250 + "negotiator" 251 + ] 252 + }, 253 + "base64url@3.0.1": { 254 + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" 255 + }, 256 + "body-parser@2.2.1": { 257 + "integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==", 258 + "dependencies": [ 259 + "bytes", 260 + "content-type", 261 + "debug@4.4.3", 262 + "http-errors", 263 + "iconv-lite", 264 + "on-finished", 265 + "qs", 266 + "raw-body", 267 + "type-is" 268 + ] 269 + }, 270 + "bytes@3.1.2": { 271 + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 272 + }, 273 + "call-bind-apply-helpers@1.0.2": { 274 + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 275 + "dependencies": [ 276 + "es-errors", 277 + "function-bind" 278 + ] 279 + }, 280 + "call-bound@1.0.4": { 281 + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", 282 + "dependencies": [ 283 + "call-bind-apply-helpers", 284 + "get-intrinsic" 285 + ] 286 + }, 287 + "content-disposition@1.0.1": { 288 + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==" 289 + }, 290 + "content-type@1.0.5": { 291 + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" 292 + }, 293 + "cookie-signature@1.0.7": { 294 + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" 295 + }, 296 + "cookie-signature@1.2.2": { 297 + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==" 298 + }, 299 + "cookie@0.7.2": { 300 + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==" 301 + }, 302 + "cors@2.8.5": { 303 + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 304 + "dependencies": [ 305 + "object-assign", 306 + "vary" 307 + ] 308 + }, 309 + "debug@2.6.9": { 310 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 311 + "dependencies": [ 312 + "ms@2.0.0" 313 + ] 314 + }, 315 + "debug@4.4.3": { 316 + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", 317 + "dependencies": [ 318 + "ms@2.1.3" 319 + ] 320 + }, 321 + "depd@2.0.0": { 322 + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 323 + }, 324 + "discord-api-types@0.38.37": { 325 + "integrity": "sha512-Cv47jzY1jkGkh5sv0bfHYqGgKOWO1peOrGMkDFM4UmaGMOTgOW8QSexhvixa9sVOiz8MnVOBryWYyw/CEVhj7w==" 326 + }, 327 + "discord.js@14.25.1": { 328 + "integrity": "sha512-2l0gsPOLPs5t6GFZfQZKnL1OJNYFcuC/ETWsW4VtKVD/tg4ICa9x+jb9bkPffkMdRpRpuUaO/fKkHCBeiCKh8g==", 329 + "dependencies": [ 330 + "@discordjs/builders", 331 + "@discordjs/collection@1.5.3", 332 + "@discordjs/formatters", 333 + "@discordjs/rest", 334 + "@discordjs/util", 335 + "@discordjs/ws", 336 + "@sapphire/snowflake", 337 + "discord-api-types", 338 + "fast-deep-equal", 339 + "lodash.snakecase", 340 + "magic-bytes.js", 341 + "tslib", 342 + "undici" 343 + ] 344 + }, 345 + "dunder-proto@1.0.1": { 346 + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 347 + "dependencies": [ 348 + "call-bind-apply-helpers", 349 + "es-errors", 350 + "gopd" 351 + ] 352 + }, 353 + "ee-first@1.1.1": { 354 + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 355 + }, 356 + "encodeurl@2.0.0": { 357 + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" 358 + }, 359 + "es-define-property@1.0.1": { 360 + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" 361 + }, 362 + "es-errors@1.3.0": { 363 + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" 364 + }, 365 + "es-object-atoms@1.1.1": { 366 + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 367 + "dependencies": [ 368 + "es-errors" 369 + ] 370 + }, 371 + "escape-html@1.0.3": { 372 + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 373 + }, 374 + "etag@1.8.1": { 375 + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 376 + }, 377 + "express-msgpack@6.0.0_express@5.2.1": { 378 + "integrity": "sha512-bbZk3kfBacPesWboki8gCs7UjUA2VetcGeJmdKAIMugOGe1Ws1RzmYF/4/CcWrpwwswu8s4ip0WbBUEDCjidwg==", 379 + "dependencies": [ 380 + "express", 381 + "raw-body" 382 + ], 383 + "optionalDependencies": [ 384 + "@msgpack/msgpack@2.8.0" 385 + ] 386 + }, 387 + "express-session@1.18.2": { 388 + "integrity": "sha512-SZjssGQC7TzTs9rpPDuUrR23GNZ9+2+IkA/+IJWmvQilTr5OSliEHGF+D9scbIpdC6yGtTI0/VhaHoVes2AN/A==", 389 + "dependencies": [ 390 + "cookie", 391 + "cookie-signature@1.0.7", 392 + "debug@2.6.9", 393 + "depd", 394 + "on-headers", 395 + "parseurl", 396 + "safe-buffer", 397 + "uid-safe" 398 + ] 399 + }, 400 + "express@5.2.1": { 401 + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", 402 + "dependencies": [ 403 + "accepts", 404 + "body-parser", 405 + "content-disposition", 406 + "content-type", 407 + "cookie", 408 + "cookie-signature@1.2.2", 409 + "debug@4.4.3", 410 + "depd", 411 + "encodeurl", 412 + "escape-html", 413 + "etag", 414 + "finalhandler", 415 + "fresh", 416 + "http-errors", 417 + "merge-descriptors", 418 + "mime-types", 419 + "on-finished", 420 + "once", 421 + "parseurl", 422 + "proxy-addr", 423 + "qs", 424 + "range-parser", 425 + "router", 426 + "send", 427 + "serve-static", 428 + "statuses", 429 + "type-is", 430 + "vary" 431 + ] 432 + }, 433 + "fast-deep-equal@3.1.3": { 434 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 435 + }, 436 + "finalhandler@2.1.1": { 437 + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", 438 + "dependencies": [ 439 + "debug@4.4.3", 440 + "encodeurl", 441 + "escape-html", 442 + "on-finished", 443 + "parseurl", 444 + "statuses" 445 + ] 446 + }, 447 + "forwarded@0.2.0": { 448 + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 449 + }, 450 + "fresh@2.0.0": { 451 + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==" 452 + }, 453 + "function-bind@1.1.2": { 454 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" 455 + }, 456 + "get-intrinsic@1.3.0": { 457 + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", 458 + "dependencies": [ 459 + "call-bind-apply-helpers", 460 + "es-define-property", 461 + "es-errors", 462 + "es-object-atoms", 463 + "function-bind", 464 + "get-proto", 465 + "gopd", 466 + "has-symbols", 467 + "hasown", 468 + "math-intrinsics" 469 + ] 470 + }, 471 + "get-proto@1.0.1": { 472 + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 473 + "dependencies": [ 474 + "dunder-proto", 475 + "es-object-atoms" 476 + ] 477 + }, 478 + "gopd@1.2.0": { 479 + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" 480 + }, 481 + "has-symbols@1.1.0": { 482 + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" 483 + }, 484 + "hasown@2.0.2": { 485 + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 486 + "dependencies": [ 487 + "function-bind" 488 + ] 489 + }, 490 + "http-errors@2.0.1": { 491 + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", 492 + "dependencies": [ 493 + "depd", 494 + "inherits", 495 + "setprototypeof", 496 + "statuses", 497 + "toidentifier" 498 + ] 499 + }, 500 + "iconv-lite@0.7.1": { 501 + "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", 502 + "dependencies": [ 503 + "safer-buffer" 504 + ] 505 + }, 506 + "inherits@2.0.4": { 507 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 508 + }, 509 + "ipaddr.js@1.9.1": { 510 + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 511 + }, 512 + "is-promise@4.0.0": { 513 + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" 514 + }, 515 + "lodash.snakecase@4.1.1": { 516 + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" 517 + }, 518 + "lodash@4.17.21": { 519 + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 520 + }, 521 + "lru-cache@4.1.5": { 522 + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 523 + "dependencies": [ 524 + "pseudomap", 525 + "yallist" 526 + ] 527 + }, 528 + "magic-bytes.js@1.12.1": { 529 + "integrity": "sha512-ThQLOhN86ZkJ7qemtVRGYM+gRgR8GEXNli9H/PMvpnZsE44Xfh3wx9kGJaldg314v85m+bFW6WBMaVHJc/c3zA==" 530 + }, 531 + "math-intrinsics@1.1.0": { 532 + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" 533 + }, 534 + "media-typer@1.1.0": { 535 + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==" 536 + }, 537 + "memorystore@1.6.7": { 538 + "integrity": "sha512-OZnmNY/NDrKohPQ+hxp0muBcBKrzKNtHr55DbqSx9hLsYVNnomSAMRAtI7R64t3gf3ID7tHQA7mG4oL3Hu9hdw==", 539 + "dependencies": [ 540 + "debug@4.4.3", 541 + "lru-cache" 542 + ] 543 + }, 544 + "merge-descriptors@2.0.0": { 545 + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==" 546 + }, 547 + "mime-db@1.54.0": { 548 + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==" 549 + }, 550 + "mime-types@3.0.2": { 551 + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", 552 + "dependencies": [ 553 + "mime-db" 554 + ] 555 + }, 556 + "ms@2.0.0": { 557 + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 558 + }, 559 + "ms@2.1.3": { 560 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 561 + }, 562 + "negotiator@1.0.0": { 563 + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==" 564 + }, 565 + "oauth@0.10.2": { 566 + "integrity": "sha512-JtFnB+8nxDEXgNyniwz573xxbKSOu3R8D40xQKqcjwJ2CDkYqUDI53o6IuzDJBx60Z8VKCm271+t8iFjakrl8Q==" 567 + }, 568 + "object-assign@4.1.1": { 569 + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 570 + }, 571 + "object-inspect@1.13.4": { 572 + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" 573 + }, 574 + "on-finished@2.4.1": { 575 + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 576 + "dependencies": [ 577 + "ee-first" 578 + ] 579 + }, 580 + "on-headers@1.1.0": { 581 + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==" 582 + }, 583 + "once@1.4.0": { 584 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 585 + "dependencies": [ 586 + "wrappy" 587 + ] 588 + }, 589 + "pako@2.1.0": { 590 + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" 591 + }, 592 + "parseurl@1.3.3": { 593 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 594 + }, 595 + "passport-github2@0.1.12": { 596 + "integrity": "sha512-3nPUCc7ttF/3HSP/k9sAXjz3SkGv5Nki84I05kSQPo01Jqq1NzJACgMblCK0fGcv9pKCG/KXU3AJRDGLqHLoIw==", 597 + "dependencies": [ 598 + "passport-oauth2" 599 + ] 600 + }, 601 + "passport-oauth2@1.8.0": { 602 + "integrity": "sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA==", 603 + "dependencies": [ 604 + "base64url", 605 + "oauth", 606 + "passport-strategy", 607 + "uid2", 608 + "utils-merge" 609 + ] 610 + }, 611 + "passport-strategy@1.0.0": { 612 + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==" 613 + }, 614 + "passport@0.7.0": { 615 + "integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==", 616 + "dependencies": [ 617 + "passport-strategy", 618 + "pause", 619 + "utils-merge" 620 + ] 621 + }, 622 + "path-to-regexp@8.3.0": { 623 + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==" 624 + }, 625 + "pause@0.0.1": { 626 + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" 627 + }, 628 + "proxy-addr@2.0.7": { 629 + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 630 + "dependencies": [ 631 + "forwarded", 632 + "ipaddr.js" 633 + ] 634 + }, 635 + "pseudomap@1.0.2": { 636 + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" 637 + }, 638 + "qs@6.14.0": { 639 + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", 640 + "dependencies": [ 641 + "side-channel" 642 + ] 643 + }, 644 + "random-bytes@1.0.0": { 645 + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==" 646 + }, 647 + "range-parser@1.2.1": { 648 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 649 + }, 650 + "raw-body@3.0.2": { 651 + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", 652 + "dependencies": [ 653 + "bytes", 654 + "http-errors", 655 + "iconv-lite", 656 + "unpipe" 657 + ] 658 + }, 659 + "router@2.2.0": { 660 + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", 661 + "dependencies": [ 662 + "debug@4.4.3", 663 + "depd", 664 + "is-promise", 665 + "parseurl", 666 + "path-to-regexp" 667 + ] 668 + }, 669 + "safe-buffer@5.2.1": { 670 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 671 + }, 672 + "safer-buffer@2.1.2": { 673 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 674 + }, 675 + "send@1.2.1": { 676 + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", 677 + "dependencies": [ 678 + "debug@4.4.3", 679 + "encodeurl", 680 + "escape-html", 681 + "etag", 682 + "fresh", 683 + "http-errors", 684 + "mime-types", 685 + "ms@2.1.3", 686 + "on-finished", 687 + "range-parser", 688 + "statuses" 689 + ] 690 + }, 691 + "serve-static@2.2.1": { 692 + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", 693 + "dependencies": [ 694 + "encodeurl", 695 + "escape-html", 696 + "parseurl", 697 + "send" 698 + ] 699 + }, 700 + "setprototypeof@1.2.0": { 701 + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 702 + }, 703 + "side-channel-list@1.0.0": { 704 + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", 705 + "dependencies": [ 706 + "es-errors", 707 + "object-inspect" 708 + ] 709 + }, 710 + "side-channel-map@1.0.1": { 711 + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", 712 + "dependencies": [ 713 + "call-bound", 714 + "es-errors", 715 + "get-intrinsic", 716 + "object-inspect" 717 + ] 718 + }, 719 + "side-channel-weakmap@1.0.2": { 720 + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", 721 + "dependencies": [ 722 + "call-bound", 723 + "es-errors", 724 + "get-intrinsic", 725 + "object-inspect", 726 + "side-channel-map" 727 + ] 728 + }, 729 + "side-channel@1.1.0": { 730 + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", 731 + "dependencies": [ 732 + "es-errors", 733 + "object-inspect", 734 + "side-channel-list", 735 + "side-channel-map", 736 + "side-channel-weakmap" 737 + ] 738 + }, 739 + "statuses@2.0.2": { 740 + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==" 741 + }, 742 + "toidentifier@1.0.1": { 743 + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 744 + }, 745 + "ts-mixer@6.0.4": { 746 + "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==" 747 + }, 748 + "tslib@2.8.1": { 749 + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" 750 + }, 751 + "type-is@2.0.1": { 752 + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", 753 + "dependencies": [ 754 + "content-type", 755 + "media-typer", 756 + "mime-types" 757 + ] 758 + }, 759 + "uid-safe@2.1.5": { 760 + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", 761 + "dependencies": [ 762 + "random-bytes" 763 + ] 764 + }, 765 + "uid2@0.0.4": { 766 + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" 767 + }, 768 + "undici-types@7.16.0": { 769 + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==" 770 + }, 771 + "undici@6.21.3": { 772 + "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==" 773 + }, 774 + "unpipe@1.0.0": { 775 + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 776 + }, 777 + "utils-merge@1.0.1": { 778 + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 779 + }, 780 + "vary@1.1.2": { 781 + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 782 + }, 783 + "wrappy@1.0.2": { 784 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 785 + }, 786 + "ws@8.18.3": { 787 + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==" 788 + }, 789 + "yallist@2.1.2": { 790 + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" 791 + }, 792 + "zod@3.25.76": { 793 + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==" 794 + } 795 + }, 796 + "workspace": { 797 + "dependencies": [ 798 + "jsr:@db/sqlite@0.12", 799 + "jsr:@mathis/turnstile-verify@^1.2.0", 800 + "jsr:@openai/openai@^5.20.1", 801 + "jsr:@std/fs@^1.0.19", 802 + "npm:@msgpack/msgpack@^3.1.2", 803 + "npm:@types/cors@^2.8.19", 804 + "npm:@types/express@^5.0.3", 805 + "npm:@types/node@^24.3.1", 806 + "npm:@types/pako@^2.0.4", 807 + "npm:cors@^2.8.5", 808 + "npm:discord.js@^14.25.1", 809 + "npm:express-msgpack@6", 810 + "npm:express-session@^1.18.0", 811 + "npm:express@^5.1.0", 812 + "npm:memorystore@^1.6.7", 813 + "npm:pako@^2.1.0", 814 + "npm:passport-github2@~0.1.12", 815 + "npm:passport@0.7" 816 + ] 817 + } 1065 818 }
+11 -92
modules/server/auth.ts
··· 1 1 import session from "express-session"; 2 + import memorystore from "memorystore"; 2 3 import passport from "passport"; 3 4 import { Strategy as GitHubStrategy } from "passport-github2"; 4 - import { Database } from "@db/sqlite"; 5 5 6 6 import type { ServerConfig } from "./config.ts"; 7 7 8 - class SqliteSessionStore extends session.Store { 9 - db: Database; 10 - 11 - constructor(dbPath: string) { 12 - super(); 13 - this.db = new Database(dbPath); 14 - this.db.exec( 15 - `CREATE TABLE IF NOT EXISTS sessions ( 16 - sid TEXT PRIMARY KEY, 17 - sess TEXT NOT NULL, 18 - expire INTEGER NOT NULL 19 - ); 20 - CREATE INDEX IF NOT EXISTS idx_sessions_expire ON sessions(expire);` 21 - ); 22 - } 8 + export function setupSession(app: any, config: ServerConfig) { 9 + const MemoryStore = (memorystore as any)(session); 10 + const maxAgeMs = 24 * 60 * 60 * 1000; 23 11 24 - private cleanupExpired(nowMs: number) { 25 - try { 26 - this.db.prepare("DELETE FROM sessions WHERE expire < ?").run(nowMs); 27 - } catch { 28 - // best-effort cleanup 29 - } 30 - } 31 - 32 - private computeExpireMs(sess: any): number { 33 - const cookie = sess?.cookie; 34 - if (cookie?.expires) { 35 - const d = new Date(cookie.expires); 36 - if (!Number.isNaN(d.getTime())) return d.getTime(); 37 - } 38 - const maxAge = typeof cookie?.maxAge === "number" ? cookie.maxAge : null; 39 - if (maxAge !== null) return Date.now() + maxAge; 40 - return Date.now() + 24 * 60 * 60 * 1000; 41 - } 42 - 43 - get(sid: string, cb: (err?: any, session?: any | null) => void) { 44 - try { 45 - const nowMs = Date.now(); 46 - const row = this.db.prepare("SELECT sess, expire FROM sessions WHERE sid = ?").get(sid) as { sess: string; expire: number } | undefined; 47 - if (!row) return cb(null, null); 48 - if (row.expire < nowMs) { 49 - this.db.prepare("DELETE FROM sessions WHERE sid = ?").run(sid); 50 - return cb(null, null); 51 - } 52 - return cb(null, JSON.parse(row.sess)); 53 - } catch (err) { 54 - return cb(err); 55 - } 56 - } 57 - 58 - set(sid: string, sess: any, cb: (err?: any) => void) { 59 - try { 60 - const nowMs = Date.now(); 61 - this.cleanupExpired(nowMs); 62 - const expire = this.computeExpireMs(sess); 63 - this.db 64 - .prepare("INSERT INTO sessions (sid, sess, expire) VALUES (?, ?, ?) ON CONFLICT(sid) DO UPDATE SET sess=excluded.sess, expire=excluded.expire") 65 - .run(sid, JSON.stringify(sess), expire); 66 - return cb(null); 67 - } catch (err) { 68 - return cb(err); 69 - } 70 - } 71 - 72 - destroy(sid: string, cb: (err?: any) => void) { 73 - try { 74 - this.db.prepare("DELETE FROM sessions WHERE sid = ?").run(sid); 75 - return cb(null); 76 - } catch (err) { 77 - return cb(err); 78 - } 79 - } 80 - 81 - touch(sid: string, sess: any, cb: (err?: any) => void) { 82 - try { 83 - const nowMs = Date.now(); 84 - this.cleanupExpired(nowMs); 85 - const expire = this.computeExpireMs(sess); 86 - this.db.prepare("UPDATE sessions SET expire = ? WHERE sid = ?").run(expire, sid); 87 - return cb(null); 88 - } catch (err) { 89 - return cb(err); 90 - } 91 - } 92 - } 93 - 94 - export function setupSession(app: any, config: ServerConfig) { 95 - const store = new SqliteSessionStore(config.dbPath); 96 12 app.use( 97 13 session({ 98 - store, 99 14 secret: config.sessionSecret, 100 15 resave: false, 101 16 saveUninitialized: false, 17 + store: new MemoryStore({ 18 + checkPeriod: maxAgeMs, 19 + }), 102 20 cookie: { 103 - secure: false, 104 - maxAge: 24 * 60 * 60 * 1000, 21 + secure: "auto" as any, 22 + sameSite: "lax", 23 + maxAge: maxAgeMs, 105 24 }, 106 25 }) 107 26 ); ··· 216 135 217 136 return next(); 218 137 }; 219 - } 138 + }