├── .gitignore ├── README.md ├── api ├── .gitignore ├── .tool-versions ├── app.js ├── db │ ├── models │ │ └── user.js │ ├── mongoose.js │ └── services │ │ └── user.js ├── package-lock.json ├── package.json └── routes │ ├── auth.js │ └── user.js └── client ├── .gitignore ├── .tool-versions ├── README.md ├── package-lock.json ├── package.json ├── pages ├── _document.js └── index.js ├── public ├── favicon.ico └── zeit.svg └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # nextjs-oauth 2 | How to implement OAuth on Nextjs app https://zemuldo.com/blog/nextjs-oauth-with-passport-github-5e6d256f7f7b5b001984784f 3 | -------------------------------------------------------------------------------- /api/.gitignore: -------------------------------------------------------------------------------- 1 | .env -------------------------------------------------------------------------------- /api/.tool-versions: -------------------------------------------------------------------------------- 1 | nodejs 19.8.1 -------------------------------------------------------------------------------- /api/app.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const bodyParser = require('body-parser'); 3 | const passport = require('passport'); 4 | const session = require('express-session') 5 | 6 | require('dotenv').config() 7 | require('./db/mongoose'); 8 | 9 | const app = express(); 10 | 11 | app.use(session({ 12 | secret: 'keyboard cat', 13 | resave: false, 14 | saveUninitialized: true, 15 | cookie: { secure: true } 16 | })) 17 | 18 | // Parse json encoded in the request body 19 | app.use(bodyParser.json({ limit: '50mb' })); 20 | 21 | // allow cors from all - no hustle and never safe 22 | app.use((_, res, next) => { 23 | res.header('Access-Control-Allow-Origin', '*'); 24 | res.header('Access-Control-Allow-Headers', '*'); 25 | res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS'); 26 | next(); 27 | }) 28 | 29 | app.use(passport.initialize()); 30 | 31 | passport.serializeUser(function (user, cb) { 32 | cb(null, user); 33 | }); 34 | 35 | app.use('/auth', require('./routes/auth')) 36 | app.use('/user', require('./routes/user')) 37 | 38 | // start server 39 | app.listen(3001, () => console.log("Server listening on http://localhost:3001")) -------------------------------------------------------------------------------- /api/db/models/user.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('../mongoose.js'); 2 | 3 | const Schema = mongoose.Schema; 4 | const userSchema = new Schema({ 5 | oAuthId: { type: Number, required: true }, 6 | oAuthData: { type: Object, required: true} 7 | }); 8 | 9 | module.exports = mongoose.models.User || mongoose.model('User', userSchema); -------------------------------------------------------------------------------- /api/db/mongoose.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | mongoose.connect("mongodb://localhost:27017/next-js-auth", 4 | { 5 | useNewUrlParser: true, 6 | useUnifiedTopology: true 7 | } 8 | ); 9 | 10 | const db = mongoose.connection; 11 | 12 | db.on('error', (e) => { 13 | console.error(e.toString(), true); 14 | console.error(e.stack, true); 15 | }); 16 | 17 | db.once('open', async function () { 18 | console.info('DB Connected Successfully'); 19 | }); 20 | 21 | module.exports = mongoose; -------------------------------------------------------------------------------- /api/db/services/user.js: -------------------------------------------------------------------------------- 1 | const User = require('../models/user'); 2 | 3 | module.exports = { 4 | findOrCreate: async (oAuthData) => { 5 | try { 6 | const user = await User.findOne({ oAuthId: oAuthData.id }); 7 | if (!user) { 8 | const newUser = new User({oAuthId: oAuthData.id, oAuthData: oAuthData}); 9 | await newUser.save(); 10 | return newUser; 11 | } 12 | return user; 13 | } catch (e) { 14 | return Error('User not found'); 15 | } 16 | }, 17 | fineById: async (id) => { 18 | return User.findOne({ oAuthId: id }); 19 | } 20 | }; -------------------------------------------------------------------------------- /api/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "api", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "body-parser": "^1.19.0", 13 | "dotenv": "^16.3.1", 14 | "express": "^4.17.1", 15 | "express-session": "^1.17.3", 16 | "jsonwebtoken": "^9.0.2", 17 | "mongoose": "^5.9.4", 18 | "passport": "^0.6.0", 19 | "passport-github": "^1.1.0" 20 | } 21 | }, 22 | "node_modules/@types/bson": { 23 | "version": "4.0.5", 24 | "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.5.tgz", 25 | "integrity": "sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg==", 26 | "dependencies": { 27 | "@types/node": "*" 28 | } 29 | }, 30 | "node_modules/@types/mongodb": { 31 | "version": "3.6.20", 32 | "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz", 33 | "integrity": "sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==", 34 | "dependencies": { 35 | "@types/bson": "*", 36 | "@types/node": "*" 37 | } 38 | }, 39 | "node_modules/@types/node": { 40 | "version": "20.6.0", 41 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz", 42 | "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==" 43 | }, 44 | "node_modules/accepts": { 45 | "version": "1.3.8", 46 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 47 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 48 | "dependencies": { 49 | "mime-types": "~2.1.34", 50 | "negotiator": "0.6.3" 51 | }, 52 | "engines": { 53 | "node": ">= 0.6" 54 | } 55 | }, 56 | "node_modules/array-flatten": { 57 | "version": "1.1.1", 58 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 59 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 60 | }, 61 | "node_modules/base64url": { 62 | "version": "3.0.1", 63 | "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", 64 | "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", 65 | "engines": { 66 | "node": ">=6.0.0" 67 | } 68 | }, 69 | "node_modules/bl": { 70 | "version": "2.2.1", 71 | "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", 72 | "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", 73 | "dependencies": { 74 | "readable-stream": "^2.3.5", 75 | "safe-buffer": "^5.1.1" 76 | } 77 | }, 78 | "node_modules/bluebird": { 79 | "version": "3.5.1", 80 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", 81 | "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" 82 | }, 83 | "node_modules/body-parser": { 84 | "version": "1.20.1", 85 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 86 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 87 | "dependencies": { 88 | "bytes": "3.1.2", 89 | "content-type": "~1.0.4", 90 | "debug": "2.6.9", 91 | "depd": "2.0.0", 92 | "destroy": "1.2.0", 93 | "http-errors": "2.0.0", 94 | "iconv-lite": "0.4.24", 95 | "on-finished": "2.4.1", 96 | "qs": "6.11.0", 97 | "raw-body": "2.5.1", 98 | "type-is": "~1.6.18", 99 | "unpipe": "1.0.0" 100 | }, 101 | "engines": { 102 | "node": ">= 0.8", 103 | "npm": "1.2.8000 || >= 1.4.16" 104 | } 105 | }, 106 | "node_modules/bson": { 107 | "version": "1.1.6", 108 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", 109 | "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==", 110 | "engines": { 111 | "node": ">=0.6.19" 112 | } 113 | }, 114 | "node_modules/buffer-equal-constant-time": { 115 | "version": "1.0.1", 116 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 117 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 118 | }, 119 | "node_modules/bytes": { 120 | "version": "3.1.2", 121 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 122 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 123 | "engines": { 124 | "node": ">= 0.8" 125 | } 126 | }, 127 | "node_modules/call-bind": { 128 | "version": "1.0.2", 129 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 130 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 131 | "dependencies": { 132 | "function-bind": "^1.1.1", 133 | "get-intrinsic": "^1.0.2" 134 | }, 135 | "funding": { 136 | "url": "https://github.com/sponsors/ljharb" 137 | } 138 | }, 139 | "node_modules/content-disposition": { 140 | "version": "0.5.4", 141 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 142 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 143 | "dependencies": { 144 | "safe-buffer": "5.2.1" 145 | }, 146 | "engines": { 147 | "node": ">= 0.6" 148 | } 149 | }, 150 | "node_modules/content-type": { 151 | "version": "1.0.4", 152 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 153 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 154 | "engines": { 155 | "node": ">= 0.6" 156 | } 157 | }, 158 | "node_modules/cookie": { 159 | "version": "0.5.0", 160 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 161 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 162 | "engines": { 163 | "node": ">= 0.6" 164 | } 165 | }, 166 | "node_modules/cookie-signature": { 167 | "version": "1.0.6", 168 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 169 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 170 | }, 171 | "node_modules/core-util-is": { 172 | "version": "1.0.3", 173 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 174 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" 175 | }, 176 | "node_modules/debug": { 177 | "version": "2.6.9", 178 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 179 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 180 | "dependencies": { 181 | "ms": "2.0.0" 182 | } 183 | }, 184 | "node_modules/denque": { 185 | "version": "1.5.1", 186 | "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", 187 | "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", 188 | "engines": { 189 | "node": ">=0.10" 190 | } 191 | }, 192 | "node_modules/depd": { 193 | "version": "2.0.0", 194 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 195 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 196 | "engines": { 197 | "node": ">= 0.8" 198 | } 199 | }, 200 | "node_modules/destroy": { 201 | "version": "1.2.0", 202 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 203 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 204 | "engines": { 205 | "node": ">= 0.8", 206 | "npm": "1.2.8000 || >= 1.4.16" 207 | } 208 | }, 209 | "node_modules/dotenv": { 210 | "version": "16.3.1", 211 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", 212 | "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", 213 | "engines": { 214 | "node": ">=12" 215 | }, 216 | "funding": { 217 | "url": "https://github.com/motdotla/dotenv?sponsor=1" 218 | } 219 | }, 220 | "node_modules/ecdsa-sig-formatter": { 221 | "version": "1.0.11", 222 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 223 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 224 | "dependencies": { 225 | "safe-buffer": "^5.0.1" 226 | } 227 | }, 228 | "node_modules/ee-first": { 229 | "version": "1.1.1", 230 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 231 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 232 | }, 233 | "node_modules/encodeurl": { 234 | "version": "1.0.2", 235 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 236 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 237 | "engines": { 238 | "node": ">= 0.8" 239 | } 240 | }, 241 | "node_modules/escape-html": { 242 | "version": "1.0.3", 243 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 244 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 245 | }, 246 | "node_modules/etag": { 247 | "version": "1.8.1", 248 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 249 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 250 | "engines": { 251 | "node": ">= 0.6" 252 | } 253 | }, 254 | "node_modules/express": { 255 | "version": "4.18.2", 256 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", 257 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", 258 | "dependencies": { 259 | "accepts": "~1.3.8", 260 | "array-flatten": "1.1.1", 261 | "body-parser": "1.20.1", 262 | "content-disposition": "0.5.4", 263 | "content-type": "~1.0.4", 264 | "cookie": "0.5.0", 265 | "cookie-signature": "1.0.6", 266 | "debug": "2.6.9", 267 | "depd": "2.0.0", 268 | "encodeurl": "~1.0.2", 269 | "escape-html": "~1.0.3", 270 | "etag": "~1.8.1", 271 | "finalhandler": "1.2.0", 272 | "fresh": "0.5.2", 273 | "http-errors": "2.0.0", 274 | "merge-descriptors": "1.0.1", 275 | "methods": "~1.1.2", 276 | "on-finished": "2.4.1", 277 | "parseurl": "~1.3.3", 278 | "path-to-regexp": "0.1.7", 279 | "proxy-addr": "~2.0.7", 280 | "qs": "6.11.0", 281 | "range-parser": "~1.2.1", 282 | "safe-buffer": "5.2.1", 283 | "send": "0.18.0", 284 | "serve-static": "1.15.0", 285 | "setprototypeof": "1.2.0", 286 | "statuses": "2.0.1", 287 | "type-is": "~1.6.18", 288 | "utils-merge": "1.0.1", 289 | "vary": "~1.1.2" 290 | }, 291 | "engines": { 292 | "node": ">= 0.10.0" 293 | } 294 | }, 295 | "node_modules/express-session": { 296 | "version": "1.17.3", 297 | "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", 298 | "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", 299 | "dependencies": { 300 | "cookie": "0.4.2", 301 | "cookie-signature": "1.0.6", 302 | "debug": "2.6.9", 303 | "depd": "~2.0.0", 304 | "on-headers": "~1.0.2", 305 | "parseurl": "~1.3.3", 306 | "safe-buffer": "5.2.1", 307 | "uid-safe": "~2.1.5" 308 | }, 309 | "engines": { 310 | "node": ">= 0.8.0" 311 | } 312 | }, 313 | "node_modules/express-session/node_modules/cookie": { 314 | "version": "0.4.2", 315 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", 316 | "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", 317 | "engines": { 318 | "node": ">= 0.6" 319 | } 320 | }, 321 | "node_modules/finalhandler": { 322 | "version": "1.2.0", 323 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 324 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 325 | "dependencies": { 326 | "debug": "2.6.9", 327 | "encodeurl": "~1.0.2", 328 | "escape-html": "~1.0.3", 329 | "on-finished": "2.4.1", 330 | "parseurl": "~1.3.3", 331 | "statuses": "2.0.1", 332 | "unpipe": "~1.0.0" 333 | }, 334 | "engines": { 335 | "node": ">= 0.8" 336 | } 337 | }, 338 | "node_modules/forwarded": { 339 | "version": "0.2.0", 340 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 341 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 342 | "engines": { 343 | "node": ">= 0.6" 344 | } 345 | }, 346 | "node_modules/fresh": { 347 | "version": "0.5.2", 348 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 349 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 350 | "engines": { 351 | "node": ">= 0.6" 352 | } 353 | }, 354 | "node_modules/function-bind": { 355 | "version": "1.1.1", 356 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 357 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 358 | }, 359 | "node_modules/get-intrinsic": { 360 | "version": "1.2.1", 361 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", 362 | "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", 363 | "dependencies": { 364 | "function-bind": "^1.1.1", 365 | "has": "^1.0.3", 366 | "has-proto": "^1.0.1", 367 | "has-symbols": "^1.0.3" 368 | }, 369 | "funding": { 370 | "url": "https://github.com/sponsors/ljharb" 371 | } 372 | }, 373 | "node_modules/has": { 374 | "version": "1.0.3", 375 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 376 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 377 | "dependencies": { 378 | "function-bind": "^1.1.1" 379 | }, 380 | "engines": { 381 | "node": ">= 0.4.0" 382 | } 383 | }, 384 | "node_modules/has-proto": { 385 | "version": "1.0.1", 386 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", 387 | "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", 388 | "engines": { 389 | "node": ">= 0.4" 390 | }, 391 | "funding": { 392 | "url": "https://github.com/sponsors/ljharb" 393 | } 394 | }, 395 | "node_modules/has-symbols": { 396 | "version": "1.0.3", 397 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 398 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 399 | "engines": { 400 | "node": ">= 0.4" 401 | }, 402 | "funding": { 403 | "url": "https://github.com/sponsors/ljharb" 404 | } 405 | }, 406 | "node_modules/http-errors": { 407 | "version": "2.0.0", 408 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 409 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 410 | "dependencies": { 411 | "depd": "2.0.0", 412 | "inherits": "2.0.4", 413 | "setprototypeof": "1.2.0", 414 | "statuses": "2.0.1", 415 | "toidentifier": "1.0.1" 416 | }, 417 | "engines": { 418 | "node": ">= 0.8" 419 | } 420 | }, 421 | "node_modules/iconv-lite": { 422 | "version": "0.4.24", 423 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 424 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 425 | "dependencies": { 426 | "safer-buffer": ">= 2.1.2 < 3" 427 | }, 428 | "engines": { 429 | "node": ">=0.10.0" 430 | } 431 | }, 432 | "node_modules/inherits": { 433 | "version": "2.0.4", 434 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 435 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 436 | }, 437 | "node_modules/ipaddr.js": { 438 | "version": "1.9.1", 439 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 440 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 441 | "engines": { 442 | "node": ">= 0.10" 443 | } 444 | }, 445 | "node_modules/isarray": { 446 | "version": "1.0.0", 447 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 448 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" 449 | }, 450 | "node_modules/jsonwebtoken": { 451 | "version": "9.0.2", 452 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", 453 | "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", 454 | "dependencies": { 455 | "jws": "^3.2.2", 456 | "lodash.includes": "^4.3.0", 457 | "lodash.isboolean": "^3.0.3", 458 | "lodash.isinteger": "^4.0.4", 459 | "lodash.isnumber": "^3.0.3", 460 | "lodash.isplainobject": "^4.0.6", 461 | "lodash.isstring": "^4.0.1", 462 | "lodash.once": "^4.0.0", 463 | "ms": "^2.1.1", 464 | "semver": "^7.5.4" 465 | }, 466 | "engines": { 467 | "node": ">=12", 468 | "npm": ">=6" 469 | } 470 | }, 471 | "node_modules/jsonwebtoken/node_modules/ms": { 472 | "version": "2.1.2", 473 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 474 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 475 | }, 476 | "node_modules/jwa": { 477 | "version": "1.4.1", 478 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 479 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 480 | "dependencies": { 481 | "buffer-equal-constant-time": "1.0.1", 482 | "ecdsa-sig-formatter": "1.0.11", 483 | "safe-buffer": "^5.0.1" 484 | } 485 | }, 486 | "node_modules/jws": { 487 | "version": "3.2.2", 488 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 489 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 490 | "dependencies": { 491 | "jwa": "^1.4.1", 492 | "safe-buffer": "^5.0.1" 493 | } 494 | }, 495 | "node_modules/kareem": { 496 | "version": "2.3.2", 497 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", 498 | "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" 499 | }, 500 | "node_modules/lodash.includes": { 501 | "version": "4.3.0", 502 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 503 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" 504 | }, 505 | "node_modules/lodash.isboolean": { 506 | "version": "3.0.3", 507 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 508 | "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" 509 | }, 510 | "node_modules/lodash.isinteger": { 511 | "version": "4.0.4", 512 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 513 | "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" 514 | }, 515 | "node_modules/lodash.isnumber": { 516 | "version": "3.0.3", 517 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 518 | "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" 519 | }, 520 | "node_modules/lodash.isplainobject": { 521 | "version": "4.0.6", 522 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 523 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 524 | }, 525 | "node_modules/lodash.isstring": { 526 | "version": "4.0.1", 527 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 528 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" 529 | }, 530 | "node_modules/lodash.once": { 531 | "version": "4.1.1", 532 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 533 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" 534 | }, 535 | "node_modules/lru-cache": { 536 | "version": "6.0.0", 537 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 538 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 539 | "dependencies": { 540 | "yallist": "^4.0.0" 541 | }, 542 | "engines": { 543 | "node": ">=10" 544 | } 545 | }, 546 | "node_modules/media-typer": { 547 | "version": "0.3.0", 548 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 549 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 550 | "engines": { 551 | "node": ">= 0.6" 552 | } 553 | }, 554 | "node_modules/memory-pager": { 555 | "version": "1.5.0", 556 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", 557 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", 558 | "optional": true 559 | }, 560 | "node_modules/merge-descriptors": { 561 | "version": "1.0.1", 562 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 563 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 564 | }, 565 | "node_modules/methods": { 566 | "version": "1.1.2", 567 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 568 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 569 | "engines": { 570 | "node": ">= 0.6" 571 | } 572 | }, 573 | "node_modules/mime": { 574 | "version": "1.6.0", 575 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 576 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 577 | "bin": { 578 | "mime": "cli.js" 579 | }, 580 | "engines": { 581 | "node": ">=4" 582 | } 583 | }, 584 | "node_modules/mime-db": { 585 | "version": "1.52.0", 586 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 587 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 588 | "engines": { 589 | "node": ">= 0.6" 590 | } 591 | }, 592 | "node_modules/mime-types": { 593 | "version": "2.1.35", 594 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 595 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 596 | "dependencies": { 597 | "mime-db": "1.52.0" 598 | }, 599 | "engines": { 600 | "node": ">= 0.6" 601 | } 602 | }, 603 | "node_modules/mongodb": { 604 | "version": "3.7.4", 605 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.7.4.tgz", 606 | "integrity": "sha512-K5q8aBqEXMwWdVNh94UQTwZ6BejVbFhh1uB6c5FKtPE9eUMZPUO3sRZdgIEcHSrAWmxzpG/FeODDKL388sqRmw==", 607 | "dependencies": { 608 | "bl": "^2.2.1", 609 | "bson": "^1.1.4", 610 | "denque": "^1.4.1", 611 | "optional-require": "^1.1.8", 612 | "safe-buffer": "^5.1.2" 613 | }, 614 | "engines": { 615 | "node": ">=4" 616 | }, 617 | "optionalDependencies": { 618 | "saslprep": "^1.0.0" 619 | }, 620 | "peerDependenciesMeta": { 621 | "aws4": { 622 | "optional": true 623 | }, 624 | "bson-ext": { 625 | "optional": true 626 | }, 627 | "kerberos": { 628 | "optional": true 629 | }, 630 | "mongodb-client-encryption": { 631 | "optional": true 632 | }, 633 | "mongodb-extjson": { 634 | "optional": true 635 | }, 636 | "snappy": { 637 | "optional": true 638 | } 639 | } 640 | }, 641 | "node_modules/mongodb/node_modules/optional-require": { 642 | "version": "1.1.8", 643 | "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz", 644 | "integrity": "sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==", 645 | "dependencies": { 646 | "require-at": "^1.0.6" 647 | }, 648 | "engines": { 649 | "node": ">=4" 650 | } 651 | }, 652 | "node_modules/mongoose": { 653 | "version": "5.13.20", 654 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.20.tgz", 655 | "integrity": "sha512-TjGFa/XnJYt+wLmn8y9ssjyO2OhBMeEBtOHb9iJM16EWu2Du6L1Q6zSiEK2ziyYQM8agb4tumNIQFzqbxId7MA==", 656 | "dependencies": { 657 | "@types/bson": "1.x || 4.0.x", 658 | "@types/mongodb": "^3.5.27", 659 | "bson": "^1.1.4", 660 | "kareem": "2.3.2", 661 | "mongodb": "3.7.4", 662 | "mongoose-legacy-pluralize": "1.0.2", 663 | "mpath": "0.8.4", 664 | "mquery": "3.2.5", 665 | "ms": "2.1.2", 666 | "optional-require": "1.0.x", 667 | "regexp-clone": "1.0.0", 668 | "safe-buffer": "5.2.1", 669 | "sift": "13.5.2", 670 | "sliced": "1.0.1" 671 | }, 672 | "engines": { 673 | "node": ">=4.0.0" 674 | }, 675 | "funding": { 676 | "type": "opencollective", 677 | "url": "https://opencollective.com/mongoose" 678 | } 679 | }, 680 | "node_modules/mongoose-legacy-pluralize": { 681 | "version": "1.0.2", 682 | "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", 683 | "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==", 684 | "peerDependencies": { 685 | "mongoose": "*" 686 | } 687 | }, 688 | "node_modules/mongoose/node_modules/ms": { 689 | "version": "2.1.2", 690 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 691 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 692 | }, 693 | "node_modules/mpath": { 694 | "version": "0.8.4", 695 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz", 696 | "integrity": "sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==", 697 | "engines": { 698 | "node": ">=4.0.0" 699 | } 700 | }, 701 | "node_modules/mquery": { 702 | "version": "3.2.5", 703 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz", 704 | "integrity": "sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==", 705 | "dependencies": { 706 | "bluebird": "3.5.1", 707 | "debug": "3.1.0", 708 | "regexp-clone": "^1.0.0", 709 | "safe-buffer": "5.1.2", 710 | "sliced": "1.0.1" 711 | }, 712 | "engines": { 713 | "node": ">=4.0.0" 714 | } 715 | }, 716 | "node_modules/mquery/node_modules/debug": { 717 | "version": "3.1.0", 718 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 719 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 720 | "dependencies": { 721 | "ms": "2.0.0" 722 | } 723 | }, 724 | "node_modules/mquery/node_modules/safe-buffer": { 725 | "version": "5.1.2", 726 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 727 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 728 | }, 729 | "node_modules/ms": { 730 | "version": "2.0.0", 731 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 732 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 733 | }, 734 | "node_modules/negotiator": { 735 | "version": "0.6.3", 736 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 737 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 738 | "engines": { 739 | "node": ">= 0.6" 740 | } 741 | }, 742 | "node_modules/oauth": { 743 | "version": "0.9.15", 744 | "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", 745 | "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE=" 746 | }, 747 | "node_modules/object-inspect": { 748 | "version": "1.12.3", 749 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 750 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", 751 | "funding": { 752 | "url": "https://github.com/sponsors/ljharb" 753 | } 754 | }, 755 | "node_modules/on-finished": { 756 | "version": "2.4.1", 757 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 758 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 759 | "dependencies": { 760 | "ee-first": "1.1.1" 761 | }, 762 | "engines": { 763 | "node": ">= 0.8" 764 | } 765 | }, 766 | "node_modules/on-headers": { 767 | "version": "1.0.2", 768 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 769 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", 770 | "engines": { 771 | "node": ">= 0.8" 772 | } 773 | }, 774 | "node_modules/optional-require": { 775 | "version": "1.0.3", 776 | "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz", 777 | "integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==", 778 | "engines": { 779 | "node": ">=4" 780 | } 781 | }, 782 | "node_modules/parseurl": { 783 | "version": "1.3.3", 784 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 785 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 786 | "engines": { 787 | "node": ">= 0.8" 788 | } 789 | }, 790 | "node_modules/passport": { 791 | "version": "0.6.0", 792 | "resolved": "https://registry.npmjs.org/passport/-/passport-0.6.0.tgz", 793 | "integrity": "sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==", 794 | "dependencies": { 795 | "passport-strategy": "1.x.x", 796 | "pause": "0.0.1", 797 | "utils-merge": "^1.0.1" 798 | }, 799 | "engines": { 800 | "node": ">= 0.4.0" 801 | }, 802 | "funding": { 803 | "type": "github", 804 | "url": "https://github.com/sponsors/jaredhanson" 805 | } 806 | }, 807 | "node_modules/passport-github": { 808 | "version": "1.1.0", 809 | "resolved": "https://registry.npmjs.org/passport-github/-/passport-github-1.1.0.tgz", 810 | "integrity": "sha1-jOHj/NYa11eOsd9ZWDnkrqEjVdQ=", 811 | "dependencies": { 812 | "passport-oauth2": "1.x.x" 813 | }, 814 | "engines": { 815 | "node": ">= 0.4.0" 816 | } 817 | }, 818 | "node_modules/passport-oauth2": { 819 | "version": "1.7.0", 820 | "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.7.0.tgz", 821 | "integrity": "sha512-j2gf34szdTF2Onw3+76alNnaAExlUmHvkc7cL+cmaS5NzHzDP/BvFHJruueQ9XAeNOdpI+CH+PWid8RA7KCwAQ==", 822 | "dependencies": { 823 | "base64url": "3.x.x", 824 | "oauth": "0.9.x", 825 | "passport-strategy": "1.x.x", 826 | "uid2": "0.0.x", 827 | "utils-merge": "1.x.x" 828 | }, 829 | "engines": { 830 | "node": ">= 0.4.0" 831 | }, 832 | "funding": { 833 | "type": "github", 834 | "url": "https://github.com/sponsors/jaredhanson" 835 | } 836 | }, 837 | "node_modules/passport-strategy": { 838 | "version": "1.0.0", 839 | "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", 840 | "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=", 841 | "engines": { 842 | "node": ">= 0.4.0" 843 | } 844 | }, 845 | "node_modules/path-to-regexp": { 846 | "version": "0.1.7", 847 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 848 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 849 | }, 850 | "node_modules/pause": { 851 | "version": "0.0.1", 852 | "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", 853 | "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" 854 | }, 855 | "node_modules/process-nextick-args": { 856 | "version": "2.0.1", 857 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 858 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 859 | }, 860 | "node_modules/proxy-addr": { 861 | "version": "2.0.7", 862 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 863 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 864 | "dependencies": { 865 | "forwarded": "0.2.0", 866 | "ipaddr.js": "1.9.1" 867 | }, 868 | "engines": { 869 | "node": ">= 0.10" 870 | } 871 | }, 872 | "node_modules/qs": { 873 | "version": "6.11.0", 874 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 875 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 876 | "dependencies": { 877 | "side-channel": "^1.0.4" 878 | }, 879 | "engines": { 880 | "node": ">=0.6" 881 | }, 882 | "funding": { 883 | "url": "https://github.com/sponsors/ljharb" 884 | } 885 | }, 886 | "node_modules/random-bytes": { 887 | "version": "1.0.0", 888 | "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", 889 | "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", 890 | "engines": { 891 | "node": ">= 0.8" 892 | } 893 | }, 894 | "node_modules/range-parser": { 895 | "version": "1.2.1", 896 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 897 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 898 | "engines": { 899 | "node": ">= 0.6" 900 | } 901 | }, 902 | "node_modules/raw-body": { 903 | "version": "2.5.1", 904 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 905 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 906 | "dependencies": { 907 | "bytes": "3.1.2", 908 | "http-errors": "2.0.0", 909 | "iconv-lite": "0.4.24", 910 | "unpipe": "1.0.0" 911 | }, 912 | "engines": { 913 | "node": ">= 0.8" 914 | } 915 | }, 916 | "node_modules/readable-stream": { 917 | "version": "2.3.8", 918 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 919 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 920 | "dependencies": { 921 | "core-util-is": "~1.0.0", 922 | "inherits": "~2.0.3", 923 | "isarray": "~1.0.0", 924 | "process-nextick-args": "~2.0.0", 925 | "safe-buffer": "~5.1.1", 926 | "string_decoder": "~1.1.1", 927 | "util-deprecate": "~1.0.1" 928 | } 929 | }, 930 | "node_modules/readable-stream/node_modules/safe-buffer": { 931 | "version": "5.1.2", 932 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 933 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 934 | }, 935 | "node_modules/regexp-clone": { 936 | "version": "1.0.0", 937 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", 938 | "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" 939 | }, 940 | "node_modules/require-at": { 941 | "version": "1.0.6", 942 | "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", 943 | "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==", 944 | "engines": { 945 | "node": ">=4" 946 | } 947 | }, 948 | "node_modules/safe-buffer": { 949 | "version": "5.2.1", 950 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 951 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 952 | "funding": [ 953 | { 954 | "type": "github", 955 | "url": "https://github.com/sponsors/feross" 956 | }, 957 | { 958 | "type": "patreon", 959 | "url": "https://www.patreon.com/feross" 960 | }, 961 | { 962 | "type": "consulting", 963 | "url": "https://feross.org/support" 964 | } 965 | ] 966 | }, 967 | "node_modules/safer-buffer": { 968 | "version": "2.1.2", 969 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 970 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 971 | }, 972 | "node_modules/saslprep": { 973 | "version": "1.0.3", 974 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", 975 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", 976 | "optional": true, 977 | "dependencies": { 978 | "sparse-bitfield": "^3.0.3" 979 | }, 980 | "engines": { 981 | "node": ">=6" 982 | } 983 | }, 984 | "node_modules/semver": { 985 | "version": "7.5.4", 986 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 987 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 988 | "dependencies": { 989 | "lru-cache": "^6.0.0" 990 | }, 991 | "bin": { 992 | "semver": "bin/semver.js" 993 | }, 994 | "engines": { 995 | "node": ">=10" 996 | } 997 | }, 998 | "node_modules/send": { 999 | "version": "0.18.0", 1000 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 1001 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 1002 | "dependencies": { 1003 | "debug": "2.6.9", 1004 | "depd": "2.0.0", 1005 | "destroy": "1.2.0", 1006 | "encodeurl": "~1.0.2", 1007 | "escape-html": "~1.0.3", 1008 | "etag": "~1.8.1", 1009 | "fresh": "0.5.2", 1010 | "http-errors": "2.0.0", 1011 | "mime": "1.6.0", 1012 | "ms": "2.1.3", 1013 | "on-finished": "2.4.1", 1014 | "range-parser": "~1.2.1", 1015 | "statuses": "2.0.1" 1016 | }, 1017 | "engines": { 1018 | "node": ">= 0.8.0" 1019 | } 1020 | }, 1021 | "node_modules/send/node_modules/ms": { 1022 | "version": "2.1.3", 1023 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1024 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1025 | }, 1026 | "node_modules/serve-static": { 1027 | "version": "1.15.0", 1028 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 1029 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 1030 | "dependencies": { 1031 | "encodeurl": "~1.0.2", 1032 | "escape-html": "~1.0.3", 1033 | "parseurl": "~1.3.3", 1034 | "send": "0.18.0" 1035 | }, 1036 | "engines": { 1037 | "node": ">= 0.8.0" 1038 | } 1039 | }, 1040 | "node_modules/setprototypeof": { 1041 | "version": "1.2.0", 1042 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1043 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1044 | }, 1045 | "node_modules/side-channel": { 1046 | "version": "1.0.4", 1047 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1048 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1049 | "dependencies": { 1050 | "call-bind": "^1.0.0", 1051 | "get-intrinsic": "^1.0.2", 1052 | "object-inspect": "^1.9.0" 1053 | }, 1054 | "funding": { 1055 | "url": "https://github.com/sponsors/ljharb" 1056 | } 1057 | }, 1058 | "node_modules/sift": { 1059 | "version": "13.5.2", 1060 | "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", 1061 | "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" 1062 | }, 1063 | "node_modules/sliced": { 1064 | "version": "1.0.1", 1065 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", 1066 | "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==" 1067 | }, 1068 | "node_modules/sparse-bitfield": { 1069 | "version": "3.0.3", 1070 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", 1071 | "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", 1072 | "optional": true, 1073 | "dependencies": { 1074 | "memory-pager": "^1.0.2" 1075 | } 1076 | }, 1077 | "node_modules/statuses": { 1078 | "version": "2.0.1", 1079 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1080 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 1081 | "engines": { 1082 | "node": ">= 0.8" 1083 | } 1084 | }, 1085 | "node_modules/string_decoder": { 1086 | "version": "1.1.1", 1087 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1088 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1089 | "dependencies": { 1090 | "safe-buffer": "~5.1.0" 1091 | } 1092 | }, 1093 | "node_modules/string_decoder/node_modules/safe-buffer": { 1094 | "version": "5.1.2", 1095 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1096 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1097 | }, 1098 | "node_modules/toidentifier": { 1099 | "version": "1.0.1", 1100 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1101 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 1102 | "engines": { 1103 | "node": ">=0.6" 1104 | } 1105 | }, 1106 | "node_modules/type-is": { 1107 | "version": "1.6.18", 1108 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1109 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1110 | "dependencies": { 1111 | "media-typer": "0.3.0", 1112 | "mime-types": "~2.1.24" 1113 | }, 1114 | "engines": { 1115 | "node": ">= 0.6" 1116 | } 1117 | }, 1118 | "node_modules/uid-safe": { 1119 | "version": "2.1.5", 1120 | "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", 1121 | "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", 1122 | "dependencies": { 1123 | "random-bytes": "~1.0.0" 1124 | }, 1125 | "engines": { 1126 | "node": ">= 0.8" 1127 | } 1128 | }, 1129 | "node_modules/uid2": { 1130 | "version": "0.0.3", 1131 | "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", 1132 | "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" 1133 | }, 1134 | "node_modules/unpipe": { 1135 | "version": "1.0.0", 1136 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1137 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 1138 | "engines": { 1139 | "node": ">= 0.8" 1140 | } 1141 | }, 1142 | "node_modules/util-deprecate": { 1143 | "version": "1.0.2", 1144 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1145 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 1146 | }, 1147 | "node_modules/utils-merge": { 1148 | "version": "1.0.1", 1149 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1150 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 1151 | "engines": { 1152 | "node": ">= 0.4.0" 1153 | } 1154 | }, 1155 | "node_modules/vary": { 1156 | "version": "1.1.2", 1157 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1158 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 1159 | "engines": { 1160 | "node": ">= 0.8" 1161 | } 1162 | }, 1163 | "node_modules/yallist": { 1164 | "version": "4.0.0", 1165 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1166 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1167 | } 1168 | }, 1169 | "dependencies": { 1170 | "@types/bson": { 1171 | "version": "4.0.5", 1172 | "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.5.tgz", 1173 | "integrity": "sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg==", 1174 | "requires": { 1175 | "@types/node": "*" 1176 | } 1177 | }, 1178 | "@types/mongodb": { 1179 | "version": "3.6.20", 1180 | "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz", 1181 | "integrity": "sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==", 1182 | "requires": { 1183 | "@types/bson": "*", 1184 | "@types/node": "*" 1185 | } 1186 | }, 1187 | "@types/node": { 1188 | "version": "20.6.0", 1189 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz", 1190 | "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==" 1191 | }, 1192 | "accepts": { 1193 | "version": "1.3.8", 1194 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 1195 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 1196 | "requires": { 1197 | "mime-types": "~2.1.34", 1198 | "negotiator": "0.6.3" 1199 | } 1200 | }, 1201 | "array-flatten": { 1202 | "version": "1.1.1", 1203 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 1204 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 1205 | }, 1206 | "base64url": { 1207 | "version": "3.0.1", 1208 | "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", 1209 | "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" 1210 | }, 1211 | "bl": { 1212 | "version": "2.2.1", 1213 | "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", 1214 | "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", 1215 | "requires": { 1216 | "readable-stream": "^2.3.5", 1217 | "safe-buffer": "^5.1.1" 1218 | } 1219 | }, 1220 | "bluebird": { 1221 | "version": "3.5.1", 1222 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", 1223 | "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" 1224 | }, 1225 | "body-parser": { 1226 | "version": "1.20.1", 1227 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 1228 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 1229 | "requires": { 1230 | "bytes": "3.1.2", 1231 | "content-type": "~1.0.4", 1232 | "debug": "2.6.9", 1233 | "depd": "2.0.0", 1234 | "destroy": "1.2.0", 1235 | "http-errors": "2.0.0", 1236 | "iconv-lite": "0.4.24", 1237 | "on-finished": "2.4.1", 1238 | "qs": "6.11.0", 1239 | "raw-body": "2.5.1", 1240 | "type-is": "~1.6.18", 1241 | "unpipe": "1.0.0" 1242 | } 1243 | }, 1244 | "bson": { 1245 | "version": "1.1.6", 1246 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", 1247 | "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==" 1248 | }, 1249 | "buffer-equal-constant-time": { 1250 | "version": "1.0.1", 1251 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 1252 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 1253 | }, 1254 | "bytes": { 1255 | "version": "3.1.2", 1256 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 1257 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 1258 | }, 1259 | "call-bind": { 1260 | "version": "1.0.2", 1261 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1262 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1263 | "requires": { 1264 | "function-bind": "^1.1.1", 1265 | "get-intrinsic": "^1.0.2" 1266 | } 1267 | }, 1268 | "content-disposition": { 1269 | "version": "0.5.4", 1270 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 1271 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 1272 | "requires": { 1273 | "safe-buffer": "5.2.1" 1274 | } 1275 | }, 1276 | "content-type": { 1277 | "version": "1.0.4", 1278 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 1279 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 1280 | }, 1281 | "cookie": { 1282 | "version": "0.5.0", 1283 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 1284 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 1285 | }, 1286 | "cookie-signature": { 1287 | "version": "1.0.6", 1288 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 1289 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 1290 | }, 1291 | "core-util-is": { 1292 | "version": "1.0.3", 1293 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 1294 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" 1295 | }, 1296 | "debug": { 1297 | "version": "2.6.9", 1298 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1299 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1300 | "requires": { 1301 | "ms": "2.0.0" 1302 | } 1303 | }, 1304 | "denque": { 1305 | "version": "1.5.1", 1306 | "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", 1307 | "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==" 1308 | }, 1309 | "depd": { 1310 | "version": "2.0.0", 1311 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1312 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 1313 | }, 1314 | "destroy": { 1315 | "version": "1.2.0", 1316 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1317 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 1318 | }, 1319 | "dotenv": { 1320 | "version": "16.3.1", 1321 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", 1322 | "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==" 1323 | }, 1324 | "ecdsa-sig-formatter": { 1325 | "version": "1.0.11", 1326 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 1327 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 1328 | "requires": { 1329 | "safe-buffer": "^5.0.1" 1330 | } 1331 | }, 1332 | "ee-first": { 1333 | "version": "1.1.1", 1334 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1335 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 1336 | }, 1337 | "encodeurl": { 1338 | "version": "1.0.2", 1339 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1340 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 1341 | }, 1342 | "escape-html": { 1343 | "version": "1.0.3", 1344 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1345 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 1346 | }, 1347 | "etag": { 1348 | "version": "1.8.1", 1349 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1350 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 1351 | }, 1352 | "express": { 1353 | "version": "4.18.2", 1354 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", 1355 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", 1356 | "requires": { 1357 | "accepts": "~1.3.8", 1358 | "array-flatten": "1.1.1", 1359 | "body-parser": "1.20.1", 1360 | "content-disposition": "0.5.4", 1361 | "content-type": "~1.0.4", 1362 | "cookie": "0.5.0", 1363 | "cookie-signature": "1.0.6", 1364 | "debug": "2.6.9", 1365 | "depd": "2.0.0", 1366 | "encodeurl": "~1.0.2", 1367 | "escape-html": "~1.0.3", 1368 | "etag": "~1.8.1", 1369 | "finalhandler": "1.2.0", 1370 | "fresh": "0.5.2", 1371 | "http-errors": "2.0.0", 1372 | "merge-descriptors": "1.0.1", 1373 | "methods": "~1.1.2", 1374 | "on-finished": "2.4.1", 1375 | "parseurl": "~1.3.3", 1376 | "path-to-regexp": "0.1.7", 1377 | "proxy-addr": "~2.0.7", 1378 | "qs": "6.11.0", 1379 | "range-parser": "~1.2.1", 1380 | "safe-buffer": "5.2.1", 1381 | "send": "0.18.0", 1382 | "serve-static": "1.15.0", 1383 | "setprototypeof": "1.2.0", 1384 | "statuses": "2.0.1", 1385 | "type-is": "~1.6.18", 1386 | "utils-merge": "1.0.1", 1387 | "vary": "~1.1.2" 1388 | } 1389 | }, 1390 | "express-session": { 1391 | "version": "1.17.3", 1392 | "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz", 1393 | "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==", 1394 | "requires": { 1395 | "cookie": "0.4.2", 1396 | "cookie-signature": "1.0.6", 1397 | "debug": "2.6.9", 1398 | "depd": "~2.0.0", 1399 | "on-headers": "~1.0.2", 1400 | "parseurl": "~1.3.3", 1401 | "safe-buffer": "5.2.1", 1402 | "uid-safe": "~2.1.5" 1403 | }, 1404 | "dependencies": { 1405 | "cookie": { 1406 | "version": "0.4.2", 1407 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", 1408 | "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" 1409 | } 1410 | } 1411 | }, 1412 | "finalhandler": { 1413 | "version": "1.2.0", 1414 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 1415 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 1416 | "requires": { 1417 | "debug": "2.6.9", 1418 | "encodeurl": "~1.0.2", 1419 | "escape-html": "~1.0.3", 1420 | "on-finished": "2.4.1", 1421 | "parseurl": "~1.3.3", 1422 | "statuses": "2.0.1", 1423 | "unpipe": "~1.0.0" 1424 | } 1425 | }, 1426 | "forwarded": { 1427 | "version": "0.2.0", 1428 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 1429 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 1430 | }, 1431 | "fresh": { 1432 | "version": "0.5.2", 1433 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1434 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 1435 | }, 1436 | "function-bind": { 1437 | "version": "1.1.1", 1438 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1439 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1440 | }, 1441 | "get-intrinsic": { 1442 | "version": "1.2.1", 1443 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", 1444 | "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", 1445 | "requires": { 1446 | "function-bind": "^1.1.1", 1447 | "has": "^1.0.3", 1448 | "has-proto": "^1.0.1", 1449 | "has-symbols": "^1.0.3" 1450 | } 1451 | }, 1452 | "has": { 1453 | "version": "1.0.3", 1454 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1455 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1456 | "requires": { 1457 | "function-bind": "^1.1.1" 1458 | } 1459 | }, 1460 | "has-proto": { 1461 | "version": "1.0.1", 1462 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", 1463 | "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" 1464 | }, 1465 | "has-symbols": { 1466 | "version": "1.0.3", 1467 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1468 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 1469 | }, 1470 | "http-errors": { 1471 | "version": "2.0.0", 1472 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1473 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1474 | "requires": { 1475 | "depd": "2.0.0", 1476 | "inherits": "2.0.4", 1477 | "setprototypeof": "1.2.0", 1478 | "statuses": "2.0.1", 1479 | "toidentifier": "1.0.1" 1480 | } 1481 | }, 1482 | "iconv-lite": { 1483 | "version": "0.4.24", 1484 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1485 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1486 | "requires": { 1487 | "safer-buffer": ">= 2.1.2 < 3" 1488 | } 1489 | }, 1490 | "inherits": { 1491 | "version": "2.0.4", 1492 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1493 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1494 | }, 1495 | "ipaddr.js": { 1496 | "version": "1.9.1", 1497 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1498 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1499 | }, 1500 | "isarray": { 1501 | "version": "1.0.0", 1502 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1503 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" 1504 | }, 1505 | "jsonwebtoken": { 1506 | "version": "9.0.2", 1507 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", 1508 | "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", 1509 | "requires": { 1510 | "jws": "^3.2.2", 1511 | "lodash.includes": "^4.3.0", 1512 | "lodash.isboolean": "^3.0.3", 1513 | "lodash.isinteger": "^4.0.4", 1514 | "lodash.isnumber": "^3.0.3", 1515 | "lodash.isplainobject": "^4.0.6", 1516 | "lodash.isstring": "^4.0.1", 1517 | "lodash.once": "^4.0.0", 1518 | "ms": "^2.1.1", 1519 | "semver": "^7.5.4" 1520 | }, 1521 | "dependencies": { 1522 | "ms": { 1523 | "version": "2.1.2", 1524 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1525 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1526 | } 1527 | } 1528 | }, 1529 | "jwa": { 1530 | "version": "1.4.1", 1531 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 1532 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 1533 | "requires": { 1534 | "buffer-equal-constant-time": "1.0.1", 1535 | "ecdsa-sig-formatter": "1.0.11", 1536 | "safe-buffer": "^5.0.1" 1537 | } 1538 | }, 1539 | "jws": { 1540 | "version": "3.2.2", 1541 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 1542 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 1543 | "requires": { 1544 | "jwa": "^1.4.1", 1545 | "safe-buffer": "^5.0.1" 1546 | } 1547 | }, 1548 | "kareem": { 1549 | "version": "2.3.2", 1550 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", 1551 | "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" 1552 | }, 1553 | "lodash.includes": { 1554 | "version": "4.3.0", 1555 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 1556 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" 1557 | }, 1558 | "lodash.isboolean": { 1559 | "version": "3.0.3", 1560 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 1561 | "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" 1562 | }, 1563 | "lodash.isinteger": { 1564 | "version": "4.0.4", 1565 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 1566 | "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" 1567 | }, 1568 | "lodash.isnumber": { 1569 | "version": "3.0.3", 1570 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 1571 | "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" 1572 | }, 1573 | "lodash.isplainobject": { 1574 | "version": "4.0.6", 1575 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1576 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 1577 | }, 1578 | "lodash.isstring": { 1579 | "version": "4.0.1", 1580 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 1581 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" 1582 | }, 1583 | "lodash.once": { 1584 | "version": "4.1.1", 1585 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 1586 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" 1587 | }, 1588 | "lru-cache": { 1589 | "version": "6.0.0", 1590 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1591 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1592 | "requires": { 1593 | "yallist": "^4.0.0" 1594 | } 1595 | }, 1596 | "media-typer": { 1597 | "version": "0.3.0", 1598 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1599 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1600 | }, 1601 | "memory-pager": { 1602 | "version": "1.5.0", 1603 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", 1604 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", 1605 | "optional": true 1606 | }, 1607 | "merge-descriptors": { 1608 | "version": "1.0.1", 1609 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1610 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 1611 | }, 1612 | "methods": { 1613 | "version": "1.1.2", 1614 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1615 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 1616 | }, 1617 | "mime": { 1618 | "version": "1.6.0", 1619 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1620 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1621 | }, 1622 | "mime-db": { 1623 | "version": "1.52.0", 1624 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1625 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1626 | }, 1627 | "mime-types": { 1628 | "version": "2.1.35", 1629 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1630 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1631 | "requires": { 1632 | "mime-db": "1.52.0" 1633 | } 1634 | }, 1635 | "mongodb": { 1636 | "version": "3.7.4", 1637 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.7.4.tgz", 1638 | "integrity": "sha512-K5q8aBqEXMwWdVNh94UQTwZ6BejVbFhh1uB6c5FKtPE9eUMZPUO3sRZdgIEcHSrAWmxzpG/FeODDKL388sqRmw==", 1639 | "requires": { 1640 | "bl": "^2.2.1", 1641 | "bson": "^1.1.4", 1642 | "denque": "^1.4.1", 1643 | "optional-require": "^1.1.8", 1644 | "safe-buffer": "^5.1.2", 1645 | "saslprep": "^1.0.0" 1646 | }, 1647 | "dependencies": { 1648 | "optional-require": { 1649 | "version": "1.1.8", 1650 | "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz", 1651 | "integrity": "sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==", 1652 | "requires": { 1653 | "require-at": "^1.0.6" 1654 | } 1655 | } 1656 | } 1657 | }, 1658 | "mongoose": { 1659 | "version": "5.13.20", 1660 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.20.tgz", 1661 | "integrity": "sha512-TjGFa/XnJYt+wLmn8y9ssjyO2OhBMeEBtOHb9iJM16EWu2Du6L1Q6zSiEK2ziyYQM8agb4tumNIQFzqbxId7MA==", 1662 | "requires": { 1663 | "@types/bson": "1.x || 4.0.x", 1664 | "@types/mongodb": "^3.5.27", 1665 | "bson": "^1.1.4", 1666 | "kareem": "2.3.2", 1667 | "mongodb": "3.7.4", 1668 | "mongoose-legacy-pluralize": "1.0.2", 1669 | "mpath": "0.8.4", 1670 | "mquery": "3.2.5", 1671 | "ms": "2.1.2", 1672 | "optional-require": "1.0.x", 1673 | "regexp-clone": "1.0.0", 1674 | "safe-buffer": "5.2.1", 1675 | "sift": "13.5.2", 1676 | "sliced": "1.0.1" 1677 | }, 1678 | "dependencies": { 1679 | "ms": { 1680 | "version": "2.1.2", 1681 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1682 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1683 | } 1684 | } 1685 | }, 1686 | "mongoose-legacy-pluralize": { 1687 | "version": "1.0.2", 1688 | "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", 1689 | "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==", 1690 | "requires": {} 1691 | }, 1692 | "mpath": { 1693 | "version": "0.8.4", 1694 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz", 1695 | "integrity": "sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==" 1696 | }, 1697 | "mquery": { 1698 | "version": "3.2.5", 1699 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz", 1700 | "integrity": "sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==", 1701 | "requires": { 1702 | "bluebird": "3.5.1", 1703 | "debug": "3.1.0", 1704 | "regexp-clone": "^1.0.0", 1705 | "safe-buffer": "5.1.2", 1706 | "sliced": "1.0.1" 1707 | }, 1708 | "dependencies": { 1709 | "debug": { 1710 | "version": "3.1.0", 1711 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1712 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1713 | "requires": { 1714 | "ms": "2.0.0" 1715 | } 1716 | }, 1717 | "safe-buffer": { 1718 | "version": "5.1.2", 1719 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1720 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1721 | } 1722 | } 1723 | }, 1724 | "ms": { 1725 | "version": "2.0.0", 1726 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1727 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1728 | }, 1729 | "negotiator": { 1730 | "version": "0.6.3", 1731 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1732 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 1733 | }, 1734 | "oauth": { 1735 | "version": "0.9.15", 1736 | "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", 1737 | "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE=" 1738 | }, 1739 | "object-inspect": { 1740 | "version": "1.12.3", 1741 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 1742 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" 1743 | }, 1744 | "on-finished": { 1745 | "version": "2.4.1", 1746 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1747 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1748 | "requires": { 1749 | "ee-first": "1.1.1" 1750 | } 1751 | }, 1752 | "on-headers": { 1753 | "version": "1.0.2", 1754 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 1755 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" 1756 | }, 1757 | "optional-require": { 1758 | "version": "1.0.3", 1759 | "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz", 1760 | "integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==" 1761 | }, 1762 | "parseurl": { 1763 | "version": "1.3.3", 1764 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1765 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1766 | }, 1767 | "passport": { 1768 | "version": "0.6.0", 1769 | "resolved": "https://registry.npmjs.org/passport/-/passport-0.6.0.tgz", 1770 | "integrity": "sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==", 1771 | "requires": { 1772 | "passport-strategy": "1.x.x", 1773 | "pause": "0.0.1", 1774 | "utils-merge": "^1.0.1" 1775 | } 1776 | }, 1777 | "passport-github": { 1778 | "version": "1.1.0", 1779 | "resolved": "https://registry.npmjs.org/passport-github/-/passport-github-1.1.0.tgz", 1780 | "integrity": "sha1-jOHj/NYa11eOsd9ZWDnkrqEjVdQ=", 1781 | "requires": { 1782 | "passport-oauth2": "1.x.x" 1783 | } 1784 | }, 1785 | "passport-oauth2": { 1786 | "version": "1.7.0", 1787 | "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.7.0.tgz", 1788 | "integrity": "sha512-j2gf34szdTF2Onw3+76alNnaAExlUmHvkc7cL+cmaS5NzHzDP/BvFHJruueQ9XAeNOdpI+CH+PWid8RA7KCwAQ==", 1789 | "requires": { 1790 | "base64url": "3.x.x", 1791 | "oauth": "0.9.x", 1792 | "passport-strategy": "1.x.x", 1793 | "uid2": "0.0.x", 1794 | "utils-merge": "1.x.x" 1795 | } 1796 | }, 1797 | "passport-strategy": { 1798 | "version": "1.0.0", 1799 | "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", 1800 | "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=" 1801 | }, 1802 | "path-to-regexp": { 1803 | "version": "0.1.7", 1804 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1805 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 1806 | }, 1807 | "pause": { 1808 | "version": "0.0.1", 1809 | "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", 1810 | "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" 1811 | }, 1812 | "process-nextick-args": { 1813 | "version": "2.0.1", 1814 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1815 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1816 | }, 1817 | "proxy-addr": { 1818 | "version": "2.0.7", 1819 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1820 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1821 | "requires": { 1822 | "forwarded": "0.2.0", 1823 | "ipaddr.js": "1.9.1" 1824 | } 1825 | }, 1826 | "qs": { 1827 | "version": "6.11.0", 1828 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 1829 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 1830 | "requires": { 1831 | "side-channel": "^1.0.4" 1832 | } 1833 | }, 1834 | "random-bytes": { 1835 | "version": "1.0.0", 1836 | "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", 1837 | "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==" 1838 | }, 1839 | "range-parser": { 1840 | "version": "1.2.1", 1841 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1842 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1843 | }, 1844 | "raw-body": { 1845 | "version": "2.5.1", 1846 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 1847 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 1848 | "requires": { 1849 | "bytes": "3.1.2", 1850 | "http-errors": "2.0.0", 1851 | "iconv-lite": "0.4.24", 1852 | "unpipe": "1.0.0" 1853 | } 1854 | }, 1855 | "readable-stream": { 1856 | "version": "2.3.8", 1857 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 1858 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 1859 | "requires": { 1860 | "core-util-is": "~1.0.0", 1861 | "inherits": "~2.0.3", 1862 | "isarray": "~1.0.0", 1863 | "process-nextick-args": "~2.0.0", 1864 | "safe-buffer": "~5.1.1", 1865 | "string_decoder": "~1.1.1", 1866 | "util-deprecate": "~1.0.1" 1867 | }, 1868 | "dependencies": { 1869 | "safe-buffer": { 1870 | "version": "5.1.2", 1871 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1872 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1873 | } 1874 | } 1875 | }, 1876 | "regexp-clone": { 1877 | "version": "1.0.0", 1878 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", 1879 | "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" 1880 | }, 1881 | "require-at": { 1882 | "version": "1.0.6", 1883 | "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", 1884 | "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==" 1885 | }, 1886 | "safe-buffer": { 1887 | "version": "5.2.1", 1888 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1889 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1890 | }, 1891 | "safer-buffer": { 1892 | "version": "2.1.2", 1893 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1894 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1895 | }, 1896 | "saslprep": { 1897 | "version": "1.0.3", 1898 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", 1899 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", 1900 | "optional": true, 1901 | "requires": { 1902 | "sparse-bitfield": "^3.0.3" 1903 | } 1904 | }, 1905 | "semver": { 1906 | "version": "7.5.4", 1907 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 1908 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 1909 | "requires": { 1910 | "lru-cache": "^6.0.0" 1911 | } 1912 | }, 1913 | "send": { 1914 | "version": "0.18.0", 1915 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 1916 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 1917 | "requires": { 1918 | "debug": "2.6.9", 1919 | "depd": "2.0.0", 1920 | "destroy": "1.2.0", 1921 | "encodeurl": "~1.0.2", 1922 | "escape-html": "~1.0.3", 1923 | "etag": "~1.8.1", 1924 | "fresh": "0.5.2", 1925 | "http-errors": "2.0.0", 1926 | "mime": "1.6.0", 1927 | "ms": "2.1.3", 1928 | "on-finished": "2.4.1", 1929 | "range-parser": "~1.2.1", 1930 | "statuses": "2.0.1" 1931 | }, 1932 | "dependencies": { 1933 | "ms": { 1934 | "version": "2.1.3", 1935 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1936 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1937 | } 1938 | } 1939 | }, 1940 | "serve-static": { 1941 | "version": "1.15.0", 1942 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 1943 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 1944 | "requires": { 1945 | "encodeurl": "~1.0.2", 1946 | "escape-html": "~1.0.3", 1947 | "parseurl": "~1.3.3", 1948 | "send": "0.18.0" 1949 | } 1950 | }, 1951 | "setprototypeof": { 1952 | "version": "1.2.0", 1953 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1954 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1955 | }, 1956 | "side-channel": { 1957 | "version": "1.0.4", 1958 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1959 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1960 | "requires": { 1961 | "call-bind": "^1.0.0", 1962 | "get-intrinsic": "^1.0.2", 1963 | "object-inspect": "^1.9.0" 1964 | } 1965 | }, 1966 | "sift": { 1967 | "version": "13.5.2", 1968 | "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", 1969 | "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" 1970 | }, 1971 | "sliced": { 1972 | "version": "1.0.1", 1973 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", 1974 | "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==" 1975 | }, 1976 | "sparse-bitfield": { 1977 | "version": "3.0.3", 1978 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", 1979 | "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", 1980 | "optional": true, 1981 | "requires": { 1982 | "memory-pager": "^1.0.2" 1983 | } 1984 | }, 1985 | "statuses": { 1986 | "version": "2.0.1", 1987 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1988 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 1989 | }, 1990 | "string_decoder": { 1991 | "version": "1.1.1", 1992 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1993 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1994 | "requires": { 1995 | "safe-buffer": "~5.1.0" 1996 | }, 1997 | "dependencies": { 1998 | "safe-buffer": { 1999 | "version": "5.1.2", 2000 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2001 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2002 | } 2003 | } 2004 | }, 2005 | "toidentifier": { 2006 | "version": "1.0.1", 2007 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 2008 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 2009 | }, 2010 | "type-is": { 2011 | "version": "1.6.18", 2012 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2013 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2014 | "requires": { 2015 | "media-typer": "0.3.0", 2016 | "mime-types": "~2.1.24" 2017 | } 2018 | }, 2019 | "uid-safe": { 2020 | "version": "2.1.5", 2021 | "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", 2022 | "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", 2023 | "requires": { 2024 | "random-bytes": "~1.0.0" 2025 | } 2026 | }, 2027 | "uid2": { 2028 | "version": "0.0.3", 2029 | "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", 2030 | "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" 2031 | }, 2032 | "unpipe": { 2033 | "version": "1.0.0", 2034 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2035 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 2036 | }, 2037 | "util-deprecate": { 2038 | "version": "1.0.2", 2039 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2040 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 2041 | }, 2042 | "utils-merge": { 2043 | "version": "1.0.1", 2044 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2045 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 2046 | }, 2047 | "vary": { 2048 | "version": "1.1.2", 2049 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2050 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 2051 | }, 2052 | "yallist": { 2053 | "version": "4.0.0", 2054 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2055 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 2056 | } 2057 | } 2058 | } 2059 | -------------------------------------------------------------------------------- /api/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "body-parser": "^1.19.0", 13 | "dotenv": "^16.3.1", 14 | "express": "^4.17.1", 15 | "express-session": "^1.17.3", 16 | "jsonwebtoken": "^9.0.2", 17 | "mongoose": "^5.9.4", 18 | "passport": "^0.6.0", 19 | "passport-github": "^1.1.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /api/routes/auth.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const jwt = require('jsonwebtoken'); 3 | const passport = require('passport'); 4 | const { Strategy } = require('passport-github'); 5 | 6 | const users = require('../db/services/user'); 7 | const JWT_KEY = "something_private_and_long_enough_to_secure" 8 | 9 | const router = express(); 10 | 11 | passport.use(new Strategy({ 12 | clientID: process.env.GITHUB_CLIENT_ID, 13 | clientSecret: process.env.GITHUB_CLIENT_SECRET, 14 | callbackURL: "http://localhost:3001/auth/github/callback" 15 | }, 16 | 17 | function (accessToken, refreshToken, profile, cb) { 18 | users.findOrCreate(profile); 19 | return cb(null, profile); 20 | } 21 | )); 22 | 23 | router.get('/github', (req, res, next) => { 24 | const { redirectTo } = req.query; 25 | const state = JSON.stringify({ redirectTo }); 26 | const authenticator = passport.authenticate('github', { scope: [], state, session: true }); 27 | authenticator(req, res, next); 28 | }, (req, res, next) =>{ 29 | next(); 30 | }); 31 | 32 | router.get( 33 | '/github/callback', 34 | passport.authenticate('github', { failureRedirect: '/login' }), (req, res, next) => { 35 | const token = jwt.sign({id: req.user.id}, JWT_KEY, {expiresIn: 60 * 60 * 24 * 1000}) 36 | req.logIn(req.user, function(err) { 37 | if (err) return next(err); ; 38 | res.redirect(`http://localhost:3000?token=${token}`) 39 | }); 40 | 41 | }, 42 | ); 43 | module.exports = router; -------------------------------------------------------------------------------- /api/routes/user.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const jwt = require('jsonwebtoken') 3 | const userService = require('../db/services/user') 4 | const JWT_KEY = "something_private_and_long_enough_to_secure" 5 | 6 | const router = express() 7 | 8 | router.use((req, res, next) => { 9 | const token = req.headers['authorization']; 10 | jwt.verify(token, JWT_KEY, function (err, data) { 11 | if (err) { 12 | res.status(401).send({ error: "NotAuthorized" }) 13 | } else { 14 | req.user = data; 15 | next(); 16 | } 17 | }) 18 | }) 19 | 20 | router.get('/', async (req, res) => { 21 | user = await userService.fineById(req.user.id) 22 | 23 | res.json(user); 24 | }) 25 | 26 | module.exports = router; -------------------------------------------------------------------------------- /client/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | .env* 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | -------------------------------------------------------------------------------- /client/.tool-versions: -------------------------------------------------------------------------------- 1 | nodejs 19.8.1 -------------------------------------------------------------------------------- /client/README.md: -------------------------------------------------------------------------------- 1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/zeit/next.js/tree/canary/packages/create-next-app). 2 | 3 | ## Getting Started 4 | 5 | First, run the development server: 6 | 7 | ```bash 8 | npm run dev 9 | # or 10 | yarn dev 11 | ``` 12 | 13 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 14 | 15 | You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. 16 | 17 | ## Learn More 18 | 19 | To learn more about Next.js, take a look at the following resources: 20 | 21 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 22 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 23 | 24 | You can check out [the Next.js GitHub repository](https://github.com/zeit/next.js/) - your feedback and contributions are welcome! 25 | 26 | ## Deploy on ZEIT Now 27 | 28 | The easiest way to deploy your Next.js app is to use the [ZEIT Now Platform](https://zeit.co/import?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 29 | 30 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 31 | -------------------------------------------------------------------------------- /client/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "version": "0.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "client", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "isomorphic-fetch": "^3.0.0", 12 | "next": "^13.4.19", 13 | "nookies": "^2.1.1", 14 | "react": "^18.2.0", 15 | "react-dom": "^18.2.0" 16 | } 17 | }, 18 | "node_modules/@next/env": { 19 | "version": "13.4.19", 20 | "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.19.tgz", 21 | "integrity": "sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ==" 22 | }, 23 | "node_modules/@next/swc-darwin-arm64": { 24 | "version": "13.4.19", 25 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.19.tgz", 26 | "integrity": "sha512-vv1qrjXeGbuF2mOkhkdxMDtv9np7W4mcBtaDnHU+yJG+bBwa6rYsYSCI/9Xm5+TuF5SbZbrWO6G1NfTh1TMjvQ==", 27 | "cpu": [ 28 | "arm64" 29 | ], 30 | "optional": true, 31 | "os": [ 32 | "darwin" 33 | ], 34 | "engines": { 35 | "node": ">= 10" 36 | } 37 | }, 38 | "node_modules/@next/swc-darwin-x64": { 39 | "version": "13.4.19", 40 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.19.tgz", 41 | "integrity": "sha512-jyzO6wwYhx6F+7gD8ddZfuqO4TtpJdw3wyOduR4fxTUCm3aLw7YmHGYNjS0xRSYGAkLpBkH1E0RcelyId6lNsw==", 42 | "cpu": [ 43 | "x64" 44 | ], 45 | "optional": true, 46 | "os": [ 47 | "darwin" 48 | ], 49 | "engines": { 50 | "node": ">= 10" 51 | } 52 | }, 53 | "node_modules/@next/swc-linux-arm64-gnu": { 54 | "version": "13.4.19", 55 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.19.tgz", 56 | "integrity": "sha512-vdlnIlaAEh6H+G6HrKZB9c2zJKnpPVKnA6LBwjwT2BTjxI7e0Hx30+FoWCgi50e+YO49p6oPOtesP9mXDRiiUg==", 57 | "cpu": [ 58 | "arm64" 59 | ], 60 | "optional": true, 61 | "os": [ 62 | "linux" 63 | ], 64 | "engines": { 65 | "node": ">= 10" 66 | } 67 | }, 68 | "node_modules/@next/swc-linux-arm64-musl": { 69 | "version": "13.4.19", 70 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.19.tgz", 71 | "integrity": "sha512-aU0HkH2XPgxqrbNRBFb3si9Ahu/CpaR5RPmN2s9GiM9qJCiBBlZtRTiEca+DC+xRPyCThTtWYgxjWHgU7ZkyvA==", 72 | "cpu": [ 73 | "arm64" 74 | ], 75 | "optional": true, 76 | "os": [ 77 | "linux" 78 | ], 79 | "engines": { 80 | "node": ">= 10" 81 | } 82 | }, 83 | "node_modules/@next/swc-linux-x64-gnu": { 84 | "version": "13.4.19", 85 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.19.tgz", 86 | "integrity": "sha512-htwOEagMa/CXNykFFeAHHvMJeqZfNQEoQvHfsA4wgg5QqGNqD5soeCer4oGlCol6NGUxknrQO6VEustcv+Md+g==", 87 | "cpu": [ 88 | "x64" 89 | ], 90 | "optional": true, 91 | "os": [ 92 | "linux" 93 | ], 94 | "engines": { 95 | "node": ">= 10" 96 | } 97 | }, 98 | "node_modules/@next/swc-linux-x64-musl": { 99 | "version": "13.4.19", 100 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.19.tgz", 101 | "integrity": "sha512-4Gj4vvtbK1JH8ApWTT214b3GwUh9EKKQjY41hH/t+u55Knxi/0wesMzwQRhppK6Ddalhu0TEttbiJ+wRcoEj5Q==", 102 | "cpu": [ 103 | "x64" 104 | ], 105 | "optional": true, 106 | "os": [ 107 | "linux" 108 | ], 109 | "engines": { 110 | "node": ">= 10" 111 | } 112 | }, 113 | "node_modules/@next/swc-win32-arm64-msvc": { 114 | "version": "13.4.19", 115 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.19.tgz", 116 | "integrity": "sha512-bUfDevQK4NsIAHXs3/JNgnvEY+LRyneDN788W2NYiRIIzmILjba7LaQTfihuFawZDhRtkYCv3JDC3B4TwnmRJw==", 117 | "cpu": [ 118 | "arm64" 119 | ], 120 | "optional": true, 121 | "os": [ 122 | "win32" 123 | ], 124 | "engines": { 125 | "node": ">= 10" 126 | } 127 | }, 128 | "node_modules/@next/swc-win32-ia32-msvc": { 129 | "version": "13.4.19", 130 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.19.tgz", 131 | "integrity": "sha512-Y5kikILFAr81LYIFaw6j/NrOtmiM4Sf3GtOc0pn50ez2GCkr+oejYuKGcwAwq3jiTKuzF6OF4iT2INPoxRycEA==", 132 | "cpu": [ 133 | "ia32" 134 | ], 135 | "optional": true, 136 | "os": [ 137 | "win32" 138 | ], 139 | "engines": { 140 | "node": ">= 10" 141 | } 142 | }, 143 | "node_modules/@next/swc-win32-x64-msvc": { 144 | "version": "13.4.19", 145 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.19.tgz", 146 | "integrity": "sha512-YzA78jBDXMYiINdPdJJwGgPNT3YqBNNGhsthsDoWHL9p24tEJn9ViQf/ZqTbwSpX/RrkPupLfuuTH2sf73JBAw==", 147 | "cpu": [ 148 | "x64" 149 | ], 150 | "optional": true, 151 | "os": [ 152 | "win32" 153 | ], 154 | "engines": { 155 | "node": ">= 10" 156 | } 157 | }, 158 | "node_modules/@swc/helpers": { 159 | "version": "0.5.1", 160 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", 161 | "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", 162 | "dependencies": { 163 | "tslib": "^2.4.0" 164 | } 165 | }, 166 | "node_modules/busboy": { 167 | "version": "1.6.0", 168 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 169 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 170 | "dependencies": { 171 | "streamsearch": "^1.1.0" 172 | }, 173 | "engines": { 174 | "node": ">=10.16.0" 175 | } 176 | }, 177 | "node_modules/caniuse-lite": { 178 | "version": "1.0.30001532", 179 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz", 180 | "integrity": "sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==", 181 | "funding": [ 182 | { 183 | "type": "opencollective", 184 | "url": "https://opencollective.com/browserslist" 185 | }, 186 | { 187 | "type": "tidelift", 188 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 189 | }, 190 | { 191 | "type": "github", 192 | "url": "https://github.com/sponsors/ai" 193 | } 194 | ] 195 | }, 196 | "node_modules/client-only": { 197 | "version": "0.0.1", 198 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", 199 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" 200 | }, 201 | "node_modules/cookie": { 202 | "version": "0.4.0", 203 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 204 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", 205 | "engines": { 206 | "node": ">= 0.6" 207 | } 208 | }, 209 | "node_modules/glob-to-regexp": { 210 | "version": "0.4.1", 211 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 212 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" 213 | }, 214 | "node_modules/graceful-fs": { 215 | "version": "4.2.11", 216 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 217 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 218 | }, 219 | "node_modules/isomorphic-fetch": { 220 | "version": "3.0.0", 221 | "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", 222 | "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", 223 | "dependencies": { 224 | "node-fetch": "^2.6.1", 225 | "whatwg-fetch": "^3.4.1" 226 | } 227 | }, 228 | "node_modules/js-tokens": { 229 | "version": "4.0.0", 230 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 231 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 232 | }, 233 | "node_modules/jsmin": { 234 | "version": "1.0.1", 235 | "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz", 236 | "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw=", 237 | "bin": { 238 | "jsmin": "bin/jsmin" 239 | }, 240 | "engines": { 241 | "node": ">=0.1.93" 242 | } 243 | }, 244 | "node_modules/loose-envify": { 245 | "version": "1.4.0", 246 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 247 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 248 | "dependencies": { 249 | "js-tokens": "^3.0.0 || ^4.0.0" 250 | }, 251 | "bin": { 252 | "loose-envify": "cli.js" 253 | } 254 | }, 255 | "node_modules/nanoid": { 256 | "version": "3.3.6", 257 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 258 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 259 | "funding": [ 260 | { 261 | "type": "github", 262 | "url": "https://github.com/sponsors/ai" 263 | } 264 | ], 265 | "bin": { 266 | "nanoid": "bin/nanoid.cjs" 267 | }, 268 | "engines": { 269 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 270 | } 271 | }, 272 | "node_modules/next": { 273 | "version": "13.4.19", 274 | "resolved": "https://registry.npmjs.org/next/-/next-13.4.19.tgz", 275 | "integrity": "sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==", 276 | "dependencies": { 277 | "@next/env": "13.4.19", 278 | "@swc/helpers": "0.5.1", 279 | "busboy": "1.6.0", 280 | "caniuse-lite": "^1.0.30001406", 281 | "postcss": "8.4.14", 282 | "styled-jsx": "5.1.1", 283 | "watchpack": "2.4.0", 284 | "zod": "3.21.4" 285 | }, 286 | "bin": { 287 | "next": "dist/bin/next" 288 | }, 289 | "engines": { 290 | "node": ">=16.8.0" 291 | }, 292 | "optionalDependencies": { 293 | "@next/swc-darwin-arm64": "13.4.19", 294 | "@next/swc-darwin-x64": "13.4.19", 295 | "@next/swc-linux-arm64-gnu": "13.4.19", 296 | "@next/swc-linux-arm64-musl": "13.4.19", 297 | "@next/swc-linux-x64-gnu": "13.4.19", 298 | "@next/swc-linux-x64-musl": "13.4.19", 299 | "@next/swc-win32-arm64-msvc": "13.4.19", 300 | "@next/swc-win32-ia32-msvc": "13.4.19", 301 | "@next/swc-win32-x64-msvc": "13.4.19" 302 | }, 303 | "peerDependencies": { 304 | "@opentelemetry/api": "^1.1.0", 305 | "react": "^18.2.0", 306 | "react-dom": "^18.2.0", 307 | "sass": "^1.3.0" 308 | }, 309 | "peerDependenciesMeta": { 310 | "@opentelemetry/api": { 311 | "optional": true 312 | }, 313 | "sass": { 314 | "optional": true 315 | } 316 | } 317 | }, 318 | "node_modules/node-fetch": { 319 | "version": "2.7.0", 320 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 321 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 322 | "dependencies": { 323 | "whatwg-url": "^5.0.0" 324 | }, 325 | "engines": { 326 | "node": "4.x || >=6.0.0" 327 | }, 328 | "peerDependencies": { 329 | "encoding": "^0.1.0" 330 | }, 331 | "peerDependenciesMeta": { 332 | "encoding": { 333 | "optional": true 334 | } 335 | } 336 | }, 337 | "node_modules/nookies": { 338 | "version": "2.1.1", 339 | "resolved": "https://registry.npmjs.org/nookies/-/nookies-2.1.1.tgz", 340 | "integrity": "sha512-ciGuW6z5nKRRmu3mobdoN/oKFflKuNOp2H5viAcdlE21/PxjDk/2Oo3bLq3Y10yNfr0gIvKV0rfRPqrtRSz3iw==", 341 | "dependencies": { 342 | "cookie": "^0.4.0", 343 | "jsmin": "^1.0.1", 344 | "set-cookie-parser": "^2.4.3" 345 | } 346 | }, 347 | "node_modules/picocolors": { 348 | "version": "1.0.0", 349 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 350 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 351 | }, 352 | "node_modules/postcss": { 353 | "version": "8.4.14", 354 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 355 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 356 | "funding": [ 357 | { 358 | "type": "opencollective", 359 | "url": "https://opencollective.com/postcss/" 360 | }, 361 | { 362 | "type": "tidelift", 363 | "url": "https://tidelift.com/funding/github/npm/postcss" 364 | } 365 | ], 366 | "dependencies": { 367 | "nanoid": "^3.3.4", 368 | "picocolors": "^1.0.0", 369 | "source-map-js": "^1.0.2" 370 | }, 371 | "engines": { 372 | "node": "^10 || ^12 || >=14" 373 | } 374 | }, 375 | "node_modules/react": { 376 | "version": "18.2.0", 377 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 378 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 379 | "dependencies": { 380 | "loose-envify": "^1.1.0" 381 | }, 382 | "engines": { 383 | "node": ">=0.10.0" 384 | } 385 | }, 386 | "node_modules/react-dom": { 387 | "version": "18.2.0", 388 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 389 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 390 | "dependencies": { 391 | "loose-envify": "^1.1.0", 392 | "scheduler": "^0.23.0" 393 | }, 394 | "peerDependencies": { 395 | "react": "^18.2.0" 396 | } 397 | }, 398 | "node_modules/scheduler": { 399 | "version": "0.23.0", 400 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 401 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 402 | "dependencies": { 403 | "loose-envify": "^1.1.0" 404 | } 405 | }, 406 | "node_modules/set-cookie-parser": { 407 | "version": "2.4.3", 408 | "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.4.3.tgz", 409 | "integrity": "sha512-+Eovq+TUyhqwUe+Ac9EaPlfEZOcQyy7uUPhcbEXEIsH73x/gOU56RO8wZDZW98fu3vSxhcPjuKDo1mIrmM7ixw==" 410 | }, 411 | "node_modules/source-map-js": { 412 | "version": "1.0.2", 413 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 414 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 415 | "engines": { 416 | "node": ">=0.10.0" 417 | } 418 | }, 419 | "node_modules/streamsearch": { 420 | "version": "1.1.0", 421 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 422 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 423 | "engines": { 424 | "node": ">=10.0.0" 425 | } 426 | }, 427 | "node_modules/styled-jsx": { 428 | "version": "5.1.1", 429 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", 430 | "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", 431 | "dependencies": { 432 | "client-only": "0.0.1" 433 | }, 434 | "engines": { 435 | "node": ">= 12.0.0" 436 | }, 437 | "peerDependencies": { 438 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" 439 | }, 440 | "peerDependenciesMeta": { 441 | "@babel/core": { 442 | "optional": true 443 | }, 444 | "babel-plugin-macros": { 445 | "optional": true 446 | } 447 | } 448 | }, 449 | "node_modules/tr46": { 450 | "version": "0.0.3", 451 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 452 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 453 | }, 454 | "node_modules/tslib": { 455 | "version": "2.6.2", 456 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 457 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" 458 | }, 459 | "node_modules/watchpack": { 460 | "version": "2.4.0", 461 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", 462 | "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", 463 | "dependencies": { 464 | "glob-to-regexp": "^0.4.1", 465 | "graceful-fs": "^4.1.2" 466 | }, 467 | "engines": { 468 | "node": ">=10.13.0" 469 | } 470 | }, 471 | "node_modules/webidl-conversions": { 472 | "version": "3.0.1", 473 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 474 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 475 | }, 476 | "node_modules/whatwg-fetch": { 477 | "version": "3.6.19", 478 | "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", 479 | "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" 480 | }, 481 | "node_modules/whatwg-url": { 482 | "version": "5.0.0", 483 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 484 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 485 | "dependencies": { 486 | "tr46": "~0.0.3", 487 | "webidl-conversions": "^3.0.0" 488 | } 489 | }, 490 | "node_modules/zod": { 491 | "version": "3.21.4", 492 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", 493 | "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", 494 | "funding": { 495 | "url": "https://github.com/sponsors/colinhacks" 496 | } 497 | } 498 | }, 499 | "dependencies": { 500 | "@next/env": { 501 | "version": "13.4.19", 502 | "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.19.tgz", 503 | "integrity": "sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ==" 504 | }, 505 | "@next/swc-darwin-arm64": { 506 | "version": "13.4.19", 507 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.19.tgz", 508 | "integrity": "sha512-vv1qrjXeGbuF2mOkhkdxMDtv9np7W4mcBtaDnHU+yJG+bBwa6rYsYSCI/9Xm5+TuF5SbZbrWO6G1NfTh1TMjvQ==", 509 | "optional": true 510 | }, 511 | "@next/swc-darwin-x64": { 512 | "version": "13.4.19", 513 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.19.tgz", 514 | "integrity": "sha512-jyzO6wwYhx6F+7gD8ddZfuqO4TtpJdw3wyOduR4fxTUCm3aLw7YmHGYNjS0xRSYGAkLpBkH1E0RcelyId6lNsw==", 515 | "optional": true 516 | }, 517 | "@next/swc-linux-arm64-gnu": { 518 | "version": "13.4.19", 519 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.19.tgz", 520 | "integrity": "sha512-vdlnIlaAEh6H+G6HrKZB9c2zJKnpPVKnA6LBwjwT2BTjxI7e0Hx30+FoWCgi50e+YO49p6oPOtesP9mXDRiiUg==", 521 | "optional": true 522 | }, 523 | "@next/swc-linux-arm64-musl": { 524 | "version": "13.4.19", 525 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.19.tgz", 526 | "integrity": "sha512-aU0HkH2XPgxqrbNRBFb3si9Ahu/CpaR5RPmN2s9GiM9qJCiBBlZtRTiEca+DC+xRPyCThTtWYgxjWHgU7ZkyvA==", 527 | "optional": true 528 | }, 529 | "@next/swc-linux-x64-gnu": { 530 | "version": "13.4.19", 531 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.19.tgz", 532 | "integrity": "sha512-htwOEagMa/CXNykFFeAHHvMJeqZfNQEoQvHfsA4wgg5QqGNqD5soeCer4oGlCol6NGUxknrQO6VEustcv+Md+g==", 533 | "optional": true 534 | }, 535 | "@next/swc-linux-x64-musl": { 536 | "version": "13.4.19", 537 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.19.tgz", 538 | "integrity": "sha512-4Gj4vvtbK1JH8ApWTT214b3GwUh9EKKQjY41hH/t+u55Knxi/0wesMzwQRhppK6Ddalhu0TEttbiJ+wRcoEj5Q==", 539 | "optional": true 540 | }, 541 | "@next/swc-win32-arm64-msvc": { 542 | "version": "13.4.19", 543 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.19.tgz", 544 | "integrity": "sha512-bUfDevQK4NsIAHXs3/JNgnvEY+LRyneDN788W2NYiRIIzmILjba7LaQTfihuFawZDhRtkYCv3JDC3B4TwnmRJw==", 545 | "optional": true 546 | }, 547 | "@next/swc-win32-ia32-msvc": { 548 | "version": "13.4.19", 549 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.19.tgz", 550 | "integrity": "sha512-Y5kikILFAr81LYIFaw6j/NrOtmiM4Sf3GtOc0pn50ez2GCkr+oejYuKGcwAwq3jiTKuzF6OF4iT2INPoxRycEA==", 551 | "optional": true 552 | }, 553 | "@next/swc-win32-x64-msvc": { 554 | "version": "13.4.19", 555 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.19.tgz", 556 | "integrity": "sha512-YzA78jBDXMYiINdPdJJwGgPNT3YqBNNGhsthsDoWHL9p24tEJn9ViQf/ZqTbwSpX/RrkPupLfuuTH2sf73JBAw==", 557 | "optional": true 558 | }, 559 | "@swc/helpers": { 560 | "version": "0.5.1", 561 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", 562 | "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", 563 | "requires": { 564 | "tslib": "^2.4.0" 565 | } 566 | }, 567 | "busboy": { 568 | "version": "1.6.0", 569 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 570 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 571 | "requires": { 572 | "streamsearch": "^1.1.0" 573 | } 574 | }, 575 | "caniuse-lite": { 576 | "version": "1.0.30001532", 577 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz", 578 | "integrity": "sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==" 579 | }, 580 | "client-only": { 581 | "version": "0.0.1", 582 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", 583 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" 584 | }, 585 | "cookie": { 586 | "version": "0.4.0", 587 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 588 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 589 | }, 590 | "glob-to-regexp": { 591 | "version": "0.4.1", 592 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 593 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" 594 | }, 595 | "graceful-fs": { 596 | "version": "4.2.11", 597 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 598 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 599 | }, 600 | "isomorphic-fetch": { 601 | "version": "3.0.0", 602 | "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", 603 | "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", 604 | "requires": { 605 | "node-fetch": "^2.6.1", 606 | "whatwg-fetch": "^3.4.1" 607 | } 608 | }, 609 | "js-tokens": { 610 | "version": "4.0.0", 611 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 612 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 613 | }, 614 | "jsmin": { 615 | "version": "1.0.1", 616 | "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz", 617 | "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw=" 618 | }, 619 | "loose-envify": { 620 | "version": "1.4.0", 621 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 622 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 623 | "requires": { 624 | "js-tokens": "^3.0.0 || ^4.0.0" 625 | } 626 | }, 627 | "nanoid": { 628 | "version": "3.3.6", 629 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 630 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" 631 | }, 632 | "next": { 633 | "version": "13.4.19", 634 | "resolved": "https://registry.npmjs.org/next/-/next-13.4.19.tgz", 635 | "integrity": "sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==", 636 | "requires": { 637 | "@next/env": "13.4.19", 638 | "@next/swc-darwin-arm64": "13.4.19", 639 | "@next/swc-darwin-x64": "13.4.19", 640 | "@next/swc-linux-arm64-gnu": "13.4.19", 641 | "@next/swc-linux-arm64-musl": "13.4.19", 642 | "@next/swc-linux-x64-gnu": "13.4.19", 643 | "@next/swc-linux-x64-musl": "13.4.19", 644 | "@next/swc-win32-arm64-msvc": "13.4.19", 645 | "@next/swc-win32-ia32-msvc": "13.4.19", 646 | "@next/swc-win32-x64-msvc": "13.4.19", 647 | "@swc/helpers": "0.5.1", 648 | "busboy": "1.6.0", 649 | "caniuse-lite": "^1.0.30001406", 650 | "postcss": "8.4.14", 651 | "styled-jsx": "5.1.1", 652 | "watchpack": "2.4.0", 653 | "zod": "3.21.4" 654 | } 655 | }, 656 | "node-fetch": { 657 | "version": "2.7.0", 658 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 659 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 660 | "requires": { 661 | "whatwg-url": "^5.0.0" 662 | } 663 | }, 664 | "nookies": { 665 | "version": "2.1.1", 666 | "resolved": "https://registry.npmjs.org/nookies/-/nookies-2.1.1.tgz", 667 | "integrity": "sha512-ciGuW6z5nKRRmu3mobdoN/oKFflKuNOp2H5viAcdlE21/PxjDk/2Oo3bLq3Y10yNfr0gIvKV0rfRPqrtRSz3iw==", 668 | "requires": { 669 | "cookie": "^0.4.0", 670 | "jsmin": "^1.0.1", 671 | "set-cookie-parser": "^2.4.3" 672 | } 673 | }, 674 | "picocolors": { 675 | "version": "1.0.0", 676 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 677 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 678 | }, 679 | "postcss": { 680 | "version": "8.4.14", 681 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 682 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 683 | "requires": { 684 | "nanoid": "^3.3.4", 685 | "picocolors": "^1.0.0", 686 | "source-map-js": "^1.0.2" 687 | } 688 | }, 689 | "react": { 690 | "version": "18.2.0", 691 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 692 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 693 | "requires": { 694 | "loose-envify": "^1.1.0" 695 | } 696 | }, 697 | "react-dom": { 698 | "version": "18.2.0", 699 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 700 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 701 | "requires": { 702 | "loose-envify": "^1.1.0", 703 | "scheduler": "^0.23.0" 704 | } 705 | }, 706 | "scheduler": { 707 | "version": "0.23.0", 708 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 709 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 710 | "requires": { 711 | "loose-envify": "^1.1.0" 712 | } 713 | }, 714 | "set-cookie-parser": { 715 | "version": "2.4.3", 716 | "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.4.3.tgz", 717 | "integrity": "sha512-+Eovq+TUyhqwUe+Ac9EaPlfEZOcQyy7uUPhcbEXEIsH73x/gOU56RO8wZDZW98fu3vSxhcPjuKDo1mIrmM7ixw==" 718 | }, 719 | "source-map-js": { 720 | "version": "1.0.2", 721 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 722 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 723 | }, 724 | "streamsearch": { 725 | "version": "1.1.0", 726 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 727 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" 728 | }, 729 | "styled-jsx": { 730 | "version": "5.1.1", 731 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", 732 | "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", 733 | "requires": { 734 | "client-only": "0.0.1" 735 | } 736 | }, 737 | "tr46": { 738 | "version": "0.0.3", 739 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 740 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 741 | }, 742 | "tslib": { 743 | "version": "2.6.2", 744 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 745 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" 746 | }, 747 | "watchpack": { 748 | "version": "2.4.0", 749 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", 750 | "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", 751 | "requires": { 752 | "glob-to-regexp": "^0.4.1", 753 | "graceful-fs": "^4.1.2" 754 | } 755 | }, 756 | "webidl-conversions": { 757 | "version": "3.0.1", 758 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 759 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 760 | }, 761 | "whatwg-fetch": { 762 | "version": "3.6.19", 763 | "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", 764 | "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" 765 | }, 766 | "whatwg-url": { 767 | "version": "5.0.0", 768 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 769 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 770 | "requires": { 771 | "tr46": "~0.0.3", 772 | "webidl-conversions": "^3.0.0" 773 | } 774 | }, 775 | "zod": { 776 | "version": "3.21.4", 777 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", 778 | "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==" 779 | } 780 | } 781 | } 782 | -------------------------------------------------------------------------------- /client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start" 9 | }, 10 | "dependencies": { 11 | "isomorphic-fetch": "^3.0.0", 12 | "next": "^13.4.19", 13 | "nookies": "^2.1.1", 14 | "react": "^18.2.0", 15 | "react-dom": "^18.2.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /client/pages/_document.js: -------------------------------------------------------------------------------- 1 | import Document, { Html, Head, Main, NextScript } from 'next/document' 2 | import { setCookie } from 'nookies'; 3 | 4 | class MyDocument extends Document { 5 | static async getInitialProps(ctx) { 6 | const initialProps = await Document.getInitialProps(ctx) 7 | if (ctx.query.token) { 8 | setCookie(ctx, 'authorization', ctx.query.token, { 9 | maxAge: 30 * 24 * 60 * 60, 10 | path: '/', 11 | }); 12 | } 13 | 14 | return { ...initialProps } 15 | } 16 | 17 | render() { 18 | return ( 19 | 20 |
22 | 23 |