├── .env ├── .gitignore ├── LICENSE ├── Procfile ├── README.md ├── app.js ├── package-lock.json ├── package.json ├── public └── css │ ├── master.css │ └── styles.css ├── secrets overview.pdf └── views ├── home.ejs ├── login.ejs ├── partials ├── footer.ejs └── header.ejs ├── register.ejs ├── secrets.ejs └── submit.ejs /.env: -------------------------------------------------------------------------------- 1 | CLIENT_ID = 682611648655-te20s8md2itohc9r0d9lfotcreufk9d0.apps.googleusercontent.com 2 | CLIENT_SECRET = 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 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | npm-debug.log 3 | .DS_Store 4 | /*.env -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Shreya Malogi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | 2 | web: node app.js -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Full-Stack Authentication App: 2 | 3 | [![GitHub stars](https://img.shields.io/github/stars/shreyamalogi/Full-Stack-Authentication-App.svg?style=social)](https://github.com/shreyamalogi/Full-Stack-Authentication-App/stargazers) 4 | 5 | ### Project Details: 💻🌐📅 6 | 7 | - **Functionality:** Implements user authentication using Passport.js with local and Google OAuth 2.0 strategies. 🛡️🌐 8 | - **Tech Stack:** `Node.js`, `Express.js`, `MongoDB`, `Passport.js`, `EJS`, `CSS` 🚀💻 9 | - **Author:** [@shreyamalogi](https://github.com/shreyamalogi/) 👩‍💻 10 | - **Year of Project:** 2022 📅 11 | 12 | # Table of Contents ✍️ 13 | 14 | 1. [Introduction](#introduction-) 15 | 2. [Challenges Faced during Authentication Evolution](#challenges-faced-during-authentication-evolution-%EF%B8%8F) 16 | 3. [Dependencies](#dependencies-) 17 | 4. [Navigating Project Evolution](#navigating-project-evolution) 18 | 5. [How to Run](#how-to-run-) 19 | 6. [How to Start from Scratch](#how-you-can-make-from-scratch) 20 | 7. [License](#license-%EF%B8%8F) 21 | 8. [Contribution](#contribution---show-your-support-star-this-) 22 | 23 | 24 | --- 25 | 26 | # Introduction 🌐 27 | 28 | This is a Node.js web application built by **Shreya Malogi** with Express.js, MongoDB, and Passport.js for user authentication. The application includes local authentication (username and password) and Google OAuth 2.0 authentication. 🚀🔐 29 | 30 | ## Challenges Faced during Authentication Evolution: 🛡️ 31 | 32 | 1. **Password Hashing Algorithm:** 33 | - **Challenge:** Selecting a secure password hashing algorithm. 34 | - **Solution:** Started with `md5` and transitioned to the more secure `bcrypt` for robust password hashing. 🔒🔐 35 | 36 | 2. **Passport.js Integration:** 37 | - **Challenge:** Integrating Passport.js for user authentication. 38 | - **Solution:** Initially used `md5` and `bcrypt`, later adopted Passport.js for a streamlined authentication process. 🤝🚀 39 | 40 | 3. **Environment Variables Security:** 41 | - **Challenge:** Managing sensitive info like Google OAuth credentials. 42 | - **Solution:** Used `dotenv` to securely load environment variables from a `.env` file. 🔒🔐 43 | 44 | 45 | 46 | ## Dependencies 📦🚀 47 | 48 | - **[express](https://expressjs.com/)**: Web application framework for Node.js. 🌐 49 | - **[body-parser](https://www.npmjs.com/package/body-parser)**: Node.js body parsing middleware. 🤖 50 | - **[ejs](https://ejs.co/)**: Embedded JavaScript templates. 🎨 51 | - **[mongoose](https://mongoosejs.com/)**: MongoDB object modeling tool. 🍃 52 | - **[dotenv](https://www.npmjs.com/package/dotenv)**: Loads environment variables from a `.env` file. 🔒 53 | - **[express-session](https://www.npmjs.com/package/express-session)**: Session middleware for Express.js. 🕐 54 | - **[passport](http://www.passportjs.org/)**: Simple, unobtrusive authentication middleware for Node.js. 🛡️ 55 | - **[passport-local-mongoose](https://www.npmjs.com/package/passport-local-mongoose)**: Passport.js plugin for simplifying username and password auth. 🤝 56 | - **[passport-google-oauth20](http://www.passportjs.org/packages/passport-google-oauth20/)**: Passport.js for authenticating with Google using OAuth 2.0.🌐 57 | - **[mongoose-findorcreate](https://www.npmjs.com/package/mongoose-findorcreate)**: Mongoose plugin for simplifying the `findOneOrCreate` operation. 🔄 58 | 59 | 60 | 61 | ## Navigating Project Evolution: 62 | 63 | To view detailed information about each commit and understand what happened at each version, you can use the `git log` command without any additional filters. Here's how: 64 | 65 | ```bash 66 | git log 67 | ``` 68 | 69 | 🔄💡 This command will display a chronological list of all commits in your repository. Each commit entry includes information such as the commit hash, author, date, and commit message. The commit message typically provides a summary of the changes made in that commit. 70 | 71 | Navigate through the log using the arrow keys. Press `q` to exit and return to the command line. 72 | 73 | If you want to see a condensed version of the log, you can use: 74 | 75 | ```bash 76 | git log --oneline 77 | ``` 78 | 79 | 💻🔍 This will display each commit as a single line, showing only the commit hash and the first line of the commit message. 80 | 81 | To see the changes introduced in a specific commit, you can use: 82 | 83 | ```bash 84 | git show 85 | ``` 86 | 87 | Replace `` with the actual commit hash you want to inspect. This command will display detailed information about the specified commit, including the changes made to files. 88 | 89 | This way, you can review the commit history, understand the changes made at each version, and inspect specific commits for detailed information about the modifications introduced.🚀📖👀 90 | 91 | 92 | 93 | ## How to Run? 🚀🔐 94 | 95 | **Prerequisites:** 96 | - [Node.js](https://nodejs.org/) 🌐 97 | - [npm (Node Package Manager)](https://www.npmjs.com/) 📦 98 | - [MongoDB](https://www.mongodb.com/) 🍃 99 | 100 | 1. **Start MongoDB Server:** 101 | - Ensure that your MongoDB server is running. If not, start it using: 102 | ```bash 103 | mongod 104 | ``` 105 | Keep the `mongod` server running throughout the setup. 106 | 107 | 2. **Clone the Repository:** 108 | ```bash 109 | git clone https://github.com/shreyamalogi/Full-Stack-Authentication-App.git 110 | ``` 111 | 112 | 113 | 114 | 3. **Navigate to the Project Directory:** 115 | ```bash 116 | cd 117 | ``` 118 | 119 | 4. **Install Dependencies:** 120 | ```bash 121 | npm install 122 | ``` 123 | 124 | 5. **Create a `.env` File:** 125 | - In the root directory, create a `.env` file. 126 | - Add the following content: 127 | ```env 128 | CLIENT_ID= 129 | CLIENT_SECRET= 130 | ``` 131 | Replace `` and `` with your Google OAuth 2.0 credentials. 132 | 133 | 6. **Run the Application:** 134 | ```bash 135 | node app.js 136 | ``` 137 | 138 | 139 | 7. **Open Your Web Browser:** 140 | - Visit [http://localhost:3000](http://localhost:3000) to access the home page. 141 | - Login and registration pages are available at [http://localhost:3000/login](http://localhost:3000/login) and [http://localhost:3000/register](http://localhost:3000/register). 🚪👥 142 | - Google authentication is available at [http://localhost:3000/auth/google](http://localhost:3000/auth/google). 🚀🔑 143 | 144 | 8. **Register and Login:** 145 | - Click on "Register" and sign up with your `username` and `password`. 146 | - Log in to access the brand new `secrets page`. 🌟 147 | 148 | 🌐🔐 149 | 150 | 151 | 152 | ## How you can make from scratch? 153 | [click here for secrets app guidelines/references](https://github.com/shreyamalogi/WEBD-BOOK/blob/main/2_backend/08_passportjs/passportjs.pdf) 154 | 155 | [click her for secrets app overview](https://github.com/shreyamalogi/secrets-app/blob/main/secrets%20overview.pdf) 156 | 157 | 158 | 159 | ## License 🕊️ 160 | 161 | This project is enchanted under the spell of the MIT License. Share the magic responsibly! 162 | 163 | MIT License 164 | 165 | Copyright (c) 2022 Shreya Malogi 166 | 167 | ## Contribution - Show Your Support (Star This) ⭐🌟📜✨ 168 | 169 | Excited about web security spells? Contribute to this magical project and make it even more secure. Don't forget to star the project! ⭐🌟 170 | 171 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | //jshint esversion:6 2 | 3 | //////////////////////////////////////////////////////////////////require the packages /////////////////////////////////////////////////////////////////////////////////////////////////////////// 4 | 5 | const express = require("express"); 6 | const bodyParser = require("body-parser"); 7 | const ejs = require("ejs"); 8 | const env = require("dotenv").config(); 9 | const mongoose = require("mongoose"); 10 | //https://www.npmjs.com/package/express-session 11 | const session = require('express-session'); 12 | //https://www.passportjs.org/tutorials/password/ 13 | const passport = require("passport"); 14 | //https://www.npmjs.com/package/passport-local-mongoose 15 | const passportLocalMongoose = require("passport-local-mongoose"); 16 | //https://www.passportjs.org/packages/passport-google-oauth20/ 17 | const GoogleStrategy = require('passport-google-oauth20').Strategy; 18 | //https://www.npmjs.com/package/mongoose-findorcreate 19 | const findOrCreate = require('mongoose-findorcreate') 20 | 21 | const app = express(); 22 | 23 | /////////////////////////////////////////////////////////// app.use and app.set explicit codes ///////////////////////////////////////////////////////////////////////////////////////////// 24 | 25 | 26 | //sessions from express sessions 27 | app.use(session({ 28 | secret: 'our little secret', 29 | resave: false, 30 | saveUninitialized: false, 31 | })) 32 | 33 | //passport.js explicit code 34 | app.use(passport.initialize()); 35 | app.use(passport.session()); 36 | 37 | //ejs 38 | app.set('view engine', 'ejs'); 39 | 40 | //expressjs 41 | app.use(express.static("public")); 42 | app.use(bodyParser.urlencoded({ extended: true })); 43 | 44 | ////////////////////////////////////////////////////////-------------- database, plugins and encryption ////////////////////////////////////////////////////////////////////////////////////////// 45 | //mongodb connection 46 | mongoose.connect("mongodb://localhost:27017/userDB", { useNewUrlParser: true }); 47 | 48 | //mongoose schema for items, in which the object is created from mongoose schema class 49 | const userSchema = new mongoose.Schema({ 50 | email: String, 51 | password: String, 52 | googleId: String, 53 | secret: String 54 | }); 55 | 56 | //passport plugin 57 | userSchema.plugin(passportLocalMongoose); 58 | //find o create plugin 59 | userSchema.plugin(findOrCreate); 60 | 61 | //mongoose model 62 | const modelUser = mongoose.model("User", userSchema); 63 | 64 | //passport config 65 | passport.use(modelUser.createStrategy()); 66 | 67 | //passport js serialize and deserailize 68 | passport.serializeUser(function(user, cb) { 69 | process.nextTick(function() { 70 | cb(null, { id: user.id, username: user.username }); 71 | }); 72 | }); 73 | 74 | passport.deserializeUser(function(user, cb) { 75 | process.nextTick(function() { 76 | return cb(null, user); 77 | }); 78 | }); 79 | 80 | //GOOGLE OAUTH2.0 81 | passport.use(new GoogleStrategy({ 82 | clientID: process.env.CLIENT_ID, 83 | clientSecret: process.env.CLIENT_SECRET, 84 | callbackURL: "http://localhost:3000/auth/google/secrets", 85 | userProfileURL: "https://www.googleapis.com/oauth2/v3/userinfo" //got this from github issues 86 | }, 87 | function(accessToken, refreshToken, profile, cb) { 88 | console.log(profile); 89 | 90 | modelUser.findOrCreate({ googleId: profile.id }, function(err, user) { 91 | return cb(err, user); 92 | }); 93 | } 94 | )); 95 | 96 | 97 | ////////////////////////////////////////////////////// get //////////////////////////////////////////////////////////////////////////////////////////////////// 98 | 99 | app.get("/", function(req, res) { 100 | res.render("home"); 101 | }); 102 | 103 | 104 | app.get('/auth/google', 105 | passport.authenticate('google', { scope: ["profile"] }) 106 | ); //pop up ,,,,use passport to authenticate our user for google stratedgy 107 | 108 | app.get('/auth/google/secrets', 109 | passport.authenticate('google', { failureRedirect: '/login' }), 110 | function(req, res) { 111 | // Successful authentication, redirect home. 112 | res.redirect('/secrets'); 113 | }); 114 | 115 | app.get("/login", function(req, res) { 116 | res.render("login"); 117 | }); 118 | 119 | 120 | app.get("/register", function(req, res) { 121 | res.render("register"); 122 | }); 123 | 124 | 125 | app.get("/secrets", function(req, res) { 126 | modelUser.find({ "secret": { $ne: null } }, function(err, foundUsers) { //looks thru all of our users and check for secret field and picks up tye secret field which is not equal to nukll 127 | if (err) { 128 | console.log(err) 129 | } else { 130 | if (foundUsers) { 131 | res.render("secrets", { usersWithSecrets: foundUsers }); 132 | } 133 | } 134 | }); 135 | 136 | }); 137 | 138 | 139 | app.get("/submit", function(req, res) { 140 | if (req.isAuthenticated) { 141 | res.render("submit"); 142 | } else { 143 | res.redirect("/login"); 144 | } 145 | }); 146 | 147 | 148 | app.get('/logout', function(req, res) { 149 | req.logout(); 150 | res.redirect('/'); 151 | }); 152 | 153 | 154 | 155 | ////////////////////////////////////////////////// post ////////////////////////////////////////////////////////////////////////////////////////////////////// 156 | 157 | 158 | app.post("/register", function(req, res) { 159 | //passport js code 160 | modelUser.register({ username: req.body.username }, req.body.password, function(err, user) { 161 | if (err) { 162 | console.log(err); 163 | res.redirect("/register"); 164 | } else { 165 | passport.authenticate("local")(req, res, function() { 166 | res.redirect("/secrets") 167 | }); 168 | } 169 | }); 170 | 171 | }); 172 | 173 | 174 | 175 | app.post("/login", function(req, res) { 176 | 177 | const user = new modelUser({ 178 | username: (req.body.username), 179 | password: (req.body.password) 180 | }) 181 | 182 | //passport js login 183 | req.login(user, function(err) { 184 | if (err) { 185 | console.log(err); 186 | } else { 187 | passport.authenticate("local")(req, res, function() { 188 | res.redirect("/secrets"); 189 | }); 190 | } 191 | 192 | }); 193 | }); 194 | 195 | 196 | 197 | app.post("/submit", function(req, res) { 198 | const submittedSecret = req.body.secret; 199 | console.log(req.user.id); 200 | 201 | modelUser.findById(req.user.id, function(err, foundUser) { 202 | if (err) { 203 | console.log(err); 204 | } else { 205 | if (foundUser) { 206 | foundUser.secret = submittedSecret; 207 | foundUser.save(function() { 208 | res.redirect("/"); 209 | }) 210 | } 211 | }; 212 | 213 | }); 214 | }); 215 | 216 | 217 | 218 | 219 | 220 | ////////////////////////////////////////////////// port /////////////////////////////////////////////////////////// 221 | app.listen(3000, function() { 222 | console.log(`server is listening at http://localhost:3000`); 223 | }); -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "secrets", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "secrets", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "bcrypt": "^5.0.1", 13 | "body-parser": "^1.19.1", 14 | "dotenv": "^14.3.0", 15 | "ejs": "^3.1.6", 16 | "express": "^4.17.2", 17 | "express-session": "^1.17.2", 18 | "md5": "^2.3.0", 19 | "mongoose": "^6.1.8", 20 | "mongoose-encryption": "^2.1.2", 21 | "mongoose-findorcreate": "^3.0.0", 22 | "passport": "^0.5.2", 23 | "passport-google-oauth20": "^2.0.0", 24 | "passport-local": "^1.0.0", 25 | "passport-local-mongoose": "^6.1.0" 26 | } 27 | }, 28 | "node_modules/@mapbox/node-pre-gyp": { 29 | "version": "1.0.8", 30 | "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz", 31 | "integrity": "sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg==", 32 | "dependencies": { 33 | "detect-libc": "^1.0.3", 34 | "https-proxy-agent": "^5.0.0", 35 | "make-dir": "^3.1.0", 36 | "node-fetch": "^2.6.5", 37 | "nopt": "^5.0.0", 38 | "npmlog": "^5.0.1", 39 | "rimraf": "^3.0.2", 40 | "semver": "^7.3.5", 41 | "tar": "^6.1.11" 42 | }, 43 | "bin": { 44 | "node-pre-gyp": "bin/node-pre-gyp" 45 | } 46 | }, 47 | "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { 48 | "version": "7.3.5", 49 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 50 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 51 | "dependencies": { 52 | "lru-cache": "^6.0.0" 53 | }, 54 | "bin": { 55 | "semver": "bin/semver.js" 56 | }, 57 | "engines": { 58 | "node": ">=10" 59 | } 60 | }, 61 | "node_modules/@types/node": { 62 | "version": "17.0.5", 63 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.5.tgz", 64 | "integrity": "sha512-w3mrvNXLeDYV1GKTZorGJQivK6XLCoGwpnyJFbJVK/aTBQUxOCaa/GlFAAN3OTDFcb7h5tiFG+YXCO2By+riZw==" 65 | }, 66 | "node_modules/@types/webidl-conversions": { 67 | "version": "6.1.1", 68 | "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", 69 | "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" 70 | }, 71 | "node_modules/@types/whatwg-url": { 72 | "version": "8.2.1", 73 | "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz", 74 | "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==", 75 | "dependencies": { 76 | "@types/node": "*", 77 | "@types/webidl-conversions": "*" 78 | } 79 | }, 80 | "node_modules/abbrev": { 81 | "version": "1.1.1", 82 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 83 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 84 | }, 85 | "node_modules/accepts": { 86 | "version": "1.3.7", 87 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 88 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 89 | "dependencies": { 90 | "mime-types": "~2.1.24", 91 | "negotiator": "0.6.2" 92 | }, 93 | "engines": { 94 | "node": ">= 0.6" 95 | } 96 | }, 97 | "node_modules/agent-base": { 98 | "version": "6.0.2", 99 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 100 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 101 | "dependencies": { 102 | "debug": "4" 103 | }, 104 | "engines": { 105 | "node": ">= 6.0.0" 106 | } 107 | }, 108 | "node_modules/agent-base/node_modules/debug": { 109 | "version": "4.3.3", 110 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 111 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 112 | "dependencies": { 113 | "ms": "2.1.2" 114 | }, 115 | "engines": { 116 | "node": ">=6.0" 117 | }, 118 | "peerDependenciesMeta": { 119 | "supports-color": { 120 | "optional": true 121 | } 122 | } 123 | }, 124 | "node_modules/agent-base/node_modules/ms": { 125 | "version": "2.1.2", 126 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 127 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 128 | }, 129 | "node_modules/ansi-regex": { 130 | "version": "5.0.1", 131 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 132 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 133 | "engines": { 134 | "node": ">=8" 135 | } 136 | }, 137 | "node_modules/ansi-styles": { 138 | "version": "3.2.1", 139 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 140 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 141 | "dependencies": { 142 | "color-convert": "^1.9.0" 143 | }, 144 | "engines": { 145 | "node": ">=4" 146 | } 147 | }, 148 | "node_modules/aproba": { 149 | "version": "2.0.0", 150 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 151 | "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" 152 | }, 153 | "node_modules/are-we-there-yet": { 154 | "version": "2.0.0", 155 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", 156 | "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", 157 | "dependencies": { 158 | "delegates": "^1.0.0", 159 | "readable-stream": "^3.6.0" 160 | }, 161 | "engines": { 162 | "node": ">=10" 163 | } 164 | }, 165 | "node_modules/array-flatten": { 166 | "version": "1.1.1", 167 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 168 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 169 | }, 170 | "node_modules/async": { 171 | "version": "0.9.2", 172 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 173 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" 174 | }, 175 | "node_modules/balanced-match": { 176 | "version": "1.0.2", 177 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 178 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 179 | }, 180 | "node_modules/base64-js": { 181 | "version": "1.5.1", 182 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 183 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 184 | "funding": [ 185 | { 186 | "type": "github", 187 | "url": "https://github.com/sponsors/feross" 188 | }, 189 | { 190 | "type": "patreon", 191 | "url": "https://www.patreon.com/feross" 192 | }, 193 | { 194 | "type": "consulting", 195 | "url": "https://feross.org/support" 196 | } 197 | ] 198 | }, 199 | "node_modules/base64url": { 200 | "version": "3.0.1", 201 | "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", 202 | "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", 203 | "engines": { 204 | "node": ">=6.0.0" 205 | } 206 | }, 207 | "node_modules/bcrypt": { 208 | "version": "5.0.1", 209 | "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", 210 | "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==", 211 | "hasInstallScript": true, 212 | "dependencies": { 213 | "@mapbox/node-pre-gyp": "^1.0.0", 214 | "node-addon-api": "^3.1.0" 215 | }, 216 | "engines": { 217 | "node": ">= 10.0.0" 218 | } 219 | }, 220 | "node_modules/body-parser": { 221 | "version": "1.19.1", 222 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", 223 | "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", 224 | "dependencies": { 225 | "bytes": "3.1.1", 226 | "content-type": "~1.0.4", 227 | "debug": "2.6.9", 228 | "depd": "~1.1.2", 229 | "http-errors": "1.8.1", 230 | "iconv-lite": "0.4.24", 231 | "on-finished": "~2.3.0", 232 | "qs": "6.9.6", 233 | "raw-body": "2.4.2", 234 | "type-is": "~1.6.18" 235 | }, 236 | "engines": { 237 | "node": ">= 0.8" 238 | } 239 | }, 240 | "node_modules/brace-expansion": { 241 | "version": "1.1.11", 242 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 243 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 244 | "dependencies": { 245 | "balanced-match": "^1.0.0", 246 | "concat-map": "0.0.1" 247 | } 248 | }, 249 | "node_modules/bson": { 250 | "version": "4.6.1", 251 | "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.1.tgz", 252 | "integrity": "sha512-I1LQ7Hz5zgwR4QquilLNZwbhPw0Apx7i7X9kGMBTsqPdml/03Q9NBtD9nt/19ahjlphktQImrnderxqpzeVDjw==", 253 | "dependencies": { 254 | "buffer": "^5.6.0" 255 | }, 256 | "engines": { 257 | "node": ">=6.9.0" 258 | } 259 | }, 260 | "node_modules/buffer": { 261 | "version": "5.7.1", 262 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 263 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 264 | "funding": [ 265 | { 266 | "type": "github", 267 | "url": "https://github.com/sponsors/feross" 268 | }, 269 | { 270 | "type": "patreon", 271 | "url": "https://www.patreon.com/feross" 272 | }, 273 | { 274 | "type": "consulting", 275 | "url": "https://feross.org/support" 276 | } 277 | ], 278 | "dependencies": { 279 | "base64-js": "^1.3.1", 280 | "ieee754": "^1.1.13" 281 | } 282 | }, 283 | "node_modules/buffer-equal-constant-time": { 284 | "version": "1.0.1", 285 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 286 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 287 | }, 288 | "node_modules/bytes": { 289 | "version": "3.1.1", 290 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", 291 | "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", 292 | "engines": { 293 | "node": ">= 0.8" 294 | } 295 | }, 296 | "node_modules/chalk": { 297 | "version": "2.4.2", 298 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 299 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 300 | "dependencies": { 301 | "ansi-styles": "^3.2.1", 302 | "escape-string-regexp": "^1.0.5", 303 | "supports-color": "^5.3.0" 304 | }, 305 | "engines": { 306 | "node": ">=4" 307 | } 308 | }, 309 | "node_modules/charenc": { 310 | "version": "0.0.2", 311 | "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", 312 | "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", 313 | "engines": { 314 | "node": "*" 315 | } 316 | }, 317 | "node_modules/chownr": { 318 | "version": "2.0.0", 319 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 320 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", 321 | "engines": { 322 | "node": ">=10" 323 | } 324 | }, 325 | "node_modules/color-convert": { 326 | "version": "1.9.3", 327 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 328 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 329 | "dependencies": { 330 | "color-name": "1.1.3" 331 | } 332 | }, 333 | "node_modules/color-name": { 334 | "version": "1.1.3", 335 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 336 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 337 | }, 338 | "node_modules/color-support": { 339 | "version": "1.1.3", 340 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 341 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 342 | "bin": { 343 | "color-support": "bin.js" 344 | } 345 | }, 346 | "node_modules/concat-map": { 347 | "version": "0.0.1", 348 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 349 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 350 | }, 351 | "node_modules/console-control-strings": { 352 | "version": "1.1.0", 353 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 354 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 355 | }, 356 | "node_modules/content-disposition": { 357 | "version": "0.5.4", 358 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 359 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 360 | "dependencies": { 361 | "safe-buffer": "5.2.1" 362 | }, 363 | "engines": { 364 | "node": ">= 0.6" 365 | } 366 | }, 367 | "node_modules/content-type": { 368 | "version": "1.0.4", 369 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 370 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 371 | "engines": { 372 | "node": ">= 0.6" 373 | } 374 | }, 375 | "node_modules/cookie": { 376 | "version": "0.4.1", 377 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", 378 | "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", 379 | "engines": { 380 | "node": ">= 0.6" 381 | } 382 | }, 383 | "node_modules/cookie-signature": { 384 | "version": "1.0.6", 385 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 386 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 387 | }, 388 | "node_modules/crypt": { 389 | "version": "0.0.2", 390 | "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", 391 | "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", 392 | "engines": { 393 | "node": "*" 394 | } 395 | }, 396 | "node_modules/debug": { 397 | "version": "2.6.9", 398 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 399 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 400 | "dependencies": { 401 | "ms": "2.0.0" 402 | } 403 | }, 404 | "node_modules/delegates": { 405 | "version": "1.0.0", 406 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 407 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 408 | }, 409 | "node_modules/denque": { 410 | "version": "2.0.1", 411 | "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", 412 | "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==", 413 | "engines": { 414 | "node": ">=0.10" 415 | } 416 | }, 417 | "node_modules/depd": { 418 | "version": "1.1.2", 419 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 420 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 421 | "engines": { 422 | "node": ">= 0.6" 423 | } 424 | }, 425 | "node_modules/destroy": { 426 | "version": "1.0.4", 427 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 428 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 429 | }, 430 | "node_modules/detect-libc": { 431 | "version": "1.0.3", 432 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 433 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", 434 | "bin": { 435 | "detect-libc": "bin/detect-libc.js" 436 | }, 437 | "engines": { 438 | "node": ">=0.10" 439 | } 440 | }, 441 | "node_modules/dotenv": { 442 | "version": "14.3.0", 443 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-14.3.0.tgz", 444 | "integrity": "sha512-PCTcOQSXVo9FI1dB7AichJXMEvmiGCq0gnCpjfDUc8505uR+2MeLXWe+Ue4PN5UXa2isHSa78sr7L59fk+2mnQ==", 445 | "engines": { 446 | "node": ">=12" 447 | } 448 | }, 449 | "node_modules/dotty": { 450 | "version": "0.1.2", 451 | "resolved": "https://registry.npmjs.org/dotty/-/dotty-0.1.2.tgz", 452 | "integrity": "sha512-V0EWmKeH3DEhMwAZ+8ZB2Ao4OK6p++Z0hsDtZq3N0+0ZMVqkzrcEGROvOnZpLnvBg5PTNG23JEDLAm64gPaotQ==" 453 | }, 454 | "node_modules/ee-first": { 455 | "version": "1.1.1", 456 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 457 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 458 | }, 459 | "node_modules/ejs": { 460 | "version": "3.1.6", 461 | "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", 462 | "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", 463 | "dependencies": { 464 | "jake": "^10.6.1" 465 | }, 466 | "bin": { 467 | "ejs": "bin/cli.js" 468 | }, 469 | "engines": { 470 | "node": ">=0.10.0" 471 | } 472 | }, 473 | "node_modules/emoji-regex": { 474 | "version": "8.0.0", 475 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 476 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 477 | }, 478 | "node_modules/encodeurl": { 479 | "version": "1.0.2", 480 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 481 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 482 | "engines": { 483 | "node": ">= 0.8" 484 | } 485 | }, 486 | "node_modules/escape-html": { 487 | "version": "1.0.3", 488 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 489 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 490 | }, 491 | "node_modules/escape-string-regexp": { 492 | "version": "1.0.5", 493 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 494 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 495 | "engines": { 496 | "node": ">=0.8.0" 497 | } 498 | }, 499 | "node_modules/etag": { 500 | "version": "1.8.1", 501 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 502 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 503 | "engines": { 504 | "node": ">= 0.6" 505 | } 506 | }, 507 | "node_modules/express": { 508 | "version": "4.17.2", 509 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", 510 | "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", 511 | "dependencies": { 512 | "accepts": "~1.3.7", 513 | "array-flatten": "1.1.1", 514 | "body-parser": "1.19.1", 515 | "content-disposition": "0.5.4", 516 | "content-type": "~1.0.4", 517 | "cookie": "0.4.1", 518 | "cookie-signature": "1.0.6", 519 | "debug": "2.6.9", 520 | "depd": "~1.1.2", 521 | "encodeurl": "~1.0.2", 522 | "escape-html": "~1.0.3", 523 | "etag": "~1.8.1", 524 | "finalhandler": "~1.1.2", 525 | "fresh": "0.5.2", 526 | "merge-descriptors": "1.0.1", 527 | "methods": "~1.1.2", 528 | "on-finished": "~2.3.0", 529 | "parseurl": "~1.3.3", 530 | "path-to-regexp": "0.1.7", 531 | "proxy-addr": "~2.0.7", 532 | "qs": "6.9.6", 533 | "range-parser": "~1.2.1", 534 | "safe-buffer": "5.2.1", 535 | "send": "0.17.2", 536 | "serve-static": "1.14.2", 537 | "setprototypeof": "1.2.0", 538 | "statuses": "~1.5.0", 539 | "type-is": "~1.6.18", 540 | "utils-merge": "1.0.1", 541 | "vary": "~1.1.2" 542 | }, 543 | "engines": { 544 | "node": ">= 0.10.0" 545 | } 546 | }, 547 | "node_modules/express-session": { 548 | "version": "1.17.2", 549 | "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz", 550 | "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==", 551 | "dependencies": { 552 | "cookie": "0.4.1", 553 | "cookie-signature": "1.0.6", 554 | "debug": "2.6.9", 555 | "depd": "~2.0.0", 556 | "on-headers": "~1.0.2", 557 | "parseurl": "~1.3.3", 558 | "safe-buffer": "5.2.1", 559 | "uid-safe": "~2.1.5" 560 | }, 561 | "engines": { 562 | "node": ">= 0.8.0" 563 | } 564 | }, 565 | "node_modules/express-session/node_modules/depd": { 566 | "version": "2.0.0", 567 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 568 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 569 | "engines": { 570 | "node": ">= 0.8" 571 | } 572 | }, 573 | "node_modules/filelist": { 574 | "version": "1.0.2", 575 | "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", 576 | "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", 577 | "dependencies": { 578 | "minimatch": "^3.0.4" 579 | } 580 | }, 581 | "node_modules/finalhandler": { 582 | "version": "1.1.2", 583 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 584 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 585 | "dependencies": { 586 | "debug": "2.6.9", 587 | "encodeurl": "~1.0.2", 588 | "escape-html": "~1.0.3", 589 | "on-finished": "~2.3.0", 590 | "parseurl": "~1.3.3", 591 | "statuses": "~1.5.0", 592 | "unpipe": "~1.0.0" 593 | }, 594 | "engines": { 595 | "node": ">= 0.8" 596 | } 597 | }, 598 | "node_modules/forwarded": { 599 | "version": "0.2.0", 600 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 601 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 602 | "engines": { 603 | "node": ">= 0.6" 604 | } 605 | }, 606 | "node_modules/fresh": { 607 | "version": "0.5.2", 608 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 609 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 610 | "engines": { 611 | "node": ">= 0.6" 612 | } 613 | }, 614 | "node_modules/fs-minipass": { 615 | "version": "2.1.0", 616 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 617 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 618 | "dependencies": { 619 | "minipass": "^3.0.0" 620 | }, 621 | "engines": { 622 | "node": ">= 8" 623 | } 624 | }, 625 | "node_modules/fs.realpath": { 626 | "version": "1.0.0", 627 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 628 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 629 | }, 630 | "node_modules/gauge": { 631 | "version": "3.0.2", 632 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", 633 | "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", 634 | "dependencies": { 635 | "aproba": "^1.0.3 || ^2.0.0", 636 | "color-support": "^1.1.2", 637 | "console-control-strings": "^1.0.0", 638 | "has-unicode": "^2.0.1", 639 | "object-assign": "^4.1.1", 640 | "signal-exit": "^3.0.0", 641 | "string-width": "^4.2.3", 642 | "strip-ansi": "^6.0.1", 643 | "wide-align": "^1.1.2" 644 | }, 645 | "engines": { 646 | "node": ">=10" 647 | } 648 | }, 649 | "node_modules/generaterr": { 650 | "version": "1.5.0", 651 | "resolved": "https://registry.npmjs.org/generaterr/-/generaterr-1.5.0.tgz", 652 | "integrity": "sha1-sM62zFFk3yoGEzjMNAqGFTlcUvw=" 653 | }, 654 | "node_modules/glob": { 655 | "version": "7.2.0", 656 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 657 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 658 | "dependencies": { 659 | "fs.realpath": "^1.0.0", 660 | "inflight": "^1.0.4", 661 | "inherits": "2", 662 | "minimatch": "^3.0.4", 663 | "once": "^1.3.0", 664 | "path-is-absolute": "^1.0.0" 665 | }, 666 | "engines": { 667 | "node": "*" 668 | }, 669 | "funding": { 670 | "url": "https://github.com/sponsors/isaacs" 671 | } 672 | }, 673 | "node_modules/has-flag": { 674 | "version": "3.0.0", 675 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 676 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 677 | "engines": { 678 | "node": ">=4" 679 | } 680 | }, 681 | "node_modules/has-unicode": { 682 | "version": "2.0.1", 683 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 684 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 685 | }, 686 | "node_modules/http-errors": { 687 | "version": "1.8.1", 688 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 689 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 690 | "dependencies": { 691 | "depd": "~1.1.2", 692 | "inherits": "2.0.4", 693 | "setprototypeof": "1.2.0", 694 | "statuses": ">= 1.5.0 < 2", 695 | "toidentifier": "1.0.1" 696 | }, 697 | "engines": { 698 | "node": ">= 0.6" 699 | } 700 | }, 701 | "node_modules/https-proxy-agent": { 702 | "version": "5.0.0", 703 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 704 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 705 | "dependencies": { 706 | "agent-base": "6", 707 | "debug": "4" 708 | }, 709 | "engines": { 710 | "node": ">= 6" 711 | } 712 | }, 713 | "node_modules/https-proxy-agent/node_modules/debug": { 714 | "version": "4.3.3", 715 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 716 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 717 | "dependencies": { 718 | "ms": "2.1.2" 719 | }, 720 | "engines": { 721 | "node": ">=6.0" 722 | }, 723 | "peerDependenciesMeta": { 724 | "supports-color": { 725 | "optional": true 726 | } 727 | } 728 | }, 729 | "node_modules/https-proxy-agent/node_modules/ms": { 730 | "version": "2.1.2", 731 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 732 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 733 | }, 734 | "node_modules/iconv-lite": { 735 | "version": "0.4.24", 736 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 737 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 738 | "dependencies": { 739 | "safer-buffer": ">= 2.1.2 < 3" 740 | }, 741 | "engines": { 742 | "node": ">=0.10.0" 743 | } 744 | }, 745 | "node_modules/ieee754": { 746 | "version": "1.2.1", 747 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 748 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 749 | "funding": [ 750 | { 751 | "type": "github", 752 | "url": "https://github.com/sponsors/feross" 753 | }, 754 | { 755 | "type": "patreon", 756 | "url": "https://www.patreon.com/feross" 757 | }, 758 | { 759 | "type": "consulting", 760 | "url": "https://feross.org/support" 761 | } 762 | ] 763 | }, 764 | "node_modules/inflight": { 765 | "version": "1.0.6", 766 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 767 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 768 | "dependencies": { 769 | "once": "^1.3.0", 770 | "wrappy": "1" 771 | } 772 | }, 773 | "node_modules/inherits": { 774 | "version": "2.0.4", 775 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 776 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 777 | }, 778 | "node_modules/ipaddr.js": { 779 | "version": "1.9.1", 780 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 781 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 782 | "engines": { 783 | "node": ">= 0.10" 784 | } 785 | }, 786 | "node_modules/is-buffer": { 787 | "version": "1.1.6", 788 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 789 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 790 | }, 791 | "node_modules/is-fullwidth-code-point": { 792 | "version": "3.0.0", 793 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 794 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 795 | "engines": { 796 | "node": ">=8" 797 | } 798 | }, 799 | "node_modules/jake": { 800 | "version": "10.8.2", 801 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", 802 | "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", 803 | "dependencies": { 804 | "async": "0.9.x", 805 | "chalk": "^2.4.2", 806 | "filelist": "^1.0.1", 807 | "minimatch": "^3.0.4" 808 | }, 809 | "bin": { 810 | "jake": "bin/cli.js" 811 | }, 812 | "engines": { 813 | "node": "*" 814 | } 815 | }, 816 | "node_modules/json-stable-stringify": { 817 | "version": "1.0.1", 818 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 819 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 820 | "dependencies": { 821 | "jsonify": "~0.0.0" 822 | } 823 | }, 824 | "node_modules/jsonify": { 825 | "version": "0.0.0", 826 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 827 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 828 | "engines": { 829 | "node": "*" 830 | } 831 | }, 832 | "node_modules/kareem": { 833 | "version": "2.3.3", 834 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.3.tgz", 835 | "integrity": "sha512-uESCXM2KdtOQ8LOvKyTUXEeg0MkYp4wGglTIpGcYHvjJcS5sn2Wkfrfit8m4xSbaNDAw2KdI9elgkOxZbrFYbg==" 836 | }, 837 | "node_modules/lodash": { 838 | "version": "4.17.21", 839 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 840 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 841 | }, 842 | "node_modules/lru-cache": { 843 | "version": "6.0.0", 844 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 845 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 846 | "dependencies": { 847 | "yallist": "^4.0.0" 848 | }, 849 | "engines": { 850 | "node": ">=10" 851 | } 852 | }, 853 | "node_modules/make-dir": { 854 | "version": "3.1.0", 855 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 856 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 857 | "dependencies": { 858 | "semver": "^6.0.0" 859 | }, 860 | "engines": { 861 | "node": ">=8" 862 | }, 863 | "funding": { 864 | "url": "https://github.com/sponsors/sindresorhus" 865 | } 866 | }, 867 | "node_modules/make-dir/node_modules/semver": { 868 | "version": "6.3.0", 869 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 870 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 871 | "bin": { 872 | "semver": "bin/semver.js" 873 | } 874 | }, 875 | "node_modules/md5": { 876 | "version": "2.3.0", 877 | "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", 878 | "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", 879 | "dependencies": { 880 | "charenc": "0.0.2", 881 | "crypt": "0.0.2", 882 | "is-buffer": "~1.1.6" 883 | } 884 | }, 885 | "node_modules/media-typer": { 886 | "version": "0.3.0", 887 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 888 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 889 | "engines": { 890 | "node": ">= 0.6" 891 | } 892 | }, 893 | "node_modules/memory-pager": { 894 | "version": "1.5.0", 895 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", 896 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", 897 | "optional": true 898 | }, 899 | "node_modules/merge-descriptors": { 900 | "version": "1.0.1", 901 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 902 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 903 | }, 904 | "node_modules/methods": { 905 | "version": "1.1.2", 906 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 907 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 908 | "engines": { 909 | "node": ">= 0.6" 910 | } 911 | }, 912 | "node_modules/mime": { 913 | "version": "1.6.0", 914 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 915 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 916 | "bin": { 917 | "mime": "cli.js" 918 | }, 919 | "engines": { 920 | "node": ">=4" 921 | } 922 | }, 923 | "node_modules/mime-db": { 924 | "version": "1.51.0", 925 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", 926 | "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", 927 | "engines": { 928 | "node": ">= 0.6" 929 | } 930 | }, 931 | "node_modules/mime-types": { 932 | "version": "2.1.34", 933 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", 934 | "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", 935 | "dependencies": { 936 | "mime-db": "1.51.0" 937 | }, 938 | "engines": { 939 | "node": ">= 0.6" 940 | } 941 | }, 942 | "node_modules/minimatch": { 943 | "version": "3.0.4", 944 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 945 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 946 | "dependencies": { 947 | "brace-expansion": "^1.1.7" 948 | }, 949 | "engines": { 950 | "node": "*" 951 | } 952 | }, 953 | "node_modules/minipass": { 954 | "version": "3.1.6", 955 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", 956 | "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", 957 | "dependencies": { 958 | "yallist": "^4.0.0" 959 | }, 960 | "engines": { 961 | "node": ">=8" 962 | } 963 | }, 964 | "node_modules/minizlib": { 965 | "version": "2.1.2", 966 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 967 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 968 | "dependencies": { 969 | "minipass": "^3.0.0", 970 | "yallist": "^4.0.0" 971 | }, 972 | "engines": { 973 | "node": ">= 8" 974 | } 975 | }, 976 | "node_modules/mkdirp": { 977 | "version": "1.0.4", 978 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 979 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 980 | "bin": { 981 | "mkdirp": "bin/cmd.js" 982 | }, 983 | "engines": { 984 | "node": ">=10" 985 | } 986 | }, 987 | "node_modules/mongodb": { 988 | "version": "4.2.2", 989 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.2.2.tgz", 990 | "integrity": "sha512-zt8rCTnTKyMQppyt63qMnrLM5dbADgUk18ORPF1XbtHLIYCyc9hattaYHi0pqMvNxDpgGgUofSVzS+UQErgTug==", 991 | "dependencies": { 992 | "bson": "^4.6.0", 993 | "denque": "^2.0.1", 994 | "mongodb-connection-string-url": "^2.3.2" 995 | }, 996 | "engines": { 997 | "node": ">=12.9.0" 998 | }, 999 | "optionalDependencies": { 1000 | "saslprep": "^1.0.3" 1001 | } 1002 | }, 1003 | "node_modules/mongodb-connection-string-url": { 1004 | "version": "2.4.1", 1005 | "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.4.1.tgz", 1006 | "integrity": "sha512-d5Kd2bVsKcSA7YI/yo57fSTtMwRQdFkvc5IZwod1RRxJtECeWPPSo7zqcUGJELifRA//Igs4spVtYAmvFCatug==", 1007 | "dependencies": { 1008 | "@types/whatwg-url": "^8.2.1", 1009 | "whatwg-url": "^11.0.0" 1010 | } 1011 | }, 1012 | "node_modules/mongoose": { 1013 | "version": "6.1.8", 1014 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.1.8.tgz", 1015 | "integrity": "sha512-/voqwU2dtet3zAR73r8jdPhqluU1VzIAnk7ecXPJBgyXKREnwQrz40lfW7fLpaqhmMhsAbA+JQ7ICUn2vAVFLw==", 1016 | "dependencies": { 1017 | "@types/node": "< 17.0.6", 1018 | "bson": "^4.2.2", 1019 | "kareem": "2.3.3", 1020 | "mongodb": "4.2.2", 1021 | "mpath": "0.8.4", 1022 | "mquery": "4.0.2", 1023 | "ms": "2.1.2", 1024 | "regexp-clone": "1.0.0", 1025 | "sift": "13.5.2" 1026 | }, 1027 | "engines": { 1028 | "node": ">=12.0.0" 1029 | }, 1030 | "funding": { 1031 | "type": "opencollective", 1032 | "url": "https://opencollective.com/mongoose" 1033 | } 1034 | }, 1035 | "node_modules/mongoose-encryption": { 1036 | "version": "2.1.2", 1037 | "resolved": "https://registry.npmjs.org/mongoose-encryption/-/mongoose-encryption-2.1.2.tgz", 1038 | "integrity": "sha512-whc9ZhN8/UjED3qiQKJvQAx/H1Ml3FUpEiyoHLKl4gzhvWorndnRE0sKuQ3fKzuaZDi/rDBN5AI4L/J2Er8Q9Q==", 1039 | "dependencies": { 1040 | "async": "^2.6.1", 1041 | "buffer-equal-constant-time": "^1.0.1", 1042 | "dotty": "^0.1.2", 1043 | "json-stable-stringify": "^1.0.0", 1044 | "mpath": "^0.8.4", 1045 | "semver": "^5.5.0", 1046 | "underscore": "^1.5.0" 1047 | }, 1048 | "engines": { 1049 | "node": ">=4.4.5" 1050 | }, 1051 | "peerDependencies": { 1052 | "mongoose": ">=5.0.0" 1053 | } 1054 | }, 1055 | "node_modules/mongoose-encryption/node_modules/async": { 1056 | "version": "2.6.3", 1057 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", 1058 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", 1059 | "dependencies": { 1060 | "lodash": "^4.17.14" 1061 | } 1062 | }, 1063 | "node_modules/mongoose-findorcreate": { 1064 | "version": "3.0.0", 1065 | "resolved": "https://registry.npmjs.org/mongoose-findorcreate/-/mongoose-findorcreate-3.0.0.tgz", 1066 | "integrity": "sha512-kQhDe5XDj6tMv8kq1wjK+hITGIGUl60rj8oGLupF9poNsqIDkAJBXudZKcCdSyBZ7p6DLK2+0jSBthrb26tSYQ==" 1067 | }, 1068 | "node_modules/mongoose/node_modules/ms": { 1069 | "version": "2.1.2", 1070 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1071 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1072 | }, 1073 | "node_modules/mpath": { 1074 | "version": "0.8.4", 1075 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz", 1076 | "integrity": "sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==", 1077 | "engines": { 1078 | "node": ">=4.0.0" 1079 | } 1080 | }, 1081 | "node_modules/mquery": { 1082 | "version": "4.0.2", 1083 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.2.tgz", 1084 | "integrity": "sha512-oAVF0Nil1mT3rxty6Zln4YiD6x6QsUWYz927jZzjMxOK2aqmhEz5JQ7xmrKK7xRFA2dwV+YaOpKU/S+vfNqKxA==", 1085 | "dependencies": { 1086 | "debug": "4.x" 1087 | }, 1088 | "engines": { 1089 | "node": ">=12.0.0" 1090 | } 1091 | }, 1092 | "node_modules/mquery/node_modules/debug": { 1093 | "version": "4.3.3", 1094 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 1095 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 1096 | "dependencies": { 1097 | "ms": "2.1.2" 1098 | }, 1099 | "engines": { 1100 | "node": ">=6.0" 1101 | }, 1102 | "peerDependenciesMeta": { 1103 | "supports-color": { 1104 | "optional": true 1105 | } 1106 | } 1107 | }, 1108 | "node_modules/mquery/node_modules/ms": { 1109 | "version": "2.1.2", 1110 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1111 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1112 | }, 1113 | "node_modules/ms": { 1114 | "version": "2.0.0", 1115 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1116 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1117 | }, 1118 | "node_modules/negotiator": { 1119 | "version": "0.6.2", 1120 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1121 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", 1122 | "engines": { 1123 | "node": ">= 0.6" 1124 | } 1125 | }, 1126 | "node_modules/node-addon-api": { 1127 | "version": "3.2.1", 1128 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", 1129 | "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" 1130 | }, 1131 | "node_modules/node-fetch": { 1132 | "version": "2.6.7", 1133 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1134 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1135 | "dependencies": { 1136 | "whatwg-url": "^5.0.0" 1137 | }, 1138 | "engines": { 1139 | "node": "4.x || >=6.0.0" 1140 | }, 1141 | "peerDependencies": { 1142 | "encoding": "^0.1.0" 1143 | }, 1144 | "peerDependenciesMeta": { 1145 | "encoding": { 1146 | "optional": true 1147 | } 1148 | } 1149 | }, 1150 | "node_modules/node-fetch/node_modules/tr46": { 1151 | "version": "0.0.3", 1152 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1153 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 1154 | }, 1155 | "node_modules/node-fetch/node_modules/webidl-conversions": { 1156 | "version": "3.0.1", 1157 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1158 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 1159 | }, 1160 | "node_modules/node-fetch/node_modules/whatwg-url": { 1161 | "version": "5.0.0", 1162 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1163 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 1164 | "dependencies": { 1165 | "tr46": "~0.0.3", 1166 | "webidl-conversions": "^3.0.0" 1167 | } 1168 | }, 1169 | "node_modules/nopt": { 1170 | "version": "5.0.0", 1171 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 1172 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 1173 | "dependencies": { 1174 | "abbrev": "1" 1175 | }, 1176 | "bin": { 1177 | "nopt": "bin/nopt.js" 1178 | }, 1179 | "engines": { 1180 | "node": ">=6" 1181 | } 1182 | }, 1183 | "node_modules/npmlog": { 1184 | "version": "5.0.1", 1185 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", 1186 | "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", 1187 | "dependencies": { 1188 | "are-we-there-yet": "^2.0.0", 1189 | "console-control-strings": "^1.1.0", 1190 | "gauge": "^3.0.0", 1191 | "set-blocking": "^2.0.0" 1192 | } 1193 | }, 1194 | "node_modules/oauth": { 1195 | "version": "0.9.15", 1196 | "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", 1197 | "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE=" 1198 | }, 1199 | "node_modules/object-assign": { 1200 | "version": "4.1.1", 1201 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1202 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1203 | "engines": { 1204 | "node": ">=0.10.0" 1205 | } 1206 | }, 1207 | "node_modules/on-finished": { 1208 | "version": "2.3.0", 1209 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1210 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1211 | "dependencies": { 1212 | "ee-first": "1.1.1" 1213 | }, 1214 | "engines": { 1215 | "node": ">= 0.8" 1216 | } 1217 | }, 1218 | "node_modules/on-headers": { 1219 | "version": "1.0.2", 1220 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 1221 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", 1222 | "engines": { 1223 | "node": ">= 0.8" 1224 | } 1225 | }, 1226 | "node_modules/once": { 1227 | "version": "1.4.0", 1228 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1229 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1230 | "dependencies": { 1231 | "wrappy": "1" 1232 | } 1233 | }, 1234 | "node_modules/parseurl": { 1235 | "version": "1.3.3", 1236 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1237 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 1238 | "engines": { 1239 | "node": ">= 0.8" 1240 | } 1241 | }, 1242 | "node_modules/passport": { 1243 | "version": "0.5.2", 1244 | "resolved": "https://registry.npmjs.org/passport/-/passport-0.5.2.tgz", 1245 | "integrity": "sha512-w9n/Ot5I7orGD4y+7V3EFJCQEznE5RxHamUxcqLT2QoJY0f2JdN8GyHonYFvN0Vz+L6lUJfVhrk2aZz2LbuREw==", 1246 | "dependencies": { 1247 | "passport-strategy": "1.x.x", 1248 | "pause": "0.0.1" 1249 | }, 1250 | "engines": { 1251 | "node": ">= 0.4.0" 1252 | }, 1253 | "funding": { 1254 | "type": "github", 1255 | "url": "https://github.com/sponsors/jaredhanson" 1256 | } 1257 | }, 1258 | "node_modules/passport-google-oauth20": { 1259 | "version": "2.0.0", 1260 | "resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz", 1261 | "integrity": "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==", 1262 | "dependencies": { 1263 | "passport-oauth2": "1.x.x" 1264 | }, 1265 | "engines": { 1266 | "node": ">= 0.4.0" 1267 | } 1268 | }, 1269 | "node_modules/passport-local": { 1270 | "version": "1.0.0", 1271 | "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", 1272 | "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=", 1273 | "dependencies": { 1274 | "passport-strategy": "1.x.x" 1275 | }, 1276 | "engines": { 1277 | "node": ">= 0.4.0" 1278 | } 1279 | }, 1280 | "node_modules/passport-local-mongoose": { 1281 | "version": "6.1.0", 1282 | "resolved": "https://registry.npmjs.org/passport-local-mongoose/-/passport-local-mongoose-6.1.0.tgz", 1283 | "integrity": "sha512-kxRDejpBXoPmWau1RCrmEeNYEXGG9ec4aDYjd0pFAHIEAzZ0RXKn581ISfjpHZ1zZLoCCM2pWUo4SfGHNJNwnw==", 1284 | "dependencies": { 1285 | "generaterr": "^1.5.0", 1286 | "passport-local": "^1.0.0", 1287 | "scmp": "^2.1.0" 1288 | }, 1289 | "engines": { 1290 | "node": ">= 8.0.0" 1291 | } 1292 | }, 1293 | "node_modules/passport-oauth2": { 1294 | "version": "1.6.1", 1295 | "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.6.1.tgz", 1296 | "integrity": "sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ==", 1297 | "dependencies": { 1298 | "base64url": "3.x.x", 1299 | "oauth": "0.9.x", 1300 | "passport-strategy": "1.x.x", 1301 | "uid2": "0.0.x", 1302 | "utils-merge": "1.x.x" 1303 | }, 1304 | "engines": { 1305 | "node": ">= 0.4.0" 1306 | }, 1307 | "funding": { 1308 | "type": "github", 1309 | "url": "https://github.com/sponsors/jaredhanson" 1310 | } 1311 | }, 1312 | "node_modules/passport-strategy": { 1313 | "version": "1.0.0", 1314 | "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", 1315 | "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=", 1316 | "engines": { 1317 | "node": ">= 0.4.0" 1318 | } 1319 | }, 1320 | "node_modules/path-is-absolute": { 1321 | "version": "1.0.1", 1322 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1323 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1324 | "engines": { 1325 | "node": ">=0.10.0" 1326 | } 1327 | }, 1328 | "node_modules/path-to-regexp": { 1329 | "version": "0.1.7", 1330 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1331 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 1332 | }, 1333 | "node_modules/pause": { 1334 | "version": "0.0.1", 1335 | "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", 1336 | "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" 1337 | }, 1338 | "node_modules/proxy-addr": { 1339 | "version": "2.0.7", 1340 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1341 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1342 | "dependencies": { 1343 | "forwarded": "0.2.0", 1344 | "ipaddr.js": "1.9.1" 1345 | }, 1346 | "engines": { 1347 | "node": ">= 0.10" 1348 | } 1349 | }, 1350 | "node_modules/punycode": { 1351 | "version": "2.1.1", 1352 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1353 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1354 | "engines": { 1355 | "node": ">=6" 1356 | } 1357 | }, 1358 | "node_modules/qs": { 1359 | "version": "6.9.6", 1360 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", 1361 | "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", 1362 | "engines": { 1363 | "node": ">=0.6" 1364 | }, 1365 | "funding": { 1366 | "url": "https://github.com/sponsors/ljharb" 1367 | } 1368 | }, 1369 | "node_modules/random-bytes": { 1370 | "version": "1.0.0", 1371 | "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", 1372 | "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", 1373 | "engines": { 1374 | "node": ">= 0.8" 1375 | } 1376 | }, 1377 | "node_modules/range-parser": { 1378 | "version": "1.2.1", 1379 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1380 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 1381 | "engines": { 1382 | "node": ">= 0.6" 1383 | } 1384 | }, 1385 | "node_modules/raw-body": { 1386 | "version": "2.4.2", 1387 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", 1388 | "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", 1389 | "dependencies": { 1390 | "bytes": "3.1.1", 1391 | "http-errors": "1.8.1", 1392 | "iconv-lite": "0.4.24", 1393 | "unpipe": "1.0.0" 1394 | }, 1395 | "engines": { 1396 | "node": ">= 0.8" 1397 | } 1398 | }, 1399 | "node_modules/readable-stream": { 1400 | "version": "3.6.0", 1401 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1402 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1403 | "dependencies": { 1404 | "inherits": "^2.0.3", 1405 | "string_decoder": "^1.1.1", 1406 | "util-deprecate": "^1.0.1" 1407 | }, 1408 | "engines": { 1409 | "node": ">= 6" 1410 | } 1411 | }, 1412 | "node_modules/regexp-clone": { 1413 | "version": "1.0.0", 1414 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", 1415 | "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" 1416 | }, 1417 | "node_modules/rimraf": { 1418 | "version": "3.0.2", 1419 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1420 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1421 | "dependencies": { 1422 | "glob": "^7.1.3" 1423 | }, 1424 | "bin": { 1425 | "rimraf": "bin.js" 1426 | }, 1427 | "funding": { 1428 | "url": "https://github.com/sponsors/isaacs" 1429 | } 1430 | }, 1431 | "node_modules/safe-buffer": { 1432 | "version": "5.2.1", 1433 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1434 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1435 | "funding": [ 1436 | { 1437 | "type": "github", 1438 | "url": "https://github.com/sponsors/feross" 1439 | }, 1440 | { 1441 | "type": "patreon", 1442 | "url": "https://www.patreon.com/feross" 1443 | }, 1444 | { 1445 | "type": "consulting", 1446 | "url": "https://feross.org/support" 1447 | } 1448 | ] 1449 | }, 1450 | "node_modules/safer-buffer": { 1451 | "version": "2.1.2", 1452 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1453 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1454 | }, 1455 | "node_modules/saslprep": { 1456 | "version": "1.0.3", 1457 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", 1458 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", 1459 | "optional": true, 1460 | "dependencies": { 1461 | "sparse-bitfield": "^3.0.3" 1462 | }, 1463 | "engines": { 1464 | "node": ">=6" 1465 | } 1466 | }, 1467 | "node_modules/scmp": { 1468 | "version": "2.1.0", 1469 | "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz", 1470 | "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==" 1471 | }, 1472 | "node_modules/semver": { 1473 | "version": "5.7.1", 1474 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1475 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1476 | "bin": { 1477 | "semver": "bin/semver" 1478 | } 1479 | }, 1480 | "node_modules/send": { 1481 | "version": "0.17.2", 1482 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", 1483 | "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", 1484 | "dependencies": { 1485 | "debug": "2.6.9", 1486 | "depd": "~1.1.2", 1487 | "destroy": "~1.0.4", 1488 | "encodeurl": "~1.0.2", 1489 | "escape-html": "~1.0.3", 1490 | "etag": "~1.8.1", 1491 | "fresh": "0.5.2", 1492 | "http-errors": "1.8.1", 1493 | "mime": "1.6.0", 1494 | "ms": "2.1.3", 1495 | "on-finished": "~2.3.0", 1496 | "range-parser": "~1.2.1", 1497 | "statuses": "~1.5.0" 1498 | }, 1499 | "engines": { 1500 | "node": ">= 0.8.0" 1501 | } 1502 | }, 1503 | "node_modules/send/node_modules/ms": { 1504 | "version": "2.1.3", 1505 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1506 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1507 | }, 1508 | "node_modules/serve-static": { 1509 | "version": "1.14.2", 1510 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", 1511 | "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", 1512 | "dependencies": { 1513 | "encodeurl": "~1.0.2", 1514 | "escape-html": "~1.0.3", 1515 | "parseurl": "~1.3.3", 1516 | "send": "0.17.2" 1517 | }, 1518 | "engines": { 1519 | "node": ">= 0.8.0" 1520 | } 1521 | }, 1522 | "node_modules/set-blocking": { 1523 | "version": "2.0.0", 1524 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1525 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 1526 | }, 1527 | "node_modules/setprototypeof": { 1528 | "version": "1.2.0", 1529 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1530 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1531 | }, 1532 | "node_modules/sift": { 1533 | "version": "13.5.2", 1534 | "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", 1535 | "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" 1536 | }, 1537 | "node_modules/signal-exit": { 1538 | "version": "3.0.6", 1539 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", 1540 | "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" 1541 | }, 1542 | "node_modules/sparse-bitfield": { 1543 | "version": "3.0.3", 1544 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", 1545 | "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", 1546 | "optional": true, 1547 | "dependencies": { 1548 | "memory-pager": "^1.0.2" 1549 | } 1550 | }, 1551 | "node_modules/statuses": { 1552 | "version": "1.5.0", 1553 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1554 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 1555 | "engines": { 1556 | "node": ">= 0.6" 1557 | } 1558 | }, 1559 | "node_modules/string_decoder": { 1560 | "version": "1.3.0", 1561 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1562 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1563 | "dependencies": { 1564 | "safe-buffer": "~5.2.0" 1565 | } 1566 | }, 1567 | "node_modules/string-width": { 1568 | "version": "4.2.3", 1569 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1570 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1571 | "dependencies": { 1572 | "emoji-regex": "^8.0.0", 1573 | "is-fullwidth-code-point": "^3.0.0", 1574 | "strip-ansi": "^6.0.1" 1575 | }, 1576 | "engines": { 1577 | "node": ">=8" 1578 | } 1579 | }, 1580 | "node_modules/strip-ansi": { 1581 | "version": "6.0.1", 1582 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1583 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1584 | "dependencies": { 1585 | "ansi-regex": "^5.0.1" 1586 | }, 1587 | "engines": { 1588 | "node": ">=8" 1589 | } 1590 | }, 1591 | "node_modules/supports-color": { 1592 | "version": "5.5.0", 1593 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1594 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1595 | "dependencies": { 1596 | "has-flag": "^3.0.0" 1597 | }, 1598 | "engines": { 1599 | "node": ">=4" 1600 | } 1601 | }, 1602 | "node_modules/tar": { 1603 | "version": "6.1.11", 1604 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", 1605 | "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", 1606 | "dependencies": { 1607 | "chownr": "^2.0.0", 1608 | "fs-minipass": "^2.0.0", 1609 | "minipass": "^3.0.0", 1610 | "minizlib": "^2.1.1", 1611 | "mkdirp": "^1.0.3", 1612 | "yallist": "^4.0.0" 1613 | }, 1614 | "engines": { 1615 | "node": ">= 10" 1616 | } 1617 | }, 1618 | "node_modules/toidentifier": { 1619 | "version": "1.0.1", 1620 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1621 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 1622 | "engines": { 1623 | "node": ">=0.6" 1624 | } 1625 | }, 1626 | "node_modules/tr46": { 1627 | "version": "3.0.0", 1628 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", 1629 | "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", 1630 | "dependencies": { 1631 | "punycode": "^2.1.1" 1632 | }, 1633 | "engines": { 1634 | "node": ">=12" 1635 | } 1636 | }, 1637 | "node_modules/type-is": { 1638 | "version": "1.6.18", 1639 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1640 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1641 | "dependencies": { 1642 | "media-typer": "0.3.0", 1643 | "mime-types": "~2.1.24" 1644 | }, 1645 | "engines": { 1646 | "node": ">= 0.6" 1647 | } 1648 | }, 1649 | "node_modules/uid-safe": { 1650 | "version": "2.1.5", 1651 | "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", 1652 | "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", 1653 | "dependencies": { 1654 | "random-bytes": "~1.0.0" 1655 | }, 1656 | "engines": { 1657 | "node": ">= 0.8" 1658 | } 1659 | }, 1660 | "node_modules/uid2": { 1661 | "version": "0.0.4", 1662 | "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", 1663 | "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" 1664 | }, 1665 | "node_modules/underscore": { 1666 | "version": "1.13.2", 1667 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", 1668 | "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==" 1669 | }, 1670 | "node_modules/unpipe": { 1671 | "version": "1.0.0", 1672 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1673 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 1674 | "engines": { 1675 | "node": ">= 0.8" 1676 | } 1677 | }, 1678 | "node_modules/util-deprecate": { 1679 | "version": "1.0.2", 1680 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1681 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1682 | }, 1683 | "node_modules/utils-merge": { 1684 | "version": "1.0.1", 1685 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1686 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 1687 | "engines": { 1688 | "node": ">= 0.4.0" 1689 | } 1690 | }, 1691 | "node_modules/vary": { 1692 | "version": "1.1.2", 1693 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1694 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 1695 | "engines": { 1696 | "node": ">= 0.8" 1697 | } 1698 | }, 1699 | "node_modules/webidl-conversions": { 1700 | "version": "7.0.0", 1701 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", 1702 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", 1703 | "engines": { 1704 | "node": ">=12" 1705 | } 1706 | }, 1707 | "node_modules/whatwg-url": { 1708 | "version": "11.0.0", 1709 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", 1710 | "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", 1711 | "dependencies": { 1712 | "tr46": "^3.0.0", 1713 | "webidl-conversions": "^7.0.0" 1714 | }, 1715 | "engines": { 1716 | "node": ">=12" 1717 | } 1718 | }, 1719 | "node_modules/wide-align": { 1720 | "version": "1.1.5", 1721 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 1722 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 1723 | "dependencies": { 1724 | "string-width": "^1.0.2 || 2 || 3 || 4" 1725 | } 1726 | }, 1727 | "node_modules/wrappy": { 1728 | "version": "1.0.2", 1729 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1730 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1731 | }, 1732 | "node_modules/yallist": { 1733 | "version": "4.0.0", 1734 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1735 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1736 | } 1737 | }, 1738 | "dependencies": { 1739 | "@mapbox/node-pre-gyp": { 1740 | "version": "1.0.8", 1741 | "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz", 1742 | "integrity": "sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg==", 1743 | "requires": { 1744 | "detect-libc": "^1.0.3", 1745 | "https-proxy-agent": "^5.0.0", 1746 | "make-dir": "^3.1.0", 1747 | "node-fetch": "^2.6.5", 1748 | "nopt": "^5.0.0", 1749 | "npmlog": "^5.0.1", 1750 | "rimraf": "^3.0.2", 1751 | "semver": "^7.3.5", 1752 | "tar": "^6.1.11" 1753 | }, 1754 | "dependencies": { 1755 | "semver": { 1756 | "version": "7.3.5", 1757 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 1758 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 1759 | "requires": { 1760 | "lru-cache": "^6.0.0" 1761 | } 1762 | } 1763 | } 1764 | }, 1765 | "@types/node": { 1766 | "version": "17.0.5", 1767 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.5.tgz", 1768 | "integrity": "sha512-w3mrvNXLeDYV1GKTZorGJQivK6XLCoGwpnyJFbJVK/aTBQUxOCaa/GlFAAN3OTDFcb7h5tiFG+YXCO2By+riZw==" 1769 | }, 1770 | "@types/webidl-conversions": { 1771 | "version": "6.1.1", 1772 | "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", 1773 | "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==" 1774 | }, 1775 | "@types/whatwg-url": { 1776 | "version": "8.2.1", 1777 | "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz", 1778 | "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==", 1779 | "requires": { 1780 | "@types/node": "*", 1781 | "@types/webidl-conversions": "*" 1782 | } 1783 | }, 1784 | "abbrev": { 1785 | "version": "1.1.1", 1786 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 1787 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 1788 | }, 1789 | "accepts": { 1790 | "version": "1.3.7", 1791 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 1792 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 1793 | "requires": { 1794 | "mime-types": "~2.1.24", 1795 | "negotiator": "0.6.2" 1796 | } 1797 | }, 1798 | "agent-base": { 1799 | "version": "6.0.2", 1800 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 1801 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 1802 | "requires": { 1803 | "debug": "4" 1804 | }, 1805 | "dependencies": { 1806 | "debug": { 1807 | "version": "4.3.3", 1808 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 1809 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 1810 | "requires": { 1811 | "ms": "2.1.2" 1812 | } 1813 | }, 1814 | "ms": { 1815 | "version": "2.1.2", 1816 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1817 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1818 | } 1819 | } 1820 | }, 1821 | "ansi-regex": { 1822 | "version": "5.0.1", 1823 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1824 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 1825 | }, 1826 | "ansi-styles": { 1827 | "version": "3.2.1", 1828 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1829 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1830 | "requires": { 1831 | "color-convert": "^1.9.0" 1832 | } 1833 | }, 1834 | "aproba": { 1835 | "version": "2.0.0", 1836 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 1837 | "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" 1838 | }, 1839 | "are-we-there-yet": { 1840 | "version": "2.0.0", 1841 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", 1842 | "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", 1843 | "requires": { 1844 | "delegates": "^1.0.0", 1845 | "readable-stream": "^3.6.0" 1846 | } 1847 | }, 1848 | "array-flatten": { 1849 | "version": "1.1.1", 1850 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 1851 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 1852 | }, 1853 | "async": { 1854 | "version": "0.9.2", 1855 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 1856 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" 1857 | }, 1858 | "balanced-match": { 1859 | "version": "1.0.2", 1860 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1861 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 1862 | }, 1863 | "base64-js": { 1864 | "version": "1.5.1", 1865 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1866 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 1867 | }, 1868 | "base64url": { 1869 | "version": "3.0.1", 1870 | "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", 1871 | "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" 1872 | }, 1873 | "bcrypt": { 1874 | "version": "5.0.1", 1875 | "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", 1876 | "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==", 1877 | "requires": { 1878 | "@mapbox/node-pre-gyp": "^1.0.0", 1879 | "node-addon-api": "^3.1.0" 1880 | } 1881 | }, 1882 | "body-parser": { 1883 | "version": "1.19.1", 1884 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", 1885 | "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", 1886 | "requires": { 1887 | "bytes": "3.1.1", 1888 | "content-type": "~1.0.4", 1889 | "debug": "2.6.9", 1890 | "depd": "~1.1.2", 1891 | "http-errors": "1.8.1", 1892 | "iconv-lite": "0.4.24", 1893 | "on-finished": "~2.3.0", 1894 | "qs": "6.9.6", 1895 | "raw-body": "2.4.2", 1896 | "type-is": "~1.6.18" 1897 | } 1898 | }, 1899 | "brace-expansion": { 1900 | "version": "1.1.11", 1901 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1902 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1903 | "requires": { 1904 | "balanced-match": "^1.0.0", 1905 | "concat-map": "0.0.1" 1906 | } 1907 | }, 1908 | "bson": { 1909 | "version": "4.6.1", 1910 | "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.1.tgz", 1911 | "integrity": "sha512-I1LQ7Hz5zgwR4QquilLNZwbhPw0Apx7i7X9kGMBTsqPdml/03Q9NBtD9nt/19ahjlphktQImrnderxqpzeVDjw==", 1912 | "requires": { 1913 | "buffer": "^5.6.0" 1914 | } 1915 | }, 1916 | "buffer": { 1917 | "version": "5.7.1", 1918 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 1919 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 1920 | "requires": { 1921 | "base64-js": "^1.3.1", 1922 | "ieee754": "^1.1.13" 1923 | } 1924 | }, 1925 | "buffer-equal-constant-time": { 1926 | "version": "1.0.1", 1927 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 1928 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 1929 | }, 1930 | "bytes": { 1931 | "version": "3.1.1", 1932 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", 1933 | "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==" 1934 | }, 1935 | "chalk": { 1936 | "version": "2.4.2", 1937 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1938 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1939 | "requires": { 1940 | "ansi-styles": "^3.2.1", 1941 | "escape-string-regexp": "^1.0.5", 1942 | "supports-color": "^5.3.0" 1943 | } 1944 | }, 1945 | "charenc": { 1946 | "version": "0.0.2", 1947 | "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", 1948 | "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" 1949 | }, 1950 | "chownr": { 1951 | "version": "2.0.0", 1952 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 1953 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" 1954 | }, 1955 | "color-convert": { 1956 | "version": "1.9.3", 1957 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1958 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1959 | "requires": { 1960 | "color-name": "1.1.3" 1961 | } 1962 | }, 1963 | "color-name": { 1964 | "version": "1.1.3", 1965 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1966 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 1967 | }, 1968 | "color-support": { 1969 | "version": "1.1.3", 1970 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 1971 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" 1972 | }, 1973 | "concat-map": { 1974 | "version": "0.0.1", 1975 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1976 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 1977 | }, 1978 | "console-control-strings": { 1979 | "version": "1.1.0", 1980 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 1981 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 1982 | }, 1983 | "content-disposition": { 1984 | "version": "0.5.4", 1985 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 1986 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 1987 | "requires": { 1988 | "safe-buffer": "5.2.1" 1989 | } 1990 | }, 1991 | "content-type": { 1992 | "version": "1.0.4", 1993 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 1994 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 1995 | }, 1996 | "cookie": { 1997 | "version": "0.4.1", 1998 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", 1999 | "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" 2000 | }, 2001 | "cookie-signature": { 2002 | "version": "1.0.6", 2003 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 2004 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 2005 | }, 2006 | "crypt": { 2007 | "version": "0.0.2", 2008 | "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", 2009 | "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" 2010 | }, 2011 | "debug": { 2012 | "version": "2.6.9", 2013 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2014 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2015 | "requires": { 2016 | "ms": "2.0.0" 2017 | } 2018 | }, 2019 | "delegates": { 2020 | "version": "1.0.0", 2021 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 2022 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 2023 | }, 2024 | "denque": { 2025 | "version": "2.0.1", 2026 | "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", 2027 | "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==" 2028 | }, 2029 | "depd": { 2030 | "version": "1.1.2", 2031 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 2032 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 2033 | }, 2034 | "destroy": { 2035 | "version": "1.0.4", 2036 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 2037 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 2038 | }, 2039 | "detect-libc": { 2040 | "version": "1.0.3", 2041 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 2042 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" 2043 | }, 2044 | "dotenv": { 2045 | "version": "14.3.0", 2046 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-14.3.0.tgz", 2047 | "integrity": "sha512-PCTcOQSXVo9FI1dB7AichJXMEvmiGCq0gnCpjfDUc8505uR+2MeLXWe+Ue4PN5UXa2isHSa78sr7L59fk+2mnQ==" 2048 | }, 2049 | "dotty": { 2050 | "version": "0.1.2", 2051 | "resolved": "https://registry.npmjs.org/dotty/-/dotty-0.1.2.tgz", 2052 | "integrity": "sha512-V0EWmKeH3DEhMwAZ+8ZB2Ao4OK6p++Z0hsDtZq3N0+0ZMVqkzrcEGROvOnZpLnvBg5PTNG23JEDLAm64gPaotQ==" 2053 | }, 2054 | "ee-first": { 2055 | "version": "1.1.1", 2056 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 2057 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 2058 | }, 2059 | "ejs": { 2060 | "version": "3.1.6", 2061 | "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", 2062 | "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", 2063 | "requires": { 2064 | "jake": "^10.6.1" 2065 | } 2066 | }, 2067 | "emoji-regex": { 2068 | "version": "8.0.0", 2069 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2070 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 2071 | }, 2072 | "encodeurl": { 2073 | "version": "1.0.2", 2074 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 2075 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 2076 | }, 2077 | "escape-html": { 2078 | "version": "1.0.3", 2079 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 2080 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 2081 | }, 2082 | "escape-string-regexp": { 2083 | "version": "1.0.5", 2084 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2085 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 2086 | }, 2087 | "etag": { 2088 | "version": "1.8.1", 2089 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 2090 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 2091 | }, 2092 | "express": { 2093 | "version": "4.17.2", 2094 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", 2095 | "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", 2096 | "requires": { 2097 | "accepts": "~1.3.7", 2098 | "array-flatten": "1.1.1", 2099 | "body-parser": "1.19.1", 2100 | "content-disposition": "0.5.4", 2101 | "content-type": "~1.0.4", 2102 | "cookie": "0.4.1", 2103 | "cookie-signature": "1.0.6", 2104 | "debug": "2.6.9", 2105 | "depd": "~1.1.2", 2106 | "encodeurl": "~1.0.2", 2107 | "escape-html": "~1.0.3", 2108 | "etag": "~1.8.1", 2109 | "finalhandler": "~1.1.2", 2110 | "fresh": "0.5.2", 2111 | "merge-descriptors": "1.0.1", 2112 | "methods": "~1.1.2", 2113 | "on-finished": "~2.3.0", 2114 | "parseurl": "~1.3.3", 2115 | "path-to-regexp": "0.1.7", 2116 | "proxy-addr": "~2.0.7", 2117 | "qs": "6.9.6", 2118 | "range-parser": "~1.2.1", 2119 | "safe-buffer": "5.2.1", 2120 | "send": "0.17.2", 2121 | "serve-static": "1.14.2", 2122 | "setprototypeof": "1.2.0", 2123 | "statuses": "~1.5.0", 2124 | "type-is": "~1.6.18", 2125 | "utils-merge": "1.0.1", 2126 | "vary": "~1.1.2" 2127 | } 2128 | }, 2129 | "express-session": { 2130 | "version": "1.17.2", 2131 | "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz", 2132 | "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==", 2133 | "requires": { 2134 | "cookie": "0.4.1", 2135 | "cookie-signature": "1.0.6", 2136 | "debug": "2.6.9", 2137 | "depd": "~2.0.0", 2138 | "on-headers": "~1.0.2", 2139 | "parseurl": "~1.3.3", 2140 | "safe-buffer": "5.2.1", 2141 | "uid-safe": "~2.1.5" 2142 | }, 2143 | "dependencies": { 2144 | "depd": { 2145 | "version": "2.0.0", 2146 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 2147 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 2148 | } 2149 | } 2150 | }, 2151 | "filelist": { 2152 | "version": "1.0.2", 2153 | "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", 2154 | "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", 2155 | "requires": { 2156 | "minimatch": "^3.0.4" 2157 | } 2158 | }, 2159 | "finalhandler": { 2160 | "version": "1.1.2", 2161 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 2162 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 2163 | "requires": { 2164 | "debug": "2.6.9", 2165 | "encodeurl": "~1.0.2", 2166 | "escape-html": "~1.0.3", 2167 | "on-finished": "~2.3.0", 2168 | "parseurl": "~1.3.3", 2169 | "statuses": "~1.5.0", 2170 | "unpipe": "~1.0.0" 2171 | } 2172 | }, 2173 | "forwarded": { 2174 | "version": "0.2.0", 2175 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 2176 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 2177 | }, 2178 | "fresh": { 2179 | "version": "0.5.2", 2180 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 2181 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 2182 | }, 2183 | "fs-minipass": { 2184 | "version": "2.1.0", 2185 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 2186 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 2187 | "requires": { 2188 | "minipass": "^3.0.0" 2189 | } 2190 | }, 2191 | "fs.realpath": { 2192 | "version": "1.0.0", 2193 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2194 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 2195 | }, 2196 | "gauge": { 2197 | "version": "3.0.2", 2198 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", 2199 | "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", 2200 | "requires": { 2201 | "aproba": "^1.0.3 || ^2.0.0", 2202 | "color-support": "^1.1.2", 2203 | "console-control-strings": "^1.0.0", 2204 | "has-unicode": "^2.0.1", 2205 | "object-assign": "^4.1.1", 2206 | "signal-exit": "^3.0.0", 2207 | "string-width": "^4.2.3", 2208 | "strip-ansi": "^6.0.1", 2209 | "wide-align": "^1.1.2" 2210 | } 2211 | }, 2212 | "generaterr": { 2213 | "version": "1.5.0", 2214 | "resolved": "https://registry.npmjs.org/generaterr/-/generaterr-1.5.0.tgz", 2215 | "integrity": "sha1-sM62zFFk3yoGEzjMNAqGFTlcUvw=" 2216 | }, 2217 | "glob": { 2218 | "version": "7.2.0", 2219 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 2220 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 2221 | "requires": { 2222 | "fs.realpath": "^1.0.0", 2223 | "inflight": "^1.0.4", 2224 | "inherits": "2", 2225 | "minimatch": "^3.0.4", 2226 | "once": "^1.3.0", 2227 | "path-is-absolute": "^1.0.0" 2228 | } 2229 | }, 2230 | "has-flag": { 2231 | "version": "3.0.0", 2232 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2233 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 2234 | }, 2235 | "has-unicode": { 2236 | "version": "2.0.1", 2237 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 2238 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 2239 | }, 2240 | "http-errors": { 2241 | "version": "1.8.1", 2242 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", 2243 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 2244 | "requires": { 2245 | "depd": "~1.1.2", 2246 | "inherits": "2.0.4", 2247 | "setprototypeof": "1.2.0", 2248 | "statuses": ">= 1.5.0 < 2", 2249 | "toidentifier": "1.0.1" 2250 | } 2251 | }, 2252 | "https-proxy-agent": { 2253 | "version": "5.0.0", 2254 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 2255 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 2256 | "requires": { 2257 | "agent-base": "6", 2258 | "debug": "4" 2259 | }, 2260 | "dependencies": { 2261 | "debug": { 2262 | "version": "4.3.3", 2263 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 2264 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 2265 | "requires": { 2266 | "ms": "2.1.2" 2267 | } 2268 | }, 2269 | "ms": { 2270 | "version": "2.1.2", 2271 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2272 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2273 | } 2274 | } 2275 | }, 2276 | "iconv-lite": { 2277 | "version": "0.4.24", 2278 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 2279 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 2280 | "requires": { 2281 | "safer-buffer": ">= 2.1.2 < 3" 2282 | } 2283 | }, 2284 | "ieee754": { 2285 | "version": "1.2.1", 2286 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 2287 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 2288 | }, 2289 | "inflight": { 2290 | "version": "1.0.6", 2291 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2292 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2293 | "requires": { 2294 | "once": "^1.3.0", 2295 | "wrappy": "1" 2296 | } 2297 | }, 2298 | "inherits": { 2299 | "version": "2.0.4", 2300 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2301 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2302 | }, 2303 | "ipaddr.js": { 2304 | "version": "1.9.1", 2305 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 2306 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 2307 | }, 2308 | "is-buffer": { 2309 | "version": "1.1.6", 2310 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 2311 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 2312 | }, 2313 | "is-fullwidth-code-point": { 2314 | "version": "3.0.0", 2315 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2316 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 2317 | }, 2318 | "jake": { 2319 | "version": "10.8.2", 2320 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", 2321 | "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", 2322 | "requires": { 2323 | "async": "0.9.x", 2324 | "chalk": "^2.4.2", 2325 | "filelist": "^1.0.1", 2326 | "minimatch": "^3.0.4" 2327 | } 2328 | }, 2329 | "json-stable-stringify": { 2330 | "version": "1.0.1", 2331 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 2332 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 2333 | "requires": { 2334 | "jsonify": "~0.0.0" 2335 | } 2336 | }, 2337 | "jsonify": { 2338 | "version": "0.0.0", 2339 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 2340 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" 2341 | }, 2342 | "kareem": { 2343 | "version": "2.3.3", 2344 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.3.tgz", 2345 | "integrity": "sha512-uESCXM2KdtOQ8LOvKyTUXEeg0MkYp4wGglTIpGcYHvjJcS5sn2Wkfrfit8m4xSbaNDAw2KdI9elgkOxZbrFYbg==" 2346 | }, 2347 | "lodash": { 2348 | "version": "4.17.21", 2349 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2350 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 2351 | }, 2352 | "lru-cache": { 2353 | "version": "6.0.0", 2354 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2355 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2356 | "requires": { 2357 | "yallist": "^4.0.0" 2358 | } 2359 | }, 2360 | "make-dir": { 2361 | "version": "3.1.0", 2362 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 2363 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 2364 | "requires": { 2365 | "semver": "^6.0.0" 2366 | }, 2367 | "dependencies": { 2368 | "semver": { 2369 | "version": "6.3.0", 2370 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2371 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 2372 | } 2373 | } 2374 | }, 2375 | "md5": { 2376 | "version": "2.3.0", 2377 | "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", 2378 | "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", 2379 | "requires": { 2380 | "charenc": "0.0.2", 2381 | "crypt": "0.0.2", 2382 | "is-buffer": "~1.1.6" 2383 | } 2384 | }, 2385 | "media-typer": { 2386 | "version": "0.3.0", 2387 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 2388 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 2389 | }, 2390 | "memory-pager": { 2391 | "version": "1.5.0", 2392 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", 2393 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", 2394 | "optional": true 2395 | }, 2396 | "merge-descriptors": { 2397 | "version": "1.0.1", 2398 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 2399 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 2400 | }, 2401 | "methods": { 2402 | "version": "1.1.2", 2403 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 2404 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 2405 | }, 2406 | "mime": { 2407 | "version": "1.6.0", 2408 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 2409 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 2410 | }, 2411 | "mime-db": { 2412 | "version": "1.51.0", 2413 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", 2414 | "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" 2415 | }, 2416 | "mime-types": { 2417 | "version": "2.1.34", 2418 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", 2419 | "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", 2420 | "requires": { 2421 | "mime-db": "1.51.0" 2422 | } 2423 | }, 2424 | "minimatch": { 2425 | "version": "3.0.4", 2426 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2427 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2428 | "requires": { 2429 | "brace-expansion": "^1.1.7" 2430 | } 2431 | }, 2432 | "minipass": { 2433 | "version": "3.1.6", 2434 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", 2435 | "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", 2436 | "requires": { 2437 | "yallist": "^4.0.0" 2438 | } 2439 | }, 2440 | "minizlib": { 2441 | "version": "2.1.2", 2442 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 2443 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 2444 | "requires": { 2445 | "minipass": "^3.0.0", 2446 | "yallist": "^4.0.0" 2447 | } 2448 | }, 2449 | "mkdirp": { 2450 | "version": "1.0.4", 2451 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 2452 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" 2453 | }, 2454 | "mongodb": { 2455 | "version": "4.2.2", 2456 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.2.2.tgz", 2457 | "integrity": "sha512-zt8rCTnTKyMQppyt63qMnrLM5dbADgUk18ORPF1XbtHLIYCyc9hattaYHi0pqMvNxDpgGgUofSVzS+UQErgTug==", 2458 | "requires": { 2459 | "bson": "^4.6.0", 2460 | "denque": "^2.0.1", 2461 | "mongodb-connection-string-url": "^2.3.2", 2462 | "saslprep": "^1.0.3" 2463 | } 2464 | }, 2465 | "mongodb-connection-string-url": { 2466 | "version": "2.4.1", 2467 | "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.4.1.tgz", 2468 | "integrity": "sha512-d5Kd2bVsKcSA7YI/yo57fSTtMwRQdFkvc5IZwod1RRxJtECeWPPSo7zqcUGJELifRA//Igs4spVtYAmvFCatug==", 2469 | "requires": { 2470 | "@types/whatwg-url": "^8.2.1", 2471 | "whatwg-url": "^11.0.0" 2472 | } 2473 | }, 2474 | "mongoose": { 2475 | "version": "6.1.8", 2476 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.1.8.tgz", 2477 | "integrity": "sha512-/voqwU2dtet3zAR73r8jdPhqluU1VzIAnk7ecXPJBgyXKREnwQrz40lfW7fLpaqhmMhsAbA+JQ7ICUn2vAVFLw==", 2478 | "requires": { 2479 | "@types/node": "< 17.0.6", 2480 | "bson": "^4.2.2", 2481 | "kareem": "2.3.3", 2482 | "mongodb": "4.2.2", 2483 | "mpath": "0.8.4", 2484 | "mquery": "4.0.2", 2485 | "ms": "2.1.2", 2486 | "regexp-clone": "1.0.0", 2487 | "sift": "13.5.2" 2488 | }, 2489 | "dependencies": { 2490 | "ms": { 2491 | "version": "2.1.2", 2492 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2493 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2494 | } 2495 | } 2496 | }, 2497 | "mongoose-encryption": { 2498 | "version": "2.1.2", 2499 | "resolved": "https://registry.npmjs.org/mongoose-encryption/-/mongoose-encryption-2.1.2.tgz", 2500 | "integrity": "sha512-whc9ZhN8/UjED3qiQKJvQAx/H1Ml3FUpEiyoHLKl4gzhvWorndnRE0sKuQ3fKzuaZDi/rDBN5AI4L/J2Er8Q9Q==", 2501 | "requires": { 2502 | "async": "^2.6.1", 2503 | "buffer-equal-constant-time": "^1.0.1", 2504 | "dotty": "^0.1.2", 2505 | "json-stable-stringify": "^1.0.0", 2506 | "mpath": "^0.8.4", 2507 | "semver": "^5.5.0", 2508 | "underscore": "^1.5.0" 2509 | }, 2510 | "dependencies": { 2511 | "async": { 2512 | "version": "2.6.3", 2513 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", 2514 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", 2515 | "requires": { 2516 | "lodash": "^4.17.14" 2517 | } 2518 | } 2519 | } 2520 | }, 2521 | "mongoose-findorcreate": { 2522 | "version": "3.0.0", 2523 | "resolved": "https://registry.npmjs.org/mongoose-findorcreate/-/mongoose-findorcreate-3.0.0.tgz", 2524 | "integrity": "sha512-kQhDe5XDj6tMv8kq1wjK+hITGIGUl60rj8oGLupF9poNsqIDkAJBXudZKcCdSyBZ7p6DLK2+0jSBthrb26tSYQ==" 2525 | }, 2526 | "mpath": { 2527 | "version": "0.8.4", 2528 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz", 2529 | "integrity": "sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==" 2530 | }, 2531 | "mquery": { 2532 | "version": "4.0.2", 2533 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.2.tgz", 2534 | "integrity": "sha512-oAVF0Nil1mT3rxty6Zln4YiD6x6QsUWYz927jZzjMxOK2aqmhEz5JQ7xmrKK7xRFA2dwV+YaOpKU/S+vfNqKxA==", 2535 | "requires": { 2536 | "debug": "4.x" 2537 | }, 2538 | "dependencies": { 2539 | "debug": { 2540 | "version": "4.3.3", 2541 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 2542 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 2543 | "requires": { 2544 | "ms": "2.1.2" 2545 | } 2546 | }, 2547 | "ms": { 2548 | "version": "2.1.2", 2549 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2550 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2551 | } 2552 | } 2553 | }, 2554 | "ms": { 2555 | "version": "2.0.0", 2556 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2557 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 2558 | }, 2559 | "negotiator": { 2560 | "version": "0.6.2", 2561 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 2562 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 2563 | }, 2564 | "node-addon-api": { 2565 | "version": "3.2.1", 2566 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", 2567 | "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" 2568 | }, 2569 | "node-fetch": { 2570 | "version": "2.6.7", 2571 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 2572 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 2573 | "requires": { 2574 | "whatwg-url": "^5.0.0" 2575 | }, 2576 | "dependencies": { 2577 | "tr46": { 2578 | "version": "0.0.3", 2579 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 2580 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 2581 | }, 2582 | "webidl-conversions": { 2583 | "version": "3.0.1", 2584 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 2585 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 2586 | }, 2587 | "whatwg-url": { 2588 | "version": "5.0.0", 2589 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 2590 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 2591 | "requires": { 2592 | "tr46": "~0.0.3", 2593 | "webidl-conversions": "^3.0.0" 2594 | } 2595 | } 2596 | } 2597 | }, 2598 | "nopt": { 2599 | "version": "5.0.0", 2600 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 2601 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 2602 | "requires": { 2603 | "abbrev": "1" 2604 | } 2605 | }, 2606 | "npmlog": { 2607 | "version": "5.0.1", 2608 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", 2609 | "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", 2610 | "requires": { 2611 | "are-we-there-yet": "^2.0.0", 2612 | "console-control-strings": "^1.1.0", 2613 | "gauge": "^3.0.0", 2614 | "set-blocking": "^2.0.0" 2615 | } 2616 | }, 2617 | "oauth": { 2618 | "version": "0.9.15", 2619 | "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", 2620 | "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE=" 2621 | }, 2622 | "object-assign": { 2623 | "version": "4.1.1", 2624 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2625 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2626 | }, 2627 | "on-finished": { 2628 | "version": "2.3.0", 2629 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2630 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2631 | "requires": { 2632 | "ee-first": "1.1.1" 2633 | } 2634 | }, 2635 | "on-headers": { 2636 | "version": "1.0.2", 2637 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 2638 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" 2639 | }, 2640 | "once": { 2641 | "version": "1.4.0", 2642 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2643 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2644 | "requires": { 2645 | "wrappy": "1" 2646 | } 2647 | }, 2648 | "parseurl": { 2649 | "version": "1.3.3", 2650 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2651 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 2652 | }, 2653 | "passport": { 2654 | "version": "0.5.2", 2655 | "resolved": "https://registry.npmjs.org/passport/-/passport-0.5.2.tgz", 2656 | "integrity": "sha512-w9n/Ot5I7orGD4y+7V3EFJCQEznE5RxHamUxcqLT2QoJY0f2JdN8GyHonYFvN0Vz+L6lUJfVhrk2aZz2LbuREw==", 2657 | "requires": { 2658 | "passport-strategy": "1.x.x", 2659 | "pause": "0.0.1" 2660 | } 2661 | }, 2662 | "passport-google-oauth20": { 2663 | "version": "2.0.0", 2664 | "resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz", 2665 | "integrity": "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==", 2666 | "requires": { 2667 | "passport-oauth2": "1.x.x" 2668 | } 2669 | }, 2670 | "passport-local": { 2671 | "version": "1.0.0", 2672 | "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", 2673 | "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=", 2674 | "requires": { 2675 | "passport-strategy": "1.x.x" 2676 | } 2677 | }, 2678 | "passport-local-mongoose": { 2679 | "version": "6.1.0", 2680 | "resolved": "https://registry.npmjs.org/passport-local-mongoose/-/passport-local-mongoose-6.1.0.tgz", 2681 | "integrity": "sha512-kxRDejpBXoPmWau1RCrmEeNYEXGG9ec4aDYjd0pFAHIEAzZ0RXKn581ISfjpHZ1zZLoCCM2pWUo4SfGHNJNwnw==", 2682 | "requires": { 2683 | "generaterr": "^1.5.0", 2684 | "passport-local": "^1.0.0", 2685 | "scmp": "^2.1.0" 2686 | } 2687 | }, 2688 | "passport-oauth2": { 2689 | "version": "1.6.1", 2690 | "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.6.1.tgz", 2691 | "integrity": "sha512-ZbV43Hq9d/SBSYQ22GOiglFsjsD1YY/qdiptA+8ej+9C1dL1TVB+mBE5kDH/D4AJo50+2i8f4bx0vg4/yDDZCQ==", 2692 | "requires": { 2693 | "base64url": "3.x.x", 2694 | "oauth": "0.9.x", 2695 | "passport-strategy": "1.x.x", 2696 | "uid2": "0.0.x", 2697 | "utils-merge": "1.x.x" 2698 | } 2699 | }, 2700 | "passport-strategy": { 2701 | "version": "1.0.0", 2702 | "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", 2703 | "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=" 2704 | }, 2705 | "path-is-absolute": { 2706 | "version": "1.0.1", 2707 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2708 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 2709 | }, 2710 | "path-to-regexp": { 2711 | "version": "0.1.7", 2712 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 2713 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 2714 | }, 2715 | "pause": { 2716 | "version": "0.0.1", 2717 | "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", 2718 | "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" 2719 | }, 2720 | "proxy-addr": { 2721 | "version": "2.0.7", 2722 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 2723 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 2724 | "requires": { 2725 | "forwarded": "0.2.0", 2726 | "ipaddr.js": "1.9.1" 2727 | } 2728 | }, 2729 | "punycode": { 2730 | "version": "2.1.1", 2731 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2732 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 2733 | }, 2734 | "qs": { 2735 | "version": "6.9.6", 2736 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", 2737 | "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" 2738 | }, 2739 | "random-bytes": { 2740 | "version": "1.0.0", 2741 | "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", 2742 | "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" 2743 | }, 2744 | "range-parser": { 2745 | "version": "1.2.1", 2746 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 2747 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 2748 | }, 2749 | "raw-body": { 2750 | "version": "2.4.2", 2751 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", 2752 | "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", 2753 | "requires": { 2754 | "bytes": "3.1.1", 2755 | "http-errors": "1.8.1", 2756 | "iconv-lite": "0.4.24", 2757 | "unpipe": "1.0.0" 2758 | } 2759 | }, 2760 | "readable-stream": { 2761 | "version": "3.6.0", 2762 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 2763 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 2764 | "requires": { 2765 | "inherits": "^2.0.3", 2766 | "string_decoder": "^1.1.1", 2767 | "util-deprecate": "^1.0.1" 2768 | } 2769 | }, 2770 | "regexp-clone": { 2771 | "version": "1.0.0", 2772 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", 2773 | "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" 2774 | }, 2775 | "rimraf": { 2776 | "version": "3.0.2", 2777 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2778 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2779 | "requires": { 2780 | "glob": "^7.1.3" 2781 | } 2782 | }, 2783 | "safe-buffer": { 2784 | "version": "5.2.1", 2785 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2786 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 2787 | }, 2788 | "safer-buffer": { 2789 | "version": "2.1.2", 2790 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2791 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2792 | }, 2793 | "saslprep": { 2794 | "version": "1.0.3", 2795 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", 2796 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", 2797 | "optional": true, 2798 | "requires": { 2799 | "sparse-bitfield": "^3.0.3" 2800 | } 2801 | }, 2802 | "scmp": { 2803 | "version": "2.1.0", 2804 | "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz", 2805 | "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==" 2806 | }, 2807 | "semver": { 2808 | "version": "5.7.1", 2809 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2810 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 2811 | }, 2812 | "send": { 2813 | "version": "0.17.2", 2814 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", 2815 | "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", 2816 | "requires": { 2817 | "debug": "2.6.9", 2818 | "depd": "~1.1.2", 2819 | "destroy": "~1.0.4", 2820 | "encodeurl": "~1.0.2", 2821 | "escape-html": "~1.0.3", 2822 | "etag": "~1.8.1", 2823 | "fresh": "0.5.2", 2824 | "http-errors": "1.8.1", 2825 | "mime": "1.6.0", 2826 | "ms": "2.1.3", 2827 | "on-finished": "~2.3.0", 2828 | "range-parser": "~1.2.1", 2829 | "statuses": "~1.5.0" 2830 | }, 2831 | "dependencies": { 2832 | "ms": { 2833 | "version": "2.1.3", 2834 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2835 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 2836 | } 2837 | } 2838 | }, 2839 | "serve-static": { 2840 | "version": "1.14.2", 2841 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", 2842 | "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", 2843 | "requires": { 2844 | "encodeurl": "~1.0.2", 2845 | "escape-html": "~1.0.3", 2846 | "parseurl": "~1.3.3", 2847 | "send": "0.17.2" 2848 | } 2849 | }, 2850 | "set-blocking": { 2851 | "version": "2.0.0", 2852 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 2853 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 2854 | }, 2855 | "setprototypeof": { 2856 | "version": "1.2.0", 2857 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 2858 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 2859 | }, 2860 | "sift": { 2861 | "version": "13.5.2", 2862 | "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz", 2863 | "integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==" 2864 | }, 2865 | "signal-exit": { 2866 | "version": "3.0.6", 2867 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", 2868 | "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" 2869 | }, 2870 | "sparse-bitfield": { 2871 | "version": "3.0.3", 2872 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", 2873 | "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", 2874 | "optional": true, 2875 | "requires": { 2876 | "memory-pager": "^1.0.2" 2877 | } 2878 | }, 2879 | "statuses": { 2880 | "version": "1.5.0", 2881 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 2882 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 2883 | }, 2884 | "string_decoder": { 2885 | "version": "1.3.0", 2886 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2887 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2888 | "requires": { 2889 | "safe-buffer": "~5.2.0" 2890 | } 2891 | }, 2892 | "string-width": { 2893 | "version": "4.2.3", 2894 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2895 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2896 | "requires": { 2897 | "emoji-regex": "^8.0.0", 2898 | "is-fullwidth-code-point": "^3.0.0", 2899 | "strip-ansi": "^6.0.1" 2900 | } 2901 | }, 2902 | "strip-ansi": { 2903 | "version": "6.0.1", 2904 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2905 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2906 | "requires": { 2907 | "ansi-regex": "^5.0.1" 2908 | } 2909 | }, 2910 | "supports-color": { 2911 | "version": "5.5.0", 2912 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2913 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2914 | "requires": { 2915 | "has-flag": "^3.0.0" 2916 | } 2917 | }, 2918 | "tar": { 2919 | "version": "6.1.11", 2920 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", 2921 | "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", 2922 | "requires": { 2923 | "chownr": "^2.0.0", 2924 | "fs-minipass": "^2.0.0", 2925 | "minipass": "^3.0.0", 2926 | "minizlib": "^2.1.1", 2927 | "mkdirp": "^1.0.3", 2928 | "yallist": "^4.0.0" 2929 | } 2930 | }, 2931 | "toidentifier": { 2932 | "version": "1.0.1", 2933 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 2934 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 2935 | }, 2936 | "tr46": { 2937 | "version": "3.0.0", 2938 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", 2939 | "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", 2940 | "requires": { 2941 | "punycode": "^2.1.1" 2942 | } 2943 | }, 2944 | "type-is": { 2945 | "version": "1.6.18", 2946 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2947 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2948 | "requires": { 2949 | "media-typer": "0.3.0", 2950 | "mime-types": "~2.1.24" 2951 | } 2952 | }, 2953 | "uid-safe": { 2954 | "version": "2.1.5", 2955 | "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", 2956 | "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", 2957 | "requires": { 2958 | "random-bytes": "~1.0.0" 2959 | } 2960 | }, 2961 | "uid2": { 2962 | "version": "0.0.4", 2963 | "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", 2964 | "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" 2965 | }, 2966 | "underscore": { 2967 | "version": "1.13.2", 2968 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", 2969 | "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==" 2970 | }, 2971 | "unpipe": { 2972 | "version": "1.0.0", 2973 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2974 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 2975 | }, 2976 | "util-deprecate": { 2977 | "version": "1.0.2", 2978 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2979 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 2980 | }, 2981 | "utils-merge": { 2982 | "version": "1.0.1", 2983 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2984 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 2985 | }, 2986 | "vary": { 2987 | "version": "1.1.2", 2988 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2989 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 2990 | }, 2991 | "webidl-conversions": { 2992 | "version": "7.0.0", 2993 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", 2994 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" 2995 | }, 2996 | "whatwg-url": { 2997 | "version": "11.0.0", 2998 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", 2999 | "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", 3000 | "requires": { 3001 | "tr46": "^3.0.0", 3002 | "webidl-conversions": "^7.0.0" 3003 | } 3004 | }, 3005 | "wide-align": { 3006 | "version": "1.1.5", 3007 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 3008 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 3009 | "requires": { 3010 | "string-width": "^1.0.2 || 2 || 3 || 4" 3011 | } 3012 | }, 3013 | "wrappy": { 3014 | "version": "1.0.2", 3015 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3016 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 3017 | }, 3018 | "yallist": { 3019 | "version": "4.0.0", 3020 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3021 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 3022 | } 3023 | } 3024 | } 3025 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "secrets", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "app.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "bcrypt": "^5.0.1", 13 | "body-parser": "^1.19.1", 14 | "dotenv": "^14.3.0", 15 | "ejs": "^3.1.6", 16 | "express": "^4.17.2", 17 | "express-session": "^1.17.2", 18 | "md5": "^2.3.0", 19 | "mongoose": "^6.1.8", 20 | "mongoose-encryption": "^2.1.2", 21 | "mongoose-findorcreate": "^3.0.0", 22 | "passport": "^0.5.2", 23 | "passport-google-oauth20": "^2.0.0", 24 | "passport-local": "^1.0.0", 25 | "passport-local-mongoose": "^6.1.0" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /public/css/master.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Social Buttons for Bootstrap 3 | * 4 | * Copyright 2013-2016 Panayiotis Lipiridis 5 | * Licensed under the MIT License 6 | * 7 | * https://github.com/lipis/bootstrap-social 8 | */ 9 | 10 | .btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} 11 | .btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em} 12 | .btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em} 13 | .btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em} 14 | .btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} 15 | .btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em} 16 | .btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em} 17 | .btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em} 18 | .btn-social-icon>:first-child{border:none;text-align:center;width:100% !important} 19 | .btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0} 20 | .btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0} 21 | .btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0} 22 | .btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} 23 | .btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} 24 | .btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:active:hover,.btn-adn.active:hover,.open>.dropdown-toggle.btn-adn:hover,.btn-adn:active:focus,.btn-adn.active:focus,.open>.dropdown-toggle.btn-adn:focus,.btn-adn:active.focus,.btn-adn.active.focus,.open>.dropdown-toggle.btn-adn.focus{color:#fff;background-color:#b94630;border-color:rgba(0,0,0,0.2)} 25 | .btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none} 26 | .btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled.focus,.btn-adn[disabled].focus,fieldset[disabled] .btn-adn.focus{background-color:#d87a68;border-color:rgba(0,0,0,0.2)} 27 | .btn-adn .badge{color:#d87a68;background-color:#fff} 28 | .btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} 29 | .btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} 30 | .btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active:hover,.btn-bitbucket.active:hover,.open>.dropdown-toggle.btn-bitbucket:hover,.btn-bitbucket:active:focus,.btn-bitbucket.active:focus,.open>.dropdown-toggle.btn-bitbucket:focus,.btn-bitbucket:active.focus,.btn-bitbucket.active.focus,.open>.dropdown-toggle.btn-bitbucket.focus{color:#fff;background-color:#0f253c;border-color:rgba(0,0,0,0.2)} 31 | .btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none} 32 | .btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus{background-color:#205081;border-color:rgba(0,0,0,0.2)} 33 | .btn-bitbucket .badge{color:#205081;background-color:#fff} 34 | .btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} 35 | .btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} 36 | .btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active:hover,.btn-dropbox.active:hover,.open>.dropdown-toggle.btn-dropbox:hover,.btn-dropbox:active:focus,.btn-dropbox.active:focus,.open>.dropdown-toggle.btn-dropbox:focus,.btn-dropbox:active.focus,.btn-dropbox.active.focus,.open>.dropdown-toggle.btn-dropbox.focus{color:#fff;background-color:#0a568c;border-color:rgba(0,0,0,0.2)} 37 | .btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none} 38 | .btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus{background-color:#1087dd;border-color:rgba(0,0,0,0.2)} 39 | .btn-dropbox .badge{color:#1087dd;background-color:#fff} 40 | .btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} 41 | .btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} 42 | .btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:active:hover,.btn-facebook.active:hover,.open>.dropdown-toggle.btn-facebook:hover,.btn-facebook:active:focus,.btn-facebook.active:focus,.open>.dropdown-toggle.btn-facebook:focus,.btn-facebook:active.focus,.btn-facebook.active.focus,.open>.dropdown-toggle.btn-facebook.focus{color:#fff;background-color:#23345a;border-color:rgba(0,0,0,0.2)} 43 | .btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none} 44 | .btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus{background-color:#3b5998;border-color:rgba(0,0,0,0.2)} 45 | .btn-facebook .badge{color:#3b5998;background-color:#fff} 46 | .btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} 47 | .btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} 48 | .btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:active:hover,.btn-flickr.active:hover,.open>.dropdown-toggle.btn-flickr:hover,.btn-flickr:active:focus,.btn-flickr.active:focus,.open>.dropdown-toggle.btn-flickr:focus,.btn-flickr:active.focus,.btn-flickr.active.focus,.open>.dropdown-toggle.btn-flickr.focus{color:#fff;background-color:#a80057;border-color:rgba(0,0,0,0.2)} 49 | .btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none} 50 | .btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus{background-color:#ff0084;border-color:rgba(0,0,0,0.2)} 51 | .btn-flickr .badge{color:#ff0084;background-color:#fff} 52 | .btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} 53 | .btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} 54 | .btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active:hover,.btn-foursquare.active:hover,.open>.dropdown-toggle.btn-foursquare:hover,.btn-foursquare:active:focus,.btn-foursquare.active:focus,.open>.dropdown-toggle.btn-foursquare:focus,.btn-foursquare:active.focus,.btn-foursquare.active.focus,.open>.dropdown-toggle.btn-foursquare.focus{color:#fff;background-color:#e30742;border-color:rgba(0,0,0,0.2)} 55 | .btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none} 56 | .btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus{background-color:#f94877;border-color:rgba(0,0,0,0.2)} 57 | .btn-foursquare .badge{color:#f94877;background-color:#fff} 58 | .btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} 59 | .btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} 60 | .btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:active:hover,.btn-github.active:hover,.open>.dropdown-toggle.btn-github:hover,.btn-github:active:focus,.btn-github.active:focus,.open>.dropdown-toggle.btn-github:focus,.btn-github:active.focus,.btn-github.active.focus,.open>.dropdown-toggle.btn-github.focus{color:#fff;background-color:#191919;border-color:rgba(0,0,0,0.2)} 61 | .btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none} 62 | .btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus{background-color:#444;border-color:rgba(0,0,0,0.2)} 63 | .btn-github .badge{color:#444;background-color:#fff} 64 | .btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} 65 | .btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} 66 | .btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:active:hover,.btn-google.active:hover,.open>.dropdown-toggle.btn-google:hover,.btn-google:active:focus,.btn-google.active:focus,.open>.dropdown-toggle.btn-google:focus,.btn-google:active.focus,.btn-google.active.focus,.open>.dropdown-toggle.btn-google.focus{color:#fff;background-color:#a32b1c;border-color:rgba(0,0,0,0.2)} 67 | .btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{background-image:none} 68 | .btn-google.disabled:hover,.btn-google[disabled]:hover,fieldset[disabled] .btn-google:hover,.btn-google.disabled:focus,.btn-google[disabled]:focus,fieldset[disabled] .btn-google:focus,.btn-google.disabled.focus,.btn-google[disabled].focus,fieldset[disabled] .btn-google.focus{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)} 69 | .btn-google .badge{color:#dd4b39;background-color:#fff} 70 | .btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} 71 | .btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} 72 | .btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:active:hover,.btn-instagram.active:hover,.open>.dropdown-toggle.btn-instagram:hover,.btn-instagram:active:focus,.btn-instagram.active:focus,.open>.dropdown-toggle.btn-instagram:focus,.btn-instagram:active.focus,.btn-instagram.active.focus,.open>.dropdown-toggle.btn-instagram.focus{color:#fff;background-color:#26455d;border-color:rgba(0,0,0,0.2)} 73 | .btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none} 74 | .btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus{background-color:#3f729b;border-color:rgba(0,0,0,0.2)} 75 | .btn-instagram .badge{color:#3f729b;background-color:#fff} 76 | .btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} 77 | .btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} 78 | .btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active:hover,.btn-linkedin.active:hover,.open>.dropdown-toggle.btn-linkedin:hover,.btn-linkedin:active:focus,.btn-linkedin.active:focus,.open>.dropdown-toggle.btn-linkedin:focus,.btn-linkedin:active.focus,.btn-linkedin.active.focus,.open>.dropdown-toggle.btn-linkedin.focus{color:#fff;background-color:#00405f;border-color:rgba(0,0,0,0.2)} 79 | .btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none} 80 | .btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus{background-color:#007bb6;border-color:rgba(0,0,0,0.2)} 81 | .btn-linkedin .badge{color:#007bb6;background-color:#fff} 82 | .btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} 83 | .btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} 84 | .btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active:hover,.btn-microsoft.active:hover,.open>.dropdown-toggle.btn-microsoft:hover,.btn-microsoft:active:focus,.btn-microsoft.active:focus,.open>.dropdown-toggle.btn-microsoft:focus,.btn-microsoft:active.focus,.btn-microsoft.active.focus,.open>.dropdown-toggle.btn-microsoft.focus{color:#fff;background-color:#0f4bac;border-color:rgba(0,0,0,0.2)} 85 | .btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none} 86 | .btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled.focus,.btn-microsoft[disabled].focus,fieldset[disabled] .btn-microsoft.focus{background-color:#2672ec;border-color:rgba(0,0,0,0.2)} 87 | .btn-microsoft .badge{color:#2672ec;background-color:#fff} 88 | .btn-odnoklassniki{color:#fff;background-color:#f4731c;border-color:rgba(0,0,0,0.2)}.btn-odnoklassniki:focus,.btn-odnoklassniki.focus{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)} 89 | .btn-odnoklassniki:hover{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)} 90 | .btn-odnoklassniki:active,.btn-odnoklassniki.active,.open>.dropdown-toggle.btn-odnoklassniki{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)}.btn-odnoklassniki:active:hover,.btn-odnoklassniki.active:hover,.open>.dropdown-toggle.btn-odnoklassniki:hover,.btn-odnoklassniki:active:focus,.btn-odnoklassniki.active:focus,.open>.dropdown-toggle.btn-odnoklassniki:focus,.btn-odnoklassniki:active.focus,.btn-odnoklassniki.active.focus,.open>.dropdown-toggle.btn-odnoklassniki.focus{color:#fff;background-color:#b14c09;border-color:rgba(0,0,0,0.2)} 91 | .btn-odnoklassniki:active,.btn-odnoklassniki.active,.open>.dropdown-toggle.btn-odnoklassniki{background-image:none} 92 | .btn-odnoklassniki.disabled:hover,.btn-odnoklassniki[disabled]:hover,fieldset[disabled] .btn-odnoklassniki:hover,.btn-odnoklassniki.disabled:focus,.btn-odnoklassniki[disabled]:focus,fieldset[disabled] .btn-odnoklassniki:focus,.btn-odnoklassniki.disabled.focus,.btn-odnoklassniki[disabled].focus,fieldset[disabled] .btn-odnoklassniki.focus{background-color:#f4731c;border-color:rgba(0,0,0,0.2)} 93 | .btn-odnoklassniki .badge{color:#f4731c;background-color:#fff} 94 | .btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} 95 | .btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} 96 | .btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:active:hover,.btn-openid.active:hover,.open>.dropdown-toggle.btn-openid:hover,.btn-openid:active:focus,.btn-openid.active:focus,.open>.dropdown-toggle.btn-openid:focus,.btn-openid:active.focus,.btn-openid.active.focus,.open>.dropdown-toggle.btn-openid.focus{color:#fff;background-color:#b86607;border-color:rgba(0,0,0,0.2)} 97 | .btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none} 98 | .btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled.focus,.btn-openid[disabled].focus,fieldset[disabled] .btn-openid.focus{background-color:#f7931e;border-color:rgba(0,0,0,0.2)} 99 | .btn-openid .badge{color:#f7931e;background-color:#fff} 100 | .btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} 101 | .btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} 102 | .btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active:hover,.btn-pinterest.active:hover,.open>.dropdown-toggle.btn-pinterest:hover,.btn-pinterest:active:focus,.btn-pinterest.active:focus,.open>.dropdown-toggle.btn-pinterest:focus,.btn-pinterest:active.focus,.btn-pinterest.active.focus,.open>.dropdown-toggle.btn-pinterest.focus{color:#fff;background-color:#801419;border-color:rgba(0,0,0,0.2)} 103 | .btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none} 104 | .btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled.focus,.btn-pinterest[disabled].focus,fieldset[disabled] .btn-pinterest.focus{background-color:#cb2027;border-color:rgba(0,0,0,0.2)} 105 | .btn-pinterest .badge{color:#cb2027;background-color:#fff} 106 | .btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} 107 | .btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} 108 | .btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active:hover,.btn-reddit.active:hover,.open>.dropdown-toggle.btn-reddit:hover,.btn-reddit:active:focus,.btn-reddit.active:focus,.open>.dropdown-toggle.btn-reddit:focus,.btn-reddit:active.focus,.btn-reddit.active.focus,.open>.dropdown-toggle.btn-reddit.focus{color:#000;background-color:#98ccff;border-color:rgba(0,0,0,0.2)} 109 | .btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none} 110 | .btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled.focus,.btn-reddit[disabled].focus,fieldset[disabled] .btn-reddit.focus{background-color:#eff7ff;border-color:rgba(0,0,0,0.2)} 111 | .btn-reddit .badge{color:#eff7ff;background-color:#000} 112 | .btn-soundcloud{color:#fff;background-color:#f50;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} 113 | .btn-soundcloud:hover{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} 114 | .btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active:hover,.btn-soundcloud.active:hover,.open>.dropdown-toggle.btn-soundcloud:hover,.btn-soundcloud:active:focus,.btn-soundcloud.active:focus,.open>.dropdown-toggle.btn-soundcloud:focus,.btn-soundcloud:active.focus,.btn-soundcloud.active.focus,.open>.dropdown-toggle.btn-soundcloud.focus{color:#fff;background-color:#a83800;border-color:rgba(0,0,0,0.2)} 115 | .btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none} 116 | .btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled.focus,.btn-soundcloud[disabled].focus,fieldset[disabled] .btn-soundcloud.focus{background-color:#f50;border-color:rgba(0,0,0,0.2)} 117 | .btn-soundcloud .badge{color:#f50;background-color:#fff} 118 | .btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} 119 | .btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} 120 | .btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active:hover,.btn-tumblr.active:hover,.open>.dropdown-toggle.btn-tumblr:hover,.btn-tumblr:active:focus,.btn-tumblr.active:focus,.open>.dropdown-toggle.btn-tumblr:focus,.btn-tumblr:active.focus,.btn-tumblr.active.focus,.open>.dropdown-toggle.btn-tumblr.focus{color:#fff;background-color:#111c26;border-color:rgba(0,0,0,0.2)} 121 | .btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none} 122 | .btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus{background-color:#2c4762;border-color:rgba(0,0,0,0.2)} 123 | .btn-tumblr .badge{color:#2c4762;background-color:#fff} 124 | .btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} 125 | .btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} 126 | .btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:active:hover,.btn-twitter.active:hover,.open>.dropdown-toggle.btn-twitter:hover,.btn-twitter:active:focus,.btn-twitter.active:focus,.open>.dropdown-toggle.btn-twitter:focus,.btn-twitter:active.focus,.btn-twitter.active.focus,.open>.dropdown-toggle.btn-twitter.focus{color:#fff;background-color:#1583d7;border-color:rgba(0,0,0,0.2)} 127 | .btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none} 128 | .btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus{background-color:#55acee;border-color:rgba(0,0,0,0.2)} 129 | .btn-twitter .badge{color:#55acee;background-color:#fff} 130 | .btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} 131 | .btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} 132 | .btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active:hover,.btn-vimeo.active:hover,.open>.dropdown-toggle.btn-vimeo:hover,.btn-vimeo:active:focus,.btn-vimeo.active:focus,.open>.dropdown-toggle.btn-vimeo:focus,.btn-vimeo:active.focus,.btn-vimeo.active.focus,.open>.dropdown-toggle.btn-vimeo.focus{color:#fff;background-color:#0f7b9f;border-color:rgba(0,0,0,0.2)} 133 | .btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none} 134 | .btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled.focus,.btn-vimeo[disabled].focus,fieldset[disabled] .btn-vimeo.focus{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)} 135 | .btn-vimeo .badge{color:#1ab7ea;background-color:#fff} 136 | .btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} 137 | .btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} 138 | .btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:active:hover,.btn-vk.active:hover,.open>.dropdown-toggle.btn-vk:hover,.btn-vk:active:focus,.btn-vk.active:focus,.open>.dropdown-toggle.btn-vk:focus,.btn-vk:active.focus,.btn-vk.active.focus,.open>.dropdown-toggle.btn-vk.focus{color:#fff;background-color:#3a526b;border-color:rgba(0,0,0,0.2)} 139 | .btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none} 140 | .btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus{background-color:#587ea3;border-color:rgba(0,0,0,0.2)} 141 | .btn-vk .badge{color:#587ea3;background-color:#fff} 142 | .btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} 143 | .btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} 144 | .btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active:hover,.btn-yahoo.active:hover,.open>.dropdown-toggle.btn-yahoo:hover,.btn-yahoo:active:focus,.btn-yahoo.active:focus,.open>.dropdown-toggle.btn-yahoo:focus,.btn-yahoo:active.focus,.btn-yahoo.active.focus,.open>.dropdown-toggle.btn-yahoo.focus{color:#fff;background-color:#39074e;border-color:rgba(0,0,0,0.2)} 145 | .btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none} 146 | .btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled.focus,.btn-yahoo[disabled].focus,fieldset[disabled] .btn-yahoo.focus{background-color:#720e9e;border-color:rgba(0,0,0,0.2)} 147 | .btn-yahoo .badge{color:#720e9e;background-color:#fff} 148 | -------------------------------------------------------------------------------- /public/css/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: rgb(242, 232, 15); 3 | background: linear-gradient(90deg, rgba(242, 232, 15, 1) 0%, rgba(21, 8, 244, 1) 0%, rgba(209, 36, 208, 1) 100%); 4 | } 5 | 6 | .centered { 7 | padding-top: 200px; 8 | text-align: center; 9 | } 10 | 11 | .secret-text { 12 | text-align: center; 13 | font-size: 2rem; 14 | color: #fff; 15 | background-color: #000; 16 | } -------------------------------------------------------------------------------- /secrets overview.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shreyamalogi/Full-Stack-Authentication-App/1546dbffdef2d00fa1db18b09ea6c1a168e2a83a/secrets overview.pdf -------------------------------------------------------------------------------- /views/home.ejs: -------------------------------------------------------------------------------- 1 | <%- include('partials/header') %> 2 | 3 | 4 |
5 |
6 | 7 |

Secrets

8 |

Don't keep your secrets, share them anonymously!

9 |
10 | Register 11 | Login 12 | 13 |
14 |
15 | 16 | <%- include('partials/footer') %> 17 | -------------------------------------------------------------------------------- /views/login.ejs: -------------------------------------------------------------------------------- 1 | <%- include('partials/header') %> 2 | 3 |
4 |

Login

5 | 6 |
7 |
8 |
9 |
10 | 11 | 12 |
13 |
14 | 15 | 16 |
17 |
18 | 19 | 20 |
21 | 22 |
23 | 24 |
25 |
26 |
27 | 28 |
29 | 36 |
37 | 38 |
39 |
40 | 41 | <%- include('partials/footer') %> -------------------------------------------------------------------------------- /views/partials/footer.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /views/partials/header.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Secrets 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /views/register.ejs: -------------------------------------------------------------------------------- 1 | <%- include('partials/header') %> 2 |
3 |

Register

4 | 5 |
6 |
7 |
8 |
9 | 10 | 11 |
12 |
13 | 14 | 15 |
16 |
17 | 18 | 19 |
20 | 21 |
22 | 23 |
24 |
25 |
26 | 27 |
28 | 35 |
36 | 37 |
38 |
39 | 40 | <%- include('partials/header') %> -------------------------------------------------------------------------------- /views/secrets.ejs: -------------------------------------------------------------------------------- 1 | <%- include('partials/header') %> 2 | 3 |
4 |
5 | 6 |

You've Discovered My Secret!

7 | 8 | 9 | 10 | <% usersWithSecrets.forEach(function(user){ %> 11 |

12 | <%=user.secret %> 13 |

14 | <% }) %> 15 | 16 | 17 |
18 | Log Out 19 | Submit a Secret 20 |
21 |
22 | 23 | <%- include('partials/footer') %> -------------------------------------------------------------------------------- /views/submit.ejs: -------------------------------------------------------------------------------- 1 | <%- include('partials/header') %> 2 | 3 |
4 |
5 | 6 |

Secrets

7 |

Don't keep your secrets, share them anonymously!

8 | 9 |
10 | 11 |
12 | 13 |
14 | 15 |
16 | 17 | 18 |
19 |
20 | <%- include('partials/footer') %> 21 | --------------------------------------------------------------------------------