10 changed files with 953 additions and 631 deletions
			
			
		| @ -1 +1,2 @@ | |||||
| node_modules | node_modules | ||||
|  | .env | ||||
| @ -0,0 +1,17 @@ | |||||
|  | { | ||||
|  | 	// Use IntelliSense to learn about possible attributes. | ||||
|  | 	// Hover to view descriptions of existing attributes. | ||||
|  | 	// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | ||||
|  | 	"version": "0.2.0", | ||||
|  | 	"configurations": [ | ||||
|  | 		{ | ||||
|  | 			"type": "node", | ||||
|  | 			"request": "launch", | ||||
|  | 			"name": "Launch Program", | ||||
|  | 			"skipFiles": [ | ||||
|  | 				"<node_internals>/**" | ||||
|  | 			], | ||||
|  | 			"program": "${workspaceFolder}/index.js" | ||||
|  | 		} | ||||
|  | 	] | ||||
|  | } | ||||
| @ -0,0 +1,244 @@ | |||||
|  | require("dotenv").config(); | ||||
|  | 
 | ||||
|  | const app = require("express")(); | ||||
|  | const bodyParser = require("body-parser"); | ||||
|  | const bcrypt = require("bcryptjs"); | ||||
|  | const uuid = require("uuid").v4; | ||||
|  | const axios = require("axios"); | ||||
|  | const mongoose = require("mongoose"); | ||||
|  | const cors = require("cors"); | ||||
|  | 
 | ||||
|  | mongoose.connect(process.env.MONGO_URI, { | ||||
|  | 	useNewUrlParser: true, | ||||
|  | 	useUnifiedTopology: true, | ||||
|  | 	useCreateIndex: true, | ||||
|  | }); | ||||
|  | 
 | ||||
|  | const User = require("./models/User"); | ||||
|  | const Movie = require("./models/Movie"); | ||||
|  | const Userdata = require("./models/Userdata"); | ||||
|  | 
 | ||||
|  | const { WATCH_STATUS, RATINGS } = require("./util/consts"); | ||||
|  | 
 | ||||
|  | const tmdb = axios.create({ | ||||
|  | 	baseURL: "https://api.themoviedb.org/3/", | ||||
|  | 	timeout: 1000, | ||||
|  | 	params: { | ||||
|  | 		api_key: process.env.TMDB_KEY, | ||||
|  | 	}, | ||||
|  | }); | ||||
|  | 
 | ||||
|  | (async function main() { | ||||
|  | 	const posterRoot = await tmdb | ||||
|  | 		.get("/configuration", { | ||||
|  | 			params: { | ||||
|  | 				api_key: process.env.TMDB_KEY, | ||||
|  | 			}, | ||||
|  | 		}) | ||||
|  | 		.then(res => res.data) | ||||
|  | 		.then(data => data.images.base_url + "w500"); | ||||
|  | 
 | ||||
|  | 	app.use(bodyParser.json()); | ||||
|  | 
 | ||||
|  | 	app.use(cors()); | ||||
|  | 
 | ||||
|  | 	app.use((req, _, next) => { | ||||
|  | 		console.log(req.method, req.url); | ||||
|  | 		req["Container"] = {}; | ||||
|  | 		next(); | ||||
|  | 	}); | ||||
|  | 
 | ||||
|  | 	app.post("/register", async (req, res) => { | ||||
|  | 		if (!req.body.username || !req.body.email || !req.body.password) { | ||||
|  | 			res.statusCode = 400; | ||||
|  | 			res.send({ | ||||
|  | 				success: false, | ||||
|  | 				msg: "Error! All fields were not sent.", | ||||
|  | 			}); | ||||
|  | 		} | ||||
|  | 
 | ||||
|  | 		try { | ||||
|  | 			await User.create({ | ||||
|  | 				email: req.body.email, | ||||
|  | 				username: req.body.username, | ||||
|  | 				password: await bcrypt.hash( | ||||
|  | 					req.body.password, | ||||
|  | 					process.env.SALT, | ||||
|  | 				), | ||||
|  | 			}); | ||||
|  | 
 | ||||
|  | 			res.send({ success: true, msg: "Successfully created user." }); | ||||
|  | 		} catch (e) { | ||||
|  | 			console.log(e); | ||||
|  | 
 | ||||
|  | 			res.statusCode = 500; | ||||
|  | 			res.send({ | ||||
|  | 				success: false, | ||||
|  | 				msg: | ||||
|  | 					"An error occured while creating the user! Username and email should be unique.", | ||||
|  | 			}); | ||||
|  | 		} | ||||
|  | 	}); | ||||
|  | 
 | ||||
|  | 	app.post("/login", async (req, res) => { | ||||
|  | 		if (!req.body.username || !req.body.password) { | ||||
|  | 			res.statusCode = 400; | ||||
|  | 			res.send({ | ||||
|  | 				success: false, | ||||
|  | 				msg: "Error! All fields were not sent.", | ||||
|  | 			}); | ||||
|  | 		} | ||||
|  | 
 | ||||
|  | 		const user = await User.findOne({ username: req.body.username }); | ||||
|  | 		const valid = await bcrypt.compare(req.body.password, user.password); | ||||
|  | 
 | ||||
|  | 		if (valid) { | ||||
|  | 			const token = uuid(); | ||||
|  | 			user.tokens.push(token); | ||||
|  | 			await user.save(); | ||||
|  | 
 | ||||
|  | 			res.send({ success: true, token }); | ||||
|  | 		} | ||||
|  | 	}); | ||||
|  | 
 | ||||
|  | 	const verifyUser = async (req, res, next) => { | ||||
|  | 		if (!req.headers["authentication"]) { | ||||
|  | 			console.log(req.headers); | ||||
|  | 
 | ||||
|  | 			res.statusCode = 401; | ||||
|  | 			return res.send({ | ||||
|  | 				success: false, | ||||
|  | 				msg: "User not logged in. Authentication header was not found.", | ||||
|  | 			}); | ||||
|  | 		} | ||||
|  | 
 | ||||
|  | 		const user = await User.findOne({ | ||||
|  | 			tokens: req.headers["authentication"], | ||||
|  | 		}); | ||||
|  | 
 | ||||
|  | 		if (user) { | ||||
|  | 			req["Container"].user = user; | ||||
|  | 			next(); | ||||
|  | 		} else { | ||||
|  | 			res.statusCode = 401; | ||||
|  | 			res.send({ | ||||
|  | 				success: false, | ||||
|  | 				msg: "Authentication header was not valid.", | ||||
|  | 			}); | ||||
|  | 		} | ||||
|  | 	}; | ||||
|  | 
 | ||||
|  | 	app.get("/search/:query", verifyUser, async (req, res) => { | ||||
|  | 		const results = ( | ||||
|  | 			await tmdb.get(`/search/movie`, { | ||||
|  | 				params: { | ||||
|  | 					query: req.params.query, | ||||
|  | 					api_key: process.env.TMDB_KEY, | ||||
|  | 				}, | ||||
|  | 			}) | ||||
|  | 		).data.results; | ||||
|  | 
 | ||||
|  | 		const movies = results.map( | ||||
|  | 			({ poster_path, overview, release_date, id, title }) => { | ||||
|  | 				const movie = { | ||||
|  | 					poster: posterRoot + poster_path, | ||||
|  | 					overview, | ||||
|  | 					release: release_date, | ||||
|  | 					movieId: id, | ||||
|  | 					title, | ||||
|  | 				}; | ||||
|  | 				return movie; | ||||
|  | 			}, | ||||
|  | 		); | ||||
|  | 
 | ||||
|  | 		res.send({ success: true, results: movies }); | ||||
|  | 	}); | ||||
|  | 
 | ||||
|  | 	app.get("/movie/:id", verifyUser, async (req, res) => { | ||||
|  | 		const fromDB = await Movie.findOne({ movieId: req.params.id }); | ||||
|  | 
 | ||||
|  | 		if (!fromDB) { | ||||
|  | 			const result = await tmdb.get(`/movie/${req.params.id}`, { | ||||
|  | 				api_key: process.env.TMDB_KEY, | ||||
|  | 			}); | ||||
|  | 
 | ||||
|  | 			const movie = { | ||||
|  | 				poster: posterRoot + result.poster_path, | ||||
|  | 				overview: result.overview, | ||||
|  | 				release: result.release_date, | ||||
|  | 				movieId: req.params.id, | ||||
|  | 				title: result.title, | ||||
|  | 			}; | ||||
|  | 
 | ||||
|  | 			res.send(movie); | ||||
|  | 
 | ||||
|  | 			await Movie.create(movie); | ||||
|  | 		} else { | ||||
|  | 			const data = await Userdata.findOne({ | ||||
|  | 				userId: req["Container"].user._id, | ||||
|  | 				movieId: req.params.id, | ||||
|  | 			}); | ||||
|  | 
 | ||||
|  | 			const movie = fromDB.toJSON(); | ||||
|  | 
 | ||||
|  | 			if (data) { | ||||
|  | 				movie.watchStatus = data.watchStatus; | ||||
|  | 				movie.rating = data.rating; | ||||
|  | 			} | ||||
|  | 
 | ||||
|  | 			movie.poster = posterRoot + movie.poster; | ||||
|  | 
 | ||||
|  | 			delete movie._id; | ||||
|  | 			delete movie.__v; | ||||
|  | 
 | ||||
|  | 			res.send(movie); | ||||
|  | 		} | ||||
|  | 	}); | ||||
|  | 
 | ||||
|  | 	app.post("/movie/:id", verifyUser, async (req, res) => { | ||||
|  | 		const userId = req["Container"].user._id; | ||||
|  | 		const movieId = req.params.id; | ||||
|  | 
 | ||||
|  | 		const { watchStatus, rating } = req.body; | ||||
|  | 
 | ||||
|  | 		if (!movieId) { | ||||
|  | 			res.statusCode = 400; | ||||
|  | 			return res.send({ success: false, msg: "movieId was not sent." }); | ||||
|  | 		} | ||||
|  | 
 | ||||
|  | 		if (watchStatus && !WATCH_STATUS.includes(watchStatus)) { | ||||
|  | 			res.statusCode = 400; | ||||
|  | 			return res.send({ | ||||
|  | 				success: false, | ||||
|  | 				msg: "watchStatus must be one of " + WATCH_STATUS.join(", "), | ||||
|  | 			}); | ||||
|  | 		} | ||||
|  | 
 | ||||
|  | 		if (rating && !RATINGS.includes(rating)) { | ||||
|  | 			res.statusCode = 400; | ||||
|  | 			return res.send({ | ||||
|  | 				success: false, | ||||
|  | 				msg: "rating must be one of " + RATINGS.join(", "), | ||||
|  | 			}); | ||||
|  | 		} | ||||
|  | 
 | ||||
|  | 		await Userdata.updateOne( | ||||
|  | 			{ userId, movieId }, | ||||
|  | 			{ | ||||
|  | 				userId, | ||||
|  | 				movieId, | ||||
|  | 				watchStatus: req.body.watchStatus, | ||||
|  | 				rating: req.body.rating, | ||||
|  | 			}, | ||||
|  | 			{ | ||||
|  | 				upsert: true, | ||||
|  | 			}, | ||||
|  | 		); | ||||
|  | 
 | ||||
|  | 		res.send({ success: true }); | ||||
|  | 	}); | ||||
|  | 
 | ||||
|  | 	app.listen(process.env.PORT, () => | ||||
|  | 		console.log("Listening on port", process.env.PORT), | ||||
|  | 	); | ||||
|  | })(); | ||||
| @ -0,0 +1,12 @@ | |||||
|  | const mongoose = require("mongoose"); | ||||
|  | 
 | ||||
|  | module.exports = mongoose.model( | ||||
|  | 	"Movie", | ||||
|  | 	new mongoose.Schema({ | ||||
|  | 		movieId: { type: String, required: true, unique: true }, | ||||
|  | 		title: { type: String, required: true }, | ||||
|  | 		overview: { type: String }, | ||||
|  | 		release: { type: String }, | ||||
|  | 		poster: { type: String }, | ||||
|  | 	}), | ||||
|  | ); | ||||
| @ -0,0 +1,11 @@ | |||||
|  | const mongoose = require("mongoose"); | ||||
|  | 
 | ||||
|  | module.exports = mongoose.model( | ||||
|  | 	"User", | ||||
|  | 	new mongoose.Schema({ | ||||
|  | 		email: { type: String, required: true, unique: true }, | ||||
|  | 		username: { type: String, required: true, unique: true }, | ||||
|  | 		password: { type: String, required: true }, | ||||
|  | 		tokens: { type: [String], default: [] }, | ||||
|  | 	}), | ||||
|  | ); | ||||
| @ -0,0 +1,19 @@ | |||||
|  | const mongoose = require("mongoose"); | ||||
|  | 
 | ||||
|  | const { WATCH_STATUS, RATINGS } = require("../util/consts"); | ||||
|  | 
 | ||||
|  | module.exports = mongoose.model( | ||||
|  | 	"Userdata", | ||||
|  | 	new mongoose.Schema({ | ||||
|  | 		movieId: { type: String, required: true }, | ||||
|  | 		userId: { type: mongoose.Types.ObjectId }, | ||||
|  | 		watchStatus: { | ||||
|  | 			type: String, | ||||
|  | 			enum: WATCH_STATUS, | ||||
|  | 		}, | ||||
|  | 		rating: { | ||||
|  | 			type: String, | ||||
|  | 			enum: RATINGS, | ||||
|  | 		}, | ||||
|  | 	}), | ||||
|  | ); | ||||
| @ -1,629 +0,0 @@ | |||||
| { |  | ||||
|   "name": "movielist", |  | ||||
|   "version": "1.0.0", |  | ||||
|   "lockfileVersion": 1, |  | ||||
|   "requires": true, |  | ||||
|   "dependencies": { |  | ||||
|     "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" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "array-flatten": { |  | ||||
|       "version": "1.1.1", |  | ||||
|       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |  | ||||
|       "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" |  | ||||
|     }, |  | ||||
|     "axios": { |  | ||||
|       "version": "0.19.2", |  | ||||
|       "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", |  | ||||
|       "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", |  | ||||
|       "requires": { |  | ||||
|         "follow-redirects": "1.5.10" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "bl": { |  | ||||
|       "version": "2.2.0", |  | ||||
|       "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz", |  | ||||
|       "integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==", |  | ||||
|       "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" |  | ||||
|       }, |  | ||||
|       "dependencies": { |  | ||||
|         "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" |  | ||||
|           } |  | ||||
|         } |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "bson": { |  | ||||
|       "version": "1.1.4", |  | ||||
|       "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.4.tgz", |  | ||||
|       "integrity": "sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q==" |  | ||||
|     }, |  | ||||
|     "bytes": { |  | ||||
|       "version": "3.1.0", |  | ||||
|       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", |  | ||||
|       "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" |  | ||||
|     }, |  | ||||
|     "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-util-is": { |  | ||||
|       "version": "1.0.2", |  | ||||
|       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", |  | ||||
|       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" |  | ||||
|     }, |  | ||||
|     "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" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "denque": { |  | ||||
|       "version": "1.4.1", |  | ||||
|       "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", |  | ||||
|       "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" |  | ||||
|     }, |  | ||||
|     "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=" |  | ||||
|     }, |  | ||||
|     "ee-first": { |  | ||||
|       "version": "1.1.1", |  | ||||
|       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", |  | ||||
|       "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" |  | ||||
|     }, |  | ||||
|     "encodeurl": { |  | ||||
|       "version": "1.0.2", |  | ||||
|       "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", |  | ||||
|       "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" |  | ||||
|     }, |  | ||||
|     "escape-html": { |  | ||||
|       "version": "1.0.3", |  | ||||
|       "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", |  | ||||
|       "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" |  | ||||
|     }, |  | ||||
|     "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" |  | ||||
|       }, |  | ||||
|       "dependencies": { |  | ||||
|         "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" |  | ||||
|           } |  | ||||
|         } |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "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" |  | ||||
|       }, |  | ||||
|       "dependencies": { |  | ||||
|         "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" |  | ||||
|           } |  | ||||
|         } |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "follow-redirects": { |  | ||||
|       "version": "1.5.10", |  | ||||
|       "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", |  | ||||
|       "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", |  | ||||
|       "requires": { |  | ||||
|         "debug": "=3.1.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=" |  | ||||
|     }, |  | ||||
|     "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" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "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" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "inherits": { |  | ||||
|       "version": "2.0.3", |  | ||||
|       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", |  | ||||
|       "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" |  | ||||
|     }, |  | ||||
|     "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==" |  | ||||
|     }, |  | ||||
|     "isarray": { |  | ||||
|       "version": "1.0.0", |  | ||||
|       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", |  | ||||
|       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" |  | ||||
|     }, |  | ||||
|     "kareem": { |  | ||||
|       "version": "2.3.1", |  | ||||
|       "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", |  | ||||
|       "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" |  | ||||
|     }, |  | ||||
|     "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=" |  | ||||
|     }, |  | ||||
|     "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.44.0", |  | ||||
|       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", |  | ||||
|       "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" |  | ||||
|     }, |  | ||||
|     "mime-types": { |  | ||||
|       "version": "2.1.27", |  | ||||
|       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", |  | ||||
|       "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", |  | ||||
|       "requires": { |  | ||||
|         "mime-db": "1.44.0" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "mongodb": { |  | ||||
|       "version": "3.5.9", |  | ||||
|       "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.9.tgz", |  | ||||
|       "integrity": "sha512-vXHBY1CsGYcEPoVWhwgxIBeWqP3dSu9RuRDsoLRPTITrcrgm1f0Ubu1xqF9ozMwv53agmEiZm0YGo+7WL3Nbug==", |  | ||||
|       "requires": { |  | ||||
|         "bl": "^2.2.0", |  | ||||
|         "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.9.25", |  | ||||
|       "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.25.tgz", |  | ||||
|       "integrity": "sha512-vz/DqJ3mrHqEIlfRbKmDZ9TzQ1a0hCtSQpjHScIxr4rEtLs0tjsXDeEWcJ/vEEc3oLfP6vRx9V+uYSprXDUvFQ==", |  | ||||
|       "requires": { |  | ||||
|         "bson": "^1.1.4", |  | ||||
|         "kareem": "2.3.1", |  | ||||
|         "mongodb": "3.5.9", |  | ||||
|         "mongoose-legacy-pluralize": "1.0.2", |  | ||||
|         "mpath": "0.7.0", |  | ||||
|         "mquery": "3.2.2", |  | ||||
|         "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==" |  | ||||
|     }, |  | ||||
|     "mpath": { |  | ||||
|       "version": "0.7.0", |  | ||||
|       "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz", |  | ||||
|       "integrity": "sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg==" |  | ||||
|     }, |  | ||||
|     "mquery": { |  | ||||
|       "version": "3.2.2", |  | ||||
|       "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz", |  | ||||
|       "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==", |  | ||||
|       "requires": { |  | ||||
|         "bluebird": "3.5.1", |  | ||||
|         "debug": "3.1.0", |  | ||||
|         "regexp-clone": "^1.0.0", |  | ||||
|         "safe-buffer": "5.1.2", |  | ||||
|         "sliced": "1.0.1" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "ms": { |  | ||||
|       "version": "2.0.0", |  | ||||
|       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |  | ||||
|       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |  | ||||
|     }, |  | ||||
|     "negotiator": { |  | ||||
|       "version": "0.6.2", |  | ||||
|       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", |  | ||||
|       "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" |  | ||||
|     }, |  | ||||
|     "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" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "parseurl": { |  | ||||
|       "version": "1.3.3", |  | ||||
|       "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", |  | ||||
|       "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" |  | ||||
|     }, |  | ||||
|     "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=" |  | ||||
|     }, |  | ||||
|     "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" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "qs": { |  | ||||
|       "version": "6.7.0", |  | ||||
|       "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", |  | ||||
|       "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" |  | ||||
|     }, |  | ||||
|     "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" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "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" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "regexp-clone": { |  | ||||
|       "version": "1.0.0", |  | ||||
|       "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", |  | ||||
|       "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" |  | ||||
|     }, |  | ||||
|     "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=" |  | ||||
|     }, |  | ||||
|     "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==" |  | ||||
|     }, |  | ||||
|     "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": { |  | ||||
|         "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" |  | ||||
|           }, |  | ||||
|           "dependencies": { |  | ||||
|             "ms": { |  | ||||
|               "version": "2.0.0", |  | ||||
|               "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |  | ||||
|               "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |  | ||||
|             } |  | ||||
|           } |  | ||||
|         }, |  | ||||
|         "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" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "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==" |  | ||||
|     }, |  | ||||
|     "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=" |  | ||||
|     }, |  | ||||
|     "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" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "toidentifier": { |  | ||||
|       "version": "1.0.0", |  | ||||
|       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", |  | ||||
|       "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" |  | ||||
|     }, |  | ||||
|     "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" |  | ||||
|       } |  | ||||
|     }, |  | ||||
|     "unpipe": { |  | ||||
|       "version": "1.0.0", |  | ||||
|       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", |  | ||||
|       "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" |  | ||||
|     }, |  | ||||
|     "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=" |  | ||||
|     }, |  | ||||
|     "vary": { |  | ||||
|       "version": "1.1.2", |  | ||||
|       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", |  | ||||
|       "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" |  | ||||
|     } |  | ||||
|   } |  | ||||
| } |  | ||||
| @ -0,0 +1,638 @@ | |||||
|  | dependencies: | ||||
|  |   axios: 0.19.2 | ||||
|  |   bcryptjs: 2.4.3 | ||||
|  |   body-parser: 1.19.0 | ||||
|  |   cors: 2.8.5 | ||||
|  |   dotenv: 8.2.0 | ||||
|  |   express: 4.17.1 | ||||
|  |   mongoose: 5.9.25_mongoose@5.9.25 | ||||
|  |   uuid: 8.2.0 | ||||
|  | lockfileVersion: 5.1 | ||||
|  | packages: | ||||
|  |   /accepts/1.3.7: | ||||
|  |     dependencies: | ||||
|  |       mime-types: 2.1.27 | ||||
|  |       negotiator: 0.6.2 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== | ||||
|  |   /array-flatten/1.1.1: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= | ||||
|  |   /axios/0.19.2: | ||||
|  |     dependencies: | ||||
|  |       follow-redirects: 1.5.10 | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== | ||||
|  |   /bcryptjs/2.4.3: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= | ||||
|  |   /bl/2.2.0: | ||||
|  |     dependencies: | ||||
|  |       readable-stream: 2.3.7 | ||||
|  |       safe-buffer: 5.2.1 | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA== | ||||
|  |   /bluebird/3.5.1: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== | ||||
|  |   /body-parser/1.19.0: | ||||
|  |     dependencies: | ||||
|  |       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.18 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.8' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== | ||||
|  |   /bson/1.1.4: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=0.6.19' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q== | ||||
|  |   /bytes/3.1.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.8' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== | ||||
|  |   /content-disposition/0.5.3: | ||||
|  |     dependencies: | ||||
|  |       safe-buffer: 5.1.2 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== | ||||
|  |   /content-type/1.0.4: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== | ||||
|  |   /cookie-signature/1.0.6: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw= | ||||
|  |   /cookie/0.4.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== | ||||
|  |   /core-util-is/1.0.2: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= | ||||
|  |   /cors/2.8.5: | ||||
|  |     dependencies: | ||||
|  |       object-assign: 4.1.1 | ||||
|  |       vary: 1.1.2 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.10' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== | ||||
|  |   /debug/2.6.9: | ||||
|  |     dependencies: | ||||
|  |       ms: 2.0.0 | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== | ||||
|  |   /debug/3.1.0: | ||||
|  |     dependencies: | ||||
|  |       ms: 2.0.0 | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== | ||||
|  |   /denque/1.4.1: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=0.10' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ== | ||||
|  |   /depd/1.1.2: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= | ||||
|  |   /destroy/1.0.4: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= | ||||
|  |   /dotenv/8.2.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=8' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== | ||||
|  |   /ee-first/1.1.1: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= | ||||
|  |   /encodeurl/1.0.2: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.8' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= | ||||
|  |   /escape-html/1.0.3: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= | ||||
|  |   /etag/1.8.1: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= | ||||
|  |   /express/4.17.1: | ||||
|  |     dependencies: | ||||
|  |       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.6 | ||||
|  |       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 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.10.0' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== | ||||
|  |   /finalhandler/1.1.2: | ||||
|  |     dependencies: | ||||
|  |       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 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.8' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== | ||||
|  |   /follow-redirects/1.5.10: | ||||
|  |     dependencies: | ||||
|  |       debug: 3.1.0 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=4.0' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== | ||||
|  |   /forwarded/0.1.2: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= | ||||
|  |   /fresh/0.5.2: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= | ||||
|  |   /http-errors/1.7.2: | ||||
|  |     dependencies: | ||||
|  |       depd: 1.1.2 | ||||
|  |       inherits: 2.0.3 | ||||
|  |       setprototypeof: 1.1.1 | ||||
|  |       statuses: 1.5.0 | ||||
|  |       toidentifier: 1.0.0 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== | ||||
|  |   /http-errors/1.7.3: | ||||
|  |     dependencies: | ||||
|  |       depd: 1.1.2 | ||||
|  |       inherits: 2.0.4 | ||||
|  |       setprototypeof: 1.1.1 | ||||
|  |       statuses: 1.5.0 | ||||
|  |       toidentifier: 1.0.0 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== | ||||
|  |   /iconv-lite/0.4.24: | ||||
|  |     dependencies: | ||||
|  |       safer-buffer: 2.1.2 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=0.10.0' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== | ||||
|  |   /inherits/2.0.3: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= | ||||
|  |   /inherits/2.0.4: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== | ||||
|  |   /ipaddr.js/1.9.1: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.10' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== | ||||
|  |   /isarray/1.0.0: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= | ||||
|  |   /kareem/2.3.1: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw== | ||||
|  |   /media-typer/0.3.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= | ||||
|  |   /memory-pager/1.5.0: | ||||
|  |     dev: false | ||||
|  |     optional: true | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== | ||||
|  |   /merge-descriptors/1.0.1: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= | ||||
|  |   /methods/1.1.2: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= | ||||
|  |   /mime-db/1.44.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== | ||||
|  |   /mime-types/2.1.27: | ||||
|  |     dependencies: | ||||
|  |       mime-db: 1.44.0 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== | ||||
|  |   /mime/1.6.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=4' | ||||
|  |     hasBin: true | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== | ||||
|  |   /mongodb/3.5.9: | ||||
|  |     dependencies: | ||||
|  |       bl: 2.2.0 | ||||
|  |       bson: 1.1.4 | ||||
|  |       denque: 1.4.1 | ||||
|  |       require_optional: 1.0.1 | ||||
|  |       safe-buffer: 5.2.1 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=4' | ||||
|  |     optionalDependencies: | ||||
|  |       saslprep: 1.0.3 | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-vXHBY1CsGYcEPoVWhwgxIBeWqP3dSu9RuRDsoLRPTITrcrgm1f0Ubu1xqF9ozMwv53agmEiZm0YGo+7WL3Nbug== | ||||
|  |   /mongoose-legacy-pluralize/1.0.2_mongoose@5.9.25: | ||||
|  |     dependencies: | ||||
|  |       mongoose: 5.9.25_mongoose@5.9.25 | ||||
|  |     dev: false | ||||
|  |     peerDependencies: | ||||
|  |       mongoose: '*' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== | ||||
|  |   /mongoose/5.9.25_mongoose@5.9.25: | ||||
|  |     dependencies: | ||||
|  |       bson: 1.1.4 | ||||
|  |       kareem: 2.3.1 | ||||
|  |       mongodb: 3.5.9 | ||||
|  |       mongoose-legacy-pluralize: 1.0.2_mongoose@5.9.25 | ||||
|  |       mpath: 0.7.0 | ||||
|  |       mquery: 3.2.2 | ||||
|  |       ms: 2.1.2 | ||||
|  |       regexp-clone: 1.0.0 | ||||
|  |       safe-buffer: 5.2.1 | ||||
|  |       sift: 7.0.1 | ||||
|  |       sliced: 1.0.1 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=4.0.0' | ||||
|  |     peerDependencies: | ||||
|  |       mongoose: '*' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-vz/DqJ3mrHqEIlfRbKmDZ9TzQ1a0hCtSQpjHScIxr4rEtLs0tjsXDeEWcJ/vEEc3oLfP6vRx9V+uYSprXDUvFQ== | ||||
|  |   /mpath/0.7.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=4.0.0' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg== | ||||
|  |   /mquery/3.2.2: | ||||
|  |     dependencies: | ||||
|  |       bluebird: 3.5.1 | ||||
|  |       debug: 3.1.0 | ||||
|  |       regexp-clone: 1.0.0 | ||||
|  |       safe-buffer: 5.1.2 | ||||
|  |       sliced: 1.0.1 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=4.0.0' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q== | ||||
|  |   /ms/2.0.0: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= | ||||
|  |   /ms/2.1.1: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== | ||||
|  |   /ms/2.1.2: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== | ||||
|  |   /negotiator/0.6.2: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== | ||||
|  |   /object-assign/4.1.1: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=0.10.0' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= | ||||
|  |   /on-finished/2.3.0: | ||||
|  |     dependencies: | ||||
|  |       ee-first: 1.1.1 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.8' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= | ||||
|  |   /parseurl/1.3.3: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.8' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== | ||||
|  |   /path-to-regexp/0.1.7: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= | ||||
|  |   /process-nextick-args/2.0.1: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== | ||||
|  |   /proxy-addr/2.0.6: | ||||
|  |     dependencies: | ||||
|  |       forwarded: 0.1.2 | ||||
|  |       ipaddr.js: 1.9.1 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.10' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== | ||||
|  |   /qs/6.7.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== | ||||
|  |   /range-parser/1.2.1: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== | ||||
|  |   /raw-body/2.4.0: | ||||
|  |     dependencies: | ||||
|  |       bytes: 3.1.0 | ||||
|  |       http-errors: 1.7.2 | ||||
|  |       iconv-lite: 0.4.24 | ||||
|  |       unpipe: 1.0.0 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.8' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== | ||||
|  |   /readable-stream/2.3.7: | ||||
|  |     dependencies: | ||||
|  |       core-util-is: 1.0.2 | ||||
|  |       inherits: 2.0.4 | ||||
|  |       isarray: 1.0.0 | ||||
|  |       process-nextick-args: 2.0.1 | ||||
|  |       safe-buffer: 5.1.2 | ||||
|  |       string_decoder: 1.1.1 | ||||
|  |       util-deprecate: 1.0.2 | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== | ||||
|  |   /regexp-clone/1.0.0: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== | ||||
|  |   /require_optional/1.0.1: | ||||
|  |     dependencies: | ||||
|  |       resolve-from: 2.0.0 | ||||
|  |       semver: 5.7.1 | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== | ||||
|  |   /resolve-from/2.0.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=0.10.0' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= | ||||
|  |   /safe-buffer/5.1.2: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== | ||||
|  |   /safe-buffer/5.2.1: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== | ||||
|  |   /safer-buffer/2.1.2: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== | ||||
|  |   /saslprep/1.0.3: | ||||
|  |     dependencies: | ||||
|  |       sparse-bitfield: 3.0.3 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=6' | ||||
|  |     optional: true | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== | ||||
|  |   /semver/5.7.1: | ||||
|  |     dev: false | ||||
|  |     hasBin: true | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== | ||||
|  |   /send/0.17.1: | ||||
|  |     dependencies: | ||||
|  |       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.3 | ||||
|  |       mime: 1.6.0 | ||||
|  |       ms: 2.1.1 | ||||
|  |       on-finished: 2.3.0 | ||||
|  |       range-parser: 1.2.1 | ||||
|  |       statuses: 1.5.0 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.8.0' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== | ||||
|  |   /serve-static/1.14.1: | ||||
|  |     dependencies: | ||||
|  |       encodeurl: 1.0.2 | ||||
|  |       escape-html: 1.0.3 | ||||
|  |       parseurl: 1.3.3 | ||||
|  |       send: 0.17.1 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.8.0' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== | ||||
|  |   /setprototypeof/1.1.1: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== | ||||
|  |   /sift/7.0.1: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g== | ||||
|  |   /sliced/1.0.1: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= | ||||
|  |   /sparse-bitfield/3.0.3: | ||||
|  |     dependencies: | ||||
|  |       memory-pager: 1.5.0 | ||||
|  |     dev: false | ||||
|  |     optional: true | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-/0rm5oZWBWuks+eSqzM004JzyhE= | ||||
|  |   /statuses/1.5.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= | ||||
|  |   /string_decoder/1.1.1: | ||||
|  |     dependencies: | ||||
|  |       safe-buffer: 5.1.2 | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== | ||||
|  |   /toidentifier/1.0.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>=0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== | ||||
|  |   /type-is/1.6.18: | ||||
|  |     dependencies: | ||||
|  |       media-typer: 0.3.0 | ||||
|  |       mime-types: 2.1.27 | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.6' | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== | ||||
|  |   /unpipe/1.0.0: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.8' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= | ||||
|  |   /util-deprecate/1.0.2: | ||||
|  |     dev: false | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= | ||||
|  |   /utils-merge/1.0.1: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.4.0' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= | ||||
|  |   /uuid/8.2.0: | ||||
|  |     dev: false | ||||
|  |     hasBin: true | ||||
|  |     resolution: | ||||
|  |       integrity: sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q== | ||||
|  |   /vary/1.1.2: | ||||
|  |     dev: false | ||||
|  |     engines: | ||||
|  |       node: '>= 0.8' | ||||
|  |     resolution: | ||||
|  |       integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= | ||||
|  | specifiers: | ||||
|  |   axios: ^0.19.2 | ||||
|  |   bcryptjs: ^2.4.3 | ||||
|  |   body-parser: ^1.19.0 | ||||
|  |   cors: ^2.8.5 | ||||
|  |   dotenv: ^8.2.0 | ||||
|  |   express: ^4.17.1 | ||||
|  |   mongoose: ^5.9.25 | ||||
|  |   uuid: ^8.2.0 | ||||
| @ -0,0 +1,4 @@ | |||||
|  | const WATCH_STATUS = ["PLANNED", "IN_PROGRESS", "COMPLETED"]; | ||||
|  | const RATINGS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => String(x)); | ||||
|  | 
 | ||||
|  | module.exports = { WATCH_STATUS, RATINGS }; | ||||
					Loading…
					
					
				
		Reference in new issue