min1925k@gmail.com

Merge 'database'

# Conflicts:
#	app/routes/signup.js
1 +node_modules
...\ No newline at end of file ...\ No newline at end of file
...@@ -15,6 +15,12 @@ var csvRouter = require('./routes/csv') ...@@ -15,6 +15,12 @@ var csvRouter = require('./routes/csv')
15 var app = express(); 15 var app = express();
16 var router = express.Router(); 16 var router = express.Router();
17 17
18 +var cookieParser = require('cookie-parser')
19 +var ExpressSession = require('express-session')
20 +
21 +var database = require('./database/database');
22 +var config = require('./config');
23 +
18 24
19 // get port 25 // get port
20 var port = process.env.PORT || 3000; 26 var port = process.env.PORT || 3000;
...@@ -46,6 +52,13 @@ app.use('/signup',signupRouter); // sign up page route ...@@ -46,6 +52,13 @@ app.use('/signup',signupRouter); // sign up page route
46 app.use('/', indexRouter); // main page route 52 app.use('/', indexRouter); // main page route
47 53
48 54
55 +//Session 처리
56 +app.use(cookieParser());
57 +app.use(ExpressSession({
58 + secret:'key',
59 + resave: true,
60 + saveUninitialized:true
61 +}));
49 62
50 //모든 router 처리가 끝난 후 404 오류 페이지 처리 63 //모든 router 처리가 끝난 후 404 오류 페이지 처리
51 var errorHandler = expressErrorHandler({ 64 var errorHandler = expressErrorHandler({
...@@ -57,9 +70,25 @@ app.use(expressErrorHandler.httpError(404)); ...@@ -57,9 +70,25 @@ app.use(expressErrorHandler.httpError(404));
57 app.use(errorHandler); 70 app.use(errorHandler);
58 71
59 72
73 +// 프로세스 종료 시에 데이터베이스 연결 해제
74 +process.on('SIGTERM', function () {
75 + console.log("프로세스가 종료됩니다.");
76 + app.close();
77 +});
78 +
79 +app.on('close', function () {
80 + console.log("Express 서버 객체가 종료됩니다.");
81 + if (database.db) {
82 + database.db.close();
83 + }
84 +});
85 +
60 86
61 // for server listening 87 // for server listening
62 var server = http.createServer(app) 88 var server = http.createServer(app)
63 server.listen(port,function(){ 89 server.listen(port,function(){
64 console.log('익스프레스 서버를 시작했습니다.'); 90 console.log('익스프레스 서버를 시작했습니다.');
91 +
92 + database.init(app, config);
65 }) 93 })
94 +
......
1 +module.exports = {
2 + server_port: 3000,
3 + db_url: 'mongodb://oss:12341234@cluster0.us5lm.mongodb.net/?retryWrites=true&w=majority',
4 + db_schemas: [
5 + {file:'./user_schema', collection:'users3', schemaName:'UserSchema', modelName:'UserModel'}
6 + ]
7 +}
...\ No newline at end of file ...\ No newline at end of file
1 +var mongoose = require('mongoose');
2 +var db_url = 'mongodb+srv://oss:12341234@cluster0.us5lm.mongodb.net/?retryWrites=true&w=majority';
3 +// database 객체에 db, schema, model 모두 추가
4 +var database = {};
5 +
6 +// 초기화를 위해 호출하는 함수
7 +database.init = function(app, config) {
8 + console.log('init() 호출됨.');
9 +
10 + connect(app, config);
11 +}
12 +
13 +//데이터베이스에 연결하고 응답 객체의 속성으로 db 객체 추가
14 +function connect(app, config) {
15 + console.log('connect() 호출됨.');
16 +
17 + // 데이터베이스 연결 : config의 설정 사용
18 + mongoose.Promise = global.Promise; // mongoose의 Promise 객체는 global의 Promise 객체 사용하도록 함
19 + mongoose.connect(db_url);
20 +
21 + database.db = mongoose.connection;
22 +
23 + database.db.on('error', console.error.bind(console, 'mongoose connection error.'));
24 + database.db.on('open', function () {
25 + console.log('데이터베이스에 연결되었습니다. : ' + db_url);
26 +
27 + // config에 등록된 스키마 및 모델 객체 생성
28 + createSchema(app, config);
29 +
30 + });
31 + database.db.on('disconnected', connect);
32 +
33 +}
34 +
35 +// config에 정의된 스키마 및 모델 객체 생성
36 +function createSchema(app, config) {
37 + var schemaLen = config.db_schemas.length;
38 + console.log('설정에 정의된 스키마의 수 : %d', schemaLen);
39 +
40 + for (var i = 0; i < schemaLen; i++) {
41 + var curItem = config.db_schemas[i];
42 +
43 + // 모듈 파일에서 모듈 불러온 후 createSchema() 함수 호출하기
44 + var curSchema = require(curItem.file).createSchema(mongoose);
45 + console.log('%s 모듈을 불러들인 후 스키마 정의함.', curItem.file);
46 +
47 + // User 모델 정의
48 + var curModel = mongoose.model(curItem.collection, curSchema);
49 + console.log('%s 컬렉션을 위해 모델 정의함.', curItem.collection);
50 +
51 + // database 객체에 속성으로 추가
52 + database[curItem.schemaName] = curSchema;
53 + database[curItem.modelName] = curModel;
54 + console.log('스키마 이름 [%s], 모델 이름 [%s] 이 database 객체의 속성으로 추가됨.', curItem.schemaName, curItem.modelName);
55 + }
56 +
57 + app.set('database', database);
58 + console.log('database 객체가 app 객체의 속성으로 추가됨.');
59 +}
60 +
61 +
62 +// database 객체를 module.exports에 할당
63 +module.exports = database;
...\ No newline at end of file ...\ No newline at end of file
1 +var crypto = require('crypto');
2 +
3 +var Schema = {};
4 +
5 +Schema.createSchema = function(mongoose) {
6 +
7 + // 스키마 정의
8 + var UserSchema = mongoose.Schema({
9 + id: {type: String, required: true, unique: true, 'default':''},
10 + hashed_password: {type: String, required: true, 'default':''},
11 + salt: {type:String, required:true},
12 + name: {type: String, index: 'hashed', 'default':''},
13 + age: {type: Number, 'default': -1},
14 + created_at: {type: Date, index: {unique: false}, 'default': Date.now},
15 + updated_at: {type: Date, index: {unique: false}, 'default': Date.now}
16 + });
17 +
18 + // password를 virtual 메소드로 정의 : MongoDB에 저장되지 않는 편리한 속성임. 특정 속성을 지정하고 set, get 메소드를 정의함
19 + UserSchema
20 + .virtual('password')
21 + .set(function(password) {
22 + this._password = password;
23 + this.salt = this.makeSalt();
24 + this.hashed_password = this.encryptPassword(password);
25 + console.log('virtual password 호출됨 : ' + this.hashed_password);
26 + })
27 + .get(function() { return this._password });
28 +
29 + // 스키마에 모델 인스턴스에서 사용할 수 있는 메소드 추가
30 + // 비밀번호 암호화 메소드
31 + UserSchema.method('encryptPassword', function(plainText, inSalt) {
32 + if (inSalt) {
33 + return crypto.createHmac('sha1', inSalt).update(plainText).digest('hex');
34 + } else {
35 + return crypto.createHmac('sha1', this.salt).update(plainText).digest('hex');
36 + }
37 + });
38 +
39 + // salt 값 만들기 메소드
40 + UserSchema.method('makeSalt', function() {
41 + return Math.round((new Date().valueOf() * Math.random())) + '';
42 + });
43 +
44 + // 인증 메소드 - 입력된 비밀번호와 비교 (true/false 리턴)
45 + UserSchema.method('authenticate', function(plainText, inSalt, hashed_password) {
46 + if (inSalt) {
47 + console.log('authenticate 호출됨 : %s -> %s : %s', plainText, this.encryptPassword(plainText, inSalt), hashed_password);
48 + return this.encryptPassword(plainText, inSalt) === hashed_password;
49 + } else {
50 + console.log('authenticate 호출됨 : %s -> %s : %s', plainText, this.encryptPassword(plainText), this.hashed_password);
51 + return this.encryptPassword(plainText) === this.hashed_password;
52 + }
53 + });
54 +
55 + // 값이 유효한지 확인하는 함수 정의
56 + var validatePresenceOf = function(value) {
57 + return value && value.length;
58 + };
59 +
60 + // 저장 시의 트리거 함수 정의 (password 필드가 유효하지 않으면 에러 발생)
61 + UserSchema.pre('save', function(next) {
62 + if (!this.isNew) return next();
63 +
64 + if (!validatePresenceOf(this.password)) {
65 + next(new Error('유효하지 않은 password 필드입니다.'));
66 + } else {
67 + next();
68 + }
69 + })
70 +
71 + // 필수 속성에 대한 유효성 확인 (길이값 체크)
72 + UserSchema.path('id').validate(function (id) {
73 + return id.length;
74 + }, 'id 칼럼의 값이 없습니다.');
75 +
76 + UserSchema.path('name').validate(function (name) {
77 + return name.length;
78 + }, 'name 칼럼의 값이 없습니다.');
79 +
80 + UserSchema.path('hashed_password').validate(function (hashed_password) {
81 + return hashed_password.length;
82 + }, 'hashed_password 칼럼의 값이 없습니다.');
83 +
84 +
85 + // 스키마에 static 메소드 추가
86 + UserSchema.static('findById', function(id, callback) {
87 + return this.find({id:id}, callback);
88 + });
89 +
90 + UserSchema.static('findAll', function(callback) {
91 + return this.find({}, callback);
92 + });
93 +
94 + console.log('UserSchema 정의함.');
95 +
96 + return UserSchema;
97 +};
98 +
99 +// module.exports에 UserSchema 객체 직접 할당
100 +module.exports = Schema;
101 +
1 +var Conn = require('../database/database')
1 var express = require('express') 2 var express = require('express')
2 -var router = express.Router() 3 +var router = express.Router();
3 4
4 //라우팅 함수 등록 5 //라우팅 함수 등록
5 6
6 router.get('/',function(req,res){ 7 router.get('/',function(req,res){
8 +
7 res.render('login.html') 9 res.render('login.html')
8 }); 10 });
9 11
10 router.post('/process', function(req, res) { 12 router.post('/process', function(req, res) {
11 - console.log('/process/login 처리함'); 13 + console.log('/login/process 처리함');
12 14
13 var paramId = req.body.id || req.query.id; 15 var paramId = req.body.id || req.query.id;
14 var paramPassword = req.body.password || req.query.password; 16 var paramPassword = req.body.password || req.query.password;
15 //GET, POST 모두 고려해서 둘 다 검사 17 //GET, POST 모두 고려해서 둘 다 검사
16 18
17 - res.writeHead('200', { 'Content-Type': 'text/html;charset=utf8' }); 19 + // 데이터베이스 객체 참조
18 - res.write('<h1>Result form Express Server</h1>'); 20 + var database = req.app.get('database');
19 - res.write('<div><p>Param id : ' + paramId + '</p></div>'); 21 +
20 - res.write('<div><p>Param password : ' + paramPassword + '</p></div>'); 22 + // 데이터베이스 객체가 초기화된 경우, authUser 함수 호출하여 사용자 인증
21 - res.write("<br><br><a href ='/login.html'>로그인 페이지로 돌아가기</a>"); 23 + if (database.db) {
22 - res.end(); 24 + authUser(database, paramId, paramPassword, function(err, docs) {
25 + // 에러 발생 시, 클라이언트로 에러 전송
26 + if (err) {
27 + console.error('사용자 로그인 중 에러 발생 : ' + err.stack);
28 +
29 + res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
30 + res.write('<h2>사용자 로그인 중 에러 발생</h2>');
31 + res.write('<p>' + err.stack + '</p>');
32 + res.end();
33 +
34 + return;
35 + }
36 +
37 + // 조회된 레코드가 있으면 성공 응답 전송
38 + if (docs) {
39 + console.dir(docs);
40 +
41 + // 조회 결과에서 사용자 이름 확인
42 + var username = docs[0].name;
43 +
44 + res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
45 + res.write('<h1>로그인 성공</h1>');
46 + res.write('<div><p>사용자 아이디 : ' + paramId + '</p></div>');
47 + res.write('<div><p>사용자 이름 : ' + username + '</p></div>');
48 + res.write("<br><br><a href='/login'>다시 로그인하기</a>");
49 + res.end();
50 +
51 + } else { // 조회된 레코드가 없는 경우 실패 응답 전송
52 + res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
53 + res.write('<h1>로그인 실패</h1>');
54 + res.write('<div><p>아이디와 패스워드를 다시 확인하십시오.</p></div>');
55 + res.write("<br><br><a href='/login'>다시 로그인하기</a>");
56 + res.end();
57 + }
58 + });
59 + } else { // 데이터베이스 객체가 초기화되지 않은 경우 실패 응답 전송
60 + res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
61 + res.write('<h2>데이터베이스 연결 실패</h2>');
62 + res.write('<div><p>데이터베이스에 연결하지 못했습니다.</p></div>');
63 + res.end();
64 + }
65 +
23 }); 66 });
24 67
68 +//사용자를 인증하는 함수 : 아이디로 먼저 찾고 비밀번호를 그 다음에 비교하도록 함
69 +var authUser = function(database, id, password, callback) {
70 + console.log('authUser 호출됨.');
71 +
72 + // 1. 아이디를 이용해 검색
73 + database.UserModel.findById(id, function(err, results) {
74 + if (err) {
75 + callback(err, null);
76 + return;
77 + }
78 +
79 + console.log('아이디 [%s]로 사용자 검색결과', id);
80 + console.dir(results);
81 +
82 + if (results.length > 0) {
83 + console.log('아이디와 일치하는 사용자 찾음.');
84 +
85 + // 2. 패스워드 확인 : 모델 인스턴스를 객체를 만들고 authenticate() 메소드 호출
86 + var user = new database.UserModel({id:id});
87 + var authenticated = user.authenticate(password, results[0]._doc.salt, results[0]._doc.hashed_password);
88 + if (authenticated) {
89 + console.log('비밀번호 일치함');
90 + callback(null, results);
91 + } else {
92 + console.log('비밀번호 일치하지 않음');
93 + callback(null, null);
94 + }
95 +
96 + } else {
97 + console.log("아이디와 일치하는 사용자를 찾지 못함.");
98 + callback(null, null);
99 + }
100 +
101 + });
102 +
103 +}
104 +
25 module.exports = router 105 module.exports = router
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -53,9 +53,9 @@ ...@@ -53,9 +53,9 @@
53 <div class="row justify-content-center"> 53 <div class="row justify-content-center">
54 <div class="col-lg-8 col-xxl-6"> 54 <div class="col-lg-8 col-xxl-6">
55 <div class="text-center my-5"> 55 <div class="text-center my-5">
56 - <h1>로그인</h1> 56 + <h1>회원가입</h1>
57 <br> 57 <br>
58 - <form method="post" action="/login/process"> 58 + <form method="post" action="/signup/process">
59 <table> 59 <table>
60 <tr> 60 <tr>
61 <td><label>이름</label></td> 61 <td><label>이름</label></td>
......
1 -../ejs/bin/cli.js
...\ No newline at end of file ...\ No newline at end of file
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + exec "$basedir/node" "$basedir/../ejs/bin/cli.js" "$@"
10 +else
11 + exec node "$basedir/../ejs/bin/cli.js" "$@"
12 +fi
......
1 -../jake/bin/cli.js
...\ No newline at end of file ...\ No newline at end of file
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + exec "$basedir/node" "$basedir/../jake/bin/cli.js" "$@"
10 +else
11 + exec node "$basedir/../jake/bin/cli.js" "$@"
12 +fi
......
1 -../mime/cli.js
...\ No newline at end of file ...\ No newline at end of file
1 +#!/bin/sh
2 +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3 +
4 +case `uname` in
5 + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
6 +esac
7 +
8 +if [ -x "$basedir/node" ]; then
9 + exec "$basedir/node" "$basedir/../mime/cli.js" "$@"
10 +else
11 + exec node "$basedir/../mime/cli.js" "$@"
12 +fi
......
...@@ -14,6 +14,25 @@ ...@@ -14,6 +14,25 @@
14 "url": "https://opencollective.com/popperjs" 14 "url": "https://opencollective.com/popperjs"
15 } 15 }
16 }, 16 },
17 + "node_modules/@types/node": {
18 + "version": "17.0.35",
19 + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz",
20 + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg=="
21 + },
22 + "node_modules/@types/webidl-conversions": {
23 + "version": "6.1.1",
24 + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
25 + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
26 + },
27 + "node_modules/@types/whatwg-url": {
28 + "version": "8.2.1",
29 + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz",
30 + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==",
31 + "dependencies": {
32 + "@types/node": "*",
33 + "@types/webidl-conversions": "*"
34 + }
35 + },
17 "node_modules/accepts": { 36 "node_modules/accepts": {
18 "version": "1.3.8", 37 "version": "1.3.8",
19 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 38 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
...@@ -55,6 +74,33 @@ ...@@ -55,6 +74,33 @@
55 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 74 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
56 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 75 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
57 }, 76 },
77 + "node_modules/base64-js": {
78 + "version": "1.5.1",
79 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
80 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
81 + "funding": [
82 + {
83 + "type": "github",
84 + "url": "https://github.com/sponsors/feross"
85 + },
86 + {
87 + "type": "patreon",
88 + "url": "https://www.patreon.com/feross"
89 + },
90 + {
91 + "type": "consulting",
92 + "url": "https://feross.org/support"
93 + }
94 + ]
95 + },
96 + "node_modules/bignumber.js": {
97 + "version": "9.0.0",
98 + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
99 + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==",
100 + "engines": {
101 + "node": "*"
102 + }
103 + },
58 "node_modules/body-parser": { 104 "node_modules/body-parser": {
59 "version": "1.20.0", 105 "version": "1.20.0",
60 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", 106 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
...@@ -99,6 +145,40 @@ ...@@ -99,6 +145,40 @@
99 "concat-map": "0.0.1" 145 "concat-map": "0.0.1"
100 } 146 }
101 }, 147 },
148 + "node_modules/bson": {
149 + "version": "4.6.4",
150 + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz",
151 + "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==",
152 + "dependencies": {
153 + "buffer": "^5.6.0"
154 + },
155 + "engines": {
156 + "node": ">=6.9.0"
157 + }
158 + },
159 + "node_modules/buffer": {
160 + "version": "5.7.1",
161 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
162 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
163 + "funding": [
164 + {
165 + "type": "github",
166 + "url": "https://github.com/sponsors/feross"
167 + },
168 + {
169 + "type": "patreon",
170 + "url": "https://www.patreon.com/feross"
171 + },
172 + {
173 + "type": "consulting",
174 + "url": "https://feross.org/support"
175 + }
176 + ],
177 + "dependencies": {
178 + "base64-js": "^1.3.1",
179 + "ieee754": "^1.1.13"
180 + }
181 + },
102 "node_modules/bytes": { 182 "node_modules/bytes": {
103 "version": "3.1.2", 183 "version": "3.1.2",
104 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 184 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
...@@ -182,11 +262,42 @@ ...@@ -182,11 +262,42 @@
182 "node": ">= 0.6" 262 "node": ">= 0.6"
183 } 263 }
184 }, 264 },
265 + "node_modules/cookie-parser": {
266 + "version": "1.4.6",
267 + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
268 + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
269 + "dependencies": {
270 + "cookie": "0.4.1",
271 + "cookie-signature": "1.0.6"
272 + },
273 + "engines": {
274 + "node": ">= 0.8.0"
275 + }
276 + },
277 + "node_modules/cookie-parser/node_modules/cookie": {
278 + "version": "0.4.1",
279 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
280 + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
281 + "engines": {
282 + "node": ">= 0.6"
283 + }
284 + },
185 "node_modules/cookie-signature": { 285 "node_modules/cookie-signature": {
186 "version": "1.0.6", 286 "version": "1.0.6",
187 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 287 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
188 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 288 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
189 }, 289 },
290 + "node_modules/core-util-is": {
291 + "version": "1.0.3",
292 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
293 + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
294 + },
295 + "node_modules/crypto": {
296 + "version": "1.0.1",
297 + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
298 + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==",
299 + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in."
300 + },
190 "node_modules/debug": { 301 "node_modules/debug": {
191 "version": "2.6.9", 302 "version": "2.6.9",
192 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 303 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
...@@ -195,6 +306,14 @@ ...@@ -195,6 +306,14 @@
195 "ms": "2.0.0" 306 "ms": "2.0.0"
196 } 307 }
197 }, 308 },
309 + "node_modules/denque": {
310 + "version": "2.0.1",
311 + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
312 + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==",
313 + "engines": {
314 + "node": ">=0.10"
315 + }
316 + },
198 "node_modules/depd": { 317 "node_modules/depd": {
199 "version": "2.0.0", 318 "version": "2.0.0",
200 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 319 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
...@@ -301,6 +420,32 @@ ...@@ -301,6 +420,32 @@
301 "mout": "0.12.0" 420 "mout": "0.12.0"
302 } 421 }
303 }, 422 },
423 + "node_modules/express-session": {
424 + "version": "1.17.3",
425 + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz",
426 + "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==",
427 + "dependencies": {
428 + "cookie": "0.4.2",
429 + "cookie-signature": "1.0.6",
430 + "debug": "2.6.9",
431 + "depd": "~2.0.0",
432 + "on-headers": "~1.0.2",
433 + "parseurl": "~1.3.3",
434 + "safe-buffer": "5.2.1",
435 + "uid-safe": "~2.1.5"
436 + },
437 + "engines": {
438 + "node": ">= 0.8.0"
439 + }
440 + },
441 + "node_modules/express-session/node_modules/cookie": {
442 + "version": "0.4.2",
443 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
444 + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
445 + "engines": {
446 + "node": ">= 0.6"
447 + }
448 + },
304 "node_modules/filelist": { 449 "node_modules/filelist": {
305 "version": "1.0.3", 450 "version": "1.0.3",
306 "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", 451 "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz",
...@@ -440,11 +585,35 @@ ...@@ -440,11 +585,35 @@
440 "node": ">=0.10.0" 585 "node": ">=0.10.0"
441 } 586 }
442 }, 587 },
588 + "node_modules/ieee754": {
589 + "version": "1.2.1",
590 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
591 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
592 + "funding": [
593 + {
594 + "type": "github",
595 + "url": "https://github.com/sponsors/feross"
596 + },
597 + {
598 + "type": "patreon",
599 + "url": "https://www.patreon.com/feross"
600 + },
601 + {
602 + "type": "consulting",
603 + "url": "https://feross.org/support"
604 + }
605 + ]
606 + },
443 "node_modules/inherits": { 607 "node_modules/inherits": {
444 "version": "2.0.4", 608 "version": "2.0.4",
445 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 609 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
446 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 610 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
447 }, 611 },
612 + "node_modules/ip": {
613 + "version": "1.1.8",
614 + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
615 + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
616 + },
448 "node_modules/ipaddr.js": { 617 "node_modules/ipaddr.js": {
449 "version": "1.9.1", 618 "version": "1.9.1",
450 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 619 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
...@@ -453,6 +622,11 @@ ...@@ -453,6 +622,11 @@
453 "node": ">= 0.10" 622 "node": ">= 0.10"
454 } 623 }
455 }, 624 },
625 + "node_modules/isarray": {
626 + "version": "1.0.0",
627 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
628 + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
629 + },
456 "node_modules/jake": { 630 "node_modules/jake": {
457 "version": "10.8.5", 631 "version": "10.8.5",
458 "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", 632 "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
...@@ -470,6 +644,11 @@ ...@@ -470,6 +644,11 @@
470 "node": ">=10" 644 "node": ">=10"
471 } 645 }
472 }, 646 },
647 + "node_modules/kareem": {
648 + "version": "2.3.5",
649 + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.5.tgz",
650 + "integrity": "sha512-qxCyQtp3ioawkiRNQr/v8xw9KIviMSSNmy+63Wubj7KmMn3g7noRXIZB4vPCAP+ETi2SR8eH6CvmlKZuGpoHOg=="
651 + },
473 "node_modules/media-typer": { 652 "node_modules/media-typer": {
474 "version": "0.3.0", 653 "version": "0.3.0",
475 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 654 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
...@@ -478,6 +657,12 @@ ...@@ -478,6 +657,12 @@
478 "node": ">= 0.6" 657 "node": ">= 0.6"
479 } 658 }
480 }, 659 },
660 + "node_modules/memory-pager": {
661 + "version": "1.5.0",
662 + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
663 + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
664 + "optional": true
665 + },
481 "node_modules/merge-descriptors": { 666 "node_modules/merge-descriptors": {
482 "version": "1.0.1", 667 "version": "1.0.1",
483 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 668 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
...@@ -532,16 +717,127 @@ ...@@ -532,16 +717,127 @@
532 "node": "*" 717 "node": "*"
533 } 718 }
534 }, 719 },
720 + "node_modules/mongodb": {
721 + "version": "4.5.0",
722 + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.5.0.tgz",
723 + "integrity": "sha512-A2l8MjEpKojnhbCM0MK3+UOGUSGvTNNSv7AkP1fsT7tkambrkkqN/5F2y+PhzsV0Nbv58u04TETpkaSEdI2zKA==",
724 + "dependencies": {
725 + "bson": "^4.6.2",
726 + "denque": "^2.0.1",
727 + "mongodb-connection-string-url": "^2.5.2",
728 + "socks": "^2.6.2"
729 + },
730 + "engines": {
731 + "node": ">=12.9.0"
732 + },
733 + "optionalDependencies": {
734 + "saslprep": "^1.0.3"
735 + }
736 + },
737 + "node_modules/mongodb-connection-string-url": {
738 + "version": "2.5.2",
739 + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz",
740 + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==",
741 + "dependencies": {
742 + "@types/whatwg-url": "^8.2.1",
743 + "whatwg-url": "^11.0.0"
744 + }
745 + },
746 + "node_modules/mongoose": {
747 + "version": "6.3.4",
748 + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.3.4.tgz",
749 + "integrity": "sha512-UP0azyGMdY+2YNbJUHeHhnVw5vPzCqs4GQDUwHkilif/rwmSZktUQhQWMp1pUgRNeF2JC30vWGLrInZxD7K/Qw==",
750 + "dependencies": {
751 + "bson": "^4.6.2",
752 + "kareem": "2.3.5",
753 + "mongodb": "4.5.0",
754 + "mpath": "0.9.0",
755 + "mquery": "4.0.3",
756 + "ms": "2.1.3",
757 + "sift": "16.0.0"
758 + },
759 + "engines": {
760 + "node": ">=12.0.0"
761 + },
762 + "funding": {
763 + "type": "opencollective",
764 + "url": "https://opencollective.com/mongoose"
765 + }
766 + },
767 + "node_modules/mongoose/node_modules/ms": {
768 + "version": "2.1.3",
769 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
770 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
771 + },
535 "node_modules/mout": { 772 "node_modules/mout": {
536 "version": "0.12.0", 773 "version": "0.12.0",
537 "resolved": "https://registry.npmjs.org/mout/-/mout-0.12.0.tgz", 774 "resolved": "https://registry.npmjs.org/mout/-/mout-0.12.0.tgz",
538 "integrity": "sha1-bVskLuMx+dBMaOWPd6kaMGDoyss=" 775 "integrity": "sha1-bVskLuMx+dBMaOWPd6kaMGDoyss="
539 }, 776 },
777 + "node_modules/mpath": {
778 + "version": "0.9.0",
779 + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
780 + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
781 + "engines": {
782 + "node": ">=4.0.0"
783 + }
784 + },
785 + "node_modules/mquery": {
786 + "version": "4.0.3",
787 + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz",
788 + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==",
789 + "dependencies": {
790 + "debug": "4.x"
791 + },
792 + "engines": {
793 + "node": ">=12.0.0"
794 + }
795 + },
796 + "node_modules/mquery/node_modules/debug": {
797 + "version": "4.3.4",
798 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
799 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
800 + "dependencies": {
801 + "ms": "2.1.2"
802 + },
803 + "engines": {
804 + "node": ">=6.0"
805 + },
806 + "peerDependenciesMeta": {
807 + "supports-color": {
808 + "optional": true
809 + }
810 + }
811 + },
812 + "node_modules/mquery/node_modules/ms": {
813 + "version": "2.1.2",
814 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
815 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
816 + },
540 "node_modules/ms": { 817 "node_modules/ms": {
541 "version": "2.0.0", 818 "version": "2.0.0",
542 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 819 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
543 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 820 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
544 }, 821 },
822 + "node_modules/mysql": {
823 + "version": "2.18.1",
824 + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
825 + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==",
826 + "dependencies": {
827 + "bignumber.js": "9.0.0",
828 + "readable-stream": "2.3.7",
829 + "safe-buffer": "5.1.2",
830 + "sqlstring": "2.3.1"
831 + },
832 + "engines": {
833 + "node": ">= 0.6"
834 + }
835 + },
836 + "node_modules/mysql/node_modules/safe-buffer": {
837 + "version": "5.1.2",
838 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
839 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
840 + },
545 "node_modules/negotiator": { 841 "node_modules/negotiator": {
546 "version": "0.6.3", 842 "version": "0.6.3",
547 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 843 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
...@@ -569,6 +865,14 @@ ...@@ -569,6 +865,14 @@
569 "node": ">= 0.8" 865 "node": ">= 0.8"
570 } 866 }
571 }, 867 },
868 + "node_modules/on-headers": {
869 + "version": "1.0.2",
870 + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
871 + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
872 + "engines": {
873 + "node": ">= 0.8"
874 + }
875 + },
572 "node_modules/parseurl": { 876 "node_modules/parseurl": {
573 "version": "1.3.3", 877 "version": "1.3.3",
574 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 878 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
...@@ -599,6 +903,11 @@ ...@@ -599,6 +903,11 @@
599 "node": ">= 0.6.0" 903 "node": ">= 0.6.0"
600 } 904 }
601 }, 905 },
906 + "node_modules/process-nextick-args": {
907 + "version": "2.0.1",
908 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
909 + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
910 + },
602 "node_modules/proxy-addr": { 911 "node_modules/proxy-addr": {
603 "version": "2.0.7", 912 "version": "2.0.7",
604 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 913 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
...@@ -611,6 +920,14 @@ ...@@ -611,6 +920,14 @@
611 "node": ">= 0.10" 920 "node": ">= 0.10"
612 } 921 }
613 }, 922 },
923 + "node_modules/punycode": {
924 + "version": "2.1.1",
925 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
926 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
927 + "engines": {
928 + "node": ">=6"
929 + }
930 + },
614 "node_modules/qs": { 931 "node_modules/qs": {
615 "version": "6.10.3", 932 "version": "6.10.3",
616 "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 933 "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
...@@ -625,6 +942,14 @@ ...@@ -625,6 +942,14 @@
625 "url": "https://github.com/sponsors/ljharb" 942 "url": "https://github.com/sponsors/ljharb"
626 } 943 }
627 }, 944 },
945 + "node_modules/random-bytes": {
946 + "version": "1.0.0",
947 + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
948 + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=",
949 + "engines": {
950 + "node": ">= 0.8"
951 + }
952 + },
628 "node_modules/range-parser": { 953 "node_modules/range-parser": {
629 "version": "1.2.1", 954 "version": "1.2.1",
630 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 955 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
...@@ -647,6 +972,25 @@ ...@@ -647,6 +972,25 @@
647 "node": ">= 0.8" 972 "node": ">= 0.8"
648 } 973 }
649 }, 974 },
975 + "node_modules/readable-stream": {
976 + "version": "2.3.7",
977 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
978 + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
979 + "dependencies": {
980 + "core-util-is": "~1.0.0",
981 + "inherits": "~2.0.3",
982 + "isarray": "~1.0.0",
983 + "process-nextick-args": "~2.0.0",
984 + "safe-buffer": "~5.1.1",
985 + "string_decoder": "~1.1.1",
986 + "util-deprecate": "~1.0.1"
987 + }
988 + },
989 + "node_modules/readable-stream/node_modules/safe-buffer": {
990 + "version": "5.1.2",
991 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
992 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
993 + },
650 "node_modules/safe-buffer": { 994 "node_modules/safe-buffer": {
651 "version": "5.2.1", 995 "version": "5.2.1",
652 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 996 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
...@@ -671,6 +1015,18 @@ ...@@ -671,6 +1015,18 @@
671 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1015 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
672 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1016 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
673 }, 1017 },
1018 + "node_modules/saslprep": {
1019 + "version": "1.0.3",
1020 + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
1021 + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
1022 + "optional": true,
1023 + "dependencies": {
1024 + "sparse-bitfield": "^3.0.3"
1025 + },
1026 + "engines": {
1027 + "node": ">=6"
1028 + }
1029 + },
674 "node_modules/send": { 1030 "node_modules/send": {
675 "version": "0.18.0", 1031 "version": "0.18.0",
676 "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 1032 "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
...@@ -731,6 +1087,50 @@ ...@@ -731,6 +1087,50 @@
731 "url": "https://github.com/sponsors/ljharb" 1087 "url": "https://github.com/sponsors/ljharb"
732 } 1088 }
733 }, 1089 },
1090 + "node_modules/sift": {
1091 + "version": "16.0.0",
1092 + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz",
1093 + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ=="
1094 + },
1095 + "node_modules/smart-buffer": {
1096 + "version": "4.2.0",
1097 + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
1098 + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
1099 + "engines": {
1100 + "node": ">= 6.0.0",
1101 + "npm": ">= 3.0.0"
1102 + }
1103 + },
1104 + "node_modules/socks": {
1105 + "version": "2.6.2",
1106 + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
1107 + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
1108 + "dependencies": {
1109 + "ip": "^1.1.5",
1110 + "smart-buffer": "^4.2.0"
1111 + },
1112 + "engines": {
1113 + "node": ">= 10.13.0",
1114 + "npm": ">= 3.0.0"
1115 + }
1116 + },
1117 + "node_modules/sparse-bitfield": {
1118 + "version": "3.0.3",
1119 + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
1120 + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
1121 + "optional": true,
1122 + "dependencies": {
1123 + "memory-pager": "^1.0.2"
1124 + }
1125 + },
1126 + "node_modules/sqlstring": {
1127 + "version": "2.3.1",
1128 + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
1129 + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=",
1130 + "engines": {
1131 + "node": ">= 0.6"
1132 + }
1133 + },
734 "node_modules/statuses": { 1134 "node_modules/statuses": {
735 "version": "2.0.1", 1135 "version": "2.0.1",
736 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1136 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
...@@ -739,6 +1139,19 @@ ...@@ -739,6 +1139,19 @@
739 "node": ">= 0.8" 1139 "node": ">= 0.8"
740 } 1140 }
741 }, 1141 },
1142 + "node_modules/string_decoder": {
1143 + "version": "1.1.1",
1144 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1145 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1146 + "dependencies": {
1147 + "safe-buffer": "~5.1.0"
1148 + }
1149 + },
1150 + "node_modules/string_decoder/node_modules/safe-buffer": {
1151 + "version": "5.1.2",
1152 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1153 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1154 + },
742 "node_modules/supports-color": { 1155 "node_modules/supports-color": {
743 "version": "7.2.0", 1156 "version": "7.2.0",
744 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1157 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
...@@ -758,6 +1171,17 @@ ...@@ -758,6 +1171,17 @@
758 "node": ">=0.6" 1171 "node": ">=0.6"
759 } 1172 }
760 }, 1173 },
1174 + "node_modules/tr46": {
1175 + "version": "3.0.0",
1176 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
1177 + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
1178 + "dependencies": {
1179 + "punycode": "^2.1.1"
1180 + },
1181 + "engines": {
1182 + "node": ">=12"
1183 + }
1184 + },
761 "node_modules/type-is": { 1185 "node_modules/type-is": {
762 "version": "1.6.18", 1186 "version": "1.6.18",
763 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1187 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
...@@ -770,6 +1194,17 @@ ...@@ -770,6 +1194,17 @@
770 "node": ">= 0.6" 1194 "node": ">= 0.6"
771 } 1195 }
772 }, 1196 },
1197 + "node_modules/uid-safe": {
1198 + "version": "2.1.5",
1199 + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
1200 + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
1201 + "dependencies": {
1202 + "random-bytes": "~1.0.0"
1203 + },
1204 + "engines": {
1205 + "node": ">= 0.8"
1206 + }
1207 + },
773 "node_modules/unpipe": { 1208 "node_modules/unpipe": {
774 "version": "1.0.0", 1209 "version": "1.0.0",
775 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1210 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
...@@ -786,6 +1221,11 @@ ...@@ -786,6 +1221,11 @@
786 "inherits": "2.0.3" 1221 "inherits": "2.0.3"
787 } 1222 }
788 }, 1223 },
1224 + "node_modules/util-deprecate": {
1225 + "version": "1.0.2",
1226 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1227 + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
1228 + },
789 "node_modules/util/node_modules/inherits": { 1229 "node_modules/util/node_modules/inherits": {
790 "version": "2.0.3", 1230 "version": "2.0.3",
791 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1231 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
...@@ -806,6 +1246,26 @@ ...@@ -806,6 +1246,26 @@
806 "engines": { 1246 "engines": {
807 "node": ">= 0.8" 1247 "node": ">= 0.8"
808 } 1248 }
1249 + },
1250 + "node_modules/webidl-conversions": {
1251 + "version": "7.0.0",
1252 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
1253 + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
1254 + "engines": {
1255 + "node": ">=12"
1256 + }
1257 + },
1258 + "node_modules/whatwg-url": {
1259 + "version": "11.0.0",
1260 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
1261 + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
1262 + "dependencies": {
1263 + "tr46": "^3.0.0",
1264 + "webidl-conversions": "^7.0.0"
1265 + },
1266 + "engines": {
1267 + "node": ">=12"
1268 + }
809 } 1269 }
810 } 1270 }
811 } 1271 }
......
...@@ -11,10 +11,15 @@ ...@@ -11,10 +11,15 @@
11 "dependencies": { 11 "dependencies": {
12 "body-parser": "^1.20.0", 12 "body-parser": "^1.20.0",
13 "bootstrap": "^5.1.3", 13 "bootstrap": "^5.1.3",
14 + "cookie-parser": "^1.4.6",
15 + "crypto": "^1.0.1",
14 "ejs": "^3.1.7", 16 "ejs": "^3.1.7",
15 "express": "^4.18.1", 17 "express": "^4.18.1",
16 "express-error-handler": "^1.1.0", 18 "express-error-handler": "^1.1.0",
19 + "express-session": "^1.17.3",
17 "http": "^0.0.1-security", 20 "http": "^0.0.1-security",
21 + "mongoose": "^6.3.4",
22 + "mysql": "^2.18.1",
18 "path": "^0.12.7", 23 "path": "^0.12.7",
19 "serve-static": "^1.15.0" 24 "serve-static": "^1.15.0"
20 } 25 }
...@@ -29,6 +34,25 @@ ...@@ -29,6 +34,25 @@
29 "url": "https://opencollective.com/popperjs" 34 "url": "https://opencollective.com/popperjs"
30 } 35 }
31 }, 36 },
37 + "node_modules/@types/node": {
38 + "version": "17.0.35",
39 + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz",
40 + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg=="
41 + },
42 + "node_modules/@types/webidl-conversions": {
43 + "version": "6.1.1",
44 + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
45 + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
46 + },
47 + "node_modules/@types/whatwg-url": {
48 + "version": "8.2.1",
49 + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz",
50 + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==",
51 + "dependencies": {
52 + "@types/node": "*",
53 + "@types/webidl-conversions": "*"
54 + }
55 + },
32 "node_modules/accepts": { 56 "node_modules/accepts": {
33 "version": "1.3.8", 57 "version": "1.3.8",
34 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 58 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
...@@ -70,6 +94,33 @@ ...@@ -70,6 +94,33 @@
70 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 94 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
71 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 95 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
72 }, 96 },
97 + "node_modules/base64-js": {
98 + "version": "1.5.1",
99 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
100 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
101 + "funding": [
102 + {
103 + "type": "github",
104 + "url": "https://github.com/sponsors/feross"
105 + },
106 + {
107 + "type": "patreon",
108 + "url": "https://www.patreon.com/feross"
109 + },
110 + {
111 + "type": "consulting",
112 + "url": "https://feross.org/support"
113 + }
114 + ]
115 + },
116 + "node_modules/bignumber.js": {
117 + "version": "9.0.0",
118 + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
119 + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==",
120 + "engines": {
121 + "node": "*"
122 + }
123 + },
73 "node_modules/body-parser": { 124 "node_modules/body-parser": {
74 "version": "1.20.0", 125 "version": "1.20.0",
75 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", 126 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
...@@ -114,6 +165,40 @@ ...@@ -114,6 +165,40 @@
114 "concat-map": "0.0.1" 165 "concat-map": "0.0.1"
115 } 166 }
116 }, 167 },
168 + "node_modules/bson": {
169 + "version": "4.6.4",
170 + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz",
171 + "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==",
172 + "dependencies": {
173 + "buffer": "^5.6.0"
174 + },
175 + "engines": {
176 + "node": ">=6.9.0"
177 + }
178 + },
179 + "node_modules/buffer": {
180 + "version": "5.7.1",
181 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
182 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
183 + "funding": [
184 + {
185 + "type": "github",
186 + "url": "https://github.com/sponsors/feross"
187 + },
188 + {
189 + "type": "patreon",
190 + "url": "https://www.patreon.com/feross"
191 + },
192 + {
193 + "type": "consulting",
194 + "url": "https://feross.org/support"
195 + }
196 + ],
197 + "dependencies": {
198 + "base64-js": "^1.3.1",
199 + "ieee754": "^1.1.13"
200 + }
201 + },
117 "node_modules/bytes": { 202 "node_modules/bytes": {
118 "version": "3.1.2", 203 "version": "3.1.2",
119 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 204 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
...@@ -197,11 +282,42 @@ ...@@ -197,11 +282,42 @@
197 "node": ">= 0.6" 282 "node": ">= 0.6"
198 } 283 }
199 }, 284 },
285 + "node_modules/cookie-parser": {
286 + "version": "1.4.6",
287 + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
288 + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
289 + "dependencies": {
290 + "cookie": "0.4.1",
291 + "cookie-signature": "1.0.6"
292 + },
293 + "engines": {
294 + "node": ">= 0.8.0"
295 + }
296 + },
297 + "node_modules/cookie-parser/node_modules/cookie": {
298 + "version": "0.4.1",
299 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
300 + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
301 + "engines": {
302 + "node": ">= 0.6"
303 + }
304 + },
200 "node_modules/cookie-signature": { 305 "node_modules/cookie-signature": {
201 "version": "1.0.6", 306 "version": "1.0.6",
202 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 307 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
203 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 308 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
204 }, 309 },
310 + "node_modules/core-util-is": {
311 + "version": "1.0.3",
312 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
313 + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
314 + },
315 + "node_modules/crypto": {
316 + "version": "1.0.1",
317 + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
318 + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==",
319 + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in."
320 + },
205 "node_modules/debug": { 321 "node_modules/debug": {
206 "version": "2.6.9", 322 "version": "2.6.9",
207 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 323 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
...@@ -210,6 +326,14 @@ ...@@ -210,6 +326,14 @@
210 "ms": "2.0.0" 326 "ms": "2.0.0"
211 } 327 }
212 }, 328 },
329 + "node_modules/denque": {
330 + "version": "2.0.1",
331 + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
332 + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==",
333 + "engines": {
334 + "node": ">=0.10"
335 + }
336 + },
213 "node_modules/depd": { 337 "node_modules/depd": {
214 "version": "2.0.0", 338 "version": "2.0.0",
215 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 339 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
...@@ -316,6 +440,32 @@ ...@@ -316,6 +440,32 @@
316 "mout": "0.12.0" 440 "mout": "0.12.0"
317 } 441 }
318 }, 442 },
443 + "node_modules/express-session": {
444 + "version": "1.17.3",
445 + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz",
446 + "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==",
447 + "dependencies": {
448 + "cookie": "0.4.2",
449 + "cookie-signature": "1.0.6",
450 + "debug": "2.6.9",
451 + "depd": "~2.0.0",
452 + "on-headers": "~1.0.2",
453 + "parseurl": "~1.3.3",
454 + "safe-buffer": "5.2.1",
455 + "uid-safe": "~2.1.5"
456 + },
457 + "engines": {
458 + "node": ">= 0.8.0"
459 + }
460 + },
461 + "node_modules/express-session/node_modules/cookie": {
462 + "version": "0.4.2",
463 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
464 + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
465 + "engines": {
466 + "node": ">= 0.6"
467 + }
468 + },
319 "node_modules/filelist": { 469 "node_modules/filelist": {
320 "version": "1.0.3", 470 "version": "1.0.3",
321 "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", 471 "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz",
...@@ -455,11 +605,35 @@ ...@@ -455,11 +605,35 @@
455 "node": ">=0.10.0" 605 "node": ">=0.10.0"
456 } 606 }
457 }, 607 },
608 + "node_modules/ieee754": {
609 + "version": "1.2.1",
610 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
611 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
612 + "funding": [
613 + {
614 + "type": "github",
615 + "url": "https://github.com/sponsors/feross"
616 + },
617 + {
618 + "type": "patreon",
619 + "url": "https://www.patreon.com/feross"
620 + },
621 + {
622 + "type": "consulting",
623 + "url": "https://feross.org/support"
624 + }
625 + ]
626 + },
458 "node_modules/inherits": { 627 "node_modules/inherits": {
459 "version": "2.0.4", 628 "version": "2.0.4",
460 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 629 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
461 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 630 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
462 }, 631 },
632 + "node_modules/ip": {
633 + "version": "1.1.8",
634 + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
635 + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
636 + },
463 "node_modules/ipaddr.js": { 637 "node_modules/ipaddr.js": {
464 "version": "1.9.1", 638 "version": "1.9.1",
465 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 639 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
...@@ -468,6 +642,11 @@ ...@@ -468,6 +642,11 @@
468 "node": ">= 0.10" 642 "node": ">= 0.10"
469 } 643 }
470 }, 644 },
645 + "node_modules/isarray": {
646 + "version": "1.0.0",
647 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
648 + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
649 + },
471 "node_modules/jake": { 650 "node_modules/jake": {
472 "version": "10.8.5", 651 "version": "10.8.5",
473 "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", 652 "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
...@@ -485,6 +664,11 @@ ...@@ -485,6 +664,11 @@
485 "node": ">=10" 664 "node": ">=10"
486 } 665 }
487 }, 666 },
667 + "node_modules/kareem": {
668 + "version": "2.3.5",
669 + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.5.tgz",
670 + "integrity": "sha512-qxCyQtp3ioawkiRNQr/v8xw9KIviMSSNmy+63Wubj7KmMn3g7noRXIZB4vPCAP+ETi2SR8eH6CvmlKZuGpoHOg=="
671 + },
488 "node_modules/media-typer": { 672 "node_modules/media-typer": {
489 "version": "0.3.0", 673 "version": "0.3.0",
490 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 674 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
...@@ -493,6 +677,12 @@ ...@@ -493,6 +677,12 @@
493 "node": ">= 0.6" 677 "node": ">= 0.6"
494 } 678 }
495 }, 679 },
680 + "node_modules/memory-pager": {
681 + "version": "1.5.0",
682 + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
683 + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
684 + "optional": true
685 + },
496 "node_modules/merge-descriptors": { 686 "node_modules/merge-descriptors": {
497 "version": "1.0.1", 687 "version": "1.0.1",
498 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 688 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
...@@ -547,16 +737,127 @@ ...@@ -547,16 +737,127 @@
547 "node": "*" 737 "node": "*"
548 } 738 }
549 }, 739 },
740 + "node_modules/mongodb": {
741 + "version": "4.5.0",
742 + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.5.0.tgz",
743 + "integrity": "sha512-A2l8MjEpKojnhbCM0MK3+UOGUSGvTNNSv7AkP1fsT7tkambrkkqN/5F2y+PhzsV0Nbv58u04TETpkaSEdI2zKA==",
744 + "dependencies": {
745 + "bson": "^4.6.2",
746 + "denque": "^2.0.1",
747 + "mongodb-connection-string-url": "^2.5.2",
748 + "socks": "^2.6.2"
749 + },
750 + "engines": {
751 + "node": ">=12.9.0"
752 + },
753 + "optionalDependencies": {
754 + "saslprep": "^1.0.3"
755 + }
756 + },
757 + "node_modules/mongodb-connection-string-url": {
758 + "version": "2.5.2",
759 + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz",
760 + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==",
761 + "dependencies": {
762 + "@types/whatwg-url": "^8.2.1",
763 + "whatwg-url": "^11.0.0"
764 + }
765 + },
766 + "node_modules/mongoose": {
767 + "version": "6.3.4",
768 + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.3.4.tgz",
769 + "integrity": "sha512-UP0azyGMdY+2YNbJUHeHhnVw5vPzCqs4GQDUwHkilif/rwmSZktUQhQWMp1pUgRNeF2JC30vWGLrInZxD7K/Qw==",
770 + "dependencies": {
771 + "bson": "^4.6.2",
772 + "kareem": "2.3.5",
773 + "mongodb": "4.5.0",
774 + "mpath": "0.9.0",
775 + "mquery": "4.0.3",
776 + "ms": "2.1.3",
777 + "sift": "16.0.0"
778 + },
779 + "engines": {
780 + "node": ">=12.0.0"
781 + },
782 + "funding": {
783 + "type": "opencollective",
784 + "url": "https://opencollective.com/mongoose"
785 + }
786 + },
787 + "node_modules/mongoose/node_modules/ms": {
788 + "version": "2.1.3",
789 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
790 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
791 + },
550 "node_modules/mout": { 792 "node_modules/mout": {
551 "version": "0.12.0", 793 "version": "0.12.0",
552 "resolved": "https://registry.npmjs.org/mout/-/mout-0.12.0.tgz", 794 "resolved": "https://registry.npmjs.org/mout/-/mout-0.12.0.tgz",
553 "integrity": "sha1-bVskLuMx+dBMaOWPd6kaMGDoyss=" 795 "integrity": "sha1-bVskLuMx+dBMaOWPd6kaMGDoyss="
554 }, 796 },
797 + "node_modules/mpath": {
798 + "version": "0.9.0",
799 + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
800 + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
801 + "engines": {
802 + "node": ">=4.0.0"
803 + }
804 + },
805 + "node_modules/mquery": {
806 + "version": "4.0.3",
807 + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz",
808 + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==",
809 + "dependencies": {
810 + "debug": "4.x"
811 + },
812 + "engines": {
813 + "node": ">=12.0.0"
814 + }
815 + },
816 + "node_modules/mquery/node_modules/debug": {
817 + "version": "4.3.4",
818 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
819 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
820 + "dependencies": {
821 + "ms": "2.1.2"
822 + },
823 + "engines": {
824 + "node": ">=6.0"
825 + },
826 + "peerDependenciesMeta": {
827 + "supports-color": {
828 + "optional": true
829 + }
830 + }
831 + },
832 + "node_modules/mquery/node_modules/ms": {
833 + "version": "2.1.2",
834 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
835 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
836 + },
555 "node_modules/ms": { 837 "node_modules/ms": {
556 "version": "2.0.0", 838 "version": "2.0.0",
557 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 839 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
558 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 840 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
559 }, 841 },
842 + "node_modules/mysql": {
843 + "version": "2.18.1",
844 + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
845 + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==",
846 + "dependencies": {
847 + "bignumber.js": "9.0.0",
848 + "readable-stream": "2.3.7",
849 + "safe-buffer": "5.1.2",
850 + "sqlstring": "2.3.1"
851 + },
852 + "engines": {
853 + "node": ">= 0.6"
854 + }
855 + },
856 + "node_modules/mysql/node_modules/safe-buffer": {
857 + "version": "5.1.2",
858 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
859 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
860 + },
560 "node_modules/negotiator": { 861 "node_modules/negotiator": {
561 "version": "0.6.3", 862 "version": "0.6.3",
562 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 863 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
...@@ -584,6 +885,14 @@ ...@@ -584,6 +885,14 @@
584 "node": ">= 0.8" 885 "node": ">= 0.8"
585 } 886 }
586 }, 887 },
888 + "node_modules/on-headers": {
889 + "version": "1.0.2",
890 + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
891 + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
892 + "engines": {
893 + "node": ">= 0.8"
894 + }
895 + },
587 "node_modules/parseurl": { 896 "node_modules/parseurl": {
588 "version": "1.3.3", 897 "version": "1.3.3",
589 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 898 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
...@@ -614,6 +923,11 @@ ...@@ -614,6 +923,11 @@
614 "node": ">= 0.6.0" 923 "node": ">= 0.6.0"
615 } 924 }
616 }, 925 },
926 + "node_modules/process-nextick-args": {
927 + "version": "2.0.1",
928 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
929 + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
930 + },
617 "node_modules/proxy-addr": { 931 "node_modules/proxy-addr": {
618 "version": "2.0.7", 932 "version": "2.0.7",
619 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 933 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
...@@ -626,6 +940,14 @@ ...@@ -626,6 +940,14 @@
626 "node": ">= 0.10" 940 "node": ">= 0.10"
627 } 941 }
628 }, 942 },
943 + "node_modules/punycode": {
944 + "version": "2.1.1",
945 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
946 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
947 + "engines": {
948 + "node": ">=6"
949 + }
950 + },
629 "node_modules/qs": { 951 "node_modules/qs": {
630 "version": "6.10.3", 952 "version": "6.10.3",
631 "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 953 "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
...@@ -640,6 +962,14 @@ ...@@ -640,6 +962,14 @@
640 "url": "https://github.com/sponsors/ljharb" 962 "url": "https://github.com/sponsors/ljharb"
641 } 963 }
642 }, 964 },
965 + "node_modules/random-bytes": {
966 + "version": "1.0.0",
967 + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
968 + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=",
969 + "engines": {
970 + "node": ">= 0.8"
971 + }
972 + },
643 "node_modules/range-parser": { 973 "node_modules/range-parser": {
644 "version": "1.2.1", 974 "version": "1.2.1",
645 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 975 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
...@@ -662,6 +992,25 @@ ...@@ -662,6 +992,25 @@
662 "node": ">= 0.8" 992 "node": ">= 0.8"
663 } 993 }
664 }, 994 },
995 + "node_modules/readable-stream": {
996 + "version": "2.3.7",
997 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
998 + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
999 + "dependencies": {
1000 + "core-util-is": "~1.0.0",
1001 + "inherits": "~2.0.3",
1002 + "isarray": "~1.0.0",
1003 + "process-nextick-args": "~2.0.0",
1004 + "safe-buffer": "~5.1.1",
1005 + "string_decoder": "~1.1.1",
1006 + "util-deprecate": "~1.0.1"
1007 + }
1008 + },
1009 + "node_modules/readable-stream/node_modules/safe-buffer": {
1010 + "version": "5.1.2",
1011 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1012 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1013 + },
665 "node_modules/safe-buffer": { 1014 "node_modules/safe-buffer": {
666 "version": "5.2.1", 1015 "version": "5.2.1",
667 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1016 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
...@@ -686,6 +1035,18 @@ ...@@ -686,6 +1035,18 @@
686 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1035 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
687 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1036 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
688 }, 1037 },
1038 + "node_modules/saslprep": {
1039 + "version": "1.0.3",
1040 + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
1041 + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
1042 + "optional": true,
1043 + "dependencies": {
1044 + "sparse-bitfield": "^3.0.3"
1045 + },
1046 + "engines": {
1047 + "node": ">=6"
1048 + }
1049 + },
689 "node_modules/send": { 1050 "node_modules/send": {
690 "version": "0.18.0", 1051 "version": "0.18.0",
691 "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 1052 "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
...@@ -746,6 +1107,50 @@ ...@@ -746,6 +1107,50 @@
746 "url": "https://github.com/sponsors/ljharb" 1107 "url": "https://github.com/sponsors/ljharb"
747 } 1108 }
748 }, 1109 },
1110 + "node_modules/sift": {
1111 + "version": "16.0.0",
1112 + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz",
1113 + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ=="
1114 + },
1115 + "node_modules/smart-buffer": {
1116 + "version": "4.2.0",
1117 + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
1118 + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
1119 + "engines": {
1120 + "node": ">= 6.0.0",
1121 + "npm": ">= 3.0.0"
1122 + }
1123 + },
1124 + "node_modules/socks": {
1125 + "version": "2.6.2",
1126 + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
1127 + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
1128 + "dependencies": {
1129 + "ip": "^1.1.5",
1130 + "smart-buffer": "^4.2.0"
1131 + },
1132 + "engines": {
1133 + "node": ">= 10.13.0",
1134 + "npm": ">= 3.0.0"
1135 + }
1136 + },
1137 + "node_modules/sparse-bitfield": {
1138 + "version": "3.0.3",
1139 + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
1140 + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
1141 + "optional": true,
1142 + "dependencies": {
1143 + "memory-pager": "^1.0.2"
1144 + }
1145 + },
1146 + "node_modules/sqlstring": {
1147 + "version": "2.3.1",
1148 + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
1149 + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=",
1150 + "engines": {
1151 + "node": ">= 0.6"
1152 + }
1153 + },
749 "node_modules/statuses": { 1154 "node_modules/statuses": {
750 "version": "2.0.1", 1155 "version": "2.0.1",
751 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1156 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
...@@ -754,6 +1159,19 @@ ...@@ -754,6 +1159,19 @@
754 "node": ">= 0.8" 1159 "node": ">= 0.8"
755 } 1160 }
756 }, 1161 },
1162 + "node_modules/string_decoder": {
1163 + "version": "1.1.1",
1164 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1165 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1166 + "dependencies": {
1167 + "safe-buffer": "~5.1.0"
1168 + }
1169 + },
1170 + "node_modules/string_decoder/node_modules/safe-buffer": {
1171 + "version": "5.1.2",
1172 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1173 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1174 + },
757 "node_modules/supports-color": { 1175 "node_modules/supports-color": {
758 "version": "7.2.0", 1176 "version": "7.2.0",
759 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1177 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
...@@ -773,6 +1191,17 @@ ...@@ -773,6 +1191,17 @@
773 "node": ">=0.6" 1191 "node": ">=0.6"
774 } 1192 }
775 }, 1193 },
1194 + "node_modules/tr46": {
1195 + "version": "3.0.0",
1196 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
1197 + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
1198 + "dependencies": {
1199 + "punycode": "^2.1.1"
1200 + },
1201 + "engines": {
1202 + "node": ">=12"
1203 + }
1204 + },
776 "node_modules/type-is": { 1205 "node_modules/type-is": {
777 "version": "1.6.18", 1206 "version": "1.6.18",
778 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1207 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
...@@ -785,6 +1214,17 @@ ...@@ -785,6 +1214,17 @@
785 "node": ">= 0.6" 1214 "node": ">= 0.6"
786 } 1215 }
787 }, 1216 },
1217 + "node_modules/uid-safe": {
1218 + "version": "2.1.5",
1219 + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
1220 + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
1221 + "dependencies": {
1222 + "random-bytes": "~1.0.0"
1223 + },
1224 + "engines": {
1225 + "node": ">= 0.8"
1226 + }
1227 + },
788 "node_modules/unpipe": { 1228 "node_modules/unpipe": {
789 "version": "1.0.0", 1229 "version": "1.0.0",
790 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1230 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
...@@ -801,6 +1241,11 @@ ...@@ -801,6 +1241,11 @@
801 "inherits": "2.0.3" 1241 "inherits": "2.0.3"
802 } 1242 }
803 }, 1243 },
1244 + "node_modules/util-deprecate": {
1245 + "version": "1.0.2",
1246 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1247 + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
1248 + },
804 "node_modules/util/node_modules/inherits": { 1249 "node_modules/util/node_modules/inherits": {
805 "version": "2.0.3", 1250 "version": "2.0.3",
806 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1251 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
...@@ -821,6 +1266,26 @@ ...@@ -821,6 +1266,26 @@
821 "engines": { 1266 "engines": {
822 "node": ">= 0.8" 1267 "node": ">= 0.8"
823 } 1268 }
1269 + },
1270 + "node_modules/webidl-conversions": {
1271 + "version": "7.0.0",
1272 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
1273 + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
1274 + "engines": {
1275 + "node": ">=12"
1276 + }
1277 + },
1278 + "node_modules/whatwg-url": {
1279 + "version": "11.0.0",
1280 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
1281 + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
1282 + "dependencies": {
1283 + "tr46": "^3.0.0",
1284 + "webidl-conversions": "^7.0.0"
1285 + },
1286 + "engines": {
1287 + "node": ">=12"
1288 + }
824 } 1289 }
825 }, 1290 },
826 "dependencies": { 1291 "dependencies": {
...@@ -830,6 +1295,25 @@ ...@@ -830,6 +1295,25 @@
830 "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", 1295 "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==",
831 "peer": true 1296 "peer": true
832 }, 1297 },
1298 + "@types/node": {
1299 + "version": "17.0.35",
1300 + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz",
1301 + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg=="
1302 + },
1303 + "@types/webidl-conversions": {
1304 + "version": "6.1.1",
1305 + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
1306 + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
1307 + },
1308 + "@types/whatwg-url": {
1309 + "version": "8.2.1",
1310 + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz",
1311 + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==",
1312 + "requires": {
1313 + "@types/node": "*",
1314 + "@types/webidl-conversions": "*"
1315 + }
1316 + },
833 "accepts": { 1317 "accepts": {
834 "version": "1.3.8", 1318 "version": "1.3.8",
835 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 1319 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
...@@ -862,6 +1346,16 @@ ...@@ -862,6 +1346,16 @@
862 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1346 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
863 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 1347 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
864 }, 1348 },
1349 + "base64-js": {
1350 + "version": "1.5.1",
1351 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
1352 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
1353 + },
1354 + "bignumber.js": {
1355 + "version": "9.0.0",
1356 + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
1357 + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A=="
1358 + },
865 "body-parser": { 1359 "body-parser": {
866 "version": "1.20.0", 1360 "version": "1.20.0",
867 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", 1361 "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
...@@ -896,6 +1390,23 @@ ...@@ -896,6 +1390,23 @@
896 "concat-map": "0.0.1" 1390 "concat-map": "0.0.1"
897 } 1391 }
898 }, 1392 },
1393 + "bson": {
1394 + "version": "4.6.4",
1395 + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz",
1396 + "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==",
1397 + "requires": {
1398 + "buffer": "^5.6.0"
1399 + }
1400 + },
1401 + "buffer": {
1402 + "version": "5.7.1",
1403 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
1404 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
1405 + "requires": {
1406 + "base64-js": "^1.3.1",
1407 + "ieee754": "^1.1.13"
1408 + }
1409 + },
899 "bytes": { 1410 "bytes": {
900 "version": "3.1.2", 1411 "version": "3.1.2",
901 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 1412 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
...@@ -955,11 +1466,37 @@ ...@@ -955,11 +1466,37 @@
955 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 1466 "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
956 "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 1467 "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
957 }, 1468 },
1469 + "cookie-parser": {
1470 + "version": "1.4.6",
1471 + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
1472 + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
1473 + "requires": {
1474 + "cookie": "0.4.1",
1475 + "cookie-signature": "1.0.6"
1476 + },
1477 + "dependencies": {
1478 + "cookie": {
1479 + "version": "0.4.1",
1480 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
1481 + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
1482 + }
1483 + }
1484 + },
958 "cookie-signature": { 1485 "cookie-signature": {
959 "version": "1.0.6", 1486 "version": "1.0.6",
960 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 1487 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
961 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 1488 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
962 }, 1489 },
1490 + "core-util-is": {
1491 + "version": "1.0.3",
1492 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
1493 + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
1494 + },
1495 + "crypto": {
1496 + "version": "1.0.1",
1497 + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
1498 + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig=="
1499 + },
963 "debug": { 1500 "debug": {
964 "version": "2.6.9", 1501 "version": "2.6.9",
965 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1502 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
...@@ -968,6 +1505,11 @@ ...@@ -968,6 +1505,11 @@
968 "ms": "2.0.0" 1505 "ms": "2.0.0"
969 } 1506 }
970 }, 1507 },
1508 + "denque": {
1509 + "version": "2.0.1",
1510 + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
1511 + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ=="
1512 + },
971 "depd": { 1513 "depd": {
972 "version": "2.0.0", 1514 "version": "2.0.0",
973 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1515 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
...@@ -1052,6 +1594,28 @@ ...@@ -1052,6 +1594,28 @@
1052 "mout": "0.12.0" 1594 "mout": "0.12.0"
1053 } 1595 }
1054 }, 1596 },
1597 + "express-session": {
1598 + "version": "1.17.3",
1599 + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz",
1600 + "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==",
1601 + "requires": {
1602 + "cookie": "0.4.2",
1603 + "cookie-signature": "1.0.6",
1604 + "debug": "2.6.9",
1605 + "depd": "~2.0.0",
1606 + "on-headers": "~1.0.2",
1607 + "parseurl": "~1.3.3",
1608 + "safe-buffer": "5.2.1",
1609 + "uid-safe": "~2.1.5"
1610 + },
1611 + "dependencies": {
1612 + "cookie": {
1613 + "version": "0.4.2",
1614 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
1615 + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
1616 + }
1617 + }
1618 + },
1055 "filelist": { 1619 "filelist": {
1056 "version": "1.0.3", 1620 "version": "1.0.3",
1057 "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", 1621 "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz",
...@@ -1160,16 +1724,31 @@ ...@@ -1160,16 +1724,31 @@
1160 "safer-buffer": ">= 2.1.2 < 3" 1724 "safer-buffer": ">= 2.1.2 < 3"
1161 } 1725 }
1162 }, 1726 },
1727 + "ieee754": {
1728 + "version": "1.2.1",
1729 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
1730 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
1731 + },
1163 "inherits": { 1732 "inherits": {
1164 "version": "2.0.4", 1733 "version": "2.0.4",
1165 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1734 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1166 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1735 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1167 }, 1736 },
1737 + "ip": {
1738 + "version": "1.1.8",
1739 + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
1740 + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
1741 + },
1168 "ipaddr.js": { 1742 "ipaddr.js": {
1169 "version": "1.9.1", 1743 "version": "1.9.1",
1170 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1744 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1171 "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1745 "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
1172 }, 1746 },
1747 + "isarray": {
1748 + "version": "1.0.0",
1749 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1750 + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
1751 + },
1173 "jake": { 1752 "jake": {
1174 "version": "10.8.5", 1753 "version": "10.8.5",
1175 "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", 1754 "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
...@@ -1181,11 +1760,22 @@ ...@@ -1181,11 +1760,22 @@
1181 "minimatch": "^3.0.4" 1760 "minimatch": "^3.0.4"
1182 } 1761 }
1183 }, 1762 },
1763 + "kareem": {
1764 + "version": "2.3.5",
1765 + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.5.tgz",
1766 + "integrity": "sha512-qxCyQtp3ioawkiRNQr/v8xw9KIviMSSNmy+63Wubj7KmMn3g7noRXIZB4vPCAP+ETi2SR8eH6CvmlKZuGpoHOg=="
1767 + },
1184 "media-typer": { 1768 "media-typer": {
1185 "version": "0.3.0", 1769 "version": "0.3.0",
1186 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1770 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1187 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1771 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
1188 }, 1772 },
1773 + "memory-pager": {
1774 + "version": "1.5.0",
1775 + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
1776 + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
1777 + "optional": true
1778 + },
1189 "merge-descriptors": { 1779 "merge-descriptors": {
1190 "version": "1.0.1", 1780 "version": "1.0.1",
1191 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1781 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
...@@ -1222,16 +1812,104 @@ ...@@ -1222,16 +1812,104 @@
1222 "brace-expansion": "^1.1.7" 1812 "brace-expansion": "^1.1.7"
1223 } 1813 }
1224 }, 1814 },
1815 + "mongodb": {
1816 + "version": "4.5.0",
1817 + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.5.0.tgz",
1818 + "integrity": "sha512-A2l8MjEpKojnhbCM0MK3+UOGUSGvTNNSv7AkP1fsT7tkambrkkqN/5F2y+PhzsV0Nbv58u04TETpkaSEdI2zKA==",
1819 + "requires": {
1820 + "bson": "^4.6.2",
1821 + "denque": "^2.0.1",
1822 + "mongodb-connection-string-url": "^2.5.2",
1823 + "saslprep": "^1.0.3",
1824 + "socks": "^2.6.2"
1825 + }
1826 + },
1827 + "mongodb-connection-string-url": {
1828 + "version": "2.5.2",
1829 + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz",
1830 + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==",
1831 + "requires": {
1832 + "@types/whatwg-url": "^8.2.1",
1833 + "whatwg-url": "^11.0.0"
1834 + }
1835 + },
1836 + "mongoose": {
1837 + "version": "6.3.4",
1838 + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.3.4.tgz",
1839 + "integrity": "sha512-UP0azyGMdY+2YNbJUHeHhnVw5vPzCqs4GQDUwHkilif/rwmSZktUQhQWMp1pUgRNeF2JC30vWGLrInZxD7K/Qw==",
1840 + "requires": {
1841 + "bson": "^4.6.2",
1842 + "kareem": "2.3.5",
1843 + "mongodb": "4.5.0",
1844 + "mpath": "0.9.0",
1845 + "mquery": "4.0.3",
1846 + "ms": "2.1.3",
1847 + "sift": "16.0.0"
1848 + },
1849 + "dependencies": {
1850 + "ms": {
1851 + "version": "2.1.3",
1852 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1853 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1854 + }
1855 + }
1856 + },
1225 "mout": { 1857 "mout": {
1226 "version": "0.12.0", 1858 "version": "0.12.0",
1227 "resolved": "https://registry.npmjs.org/mout/-/mout-0.12.0.tgz", 1859 "resolved": "https://registry.npmjs.org/mout/-/mout-0.12.0.tgz",
1228 "integrity": "sha1-bVskLuMx+dBMaOWPd6kaMGDoyss=" 1860 "integrity": "sha1-bVskLuMx+dBMaOWPd6kaMGDoyss="
1229 }, 1861 },
1862 + "mpath": {
1863 + "version": "0.9.0",
1864 + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
1865 + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew=="
1866 + },
1867 + "mquery": {
1868 + "version": "4.0.3",
1869 + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz",
1870 + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==",
1871 + "requires": {
1872 + "debug": "4.x"
1873 + },
1874 + "dependencies": {
1875 + "debug": {
1876 + "version": "4.3.4",
1877 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1878 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1879 + "requires": {
1880 + "ms": "2.1.2"
1881 + }
1882 + },
1883 + "ms": {
1884 + "version": "2.1.2",
1885 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1886 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1887 + }
1888 + }
1889 + },
1230 "ms": { 1890 "ms": {
1231 "version": "2.0.0", 1891 "version": "2.0.0",
1232 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1892 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1233 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1893 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1234 }, 1894 },
1895 + "mysql": {
1896 + "version": "2.18.1",
1897 + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
1898 + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==",
1899 + "requires": {
1900 + "bignumber.js": "9.0.0",
1901 + "readable-stream": "2.3.7",
1902 + "safe-buffer": "5.1.2",
1903 + "sqlstring": "2.3.1"
1904 + },
1905 + "dependencies": {
1906 + "safe-buffer": {
1907 + "version": "5.1.2",
1908 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1909 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1910 + }
1911 + }
1912 + },
1235 "negotiator": { 1913 "negotiator": {
1236 "version": "0.6.3", 1914 "version": "0.6.3",
1237 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1915 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
...@@ -1250,6 +1928,11 @@ ...@@ -1250,6 +1928,11 @@
1250 "ee-first": "1.1.1" 1928 "ee-first": "1.1.1"
1251 } 1929 }
1252 }, 1930 },
1931 + "on-headers": {
1932 + "version": "1.0.2",
1933 + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
1934 + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
1935 + },
1253 "parseurl": { 1936 "parseurl": {
1254 "version": "1.3.3", 1937 "version": "1.3.3",
1255 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1938 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
...@@ -1274,6 +1957,11 @@ ...@@ -1274,6 +1957,11 @@
1274 "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1957 "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
1275 "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" 1958 "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
1276 }, 1959 },
1960 + "process-nextick-args": {
1961 + "version": "2.0.1",
1962 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
1963 + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
1964 + },
1277 "proxy-addr": { 1965 "proxy-addr": {
1278 "version": "2.0.7", 1966 "version": "2.0.7",
1279 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1967 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
...@@ -1283,6 +1971,11 @@ ...@@ -1283,6 +1971,11 @@
1283 "ipaddr.js": "1.9.1" 1971 "ipaddr.js": "1.9.1"
1284 } 1972 }
1285 }, 1973 },
1974 + "punycode": {
1975 + "version": "2.1.1",
1976 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1977 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
1978 + },
1286 "qs": { 1979 "qs": {
1287 "version": "6.10.3", 1980 "version": "6.10.3",
1288 "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 1981 "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
...@@ -1291,6 +1984,11 @@ ...@@ -1291,6 +1984,11 @@
1291 "side-channel": "^1.0.4" 1984 "side-channel": "^1.0.4"
1292 } 1985 }
1293 }, 1986 },
1987 + "random-bytes": {
1988 + "version": "1.0.0",
1989 + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
1990 + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
1991 + },
1294 "range-parser": { 1992 "range-parser": {
1295 "version": "1.2.1", 1993 "version": "1.2.1",
1296 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1994 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
...@@ -1307,6 +2005,27 @@ ...@@ -1307,6 +2005,27 @@
1307 "unpipe": "1.0.0" 2005 "unpipe": "1.0.0"
1308 } 2006 }
1309 }, 2007 },
2008 + "readable-stream": {
2009 + "version": "2.3.7",
2010 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
2011 + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
2012 + "requires": {
2013 + "core-util-is": "~1.0.0",
2014 + "inherits": "~2.0.3",
2015 + "isarray": "~1.0.0",
2016 + "process-nextick-args": "~2.0.0",
2017 + "safe-buffer": "~5.1.1",
2018 + "string_decoder": "~1.1.1",
2019 + "util-deprecate": "~1.0.1"
2020 + },
2021 + "dependencies": {
2022 + "safe-buffer": {
2023 + "version": "5.1.2",
2024 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2025 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
2026 + }
2027 + }
2028 + },
1310 "safe-buffer": { 2029 "safe-buffer": {
1311 "version": "5.2.1", 2030 "version": "5.2.1",
1312 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2031 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
...@@ -1317,6 +2036,15 @@ ...@@ -1317,6 +2036,15 @@
1317 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2036 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1318 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2037 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1319 }, 2038 },
2039 + "saslprep": {
2040 + "version": "1.0.3",
2041 + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
2042 + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
2043 + "optional": true,
2044 + "requires": {
2045 + "sparse-bitfield": "^3.0.3"
2046 + }
2047 + },
1320 "send": { 2048 "send": {
1321 "version": "0.18.0", 2049 "version": "0.18.0",
1322 "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 2050 "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
...@@ -1370,11 +2098,59 @@ ...@@ -1370,11 +2098,59 @@
1370 "object-inspect": "^1.9.0" 2098 "object-inspect": "^1.9.0"
1371 } 2099 }
1372 }, 2100 },
2101 + "sift": {
2102 + "version": "16.0.0",
2103 + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz",
2104 + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ=="
2105 + },
2106 + "smart-buffer": {
2107 + "version": "4.2.0",
2108 + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
2109 + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
2110 + },
2111 + "socks": {
2112 + "version": "2.6.2",
2113 + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
2114 + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
2115 + "requires": {
2116 + "ip": "^1.1.5",
2117 + "smart-buffer": "^4.2.0"
2118 + }
2119 + },
2120 + "sparse-bitfield": {
2121 + "version": "3.0.3",
2122 + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
2123 + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
2124 + "optional": true,
2125 + "requires": {
2126 + "memory-pager": "^1.0.2"
2127 + }
2128 + },
2129 + "sqlstring": {
2130 + "version": "2.3.1",
2131 + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
2132 + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
2133 + },
1373 "statuses": { 2134 "statuses": {
1374 "version": "2.0.1", 2135 "version": "2.0.1",
1375 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 2136 "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1376 "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 2137 "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
1377 }, 2138 },
2139 + "string_decoder": {
2140 + "version": "1.1.1",
2141 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2142 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2143 + "requires": {
2144 + "safe-buffer": "~5.1.0"
2145 + },
2146 + "dependencies": {
2147 + "safe-buffer": {
2148 + "version": "5.1.2",
2149 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2150 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
2151 + }
2152 + }
2153 + },
1378 "supports-color": { 2154 "supports-color": {
1379 "version": "7.2.0", 2155 "version": "7.2.0",
1380 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2156 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
...@@ -1388,6 +2164,14 @@ ...@@ -1388,6 +2164,14 @@
1388 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 2164 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1389 "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 2165 "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
1390 }, 2166 },
2167 + "tr46": {
2168 + "version": "3.0.0",
2169 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
2170 + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
2171 + "requires": {
2172 + "punycode": "^2.1.1"
2173 + }
2174 + },
1391 "type-is": { 2175 "type-is": {
1392 "version": "1.6.18", 2176 "version": "1.6.18",
1393 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2177 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
...@@ -1397,6 +2181,14 @@ ...@@ -1397,6 +2181,14 @@
1397 "mime-types": "~2.1.24" 2181 "mime-types": "~2.1.24"
1398 } 2182 }
1399 }, 2183 },
2184 + "uid-safe": {
2185 + "version": "2.1.5",
2186 + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
2187 + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
2188 + "requires": {
2189 + "random-bytes": "~1.0.0"
2190 + }
2191 + },
1400 "unpipe": { 2192 "unpipe": {
1401 "version": "1.0.0", 2193 "version": "1.0.0",
1402 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2194 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
...@@ -1417,6 +2209,11 @@ ...@@ -1417,6 +2209,11 @@
1417 } 2209 }
1418 } 2210 }
1419 }, 2211 },
2212 + "util-deprecate": {
2213 + "version": "1.0.2",
2214 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2215 + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
2216 + },
1420 "utils-merge": { 2217 "utils-merge": {
1421 "version": "1.0.1", 2218 "version": "1.0.1",
1422 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2219 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
...@@ -1426,6 +2223,20 @@ ...@@ -1426,6 +2223,20 @@
1426 "version": "1.1.2", 2223 "version": "1.1.2",
1427 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2224 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1428 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 2225 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
2226 + },
2227 + "webidl-conversions": {
2228 + "version": "7.0.0",
2229 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
2230 + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
2231 + },
2232 + "whatwg-url": {
2233 + "version": "11.0.0",
2234 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
2235 + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
2236 + "requires": {
2237 + "tr46": "^3.0.0",
2238 + "webidl-conversions": "^7.0.0"
2239 + }
1429 } 2240 }
1430 } 2241 }
1431 } 2242 }
......
...@@ -11,10 +11,15 @@ ...@@ -11,10 +11,15 @@
11 "dependencies": { 11 "dependencies": {
12 "body-parser": "^1.20.0", 12 "body-parser": "^1.20.0",
13 "bootstrap": "^5.1.3", 13 "bootstrap": "^5.1.3",
14 + "cookie-parser": "^1.4.6",
15 + "crypto": "^1.0.1",
14 "ejs": "^3.1.7", 16 "ejs": "^3.1.7",
15 "express": "^4.18.1", 17 "express": "^4.18.1",
16 "express-error-handler": "^1.1.0", 18 "express-error-handler": "^1.1.0",
19 + "express-session": "^1.17.3",
17 "http": "^0.0.1-security", 20 "http": "^0.0.1-security",
21 + "mongoose": "^6.3.4",
22 + "mysql": "^2.18.1",
18 "path": "^0.12.7", 23 "path": "^0.12.7",
19 "serve-static": "^1.15.0" 24 "serve-static": "^1.15.0"
20 } 25 }
......