Eric Whale

Build file structure for server

1 node_modules/ 1 node_modules/
2 .DS_Store 2 .DS_Store
3 +.env
......
1 +const jwt = require("jsonwebtoken");
2 +const bcrypt = require("bcryptjs");
3 +const asyncHandler = require("express-async-handler");
4 +
5 +// @desc Signup new user
6 +// @route POST /api/users
7 +// @access Public
8 +const signupUser = asyncHandler(async (req, res) => {
9 + const { username, email, password } = req.body;
10 + if (!name || !email || !password) {
11 + res.status(400);
12 + throw new Error("Please fill in all fields");
13 + }
14 +
15 + // Check if user already exists
16 +
17 + // Hash password (bcrypt)
18 +
19 + // Create/Build user
20 +
21 + // Send response
22 +});
23 +
24 +const loginUser = asyncHandler(async (req, res) => {
25 + const { email, password } = req.body;
26 +
27 + // Check for the user email
28 +
29 + // Send response
30 +});
31 +
32 +module.exports = {
33 + signupUser,
34 + loginUser,
35 +};
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
11 "@testing-library/jest-dom": "^5.16.4", 11 "@testing-library/jest-dom": "^5.16.4",
12 "@testing-library/react": "^13.2.0", 12 "@testing-library/react": "^13.2.0",
13 "@testing-library/user-event": "^13.5.0", 13 "@testing-library/user-event": "^13.5.0",
14 + "axios": "^0.27.2",
14 "react": "^18.1.0", 15 "react": "^18.1.0",
15 "react-dom": "^18.1.0", 16 "react-dom": "^18.1.0",
16 "react-router-dom": "^6.3.0", 17 "react-router-dom": "^6.3.0",
...@@ -4523,6 +4524,28 @@ ...@@ -4523,6 +4524,28 @@
4523 "node": ">=12" 4524 "node": ">=12"
4524 } 4525 }
4525 }, 4526 },
4527 + "node_modules/axios": {
4528 + "version": "0.27.2",
4529 + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
4530 + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
4531 + "dependencies": {
4532 + "follow-redirects": "^1.14.9",
4533 + "form-data": "^4.0.0"
4534 + }
4535 + },
4536 + "node_modules/axios/node_modules/form-data": {
4537 + "version": "4.0.0",
4538 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
4539 + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
4540 + "dependencies": {
4541 + "asynckit": "^0.4.0",
4542 + "combined-stream": "^1.0.8",
4543 + "mime-types": "^2.1.12"
4544 + },
4545 + "engines": {
4546 + "node": ">= 6"
4547 + }
4548 + },
4526 "node_modules/axobject-query": { 4549 "node_modules/axobject-query": {
4527 "version": "2.2.0", 4550 "version": "2.2.0",
4528 "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", 4551 "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
...@@ -19468,6 +19491,27 @@ ...@@ -19468,6 +19491,27 @@
19468 "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.2.tgz", 19491 "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.2.tgz",
19469 "integrity": "sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA==" 19492 "integrity": "sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA=="
19470 }, 19493 },
19494 + "axios": {
19495 + "version": "0.27.2",
19496 + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
19497 + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
19498 + "requires": {
19499 + "follow-redirects": "^1.14.9",
19500 + "form-data": "^4.0.0"
19501 + },
19502 + "dependencies": {
19503 + "form-data": {
19504 + "version": "4.0.0",
19505 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
19506 + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
19507 + "requires": {
19508 + "asynckit": "^0.4.0",
19509 + "combined-stream": "^1.0.8",
19510 + "mime-types": "^2.1.12"
19511 + }
19512 + }
19513 + }
19514 + },
19471 "axobject-query": { 19515 "axobject-query": {
19472 "version": "2.2.0", 19516 "version": "2.2.0",
19473 "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", 19517 "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
6 "@testing-library/jest-dom": "^5.16.4", 6 "@testing-library/jest-dom": "^5.16.4",
7 "@testing-library/react": "^13.2.0", 7 "@testing-library/react": "^13.2.0",
8 "@testing-library/user-event": "^13.5.0", 8 "@testing-library/user-event": "^13.5.0",
9 + "axios": "^0.27.2",
9 "react": "^18.1.0", 10 "react": "^18.1.0",
10 "react-dom": "^18.1.0", 11 "react-dom": "^18.1.0",
11 "react-router-dom": "^6.3.0", 12 "react-router-dom": "^6.3.0",
...@@ -20,17 +21,10 @@ ...@@ -20,17 +21,10 @@
20 "eject": "react-scripts eject" 21 "eject": "react-scripts eject"
21 }, 22 },
22 "eslintConfig": { 23 "eslintConfig": {
23 - "extends": [ 24 + "extends": ["react-app", "react-app/jest"]
24 - "react-app",
25 - "react-app/jest"
26 - ]
27 }, 25 },
28 "browserslist": { 26 "browserslist": {
29 - "production": [ 27 + "production": [">0.2%", "not dead", "not op_mini all"],
30 - ">0.2%",
31 - "not dead",
32 - "not op_mini all"
33 - ],
34 "development": [ 28 "development": [
35 "last 1 chrome version", 29 "last 1 chrome version",
36 "last 1 firefox version", 30 "last 1 firefox version",
......
1 +const axios = require("axios").default;
2 +
3 +export const handleLogin = (email, pwd) => {
4 + console.log(email, pwd);
5 + axios
6 + .post("http://localhost:8000/api/login", {
7 + email,
8 + pwd,
9 + })
10 + .then(function (response) {
11 + console.log("login request sent");
12 + console.log(response);
13 + })
14 + .catch(function (err) {
15 + console.log(err);
16 + });
17 +};
1 +import { useState } from "react";
2 +// lib
3 +import { handleLogin } from "../lib/auth";
1 // styles 4 // styles
2 import { Link } from "react-router-dom"; 5 import { Link } from "react-router-dom";
3 import "../styles/layout.scss"; 6 import "../styles/layout.scss";
4 7
5 function Login() { 8 function Login() {
9 + const [email, setEmail] = useState("");
10 + const [pwd, setPwd] = useState("");
11 +
6 const handleSubmit = (e) => { 12 const handleSubmit = (e) => {
7 e.preventDefault(); 13 e.preventDefault();
8 - console.log("login form submit called"); 14 + handleLogin(email, pwd);
9 }; 15 };
10 16
11 return ( 17 return (
...@@ -20,10 +26,22 @@ function Login() { ...@@ -20,10 +26,22 @@ function Login() {
20 26
21 <form className="authForm" onSubmit={(e) => handleSubmit(e)}> 27 <form className="authForm" onSubmit={(e) => handleSubmit(e)}>
22 <label htmlFor="email"> 28 <label htmlFor="email">
23 - email: <input type="text" id="email" /> 29 + email:{" "}
30 + <input
31 + onChange={(e) => setEmail(e.target.value)}
32 + value={email}
33 + type="text"
34 + id="email"
35 + />
24 </label> 36 </label>
25 <label htmlFor="password"> 37 <label htmlFor="password">
26 - password: <input type="text" id="password" /> 38 + password:{" "}
39 + <input
40 + onChange={(e) => setPwd(e.target.value)}
41 + value={pwd}
42 + type="text"
43 + id="password"
44 + />
27 </label> 45 </label>
28 <label htmlFor="submit"> 46 <label htmlFor="submit">
29 <input type="submit" id="submit" /> 47 <input type="submit" id="submit" />
......
1 +const colors = require("colors");
2 +const mongoose = require("mongoose");
3 +
4 +const connectDB = async () => {};
5 +
6 +module.exports = connectDB;
1 +const errorHandler = (err, req, res, next) => {
2 + const statusCode = res.statusCode ? res.statusCode : 500;
3 +
4 + res.status(statusCode);
5 + res.json({
6 + message: err.message,
7 + // stack from mongoDB (maybe...)
8 + stack: process.env.NODE_ENV === "production" ? null : err.stack,
9 + });
10 +};
11 +
12 +module.exports = {
13 + errorHandler,
14 +};
...@@ -9,7 +9,12 @@ ...@@ -9,7 +9,12 @@
9 "version": "1.0.0", 9 "version": "1.0.0",
10 "license": "MIT", 10 "license": "MIT",
11 "dependencies": { 11 "dependencies": {
12 - "express": "^4.18.1" 12 + "bcryptjs": "^2.4.3",
13 + "dotenv": "^16.0.1",
14 + "express": "^4.18.1",
15 + "express-async-handler": "^1.2.0",
16 + "jsonwebtoken": "^8.5.1",
17 + "mongoose": "^6.3.4"
13 }, 18 },
14 "devDependencies": { 19 "devDependencies": {
15 "nodemon": "^2.0.16" 20 "nodemon": "^2.0.16"
...@@ -36,6 +41,25 @@ ...@@ -36,6 +41,25 @@
36 "node": ">=6" 41 "node": ">=6"
37 } 42 }
38 }, 43 },
44 + "node_modules/@types/node": {
45 + "version": "17.0.35",
46 + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz",
47 + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg=="
48 + },
49 + "node_modules/@types/webidl-conversions": {
50 + "version": "6.1.1",
51 + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
52 + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
53 + },
54 + "node_modules/@types/whatwg-url": {
55 + "version": "8.2.1",
56 + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz",
57 + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==",
58 + "dependencies": {
59 + "@types/node": "*",
60 + "@types/webidl-conversions": "*"
61 + }
62 + },
39 "node_modules/abbrev": { 63 "node_modules/abbrev": {
40 "version": "1.1.1", 64 "version": "1.1.1",
41 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 65 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
...@@ -111,6 +135,30 @@ ...@@ -111,6 +135,30 @@
111 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 135 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
112 "dev": true 136 "dev": true
113 }, 137 },
138 + "node_modules/base64-js": {
139 + "version": "1.5.1",
140 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
141 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
142 + "funding": [
143 + {
144 + "type": "github",
145 + "url": "https://github.com/sponsors/feross"
146 + },
147 + {
148 + "type": "patreon",
149 + "url": "https://www.patreon.com/feross"
150 + },
151 + {
152 + "type": "consulting",
153 + "url": "https://feross.org/support"
154 + }
155 + ]
156 + },
157 + "node_modules/bcryptjs": {
158 + "version": "2.4.3",
159 + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
160 + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
161 + },
114 "node_modules/binary-extensions": { 162 "node_modules/binary-extensions": {
115 "version": "2.2.0", 163 "version": "2.2.0",
116 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 164 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
...@@ -187,6 +235,45 @@ ...@@ -187,6 +235,45 @@
187 "node": ">=8" 235 "node": ">=8"
188 } 236 }
189 }, 237 },
238 + "node_modules/bson": {
239 + "version": "4.6.4",
240 + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz",
241 + "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==",
242 + "dependencies": {
243 + "buffer": "^5.6.0"
244 + },
245 + "engines": {
246 + "node": ">=6.9.0"
247 + }
248 + },
249 + "node_modules/buffer": {
250 + "version": "5.7.1",
251 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
252 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
253 + "funding": [
254 + {
255 + "type": "github",
256 + "url": "https://github.com/sponsors/feross"
257 + },
258 + {
259 + "type": "patreon",
260 + "url": "https://www.patreon.com/feross"
261 + },
262 + {
263 + "type": "consulting",
264 + "url": "https://feross.org/support"
265 + }
266 + ],
267 + "dependencies": {
268 + "base64-js": "^1.3.1",
269 + "ieee754": "^1.1.13"
270 + }
271 + },
272 + "node_modules/buffer-equal-constant-time": {
273 + "version": "1.0.1",
274 + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
275 + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
276 + },
190 "node_modules/bytes": { 277 "node_modules/bytes": {
191 "version": "3.1.2", 278 "version": "3.1.2",
192 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 279 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
...@@ -469,6 +556,14 @@ ...@@ -469,6 +556,14 @@
469 "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", 556 "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
470 "dev": true 557 "dev": true
471 }, 558 },
559 + "node_modules/denque": {
560 + "version": "2.0.1",
561 + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
562 + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==",
563 + "engines": {
564 + "node": ">=0.10"
565 + }
566 + },
472 "node_modules/depd": { 567 "node_modules/depd": {
473 "version": "2.0.0", 568 "version": "2.0.0",
474 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 569 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
...@@ -498,12 +593,28 @@ ...@@ -498,12 +593,28 @@
498 "node": ">=8" 593 "node": ">=8"
499 } 594 }
500 }, 595 },
596 + "node_modules/dotenv": {
597 + "version": "16.0.1",
598 + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz",
599 + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==",
600 + "engines": {
601 + "node": ">=12"
602 + }
603 + },
501 "node_modules/duplexer3": { 604 "node_modules/duplexer3": {
502 "version": "0.1.4", 605 "version": "0.1.4",
503 "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 606 "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
504 "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", 607 "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
505 "dev": true 608 "dev": true
506 }, 609 },
610 + "node_modules/ecdsa-sig-formatter": {
611 + "version": "1.0.11",
612 + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
613 + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
614 + "dependencies": {
615 + "safe-buffer": "^5.0.1"
616 + }
617 + },
507 "node_modules/ee-first": { 618 "node_modules/ee-first": {
508 "version": "1.1.1", 619 "version": "1.1.1",
509 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 620 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
...@@ -595,6 +706,11 @@ ...@@ -595,6 +706,11 @@
595 "node": ">= 0.10.0" 706 "node": ">= 0.10.0"
596 } 707 }
597 }, 708 },
709 + "node_modules/express-async-handler": {
710 + "version": "1.2.0",
711 + "resolved": "https://registry.npmjs.org/express-async-handler/-/express-async-handler-1.2.0.tgz",
712 + "integrity": "sha512-rCSVtPXRmQSW8rmik/AIb2P0op6l7r1fMW538yyvTMltCO4xQEWMmobfrIxN2V1/mVrgxB8Az3reYF6yUZw37w=="
713 + },
598 "node_modules/fill-range": { 714 "node_modules/fill-range": {
599 "version": "7.0.1", 715 "version": "7.0.1",
600 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 716 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
...@@ -811,6 +927,25 @@ ...@@ -811,6 +927,25 @@
811 "node": ">=0.10.0" 927 "node": ">=0.10.0"
812 } 928 }
813 }, 929 },
930 + "node_modules/ieee754": {
931 + "version": "1.2.1",
932 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
933 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
934 + "funding": [
935 + {
936 + "type": "github",
937 + "url": "https://github.com/sponsors/feross"
938 + },
939 + {
940 + "type": "patreon",
941 + "url": "https://www.patreon.com/feross"
942 + },
943 + {
944 + "type": "consulting",
945 + "url": "https://feross.org/support"
946 + }
947 + ]
948 + },
814 "node_modules/ignore-by-default": { 949 "node_modules/ignore-by-default": {
815 "version": "1.0.1", 950 "version": "1.0.1",
816 "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 951 "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
...@@ -849,6 +984,11 @@ ...@@ -849,6 +984,11 @@
849 "node": ">=10" 984 "node": ">=10"
850 } 985 }
851 }, 986 },
987 + "node_modules/ip": {
988 + "version": "1.1.8",
989 + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
990 + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
991 + },
852 "node_modules/ipaddr.js": { 992 "node_modules/ipaddr.js": {
853 "version": "1.9.1", 993 "version": "1.9.1",
854 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 994 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
...@@ -984,6 +1124,56 @@ ...@@ -984,6 +1124,56 @@
984 "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", 1124 "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
985 "dev": true 1125 "dev": true
986 }, 1126 },
1127 + "node_modules/jsonwebtoken": {
1128 + "version": "8.5.1",
1129 + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
1130 + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
1131 + "dependencies": {
1132 + "jws": "^3.2.2",
1133 + "lodash.includes": "^4.3.0",
1134 + "lodash.isboolean": "^3.0.3",
1135 + "lodash.isinteger": "^4.0.4",
1136 + "lodash.isnumber": "^3.0.3",
1137 + "lodash.isplainobject": "^4.0.6",
1138 + "lodash.isstring": "^4.0.1",
1139 + "lodash.once": "^4.0.0",
1140 + "ms": "^2.1.1",
1141 + "semver": "^5.6.0"
1142 + },
1143 + "engines": {
1144 + "node": ">=4",
1145 + "npm": ">=1.4.28"
1146 + }
1147 + },
1148 + "node_modules/jsonwebtoken/node_modules/ms": {
1149 + "version": "2.1.3",
1150 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1151 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1152 + },
1153 + "node_modules/jwa": {
1154 + "version": "1.4.1",
1155 + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
1156 + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
1157 + "dependencies": {
1158 + "buffer-equal-constant-time": "1.0.1",
1159 + "ecdsa-sig-formatter": "1.0.11",
1160 + "safe-buffer": "^5.0.1"
1161 + }
1162 + },
1163 + "node_modules/jws": {
1164 + "version": "3.2.2",
1165 + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
1166 + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
1167 + "dependencies": {
1168 + "jwa": "^1.4.1",
1169 + "safe-buffer": "^5.0.1"
1170 + }
1171 + },
1172 + "node_modules/kareem": {
1173 + "version": "2.3.5",
1174 + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.5.tgz",
1175 + "integrity": "sha512-qxCyQtp3ioawkiRNQr/v8xw9KIviMSSNmy+63Wubj7KmMn3g7noRXIZB4vPCAP+ETi2SR8eH6CvmlKZuGpoHOg=="
1176 + },
987 "node_modules/keyv": { 1177 "node_modules/keyv": {
988 "version": "3.1.0", 1178 "version": "3.1.0",
989 "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 1179 "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
...@@ -1005,6 +1195,41 @@ ...@@ -1005,6 +1195,41 @@
1005 "node": ">=8" 1195 "node": ">=8"
1006 } 1196 }
1007 }, 1197 },
1198 + "node_modules/lodash.includes": {
1199 + "version": "4.3.0",
1200 + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
1201 + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
1202 + },
1203 + "node_modules/lodash.isboolean": {
1204 + "version": "3.0.3",
1205 + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
1206 + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
1207 + },
1208 + "node_modules/lodash.isinteger": {
1209 + "version": "4.0.4",
1210 + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
1211 + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
1212 + },
1213 + "node_modules/lodash.isnumber": {
1214 + "version": "3.0.3",
1215 + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
1216 + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
1217 + },
1218 + "node_modules/lodash.isplainobject": {
1219 + "version": "4.0.6",
1220 + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
1221 + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
1222 + },
1223 + "node_modules/lodash.isstring": {
1224 + "version": "4.0.1",
1225 + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
1226 + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
1227 + },
1228 + "node_modules/lodash.once": {
1229 + "version": "4.1.1",
1230 + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
1231 + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
1232 + },
1008 "node_modules/lowercase-keys": { 1233 "node_modules/lowercase-keys": {
1009 "version": "1.0.1", 1234 "version": "1.0.1",
1010 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 1235 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
...@@ -1058,6 +1283,12 @@ ...@@ -1058,6 +1283,12 @@
1058 "node": ">= 0.6" 1283 "node": ">= 0.6"
1059 } 1284 }
1060 }, 1285 },
1286 + "node_modules/memory-pager": {
1287 + "version": "1.5.0",
1288 + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
1289 + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
1290 + "optional": true
1291 + },
1061 "node_modules/merge-descriptors": { 1292 "node_modules/merge-descriptors": {
1062 "version": "1.0.1", 1293 "version": "1.0.1",
1063 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1294 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
...@@ -1128,6 +1359,98 @@ ...@@ -1128,6 +1359,98 @@
1128 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 1359 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
1129 "dev": true 1360 "dev": true
1130 }, 1361 },
1362 + "node_modules/mongodb": {
1363 + "version": "4.5.0",
1364 + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.5.0.tgz",
1365 + "integrity": "sha512-A2l8MjEpKojnhbCM0MK3+UOGUSGvTNNSv7AkP1fsT7tkambrkkqN/5F2y+PhzsV0Nbv58u04TETpkaSEdI2zKA==",
1366 + "dependencies": {
1367 + "bson": "^4.6.2",
1368 + "denque": "^2.0.1",
1369 + "mongodb-connection-string-url": "^2.5.2",
1370 + "socks": "^2.6.2"
1371 + },
1372 + "engines": {
1373 + "node": ">=12.9.0"
1374 + },
1375 + "optionalDependencies": {
1376 + "saslprep": "^1.0.3"
1377 + }
1378 + },
1379 + "node_modules/mongodb-connection-string-url": {
1380 + "version": "2.5.2",
1381 + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz",
1382 + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==",
1383 + "dependencies": {
1384 + "@types/whatwg-url": "^8.2.1",
1385 + "whatwg-url": "^11.0.0"
1386 + }
1387 + },
1388 + "node_modules/mongoose": {
1389 + "version": "6.3.4",
1390 + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.3.4.tgz",
1391 + "integrity": "sha512-UP0azyGMdY+2YNbJUHeHhnVw5vPzCqs4GQDUwHkilif/rwmSZktUQhQWMp1pUgRNeF2JC30vWGLrInZxD7K/Qw==",
1392 + "dependencies": {
1393 + "bson": "^4.6.2",
1394 + "kareem": "2.3.5",
1395 + "mongodb": "4.5.0",
1396 + "mpath": "0.9.0",
1397 + "mquery": "4.0.3",
1398 + "ms": "2.1.3",
1399 + "sift": "16.0.0"
1400 + },
1401 + "engines": {
1402 + "node": ">=12.0.0"
1403 + },
1404 + "funding": {
1405 + "type": "opencollective",
1406 + "url": "https://opencollective.com/mongoose"
1407 + }
1408 + },
1409 + "node_modules/mongoose/node_modules/ms": {
1410 + "version": "2.1.3",
1411 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1412 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1413 + },
1414 + "node_modules/mpath": {
1415 + "version": "0.9.0",
1416 + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
1417 + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
1418 + "engines": {
1419 + "node": ">=4.0.0"
1420 + }
1421 + },
1422 + "node_modules/mquery": {
1423 + "version": "4.0.3",
1424 + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz",
1425 + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==",
1426 + "dependencies": {
1427 + "debug": "4.x"
1428 + },
1429 + "engines": {
1430 + "node": ">=12.0.0"
1431 + }
1432 + },
1433 + "node_modules/mquery/node_modules/debug": {
1434 + "version": "4.3.4",
1435 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1436 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1437 + "dependencies": {
1438 + "ms": "2.1.2"
1439 + },
1440 + "engines": {
1441 + "node": ">=6.0"
1442 + },
1443 + "peerDependenciesMeta": {
1444 + "supports-color": {
1445 + "optional": true
1446 + }
1447 + }
1448 + },
1449 + "node_modules/mquery/node_modules/ms": {
1450 + "version": "2.1.2",
1451 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1452 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1453 + },
1131 "node_modules/ms": { 1454 "node_modules/ms": {
1132 "version": "2.0.0", 1455 "version": "2.0.0",
1133 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1456 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
...@@ -1341,6 +1664,14 @@ ...@@ -1341,6 +1664,14 @@
1341 "once": "^1.3.1" 1664 "once": "^1.3.1"
1342 } 1665 }
1343 }, 1666 },
1667 + "node_modules/punycode": {
1668 + "version": "2.1.1",
1669 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1670 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1671 + "engines": {
1672 + "node": ">=6"
1673 + }
1674 + },
1344 "node_modules/pupa": { 1675 "node_modules/pupa": {
1345 "version": "2.1.1", 1676 "version": "2.1.1",
1346 "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", 1677 "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
...@@ -1479,11 +1810,22 @@ ...@@ -1479,11 +1810,22 @@
1479 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1810 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1480 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1811 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1481 }, 1812 },
1813 + "node_modules/saslprep": {
1814 + "version": "1.0.3",
1815 + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
1816 + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
1817 + "optional": true,
1818 + "dependencies": {
1819 + "sparse-bitfield": "^3.0.3"
1820 + },
1821 + "engines": {
1822 + "node": ">=6"
1823 + }
1824 + },
1482 "node_modules/semver": { 1825 "node_modules/semver": {
1483 "version": "5.7.1", 1826 "version": "5.7.1",
1484 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1827 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1485 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1828 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1486 - "dev": true,
1487 "bin": { 1829 "bin": {
1488 "semver": "bin/semver" 1830 "semver": "bin/semver"
1489 } 1831 }
...@@ -1569,12 +1911,48 @@ ...@@ -1569,12 +1911,48 @@
1569 "url": "https://github.com/sponsors/ljharb" 1911 "url": "https://github.com/sponsors/ljharb"
1570 } 1912 }
1571 }, 1913 },
1914 + "node_modules/sift": {
1915 + "version": "16.0.0",
1916 + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz",
1917 + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ=="
1918 + },
1572 "node_modules/signal-exit": { 1919 "node_modules/signal-exit": {
1573 "version": "3.0.7", 1920 "version": "3.0.7",
1574 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1921 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
1575 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 1922 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
1576 "dev": true 1923 "dev": true
1577 }, 1924 },
1925 + "node_modules/smart-buffer": {
1926 + "version": "4.2.0",
1927 + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
1928 + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
1929 + "engines": {
1930 + "node": ">= 6.0.0",
1931 + "npm": ">= 3.0.0"
1932 + }
1933 + },
1934 + "node_modules/socks": {
1935 + "version": "2.6.2",
1936 + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
1937 + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
1938 + "dependencies": {
1939 + "ip": "^1.1.5",
1940 + "smart-buffer": "^4.2.0"
1941 + },
1942 + "engines": {
1943 + "node": ">= 10.13.0",
1944 + "npm": ">= 3.0.0"
1945 + }
1946 + },
1947 + "node_modules/sparse-bitfield": {
1948 + "version": "3.0.3",
1949 + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
1950 + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
1951 + "optional": true,
1952 + "dependencies": {
1953 + "memory-pager": "^1.0.2"
1954 + }
1955 + },
1578 "node_modules/statuses": { 1956 "node_modules/statuses": {
1579 "version": "2.0.1", 1957 "version": "2.0.1",
1580 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1958 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
...@@ -1671,6 +2049,17 @@ ...@@ -1671,6 +2049,17 @@
1671 "nodetouch": "bin/nodetouch.js" 2049 "nodetouch": "bin/nodetouch.js"
1672 } 2050 }
1673 }, 2051 },
2052 + "node_modules/tr46": {
2053 + "version": "3.0.0",
2054 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
2055 + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
2056 + "dependencies": {
2057 + "punycode": "^2.1.1"
2058 + },
2059 + "engines": {
2060 + "node": ">=12"
2061 + }
2062 + },
1674 "node_modules/type-fest": { 2063 "node_modules/type-fest": {
1675 "version": "0.20.2", 2064 "version": "0.20.2",
1676 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2065 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
...@@ -1801,6 +2190,26 @@ ...@@ -1801,6 +2190,26 @@
1801 "node": ">= 0.8" 2190 "node": ">= 0.8"
1802 } 2191 }
1803 }, 2192 },
2193 + "node_modules/webidl-conversions": {
2194 + "version": "7.0.0",
2195 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
2196 + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
2197 + "engines": {
2198 + "node": ">=12"
2199 + }
2200 + },
2201 + "node_modules/whatwg-url": {
2202 + "version": "11.0.0",
2203 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
2204 + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
2205 + "dependencies": {
2206 + "tr46": "^3.0.0",
2207 + "webidl-conversions": "^7.0.0"
2208 + },
2209 + "engines": {
2210 + "node": ">=12"
2211 + }
2212 + },
1804 "node_modules/widest-line": { 2213 "node_modules/widest-line": {
1805 "version": "3.1.0", 2214 "version": "3.1.0",
1806 "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 2215 "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
...@@ -1880,6 +2289,25 @@ ...@@ -1880,6 +2289,25 @@
1880 "defer-to-connect": "^1.0.1" 2289 "defer-to-connect": "^1.0.1"
1881 } 2290 }
1882 }, 2291 },
2292 + "@types/node": {
2293 + "version": "17.0.35",
2294 + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz",
2295 + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg=="
2296 + },
2297 + "@types/webidl-conversions": {
2298 + "version": "6.1.1",
2299 + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
2300 + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
2301 + },
2302 + "@types/whatwg-url": {
2303 + "version": "8.2.1",
2304 + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz",
2305 + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==",
2306 + "requires": {
2307 + "@types/node": "*",
2308 + "@types/webidl-conversions": "*"
2309 + }
2310 + },
1883 "abbrev": { 2311 "abbrev": {
1884 "version": "1.1.1", 2312 "version": "1.1.1",
1885 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 2313 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
...@@ -1940,6 +2368,16 @@ ...@@ -1940,6 +2368,16 @@
1940 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2368 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1941 "dev": true 2369 "dev": true
1942 }, 2370 },
2371 + "base64-js": {
2372 + "version": "1.5.1",
2373 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
2374 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
2375 + },
2376 + "bcryptjs": {
2377 + "version": "2.4.3",
2378 + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
2379 + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
2380 + },
1943 "binary-extensions": { 2381 "binary-extensions": {
1944 "version": "2.2.0", 2382 "version": "2.2.0",
1945 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 2383 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
...@@ -2000,6 +2438,28 @@ ...@@ -2000,6 +2438,28 @@
2000 "fill-range": "^7.0.1" 2438 "fill-range": "^7.0.1"
2001 } 2439 }
2002 }, 2440 },
2441 + "bson": {
2442 + "version": "4.6.4",
2443 + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz",
2444 + "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==",
2445 + "requires": {
2446 + "buffer": "^5.6.0"
2447 + }
2448 + },
2449 + "buffer": {
2450 + "version": "5.7.1",
2451 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
2452 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
2453 + "requires": {
2454 + "base64-js": "^1.3.1",
2455 + "ieee754": "^1.1.13"
2456 + }
2457 + },
2458 + "buffer-equal-constant-time": {
2459 + "version": "1.0.1",
2460 + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
2461 + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
2462 + },
2003 "bytes": { 2463 "bytes": {
2004 "version": "3.1.2", 2464 "version": "3.1.2",
2005 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 2465 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
...@@ -2209,6 +2669,11 @@ ...@@ -2209,6 +2669,11 @@
2209 "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", 2669 "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
2210 "dev": true 2670 "dev": true
2211 }, 2671 },
2672 + "denque": {
2673 + "version": "2.0.1",
2674 + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
2675 + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ=="
2676 + },
2212 "depd": { 2677 "depd": {
2213 "version": "2.0.0", 2678 "version": "2.0.0",
2214 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 2679 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
...@@ -2228,12 +2693,25 @@ ...@@ -2228,12 +2693,25 @@
2228 "is-obj": "^2.0.0" 2693 "is-obj": "^2.0.0"
2229 } 2694 }
2230 }, 2695 },
2696 + "dotenv": {
2697 + "version": "16.0.1",
2698 + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz",
2699 + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ=="
2700 + },
2231 "duplexer3": { 2701 "duplexer3": {
2232 "version": "0.1.4", 2702 "version": "0.1.4",
2233 "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 2703 "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
2234 "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", 2704 "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
2235 "dev": true 2705 "dev": true
2236 }, 2706 },
2707 + "ecdsa-sig-formatter": {
2708 + "version": "1.0.11",
2709 + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
2710 + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
2711 + "requires": {
2712 + "safe-buffer": "^5.0.1"
2713 + }
2714 + },
2237 "ee-first": { 2715 "ee-first": {
2238 "version": "1.1.1", 2716 "version": "1.1.1",
2239 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 2717 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
...@@ -2313,6 +2791,11 @@ ...@@ -2313,6 +2791,11 @@
2313 "vary": "~1.1.2" 2791 "vary": "~1.1.2"
2314 } 2792 }
2315 }, 2793 },
2794 + "express-async-handler": {
2795 + "version": "1.2.0",
2796 + "resolved": "https://registry.npmjs.org/express-async-handler/-/express-async-handler-1.2.0.tgz",
2797 + "integrity": "sha512-rCSVtPXRmQSW8rmik/AIb2P0op6l7r1fMW538yyvTMltCO4xQEWMmobfrIxN2V1/mVrgxB8Az3reYF6yUZw37w=="
2798 + },
2316 "fill-range": { 2799 "fill-range": {
2317 "version": "7.0.1", 2800 "version": "7.0.1",
2318 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2801 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
...@@ -2471,6 +2954,11 @@ ...@@ -2471,6 +2954,11 @@
2471 "safer-buffer": ">= 2.1.2 < 3" 2954 "safer-buffer": ">= 2.1.2 < 3"
2472 } 2955 }
2473 }, 2956 },
2957 + "ieee754": {
2958 + "version": "1.2.1",
2959 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
2960 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
2961 + },
2474 "ignore-by-default": { 2962 "ignore-by-default": {
2475 "version": "1.0.1", 2963 "version": "1.0.1",
2476 "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 2964 "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
...@@ -2500,6 +2988,11 @@ ...@@ -2500,6 +2988,11 @@
2500 "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", 2988 "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
2501 "dev": true 2989 "dev": true
2502 }, 2990 },
2991 + "ip": {
2992 + "version": "1.1.8",
2993 + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
2994 + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
2995 + },
2503 "ipaddr.js": { 2996 "ipaddr.js": {
2504 "version": "1.9.1", 2997 "version": "1.9.1",
2505 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 2998 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
...@@ -2596,6 +3089,54 @@ ...@@ -2596,6 +3089,54 @@
2596 "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", 3089 "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
2597 "dev": true 3090 "dev": true
2598 }, 3091 },
3092 + "jsonwebtoken": {
3093 + "version": "8.5.1",
3094 + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
3095 + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
3096 + "requires": {
3097 + "jws": "^3.2.2",
3098 + "lodash.includes": "^4.3.0",
3099 + "lodash.isboolean": "^3.0.3",
3100 + "lodash.isinteger": "^4.0.4",
3101 + "lodash.isnumber": "^3.0.3",
3102 + "lodash.isplainobject": "^4.0.6",
3103 + "lodash.isstring": "^4.0.1",
3104 + "lodash.once": "^4.0.0",
3105 + "ms": "^2.1.1",
3106 + "semver": "^5.6.0"
3107 + },
3108 + "dependencies": {
3109 + "ms": {
3110 + "version": "2.1.3",
3111 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
3112 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
3113 + }
3114 + }
3115 + },
3116 + "jwa": {
3117 + "version": "1.4.1",
3118 + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
3119 + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
3120 + "requires": {
3121 + "buffer-equal-constant-time": "1.0.1",
3122 + "ecdsa-sig-formatter": "1.0.11",
3123 + "safe-buffer": "^5.0.1"
3124 + }
3125 + },
3126 + "jws": {
3127 + "version": "3.2.2",
3128 + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
3129 + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
3130 + "requires": {
3131 + "jwa": "^1.4.1",
3132 + "safe-buffer": "^5.0.1"
3133 + }
3134 + },
3135 + "kareem": {
3136 + "version": "2.3.5",
3137 + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.5.tgz",
3138 + "integrity": "sha512-qxCyQtp3ioawkiRNQr/v8xw9KIviMSSNmy+63Wubj7KmMn3g7noRXIZB4vPCAP+ETi2SR8eH6CvmlKZuGpoHOg=="
3139 + },
2599 "keyv": { 3140 "keyv": {
2600 "version": "3.1.0", 3141 "version": "3.1.0",
2601 "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 3142 "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
...@@ -2614,6 +3155,41 @@ ...@@ -2614,6 +3155,41 @@
2614 "package-json": "^6.3.0" 3155 "package-json": "^6.3.0"
2615 } 3156 }
2616 }, 3157 },
3158 + "lodash.includes": {
3159 + "version": "4.3.0",
3160 + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
3161 + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
3162 + },
3163 + "lodash.isboolean": {
3164 + "version": "3.0.3",
3165 + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
3166 + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
3167 + },
3168 + "lodash.isinteger": {
3169 + "version": "4.0.4",
3170 + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
3171 + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
3172 + },
3173 + "lodash.isnumber": {
3174 + "version": "3.0.3",
3175 + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
3176 + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
3177 + },
3178 + "lodash.isplainobject": {
3179 + "version": "4.0.6",
3180 + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
3181 + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
3182 + },
3183 + "lodash.isstring": {
3184 + "version": "4.0.1",
3185 + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
3186 + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
3187 + },
3188 + "lodash.once": {
3189 + "version": "4.1.1",
3190 + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
3191 + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
3192 + },
2617 "lowercase-keys": { 3193 "lowercase-keys": {
2618 "version": "1.0.1", 3194 "version": "1.0.1",
2619 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 3195 "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
...@@ -2651,6 +3227,12 @@ ...@@ -2651,6 +3227,12 @@
2651 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 3227 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
2652 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 3228 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
2653 }, 3229 },
3230 + "memory-pager": {
3231 + "version": "1.5.0",
3232 + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
3233 + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
3234 + "optional": true
3235 + },
2654 "merge-descriptors": { 3236 "merge-descriptors": {
2655 "version": "1.0.1", 3237 "version": "1.0.1",
2656 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 3238 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
...@@ -2700,6 +3282,76 @@ ...@@ -2700,6 +3282,76 @@
2700 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", 3282 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
2701 "dev": true 3283 "dev": true
2702 }, 3284 },
3285 + "mongodb": {
3286 + "version": "4.5.0",
3287 + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.5.0.tgz",
3288 + "integrity": "sha512-A2l8MjEpKojnhbCM0MK3+UOGUSGvTNNSv7AkP1fsT7tkambrkkqN/5F2y+PhzsV0Nbv58u04TETpkaSEdI2zKA==",
3289 + "requires": {
3290 + "bson": "^4.6.2",
3291 + "denque": "^2.0.1",
3292 + "mongodb-connection-string-url": "^2.5.2",
3293 + "saslprep": "^1.0.3",
3294 + "socks": "^2.6.2"
3295 + }
3296 + },
3297 + "mongodb-connection-string-url": {
3298 + "version": "2.5.2",
3299 + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz",
3300 + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==",
3301 + "requires": {
3302 + "@types/whatwg-url": "^8.2.1",
3303 + "whatwg-url": "^11.0.0"
3304 + }
3305 + },
3306 + "mongoose": {
3307 + "version": "6.3.4",
3308 + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.3.4.tgz",
3309 + "integrity": "sha512-UP0azyGMdY+2YNbJUHeHhnVw5vPzCqs4GQDUwHkilif/rwmSZktUQhQWMp1pUgRNeF2JC30vWGLrInZxD7K/Qw==",
3310 + "requires": {
3311 + "bson": "^4.6.2",
3312 + "kareem": "2.3.5",
3313 + "mongodb": "4.5.0",
3314 + "mpath": "0.9.0",
3315 + "mquery": "4.0.3",
3316 + "ms": "2.1.3",
3317 + "sift": "16.0.0"
3318 + },
3319 + "dependencies": {
3320 + "ms": {
3321 + "version": "2.1.3",
3322 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
3323 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
3324 + }
3325 + }
3326 + },
3327 + "mpath": {
3328 + "version": "0.9.0",
3329 + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
3330 + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew=="
3331 + },
3332 + "mquery": {
3333 + "version": "4.0.3",
3334 + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz",
3335 + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==",
3336 + "requires": {
3337 + "debug": "4.x"
3338 + },
3339 + "dependencies": {
3340 + "debug": {
3341 + "version": "4.3.4",
3342 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
3343 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
3344 + "requires": {
3345 + "ms": "2.1.2"
3346 + }
3347 + },
3348 + "ms": {
3349 + "version": "2.1.2",
3350 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
3351 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
3352 + }
3353 + }
3354 + },
2703 "ms": { 3355 "ms": {
2704 "version": "2.0.0", 3356 "version": "2.0.0",
2705 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3357 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
...@@ -2861,6 +3513,11 @@ ...@@ -2861,6 +3513,11 @@
2861 "once": "^1.3.1" 3513 "once": "^1.3.1"
2862 } 3514 }
2863 }, 3515 },
3516 + "punycode": {
3517 + "version": "2.1.1",
3518 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
3519 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
3520 + },
2864 "pupa": { 3521 "pupa": {
2865 "version": "2.1.1", 3522 "version": "2.1.1",
2866 "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", 3523 "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
...@@ -2960,11 +3617,19 @@ ...@@ -2960,11 +3617,19 @@
2960 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3617 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
2961 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 3618 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
2962 }, 3619 },
3620 + "saslprep": {
3621 + "version": "1.0.3",
3622 + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
3623 + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
3624 + "optional": true,
3625 + "requires": {
3626 + "sparse-bitfield": "^3.0.3"
3627 + }
3628 + },
2963 "semver": { 3629 "semver": {
2964 "version": "5.7.1", 3630 "version": "5.7.1",
2965 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 3631 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
2966 - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 3632 + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
2967 - "dev": true
2968 }, 3633 },
2969 "semver-diff": { 3634 "semver-diff": {
2970 "version": "3.1.1", 3635 "version": "3.1.1",
...@@ -3036,12 +3701,40 @@ ...@@ -3036,12 +3701,40 @@
3036 "object-inspect": "^1.9.0" 3701 "object-inspect": "^1.9.0"
3037 } 3702 }
3038 }, 3703 },
3704 + "sift": {
3705 + "version": "16.0.0",
3706 + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz",
3707 + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ=="
3708 + },
3039 "signal-exit": { 3709 "signal-exit": {
3040 "version": "3.0.7", 3710 "version": "3.0.7",
3041 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3711 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
3042 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 3712 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
3043 "dev": true 3713 "dev": true
3044 }, 3714 },
3715 + "smart-buffer": {
3716 + "version": "4.2.0",
3717 + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
3718 + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
3719 + },
3720 + "socks": {
3721 + "version": "2.6.2",
3722 + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
3723 + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
3724 + "requires": {
3725 + "ip": "^1.1.5",
3726 + "smart-buffer": "^4.2.0"
3727 + }
3728 + },
3729 + "sparse-bitfield": {
3730 + "version": "3.0.3",
3731 + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
3732 + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
3733 + "optional": true,
3734 + "requires": {
3735 + "memory-pager": "^1.0.2"
3736 + }
3737 + },
3045 "statuses": { 3738 "statuses": {
3046 "version": "2.0.1", 3739 "version": "2.0.1",
3047 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 3740 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
...@@ -3111,6 +3804,14 @@ ...@@ -3111,6 +3804,14 @@
3111 "nopt": "~1.0.10" 3804 "nopt": "~1.0.10"
3112 } 3805 }
3113 }, 3806 },
3807 + "tr46": {
3808 + "version": "3.0.0",
3809 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
3810 + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
3811 + "requires": {
3812 + "punycode": "^2.1.1"
3813 + }
3814 + },
3114 "type-fest": { 3815 "type-fest": {
3115 "version": "0.20.2", 3816 "version": "0.20.2",
3116 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 3817 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
...@@ -3207,6 +3908,20 @@ ...@@ -3207,6 +3908,20 @@
3207 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 3908 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
3208 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 3909 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
3209 }, 3910 },
3911 + "webidl-conversions": {
3912 + "version": "7.0.0",
3913 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
3914 + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
3915 + },
3916 + "whatwg-url": {
3917 + "version": "11.0.0",
3918 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
3919 + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
3920 + "requires": {
3921 + "tr46": "^3.0.0",
3922 + "webidl-conversions": "^7.0.0"
3923 + }
3924 + },
3210 "widest-line": { 3925 "widest-line": {
3211 "version": "3.1.0", 3926 "version": "3.1.0",
3212 "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 3927 "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
......
1 { 1 {
2 "name": "weather_chatbot", 2 "name": "weather_chatbot",
3 "version": "1.0.0", 3 "version": "1.0.0",
4 - "description": "", 4 + "description": "web-app weather chatbot",
5 - "main": "index.js", 5 + "main": "server.js",
6 "scripts": { 6 "scripts": {
7 - "test": "echo \"Error: no test specified\" && exit 1" 7 + "start": "node server.js",
8 + "dev": "nodemon server.js"
8 }, 9 },
9 "repository": { 10 "repository": {
10 "type": "git", 11 "type": "git",
...@@ -13,7 +14,12 @@ ...@@ -13,7 +14,12 @@
13 "author": "황선혁", 14 "author": "황선혁",
14 "license": "MIT", 15 "license": "MIT",
15 "dependencies": { 16 "dependencies": {
16 - "express": "^4.18.1" 17 + "bcryptjs": "^2.4.3",
18 + "dotenv": "^16.0.1",
19 + "express": "^4.18.1",
20 + "express-async-handler": "^1.2.0",
21 + "jsonwebtoken": "^8.5.1",
22 + "mongoose": "^6.3.4"
17 }, 23 },
18 "devDependencies": { 24 "devDependencies": {
19 "nodemon": "^2.0.16" 25 "nodemon": "^2.0.16"
......
1 +const express = require("express");
2 +const router = express.Router();
3 +const { signupUser, loginUser } = require("../actions/userActions");
4 +
5 +router.post("/", signupUser);
6 +router.post("/login", loginUser);
7 +
8 +module.exports = router;
1 +const express = require("express");
2 +const dotenv = require("dotenv").config();
3 +const { errorHandler } = require("./middleware/errorMiddleware");
4 +const connectDB = require("./config/db");
5 +const port = process.env.PORT || 8000;
6 +
7 +connectDB();
8 +const app = express();
9 +
10 +app.use(express.json());
11 +app.use(express.urlencoded({ extended: false }));
12 +
13 +app.use("/api/users", require("./routes/userRoutes"));
14 +
15 +app.use(errorHandler);
16 +
17 +app.listen(port, () => {
18 + console.log(`Server started on port ${port}`);
19 +});
1 -const express = require("express");
2 -const app = express();
3 -
4 -const PORT = 8000;
5 -
6 -app.listen(PORT, () => {
7 - console.log(`App listening on port ${PORT}`);
8 -});
9 -
10 -app.get("/", (req, res) => {
11 - res.send("Hello World!");
12 -});
13 -
14 -app.get("/login", (req, res) => {
15 - res.send("Hello World!");
16 -});
17 -
18 -app.get("/signup", (req, res) => {
19 - res.send("Hello World!");
20 -});