From 598cba514a708680355dc221ddd9042a2ecfaa41 Mon Sep 17 00:00:00 2001 From: Madeline Hassett Date: Tue, 1 Jun 2021 12:44:30 -0400 Subject: [PATCH] initial commit --- .gitignore | 3 + .vscode/settings.json | 4 + Procfile | 1 + README.md | 21 + config/database.js | 19 + config/passport.js | 41 + controllers/auth.js | 116 ++ controllers/home.js | 5 + controllers/posts.js | 76 ++ controllers/team.js | 5 + middleware/auth.js | 16 + middleware/cloudinary.js | 11 + middleware/multer.js | 14 + models/Post.js | 34 + models/User.js | 42 + package-lock.json | 2220 +++++++++++++++++++++++++++++++++ package.json | 32 + public/css/style.css | 56 + public/imgs/favicon-32x32.png | Bin 0 -> 877 bytes public/imgs/favicon.ico | Bin 0 -> 15406 bytes public/imgs/pet-banner.png | Bin 0 -> 54457 bytes public/imgs/pet-cover.png | Bin 0 -> 26453 bytes routes/main.js | 20 + routes/posts.js | 16 + server.js | 63 + views/feed.ejs | 15 + views/index.ejs | 11 + views/login.ejs | 39 + views/partials/banner.ejs | 38 + views/partials/footer.ejs | 18 + views/partials/header.ejs | 34 + views/post.ejs | 37 + views/profile.ejs | 46 + views/signup.ejs | 39 + views/team.ejs | 14 + 35 files changed, 3106 insertions(+) create mode 100755 .gitignore create mode 100755 .vscode/settings.json create mode 100755 Procfile create mode 100755 README.md create mode 100755 config/database.js create mode 100755 config/passport.js create mode 100755 controllers/auth.js create mode 100755 controllers/home.js create mode 100755 controllers/posts.js create mode 100755 controllers/team.js create mode 100755 middleware/auth.js create mode 100755 middleware/cloudinary.js create mode 100755 middleware/multer.js create mode 100755 models/Post.js create mode 100755 models/User.js create mode 100755 package-lock.json create mode 100755 package.json create mode 100755 public/css/style.css create mode 100755 public/imgs/favicon-32x32.png create mode 100755 public/imgs/favicon.ico create mode 100755 public/imgs/pet-banner.png create mode 100755 public/imgs/pet-cover.png create mode 100755 routes/main.js create mode 100755 routes/posts.js create mode 100755 server.js create mode 100755 views/feed.ejs create mode 100755 views/index.ejs create mode 100755 views/login.ejs create mode 100755 views/partials/banner.ejs create mode 100755 views/partials/footer.ejs create mode 100755 views/partials/header.ejs create mode 100755 views/post.ejs create mode 100755 views/profile.ejs create mode 100755 views/signup.ejs create mode 100755 views/team.ejs diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..ca0aa12 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules +*.env +*.DS_Store diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100755 index 0000000..bc784dd --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.fontSize": 24, + "terminal.integrated.fontSize": 20 +} \ No newline at end of file diff --git a/Procfile b/Procfile new file mode 100755 index 0000000..489b270 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: node server.js diff --git a/README.md b/README.md new file mode 100755 index 0000000..a4494a2 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# Install + +`npm install` + +--- + +# Things to add + +- Create a .env file and add the following as key = value +- PORT = 2121 (can be any port example: 3000) +- DB_STRING = your database URI +- CLOUD_NAME = your cloudinary cloud name +- API_KEY = your cloudinary api key +- API_SECRET = your cloudinary api secret +- logo +- adapt pages +--- + +# Run + +`npm start` diff --git a/config/database.js b/config/database.js new file mode 100755 index 0000000..24102b6 --- /dev/null +++ b/config/database.js @@ -0,0 +1,19 @@ +const mongoose = require("mongoose"); + +const connectDB = async () => { + try { + const conn = await mongoose.connect(process.env.DB_STRING, { + useNewUrlParser: true, + useUnifiedTopology: true, + useFindAndModify: false, + useCreateIndex: true, + }); + + console.log(`MongoDB Connected: ${conn.connection.host}`); + } catch (err) { + console.error(err); + process.exit(1); + } +}; + +module.exports = connectDB; diff --git a/config/passport.js b/config/passport.js new file mode 100755 index 0000000..6c058d1 --- /dev/null +++ b/config/passport.js @@ -0,0 +1,41 @@ +const LocalStrategy = require("passport-local").Strategy; +const mongoose = require("mongoose"); +const User = require("../models/User"); + +module.exports = function (passport) { + passport.use( + new LocalStrategy({ usernameField: "email" }, (email, password, done) => { + User.findOne({ email: email.toLowerCase() }, (err, user) => { + if (err) { + return done(err); + } + if (!user) { + return done(null, false, { msg: `Email ${email} not found.` }); + } + if (!user.password) { + return done(null, false, { + msg: + "Your account was registered using a sign-in provider. To enable password login, sign in using a provider, and then set a password under your user profile.", + }); + } + user.comparePassword(password, (err, isMatch) => { + if (err) { + return done(err); + } + if (isMatch) { + return done(null, user); + } + return done(null, false, { msg: "Invalid email or password." }); + }); + }); + }) + ); + + passport.serializeUser((user, done) => { + done(null, user.id); + }); + + passport.deserializeUser((id, done) => { + User.findById(id, (err, user) => done(err, user)); + }); +}; diff --git a/controllers/auth.js b/controllers/auth.js new file mode 100755 index 0000000..e070b1a --- /dev/null +++ b/controllers/auth.js @@ -0,0 +1,116 @@ +const passport = require("passport"); +const validator = require("validator"); +const User = require("../models/User"); + +exports.getLogin = (req, res) => { + if (req.user) { + return res.redirect("/profile"); + } + res.render("login", { + title: "Login", + }); +}; + +exports.postLogin = (req, res, next) => { + const validationErrors = []; + if (!validator.isEmail(req.body.email)) + validationErrors.push({ msg: "Please enter a valid email address." }); + if (validator.isEmpty(req.body.password)) + validationErrors.push({ msg: "Password cannot be blank." }); + + if (validationErrors.length) { + req.flash("errors", validationErrors); + return res.redirect("/login"); + } + req.body.email = validator.normalizeEmail(req.body.email, { + gmail_remove_dots: false, + }); + + passport.authenticate("local", (err, user, info) => { + if (err) { + return next(err); + } + if (!user) { + req.flash("errors", info); + return res.redirect("/login"); + } + req.logIn(user, (err) => { + if (err) { + return next(err); + } + req.flash("success", { msg: "Success! You are logged in." }); + res.redirect(req.session.returnTo || "/profile"); + }); + })(req, res, next); +}; + +exports.logout = (req, res) => { + req.logout(); + req.session.destroy((err) => { + if (err) + console.log("Error : Failed to destroy the session during logout.", err); + req.user = null; + res.redirect("/"); + }); +}; + +exports.getSignup = (req, res) => { + if (req.user) { + return res.redirect("/profile"); + } + res.render("signup", { + title: "Create Account", + }); +}; + +exports.postSignup = (req, res, next) => { + const validationErrors = []; + if (!validator.isEmail(req.body.email)) + validationErrors.push({ msg: "Please enter a valid email address." }); + if (!validator.isLength(req.body.password, { min: 8 })) + validationErrors.push({ + msg: "Password must be at least 8 characters long", + }); + if (req.body.password !== req.body.confirmPassword) + validationErrors.push({ msg: "Passwords do not match" }); + + if (validationErrors.length) { + req.flash("errors", validationErrors); + return res.redirect("../signup"); + } + req.body.email = validator.normalizeEmail(req.body.email, { + gmail_remove_dots: false, + }); + + const user = new User({ + userName: req.body.userName, + email: req.body.email, + password: req.body.password, + }); + + User.findOne( + { $or: [{ email: req.body.email }, { userName: req.body.userName }] }, + (err, existingUser) => { + if (err) { + return next(err); + } + if (existingUser) { + req.flash("errors", { + msg: "Account with that email address or username already exists.", + }); + return res.redirect("../signup"); + } + user.save((err) => { + if (err) { + return next(err); + } + req.logIn(user, (err) => { + if (err) { + return next(err); + } + res.redirect("/profile"); + }); + }); + } + ); +}; diff --git a/controllers/home.js b/controllers/home.js new file mode 100755 index 0000000..49ba265 --- /dev/null +++ b/controllers/home.js @@ -0,0 +1,5 @@ +module.exports = { + getIndex: (req, res) => { + res.render("index.ejs"); + }, +}; diff --git a/controllers/posts.js b/controllers/posts.js new file mode 100755 index 0000000..e34137f --- /dev/null +++ b/controllers/posts.js @@ -0,0 +1,76 @@ +const cloudinary = require("../middleware/cloudinary"); +const Post = require("../models/Post"); + +module.exports = { + getProfile: async (req, res) => { + try { + const posts = await Post.find({ user: req.user.id }); + res.render("profile.ejs", { posts: posts, user: req.user }); + } catch (err) { + console.log(err); + } + }, + getFeed: async (req, res) => { + try { + const posts = await Post.find().sort({ createdAt: "desc" }).lean(); + res.render("feed.ejs", { posts: posts }); + } catch (err) { + console.log(err); + } + }, + getPost: async (req, res) => { + try { + const post = await Post.findById(req.params.id); + res.render("post.ejs", { post: post, user: req.user }); + } catch (err) { + console.log(err); + } + }, + createPost: async (req, res) => { + try { + // Upload image to cloudinary + const result = await cloudinary.uploader.upload(req.file.path); + + await Post.create({ + title: req.body.title, + image: result.secure_url, + cloudinaryId: result.public_id, + caption: req.body.caption, + likes: 0, + user: req.user.id, + }); + console.log("Post has been added!"); + res.redirect("/profile"); + } catch (err) { + console.log(err); + } + }, + likePost: async (req, res) => { + try { + await Post.findOneAndUpdate( + { _id: req.params.id }, //_id: req.params.zebra, how we find our matching ID + { + $inc: { likes: 1 }, + } + ); + console.log("Likes +1"); + res.redirect(`/post/${req.params.id}`); + } catch (err) { + console.log(err); + } + }, + deletePost: async (req, res) => { + try { + // Find post by id + let post = await Post.findById({ _id: req.params.id }); + // Delete image from cloudinary + await cloudinary.uploader.destroy(post.cloudinaryId); + // Delete post from db + await Post.remove({ _id: req.params.id }); + console.log("Deleted Post"); + res.redirect("/profile"); + } catch (err) { + res.redirect("/profile"); + } + }, +}; diff --git a/controllers/team.js b/controllers/team.js new file mode 100755 index 0000000..d6503f8 --- /dev/null +++ b/controllers/team.js @@ -0,0 +1,5 @@ +module.exports = { + getTeam: (req, res) => { + res.render("team.ejs"); + }, + }; \ No newline at end of file diff --git a/middleware/auth.js b/middleware/auth.js new file mode 100755 index 0000000..f646630 --- /dev/null +++ b/middleware/auth.js @@ -0,0 +1,16 @@ +module.exports = { + ensureAuth: function (req, res, next) { + if (req.isAuthenticated()) { + return next(); + } else { + res.redirect("/"); + } + }, + ensureGuest: function (req, res, next) { + if (!req.isAuthenticated()) { + return next(); + } else { + res.redirect("/dashboard"); + } + }, +}; diff --git a/middleware/cloudinary.js b/middleware/cloudinary.js new file mode 100755 index 0000000..0960c5b --- /dev/null +++ b/middleware/cloudinary.js @@ -0,0 +1,11 @@ +const cloudinary = require("cloudinary").v2; + +require("dotenv").config({ path: "./config/.env" }); + +cloudinary.config({ + cloud_name: process.env.CLOUD_NAME, + api_key: process.env.API_KEY, + api_secret: process.env.API_SECRET, +}); + +module.exports = cloudinary; diff --git a/middleware/multer.js b/middleware/multer.js new file mode 100755 index 0000000..c012afe --- /dev/null +++ b/middleware/multer.js @@ -0,0 +1,14 @@ +const multer = require("multer"); +const path = require("path"); + +module.exports = multer({ + storage: multer.diskStorage({}), + fileFilter: (req, file, cb) => { + let ext = path.extname(file.originalname); + if (ext !== ".jpg" && ext !== ".jpeg" && ext !== ".png") { + cb(new Error("File type is not supported"), false); + return; + } + cb(null, true); + }, +}); diff --git a/models/Post.js b/models/Post.js new file mode 100755 index 0000000..f7d14c9 --- /dev/null +++ b/models/Post.js @@ -0,0 +1,34 @@ +const mongoose = require("mongoose"); + +const PostSchema = new mongoose.Schema({ + title: { + type: String, + required: true, + }, + image: { + type: String, + require: true, + }, + cloudinaryId: { + type: String, + require: true, + }, + caption: { + type: String, + required: true, + }, + likes: { + type: Number, + required: true, + }, + user: { + type: mongoose.Schema.Types.ObjectId, + ref: "User", + }, + createdAt: { + type: Date, + default: Date.now, + }, +}); + +module.exports = mongoose.model("Post", PostSchema); diff --git a/models/User.js b/models/User.js new file mode 100755 index 0000000..afe8afc --- /dev/null +++ b/models/User.js @@ -0,0 +1,42 @@ +const bcrypt = require("bcrypt"); +const mongoose = require("mongoose"); + +const UserSchema = new mongoose.Schema({ + userName: { type: String, unique: true }, + email: { type: String, unique: true }, + password: String, +}); + +// Password hash middleware. + +UserSchema.pre("save", function save(next) { + const user = this; + if (!user.isModified("password")) { + return next(); + } + bcrypt.genSalt(10, (err, salt) => { + if (err) { + return next(err); + } + bcrypt.hash(user.password, salt, (err, hash) => { + if (err) { + return next(err); + } + user.password = hash; + next(); + }); + }); +}); + +// Helper method for validating user's password. + +UserSchema.methods.comparePassword = function comparePassword( + candidatePassword, + cb +) { + bcrypt.compare(candidatePassword, this.password, (err, isMatch) => { + cb(err, isMatch); + }); +}; + +module.exports = mongoose.model("User", UserSchema); diff --git a/package-lock.json b/package-lock.json new file mode 100755 index 0000000..8298afa --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2220 @@ +{ + "name": "binary-upload-boom", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@mapbox/node-pre-gyp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.4.tgz", + "integrity": "sha512-M669Qo4nRT7iDmQEjQYC7RU8Z6dpz9UmSbkJ1OFEja3uevCdLKh7IZZki7L1TZj02kRyl82snXFY8QqkyfowrQ==", + "requires": { + "detect-libc": "^1.0.3", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.1", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "rimraf": "^3.0.2", + "semver": "^7.3.4", + "tar": "^6.1.0" + }, + "dependencies": { + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "requires": { + "abbrev": "1" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/bson": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz", + "integrity": "sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw==", + "requires": { + "@types/node": "*" + } + }, + "@types/mongodb": { + "version": "3.6.12", + "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.12.tgz", + "integrity": "sha512-49aEzQD5VdHPxyd5dRyQdqEveAg9LanwrH8RQipnMuulwzKmODXIZRp0umtxi1eBUfEusRkoy8AVOMr+kVuFog==", + "requires": { + "@types/bson": "*", + "@types/node": "*" + } + }, + "@types/node": { + "version": "14.14.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", + "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "bcrypt": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", + "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==", + "requires": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^3.1.0" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "bson": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", + "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "requires": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "cloudinary": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.25.1.tgz", + "integrity": "sha512-8iyMyOrRhRudJabdNc34GU/Vnr/ltDRq8gmkwQ4NpuJ1lD5Qw88DJGBNeODZnGSNXIPTLln708gsADVKe0AQMw==", + "requires": { + "cloudinary-core": "^2.10.2", + "core-js": "3.6.5", + "lodash": "^4.17.11", + "q": "^1.5.1" + } + }, + "cloudinary-core": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/cloudinary-core/-/cloudinary-core-2.11.4.tgz", + "integrity": "sha512-F1BZczD6f5mB73D0c8gl/iuacVQQO+UhckNZxeeS9ZIVeIHbsfqwWiAZMQmIvEb7Wti/9MLU0xVwaWOak2THHA==" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "connect-flash": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", + "integrity": "sha1-2GMPJtlaf4UfmVax6MxnMvO2qjA=" + }, + "connect-mongo": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/connect-mongo/-/connect-mongo-3.2.0.tgz", + "integrity": "sha512-0Mx88079Z20CG909wCFlR3UxhMYGg6Ibn1hkIje1hwsqOLWtL9HJV+XD0DAjUvQScK6WqY/FA8tSVQM9rR64Rw==", + "requires": { + "mongodb": "^3.1.0" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "denque": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", + "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "requires": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "requires": { + "jake": "^10.6.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "express-flash": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/express-flash/-/express-flash-0.0.2.tgz", + "integrity": "sha1-I9GovPP5DXB5KOSJ+Whp7K0KzaI=", + "requires": { + "connect-flash": "0.1.x" + } + }, + "express-session": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.1.tgz", + "integrity": "sha512-UbHwgqjxQZJiWRTMyhvWGvjBQduGCSBDhhZXYenziMFjxst5rMV+aJZ6hKPHZnPyHGsrqRICxtX8jtEbm/z36Q==", + "requires": { + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.0", + "uid-safe": "~2.1.5" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } + } + }, + "filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "requires": { + "ini": "1.3.7" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "requires": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "kareem": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", + "integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==" + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "requires": { + "package-json": "^6.3.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "method-override": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-3.0.0.tgz", + "integrity": "sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA==", + "requires": { + "debug": "3.1.0", + "methods": "~1.1.2", + "parseurl": "~1.3.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" + }, + "mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "requires": { + "mime-db": "1.47.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "mongodb": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.5.tgz", + "integrity": "sha512-mQlYKw1iGbvJJejcPuyTaytq0xxlYbIoVDm2FODR+OHxyEiMR021vc32bTvamgBjCswsD54XIRwhg3yBaWqJjg==", + "requires": { + "bl": "^2.2.1", + "bson": "^1.1.4", + "denque": "^1.4.1", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2", + "saslprep": "^1.0.0" + } + }, + "mongoose": { + "version": "5.12.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.12.3.tgz", + "integrity": "sha512-frsSR9yeldaRpSUeTegXCSB0Tu5UGq8sHuHBuEV31Jk3COyxlKFQPL7UsdMhxPUCmk74FpOYSmNwxhWBEqgzQg==", + "requires": { + "@types/mongodb": "^3.5.27", + "bson": "^1.1.4", + "kareem": "2.3.2", + "mongodb": "3.6.5", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.8.3", + "mquery": "3.2.5", + "ms": "2.1.2", + "regexp-clone": "1.0.0", + "safe-buffer": "5.2.1", + "sift": "7.0.1", + "sliced": "1.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + } + } + }, + "mpath": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.3.tgz", + "integrity": "sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA==" + }, + "mquery": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz", + "integrity": "sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==", + "requires": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "^1.0.0", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multer": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", + "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", + "requires": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.1", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node-addon-api": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", + "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "nodemon": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.7.tgz", + "integrity": "sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==", + "requires": { + "chokidar": "^3.2.2", + "debug": "^3.2.6", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.7", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.3", + "update-notifier": "^4.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "passport": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.4.1.tgz", + "integrity": "sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg==", + "requires": { + "passport-strategy": "1.x.x", + "pause": "0.0.1" + } + }, + "passport-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=", + "requires": { + "passport-strategy": "1.x.x" + } + }, + "passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "requires": { + "escape-goat": "^2.0.0" + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "regexp-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", + "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" + }, + "registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "requires": { + "rc": "^1.2.8" + } + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sift": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", + "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "tar": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "~1.0.10" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "requires": { + "random-bytes": "~1.0.0" + } + }, + "undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "requires": { + "debug": "^2.2.0" + } + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "validator": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", + "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "requires": { + "string-width": "^4.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/package.json b/package.json new file mode 100755 index 0000000..91cd523 --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "binary-upload-boom", + "version": "1.0.0", + "description": "100Devs Social Network", + "main": "server.js", + "scripts": { + "start": "nodemon server.js", + "dev": "nodemon server.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "MIT", + "dependencies": { + "bcrypt": "^5.0.1", + "cloudinary": "^1.25.1", + "connect-mongo": "^3.2.0", + "dotenv": "^8.2.0", + "ejs": "^3.1.6", + "express": "^4.17.1", + "express-flash": "^0.0.2", + "express-session": "^1.17.1", + "method-override": "^3.0.0", + "mongodb": "^3.6.5", + "mongoose": "^5.12.3", + "morgan": "^1.10.0", + "multer": "^1.4.2", + "nodemon": "^2.0.7", + "passport": "^0.4.1", + "passport-local": "^1.0.0", + "validator": "^13.6.0" + } +} diff --git a/public/css/style.css b/public/css/style.css new file mode 100755 index 0000000..8b9a9fe --- /dev/null +++ b/public/css/style.css @@ -0,0 +1,56 @@ +nav a{ + text-decoration: none; +} + +#navbar-color, #team-body{ + background-color: rgb(38, 183, 228) !important; +} + +#nav-button{ + background-color: rgb(247, 193, 46)!important; + color: white !important; + font-weight: 600; +} + +#nav-button:hover{ + background-color: rgb(234, 194, 80) !important; +} + +.btns-color{ + background-color: rgb(38, 183, 228) !important; + color: white !important; + font-weight: 600; +} + +.btns-color:hover{ + background-color: rgb(55, 190, 231) !important; +} + +i{ + color: rgb(233, 224, 224); + margin: 0 5px; + font-size: 20px; +} + +#team span{ + color: white; + font-weight: 500; +} +#team a{ + text-decoration: none; +} + +.caption{ + font-size: 25px; + font-weight: 500; +} + +@media (max-width: 575.98px) { + nav img{ + width: 100%; + } + + .nav-header{ + text-align: center; + } +} \ No newline at end of file diff --git a/public/imgs/favicon-32x32.png b/public/imgs/favicon-32x32.png new file mode 100755 index 0000000000000000000000000000000000000000..4799136925abf58ede3c1ee8ccd51da58661cb44 GIT binary patch literal 877 zcmV-z1CsoSP)$20%?`9JT>TkrYw_WaL%-PbwiI_KQ)EHiAgX83-S5ZDM;;9&fL zC$Ip2jga4_{Px06xDSuupK(F<5!e!ou#TGak4~_8)x!qc&7)Rh{T-qbjBXK&8?eR-?KJD@u zN8lOcf^l{k&cqHqe#c1A2h3$7$HA$L|z8JXHcu;2(j2c2MJbd_>Z2>gb18U@S(dUfR692|(9us;68*Lb(moXCgmAiUDRUlIa|boGWq zB7dR2<wIO9PZNjc&VvfBO4l+=}#k-}W4w`?kjO+t>vk zGzcsX;2n*XnNHZgS~6mqs{LM@G$cN21i2stGDah+D0yIMvy-YtJ4fh*Y`&=sq?8fm za0Y+I+`$if;NDuBKj11nUBcRY!pmB2x70j2r!=%l1)QPu&S*{7MN*eue*mYh;^jFW zk?)L8Dx+&x=PieBi7HWlS+AXG;NbQW@d{Wi0_Wnc>A1NtBIxb9@LB}&m^^P92}IO` z^8OFDMd1Egv(w07`8FI3r~hzU1g^!^6WpH2CK*mYV$-gNY3p!av6<~z)uR?w=e=-S zEt$1y72i+~k1pQHXx@$!i!hEEzZZ|3coXO2{SK`45E9YO@NUUVXisE3Pl-UXGrv~s zl6q7=*Y~d$cE=^v`yb(QqzgK2lKM>`g_U=iaRUDW#K51vD%i4Q00000NkvXXu0mjf Db7rbR literal 0 HcmV?d00001 diff --git a/public/imgs/favicon.ico b/public/imgs/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..de4ec65db35b7c2c883a14a38bc531b3c4ff5736 GIT binary patch literal 15406 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 j{x4FlqeVb>i@q0PS&`H literal 0 HcmV?d00001 diff --git a/routes/main.js b/routes/main.js new file mode 100755 index 0000000..3557f09 --- /dev/null +++ b/routes/main.js @@ -0,0 +1,20 @@ +const express = require("express"); +const router = express.Router(); +const authController = require("../controllers/auth"); +const homeController = require("../controllers/home"); +const teamController = require("../controllers/team"); +const postsController = require("../controllers/posts"); +const { ensureAuth, ensureGuest } = require("../middleware/auth"); + +//Main Routes - simplified for now +router.get("/", homeController.getIndex); +router.get("/team", teamController.getTeam); +router.get("/profile", ensureAuth, postsController.getProfile); +router.get("/feed", ensureAuth, postsController.getFeed); +router.get("/login", authController.getLogin); +router.post("/login", authController.postLogin); +router.get("/logout", authController.logout); +router.get("/signup", authController.getSignup); +router.post("/signup", authController.postSignup); + +module.exports = router; diff --git a/routes/posts.js b/routes/posts.js new file mode 100755 index 0000000..5d0c538 --- /dev/null +++ b/routes/posts.js @@ -0,0 +1,16 @@ +const express = require("express"); +const router = express.Router(); +const upload = require("../middleware/multer"); +const postsController = require("../controllers/posts"); +const { ensureAuth, ensureGuest } = require("../middleware/auth"); + +//Post Routes - simplified for now +router.get("/:id", ensureAuth, postsController.getPost); + +router.post("/createPost", upload.single("file"), postsController.createPost); + +router.put("/likePost/:id", postsController.likePost); //"/likePost/:zebra" + +router.delete("/deletePost/:id", postsController.deletePost); + +module.exports = router; diff --git a/server.js b/server.js new file mode 100755 index 0000000..1718db0 --- /dev/null +++ b/server.js @@ -0,0 +1,63 @@ +const express = require("express"); +const app = express(); +const mongoose = require("mongoose"); +const passport = require("passport"); +const session = require("express-session"); +const MongoStore = require("connect-mongo")(session); +const methodOverride = require("method-override"); +const flash = require("express-flash"); +const logger = require("morgan"); +const connectDB = require("./config/database"); +const mainRoutes = require("./routes/main"); +const postRoutes = require("./routes/posts"); + +//Use .env file in config folder +require("dotenv").config({ path: "./config/.env" }); + +// Passport config +require("./config/passport")(passport); + +//Connect To Database +connectDB(); + +//Using EJS for views +app.set("view engine", "ejs"); + +//Static Folder +app.use(express.static("public")); + +//Body Parsing +app.use(express.urlencoded({ extended: true })); +app.use(express.json()); + +//Logging +app.use(logger("dev")); + +//Use forms for put / delete +app.use(methodOverride("_method")); + +// Setup Sessions - stored in MongoDB +app.use( + session({ + secret: "keyboard cat", + resave: false, + saveUninitialized: false, + store: new MongoStore({ mongooseConnection: mongoose.connection }), + }) +); + +// Passport middleware +app.use(passport.initialize()); +app.use(passport.session()); + +//Use flash messages for errors, info, ect... +app.use(flash()); + +//Setup Routes For Which The Server Is Listening +app.use("/", mainRoutes); +app.use("/post", postRoutes); + +//Server Running +app.listen(process.env.PORT, () => { + console.log("Server is running, you better catch it!"); +}); diff --git a/views/feed.ejs b/views/feed.ejs new file mode 100755 index 0000000..d8d89a5 --- /dev/null +++ b/views/feed.ejs @@ -0,0 +1,15 @@ +<%- include('partials/header') -%> +

+
+
    + <% for(var i=0; i +
  • + + + +
  • + <% } %> +
+
+
+<%- include('partials/footer') -%> \ No newline at end of file diff --git a/views/index.ejs b/views/index.ejs new file mode 100755 index 0000000..6ef507e --- /dev/null +++ b/views/index.ejs @@ -0,0 +1,11 @@ +<%- include('partials/banner') -%> + +
+ +
+ + +<%- include('partials/footer') -%> \ No newline at end of file diff --git a/views/login.ejs b/views/login.ejs new file mode 100755 index 0000000..1725fc0 --- /dev/null +++ b/views/login.ejs @@ -0,0 +1,39 @@ +<%- include('partials/banner') -%> +
+
+
+ <% if (locals.messages.errors) { %> <% messages.errors.forEach( el => { %> +
<%= el.msg %>
+ <% }) %> <% } %> <% if (locals.messages.info) { %> <% + messages.info.forEach( el => { %> +
<%= el.msg %>
+ <% }) %> <% } %> +
+
+ + +
+
+ + +
+ +
+
+
+
+ +<%- include('partials/footer') -%> diff --git a/views/partials/banner.ejs b/views/partials/banner.ejs new file mode 100755 index 0000000..c7540d9 --- /dev/null +++ b/views/partials/banner.ejs @@ -0,0 +1,38 @@ + + + + + + + Best pet rating site around! + + + + + + + + + \ No newline at end of file diff --git a/views/partials/footer.ejs b/views/partials/footer.ejs new file mode 100755 index 0000000..0464ec8 --- /dev/null +++ b/views/partials/footer.ejs @@ -0,0 +1,18 @@ + + + + + + + + Document + + + + + \ No newline at end of file diff --git a/views/partials/header.ejs b/views/partials/header.ejs new file mode 100755 index 0000000..497be25 --- /dev/null +++ b/views/partials/header.ejs @@ -0,0 +1,34 @@ + + + + + + + The Garden Zone + + + + + + + + + diff --git a/views/post.ejs b/views/post.ejs new file mode 100755 index 0000000..b597156 --- /dev/null +++ b/views/post.ejs @@ -0,0 +1,37 @@ +<%- include('partials/header') -%> +
+
+
+

<%= post.title %>

+ +
+
+ +
+

Likes: <%= post.likes %>

+ <%if(post.user == user.id){ %> +
+ +
+ <%}%> +
+
+
+

<%= post.caption %>

+
+ +
+
+ +<%- include('partials/footer') -%> diff --git a/views/profile.ejs b/views/profile.ejs new file mode 100755 index 0000000..ff29728 --- /dev/null +++ b/views/profile.ejs @@ -0,0 +1,46 @@ +<%- include('partials/header') -%> +
+
+
+
+

User Name: <%= user.userName %>

+

Email: <%= user.email %>

+
+
+

Add your pet

+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+
+
    + <% for(var i=0; i +
  • + + + +
  • + <% } %> +
+ +
+
+
+ + +<%- include('partials/footer') -%> \ No newline at end of file diff --git a/views/signup.ejs b/views/signup.ejs new file mode 100755 index 0000000..8cdd99f --- /dev/null +++ b/views/signup.ejs @@ -0,0 +1,39 @@ +<%- include('partials/banner') -%> +
+
+
+ <% if (locals.messages.errors) { %> + <% messages.errors.forEach( el => { %> +
<%= el.msg %>
+ <% }) %> + <% } %> + <% if (locals.messages.info) { %> + <% messages.info.forEach( el => { %> +
<%= el.msg %>
+ <% }) %> + <% } %> +
+
+ + +
+
+ + +
We'll never share your email with anyone else.
+
+
+ + +
+
+ + +
+ +
+
+
+
+ +<%- include('partials/footer') -%> \ No newline at end of file diff --git a/views/team.ejs b/views/team.ejs new file mode 100755 index 0000000..045074c --- /dev/null +++ b/views/team.ejs @@ -0,0 +1,14 @@ +<%- include('partials/banner') -%> + +
+ +
+ + + + +<%- include('partials/footer') -%> \ No newline at end of file