Showing
12 changed files
with
539 additions
and
18 deletions
.gitignore
0 → 100644
1 | +node_modules | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
app/database/Connection.js
0 → 100644
1 | +const mysql = require('mysql') | ||
2 | + | ||
3 | +var pool = mysql.createPool({ | ||
4 | + host: "localhost", | ||
5 | + user: "root", | ||
6 | + password: "1234", | ||
7 | + port: 3306, | ||
8 | + database: "rest_stop" | ||
9 | +}) | ||
10 | + | ||
11 | +var adduser = function(name, id, password, callback) { | ||
12 | + console.log('addUser'); | ||
13 | + | ||
14 | + pool.getConnection(function(err, conn) { | ||
15 | + if(err){ | ||
16 | + if(conn){ | ||
17 | + conn.release(); | ||
18 | + } | ||
19 | + | ||
20 | + callback(err, null); | ||
21 | + return; | ||
22 | + } | ||
23 | + | ||
24 | + var data = {name:name, id:id, password:password}; | ||
25 | + | ||
26 | + var exec = conn.query('insert into users set ?', data, function(err, result) { | ||
27 | + conn.release(); | ||
28 | + | ||
29 | + if(err){ | ||
30 | + console.log('SQL 실행 시 오류 발생'); | ||
31 | + console.dir(err); | ||
32 | + | ||
33 | + callback(err,null); | ||
34 | + | ||
35 | + return; | ||
36 | + } | ||
37 | + | ||
38 | + callback(null, result); | ||
39 | + }) | ||
40 | + }) | ||
41 | +} | ||
42 | + | ||
43 | +module.exports.pool = pool; | ||
44 | +//module.exports.login = login; | ||
45 | +module.exports.adduser = adduser; | ||
46 | +//module.exports.listuser = listuser; |
app/database/User.js
0 → 100644
1 | +const Connection = require('./Connection') | ||
2 | + | ||
3 | +var adduser = async (username,userId,userPassword) => { | ||
4 | + try { | ||
5 | + const query = `INSERT INTO ` + | ||
6 | + `accounts ` + | ||
7 | + `VALUES ` + | ||
8 | + `(null, '$(username)', '$(userId)', '$(userPassword)')` | ||
9 | + | ||
10 | + await Connection(query) | ||
11 | + | ||
12 | + return true; | ||
13 | + } catch (error) { | ||
14 | + return false; | ||
15 | + } | ||
16 | +}; | ||
17 | + | ||
18 | +var login; | ||
19 | + | ||
20 | +var listuser = function(req, res) { | ||
21 | + console.log('user(user2.js) 모듈 안에 있는 listuser 호출됨.'); | ||
22 | + | ||
23 | + // 데이터베이스 객체 참조 | ||
24 | + var database = req.app.get('database'); | ||
25 | + | ||
26 | + // 데이터베이스 객체가 초기화된 경우, 모델 객체의 findAll 메소드 호출 | ||
27 | + if (database.db) { | ||
28 | + // 1. 모든 사용자 검색 | ||
29 | + database.UserModel.findAll(function(err, results) { | ||
30 | + // 에러 발생 시, 클라이언트로 에러 전송 | ||
31 | + if (err) { | ||
32 | + console.error('사용자 리스트 조회 중 에러 발생 : ' + err.stack); | ||
33 | + | ||
34 | + res.writeHead('200', {'Content-Type':'text/html;charset=utf8'}); | ||
35 | + res.write('<h2>사용자 리스트 조회 중 에러 발생</h2>'); | ||
36 | + res.write('<p>' + err.stack + '</p>'); | ||
37 | + res.end(); | ||
38 | + | ||
39 | + return; | ||
40 | + } | ||
41 | + | ||
42 | + if (results) { | ||
43 | + console.dir(results); | ||
44 | + | ||
45 | + res.writeHead('200', {'Content-Type':'text/html;charset=utf8'}); | ||
46 | + res.write('<h2>사용자 리스트</h2>'); | ||
47 | + res.write('<div><ul>'); | ||
48 | + | ||
49 | + for (var i = 0; i < results.length; i++) { | ||
50 | + var curId = results[i]._doc.id; | ||
51 | + var curName = results[i]._doc.name; | ||
52 | + res.write(' <li>#' + i + ' : ' + curId + ', ' + curName + '</li>'); | ||
53 | + } | ||
54 | + | ||
55 | + res.write('</ul></div>'); | ||
56 | + res.end(); | ||
57 | + } else { | ||
58 | + res.writeHead('200', {'Content-Type':'text/html;charset=utf8'}); | ||
59 | + res.write('<h2>사용자 리스트 조회 실패</h2>'); | ||
60 | + res.end(); | ||
61 | + } | ||
62 | + }); | ||
63 | + } else { | ||
64 | + res.writeHead('200', {'Content-Type':'text/html;charset=utf8'}); | ||
65 | + res.write('<h2>데이터베이스 연결 실패</h2>'); | ||
66 | + res.end(); | ||
67 | + } | ||
68 | + | ||
69 | +}; | ||
70 | + | ||
71 | + | ||
72 | +//사용자를 인증하는 함수 : 아이디로 먼저 찾고 비밀번호를 그 다음에 비교하도록 함 | ||
73 | +var authUser = function(database, id, password, callback) { | ||
74 | + console.log('authUser 호출됨.'); | ||
75 | + | ||
76 | + // 1. 아이디를 이용해 검색 | ||
77 | + database.UserModel.findById(id, function(err, results) { | ||
78 | + if (err) { | ||
79 | + callback(err, null); | ||
80 | + return; | ||
81 | + } | ||
82 | + | ||
83 | + console.log('아이디 [%s]로 사용자 검색결과', id); | ||
84 | + console.dir(results); | ||
85 | + | ||
86 | + if (results.length > 0) { | ||
87 | + console.log('아이디와 일치하는 사용자 찾음.'); | ||
88 | + | ||
89 | + // 2. 패스워드 확인 : 모델 인스턴스를 객체를 만들고 authenticate() 메소드 호출 | ||
90 | + var user = new database.UserModel({id:id}); | ||
91 | + var authenticated = user.authenticate(password, results[0]._doc.salt, results[0]._doc.hashed_password); | ||
92 | + if (authenticated) { | ||
93 | + console.log('비밀번호 일치함'); | ||
94 | + callback(null, results); | ||
95 | + } else { | ||
96 | + console.log('비밀번호 일치하지 않음'); | ||
97 | + callback(null, null); | ||
98 | + } | ||
99 | + | ||
100 | + } else { | ||
101 | + console.log("아이디와 일치하는 사용자를 찾지 못함."); | ||
102 | + callback(null, null); | ||
103 | + } | ||
104 | + | ||
105 | + }); | ||
106 | + | ||
107 | +} | ||
108 | + | ||
109 | + | ||
110 | +//사용자를 등록하는 함수 | ||
111 | +var addUser = function(database, id, password, name, callback) { | ||
112 | + console.log('addUser 호출됨.'); | ||
113 | + | ||
114 | + // UserModel 인스턴스 생성 | ||
115 | + var user = new database.UserModel({"id":id, "password":password, "name":name}); | ||
116 | + | ||
117 | + // save()로 저장 | ||
118 | + user.save(function(err) { | ||
119 | + if (err) { | ||
120 | + callback(err, null); | ||
121 | + return; | ||
122 | + } | ||
123 | + | ||
124 | + console.log("사용자 데이터 추가함."); | ||
125 | + callback(null, user); | ||
126 | + | ||
127 | + }); | ||
128 | +} | ||
129 | + | ||
130 | + | ||
131 | +module.exports.login = login; | ||
132 | +module.exports.adduser = adduser; | ||
133 | +module.exports.listuser = listuser; | ||
134 | + |
... | @@ -60,7 +60,7 @@ | ... | @@ -60,7 +60,7 @@ |
60 | <div class="text-center my-5"> | 60 | <div class="text-center my-5"> |
61 | <h1>로그인</h1> | 61 | <h1>로그인</h1> |
62 | <br> | 62 | <br> |
63 | - <form method="post" action="/login/process"> | 63 | + <form method="post" action="/signup/process"> |
64 | <table> | 64 | <table> |
65 | <tr> | 65 | <tr> |
66 | <td><label>이름</label></td> | 66 | <td><label>이름</label></td> | ... | ... |
1 | var express = require('express') | 1 | var express = require('express') |
2 | +var User = require('../database/User') | ||
2 | var router = express.Router() | 3 | var router = express.Router() |
3 | 4 | ||
4 | //라우팅 함수 등록 | 5 | //라우팅 함수 등록 |
... | @@ -7,19 +8,30 @@ router.get('/',function(req,res){ | ... | @@ -7,19 +8,30 @@ router.get('/',function(req,res){ |
7 | res.render('login.html') | 8 | res.render('login.html') |
8 | }); | 9 | }); |
9 | 10 | ||
10 | -router.post('/process', function(req, res) { | 11 | +router.post('/process', async (req, res) => { |
11 | console.log('/process/login 처리함'); | 12 | console.log('/process/login 처리함'); |
12 | 13 | ||
13 | var paramId = req.body.id || req.query.id; | 14 | var paramId = req.body.id || req.query.id; |
14 | var paramPassword = req.body.password || req.query.password; | 15 | var paramPassword = req.body.password || req.query.password; |
15 | //GET, POST 모두 고려해서 둘 다 검사 | 16 | //GET, POST 모두 고려해서 둘 다 검사 |
16 | 17 | ||
17 | - res.writeHead('200', { 'Content-Type': 'text/html;charset=utf8' }); | 18 | + const results = await User.login(paramId, paramPassword); |
18 | - res.write('<h1>Result form Express Server</h1>'); | 19 | + |
19 | - res.write('<div><p>Param id : ' + paramId + '</p></div>'); | 20 | + if (results){ |
20 | - res.write('<div><p>Param password : ' + paramPassword + '</p></div>'); | 21 | + res.writeHead('200', { 'Content-Type': 'text/html;charset=utf8' }); |
21 | - res.write("<br><br><a href ='/login.html'>로그인 페이지로 돌아가기</a>"); | 22 | + res.write('<h1>로그인 성공</h1>'); |
22 | - res.end(); | 23 | + res.write('<div><p>Param id : ' + paramId + '</p></div>'); |
24 | + res.write('<div><p>Param password : ' + paramPassword + '</p></div>'); | ||
25 | + res.write("<br><br><a href ='/login.html'>로그인 페이지로 돌아가기</a>"); | ||
26 | + res.end(); | ||
27 | + } else { | ||
28 | + res.writeHead('200', { 'Content-Type': 'text/html;charset=utf8' }); | ||
29 | + res.write('<h1>정보가 잘못되었습니다.</h1>'); | ||
30 | + res.write('<div><p>Param id : ' + paramId + '</p></div>'); | ||
31 | + res.write('<div><p>Param password : ' + paramPassword + '</p></div>'); | ||
32 | + res.write("<br><br><a href ='/login.html'>로그인 페이지로 돌아가기</a>"); | ||
33 | + res.end(); | ||
34 | + } | ||
23 | }); | 35 | }); |
24 | 36 | ||
25 | module.exports = router | 37 | module.exports = router |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | var express = require('express') | 1 | var express = require('express') |
2 | +var Conn = require('../database/Connection') | ||
2 | var router = express.Router() | 3 | var router = express.Router() |
3 | 4 | ||
4 | router.get('/',function(req,res){ | 5 | router.get('/',function(req,res){ |
... | @@ -14,13 +15,47 @@ router.post('/process', function(req, res) { | ... | @@ -14,13 +15,47 @@ router.post('/process', function(req, res) { |
14 | var paramPassword = req.body.password || req.query.password; | 15 | var paramPassword = req.body.password || req.query.password; |
15 | //GET, POST 모두 고려해서 둘 다 검사 | 16 | //GET, POST 모두 고려해서 둘 다 검사 |
16 | 17 | ||
17 | - res.writeHead('200', { 'Content-Type': 'text/html;charset=utf8' }); | 18 | + if(Conn.pool){ |
18 | - res.write('<h1>Result form Express Server</h1>'); | 19 | + Conn.adduser(paramName, paramId, paramPassword, function(err, addedUser) { |
19 | - res.write('<div><p>Param name : ' + paramName + '</p></div>'); | 20 | + if(err){ |
20 | - res.write('<div><p>Param id : ' + paramId + '</p></div>'); | 21 | + console.error(err.stack); |
21 | - res.write('<div><p>Param password : ' + paramPassword + '</p></div>'); | 22 | + res.writeHead('200', { 'Content-Type': 'text/html;charset=utf8' }); |
22 | - res.write("<br><br><a href ='/login.html'>로그인 페이지로 돌아가기</a>"); | 23 | + res.write('<h1>추가 중 오류</h1>'); |
23 | - res.end(); | 24 | + res.write('<div><p>Param name : ' + paramName + '</p></div>'); |
25 | + res.write('<div><p>Param id : ' + paramId + '</p></div>'); | ||
26 | + res.write('<div><p>Param password : ' + paramPassword + '</p></div>'); | ||
27 | + res.write("<br><br><a href ='/login.html'>로그인 페이지로 돌아가기</a>"); | ||
28 | + res.end(); | ||
29 | + | ||
30 | + return; | ||
31 | + } | ||
32 | + if (addedUser){ | ||
33 | + console.dir(addedUser); | ||
34 | + | ||
35 | + res.writeHead('200', { 'Content-Type': 'text/html;charset=utf8' }); | ||
36 | + res.write('<h1>회원가입 성공</h1>'); | ||
37 | + res.write('<div><p>Param name : ' + paramName + '</p></div>'); | ||
38 | + res.write('<div><p>Param id : ' + paramId + '</p></div>'); | ||
39 | + res.write('<div><p>Param password : ' + paramPassword + '</p></div>'); | ||
40 | + res.write("<br><br><a href ='/login.html'>로그인 페이지로 돌아가기</a>"); | ||
41 | + res.end(); | ||
42 | + } else { | ||
43 | + res.writeHead('200', { 'Content-Type': 'text/html;charset=utf8' }); | ||
44 | + res.write('<h1>회원가입 실패.</h1>'); | ||
45 | + res.write('<div><p>Param id : ' + paramId + '</p></div>'); | ||
46 | + res.write('<div><p>Param password : ' + paramPassword + '</p></div>'); | ||
47 | + res.write("<br><br><a href ='/login.html'>로그인 페이지로 돌아가기</a>"); | ||
48 | + res.end(); | ||
49 | + } | ||
50 | + | ||
51 | + }) | ||
52 | + }else{ | ||
53 | + res.writeHead('200', { 'Content-Type': 'text/html;charset=utf8' }); | ||
54 | + res.write('<h1>데이터베이스 연결 실패</h1>'); | ||
55 | + res.end(); | ||
56 | + } | ||
57 | + | ||
58 | + | ||
24 | }); | 59 | }); |
25 | 60 | ||
26 | module.exports = router | 61 | module.exports = router |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
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 | ... | ... |
... | @@ -55,6 +55,14 @@ | ... | @@ -55,6 +55,14 @@ |
55 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | 55 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |
56 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" | 56 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" |
57 | }, | 57 | }, |
58 | + "node_modules/bignumber.js": { | ||
59 | + "version": "9.0.0", | ||
60 | + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", | ||
61 | + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", | ||
62 | + "engines": { | ||
63 | + "node": "*" | ||
64 | + } | ||
65 | + }, | ||
58 | "node_modules/body-parser": { | 66 | "node_modules/body-parser": { |
59 | "version": "1.20.0", | 67 | "version": "1.20.0", |
60 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", | 68 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", |
... | @@ -187,6 +195,11 @@ | ... | @@ -187,6 +195,11 @@ |
187 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | 195 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", |
188 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | 196 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" |
189 | }, | 197 | }, |
198 | + "node_modules/core-util-is": { | ||
199 | + "version": "1.0.3", | ||
200 | + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", | ||
201 | + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" | ||
202 | + }, | ||
190 | "node_modules/debug": { | 203 | "node_modules/debug": { |
191 | "version": "2.6.9", | 204 | "version": "2.6.9", |
192 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | 205 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
... | @@ -453,6 +466,11 @@ | ... | @@ -453,6 +466,11 @@ |
453 | "node": ">= 0.10" | 466 | "node": ">= 0.10" |
454 | } | 467 | } |
455 | }, | 468 | }, |
469 | + "node_modules/isarray": { | ||
470 | + "version": "1.0.0", | ||
471 | + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | ||
472 | + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||
473 | + }, | ||
456 | "node_modules/jake": { | 474 | "node_modules/jake": { |
457 | "version": "10.8.5", | 475 | "version": "10.8.5", |
458 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", | 476 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", |
... | @@ -542,6 +560,25 @@ | ... | @@ -542,6 +560,25 @@ |
542 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | 560 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |
543 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | 561 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |
544 | }, | 562 | }, |
563 | + "node_modules/mysql": { | ||
564 | + "version": "2.18.1", | ||
565 | + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", | ||
566 | + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", | ||
567 | + "dependencies": { | ||
568 | + "bignumber.js": "9.0.0", | ||
569 | + "readable-stream": "2.3.7", | ||
570 | + "safe-buffer": "5.1.2", | ||
571 | + "sqlstring": "2.3.1" | ||
572 | + }, | ||
573 | + "engines": { | ||
574 | + "node": ">= 0.6" | ||
575 | + } | ||
576 | + }, | ||
577 | + "node_modules/mysql/node_modules/safe-buffer": { | ||
578 | + "version": "5.1.2", | ||
579 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
580 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
581 | + }, | ||
545 | "node_modules/negotiator": { | 582 | "node_modules/negotiator": { |
546 | "version": "0.6.3", | 583 | "version": "0.6.3", |
547 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", | 584 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", |
... | @@ -599,6 +636,11 @@ | ... | @@ -599,6 +636,11 @@ |
599 | "node": ">= 0.6.0" | 636 | "node": ">= 0.6.0" |
600 | } | 637 | } |
601 | }, | 638 | }, |
639 | + "node_modules/process-nextick-args": { | ||
640 | + "version": "2.0.1", | ||
641 | + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", | ||
642 | + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" | ||
643 | + }, | ||
602 | "node_modules/proxy-addr": { | 644 | "node_modules/proxy-addr": { |
603 | "version": "2.0.7", | 645 | "version": "2.0.7", |
604 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", | 646 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", |
... | @@ -647,6 +689,25 @@ | ... | @@ -647,6 +689,25 @@ |
647 | "node": ">= 0.8" | 689 | "node": ">= 0.8" |
648 | } | 690 | } |
649 | }, | 691 | }, |
692 | + "node_modules/readable-stream": { | ||
693 | + "version": "2.3.7", | ||
694 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", | ||
695 | + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", | ||
696 | + "dependencies": { | ||
697 | + "core-util-is": "~1.0.0", | ||
698 | + "inherits": "~2.0.3", | ||
699 | + "isarray": "~1.0.0", | ||
700 | + "process-nextick-args": "~2.0.0", | ||
701 | + "safe-buffer": "~5.1.1", | ||
702 | + "string_decoder": "~1.1.1", | ||
703 | + "util-deprecate": "~1.0.1" | ||
704 | + } | ||
705 | + }, | ||
706 | + "node_modules/readable-stream/node_modules/safe-buffer": { | ||
707 | + "version": "5.1.2", | ||
708 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
709 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
710 | + }, | ||
650 | "node_modules/safe-buffer": { | 711 | "node_modules/safe-buffer": { |
651 | "version": "5.2.1", | 712 | "version": "5.2.1", |
652 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | 713 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", |
... | @@ -731,6 +792,14 @@ | ... | @@ -731,6 +792,14 @@ |
731 | "url": "https://github.com/sponsors/ljharb" | 792 | "url": "https://github.com/sponsors/ljharb" |
732 | } | 793 | } |
733 | }, | 794 | }, |
795 | + "node_modules/sqlstring": { | ||
796 | + "version": "2.3.1", | ||
797 | + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", | ||
798 | + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=", | ||
799 | + "engines": { | ||
800 | + "node": ">= 0.6" | ||
801 | + } | ||
802 | + }, | ||
734 | "node_modules/statuses": { | 803 | "node_modules/statuses": { |
735 | "version": "2.0.1", | 804 | "version": "2.0.1", |
736 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", | 805 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", |
... | @@ -739,6 +808,19 @@ | ... | @@ -739,6 +808,19 @@ |
739 | "node": ">= 0.8" | 808 | "node": ">= 0.8" |
740 | } | 809 | } |
741 | }, | 810 | }, |
811 | + "node_modules/string_decoder": { | ||
812 | + "version": "1.1.1", | ||
813 | + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
814 | + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
815 | + "dependencies": { | ||
816 | + "safe-buffer": "~5.1.0" | ||
817 | + } | ||
818 | + }, | ||
819 | + "node_modules/string_decoder/node_modules/safe-buffer": { | ||
820 | + "version": "5.1.2", | ||
821 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
822 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
823 | + }, | ||
742 | "node_modules/supports-color": { | 824 | "node_modules/supports-color": { |
743 | "version": "7.2.0", | 825 | "version": "7.2.0", |
744 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", | 826 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", |
... | @@ -786,6 +868,11 @@ | ... | @@ -786,6 +868,11 @@ |
786 | "inherits": "2.0.3" | 868 | "inherits": "2.0.3" |
787 | } | 869 | } |
788 | }, | 870 | }, |
871 | + "node_modules/util-deprecate": { | ||
872 | + "version": "1.0.2", | ||
873 | + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||
874 | + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" | ||
875 | + }, | ||
789 | "node_modules/util/node_modules/inherits": { | 876 | "node_modules/util/node_modules/inherits": { |
790 | "version": "2.0.3", | 877 | "version": "2.0.3", |
791 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | 878 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | ... | ... |
... | @@ -15,6 +15,7 @@ | ... | @@ -15,6 +15,7 @@ |
15 | "express": "^4.18.1", | 15 | "express": "^4.18.1", |
16 | "express-error-handler": "^1.1.0", | 16 | "express-error-handler": "^1.1.0", |
17 | "http": "^0.0.1-security", | 17 | "http": "^0.0.1-security", |
18 | + "mysql": "^2.18.1", | ||
18 | "path": "^0.12.7", | 19 | "path": "^0.12.7", |
19 | "serve-static": "^1.15.0" | 20 | "serve-static": "^1.15.0" |
20 | } | 21 | } |
... | @@ -70,6 +71,14 @@ | ... | @@ -70,6 +71,14 @@ |
70 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | 71 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |
71 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" | 72 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" |
72 | }, | 73 | }, |
74 | + "node_modules/bignumber.js": { | ||
75 | + "version": "9.0.0", | ||
76 | + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", | ||
77 | + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", | ||
78 | + "engines": { | ||
79 | + "node": "*" | ||
80 | + } | ||
81 | + }, | ||
73 | "node_modules/body-parser": { | 82 | "node_modules/body-parser": { |
74 | "version": "1.20.0", | 83 | "version": "1.20.0", |
75 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", | 84 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", |
... | @@ -202,6 +211,11 @@ | ... | @@ -202,6 +211,11 @@ |
202 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | 211 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", |
203 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | 212 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" |
204 | }, | 213 | }, |
214 | + "node_modules/core-util-is": { | ||
215 | + "version": "1.0.3", | ||
216 | + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", | ||
217 | + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" | ||
218 | + }, | ||
205 | "node_modules/debug": { | 219 | "node_modules/debug": { |
206 | "version": "2.6.9", | 220 | "version": "2.6.9", |
207 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | 221 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
... | @@ -468,6 +482,11 @@ | ... | @@ -468,6 +482,11 @@ |
468 | "node": ">= 0.10" | 482 | "node": ">= 0.10" |
469 | } | 483 | } |
470 | }, | 484 | }, |
485 | + "node_modules/isarray": { | ||
486 | + "version": "1.0.0", | ||
487 | + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | ||
488 | + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||
489 | + }, | ||
471 | "node_modules/jake": { | 490 | "node_modules/jake": { |
472 | "version": "10.8.5", | 491 | "version": "10.8.5", |
473 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", | 492 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", |
... | @@ -557,6 +576,25 @@ | ... | @@ -557,6 +576,25 @@ |
557 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | 576 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |
558 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | 577 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |
559 | }, | 578 | }, |
579 | + "node_modules/mysql": { | ||
580 | + "version": "2.18.1", | ||
581 | + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", | ||
582 | + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", | ||
583 | + "dependencies": { | ||
584 | + "bignumber.js": "9.0.0", | ||
585 | + "readable-stream": "2.3.7", | ||
586 | + "safe-buffer": "5.1.2", | ||
587 | + "sqlstring": "2.3.1" | ||
588 | + }, | ||
589 | + "engines": { | ||
590 | + "node": ">= 0.6" | ||
591 | + } | ||
592 | + }, | ||
593 | + "node_modules/mysql/node_modules/safe-buffer": { | ||
594 | + "version": "5.1.2", | ||
595 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
596 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
597 | + }, | ||
560 | "node_modules/negotiator": { | 598 | "node_modules/negotiator": { |
561 | "version": "0.6.3", | 599 | "version": "0.6.3", |
562 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", | 600 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", |
... | @@ -614,6 +652,11 @@ | ... | @@ -614,6 +652,11 @@ |
614 | "node": ">= 0.6.0" | 652 | "node": ">= 0.6.0" |
615 | } | 653 | } |
616 | }, | 654 | }, |
655 | + "node_modules/process-nextick-args": { | ||
656 | + "version": "2.0.1", | ||
657 | + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", | ||
658 | + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" | ||
659 | + }, | ||
617 | "node_modules/proxy-addr": { | 660 | "node_modules/proxy-addr": { |
618 | "version": "2.0.7", | 661 | "version": "2.0.7", |
619 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", | 662 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", |
... | @@ -662,6 +705,25 @@ | ... | @@ -662,6 +705,25 @@ |
662 | "node": ">= 0.8" | 705 | "node": ">= 0.8" |
663 | } | 706 | } |
664 | }, | 707 | }, |
708 | + "node_modules/readable-stream": { | ||
709 | + "version": "2.3.7", | ||
710 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", | ||
711 | + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", | ||
712 | + "dependencies": { | ||
713 | + "core-util-is": "~1.0.0", | ||
714 | + "inherits": "~2.0.3", | ||
715 | + "isarray": "~1.0.0", | ||
716 | + "process-nextick-args": "~2.0.0", | ||
717 | + "safe-buffer": "~5.1.1", | ||
718 | + "string_decoder": "~1.1.1", | ||
719 | + "util-deprecate": "~1.0.1" | ||
720 | + } | ||
721 | + }, | ||
722 | + "node_modules/readable-stream/node_modules/safe-buffer": { | ||
723 | + "version": "5.1.2", | ||
724 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
725 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
726 | + }, | ||
665 | "node_modules/safe-buffer": { | 727 | "node_modules/safe-buffer": { |
666 | "version": "5.2.1", | 728 | "version": "5.2.1", |
667 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | 729 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", |
... | @@ -746,6 +808,14 @@ | ... | @@ -746,6 +808,14 @@ |
746 | "url": "https://github.com/sponsors/ljharb" | 808 | "url": "https://github.com/sponsors/ljharb" |
747 | } | 809 | } |
748 | }, | 810 | }, |
811 | + "node_modules/sqlstring": { | ||
812 | + "version": "2.3.1", | ||
813 | + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", | ||
814 | + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=", | ||
815 | + "engines": { | ||
816 | + "node": ">= 0.6" | ||
817 | + } | ||
818 | + }, | ||
749 | "node_modules/statuses": { | 819 | "node_modules/statuses": { |
750 | "version": "2.0.1", | 820 | "version": "2.0.1", |
751 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", | 821 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", |
... | @@ -754,6 +824,19 @@ | ... | @@ -754,6 +824,19 @@ |
754 | "node": ">= 0.8" | 824 | "node": ">= 0.8" |
755 | } | 825 | } |
756 | }, | 826 | }, |
827 | + "node_modules/string_decoder": { | ||
828 | + "version": "1.1.1", | ||
829 | + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
830 | + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
831 | + "dependencies": { | ||
832 | + "safe-buffer": "~5.1.0" | ||
833 | + } | ||
834 | + }, | ||
835 | + "node_modules/string_decoder/node_modules/safe-buffer": { | ||
836 | + "version": "5.1.2", | ||
837 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
838 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
839 | + }, | ||
757 | "node_modules/supports-color": { | 840 | "node_modules/supports-color": { |
758 | "version": "7.2.0", | 841 | "version": "7.2.0", |
759 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", | 842 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", |
... | @@ -801,6 +884,11 @@ | ... | @@ -801,6 +884,11 @@ |
801 | "inherits": "2.0.3" | 884 | "inherits": "2.0.3" |
802 | } | 885 | } |
803 | }, | 886 | }, |
887 | + "node_modules/util-deprecate": { | ||
888 | + "version": "1.0.2", | ||
889 | + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||
890 | + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" | ||
891 | + }, | ||
804 | "node_modules/util/node_modules/inherits": { | 892 | "node_modules/util/node_modules/inherits": { |
805 | "version": "2.0.3", | 893 | "version": "2.0.3", |
806 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | 894 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", |
... | @@ -862,6 +950,11 @@ | ... | @@ -862,6 +950,11 @@ |
862 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | 950 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |
863 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" | 951 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" |
864 | }, | 952 | }, |
953 | + "bignumber.js": { | ||
954 | + "version": "9.0.0", | ||
955 | + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", | ||
956 | + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" | ||
957 | + }, | ||
865 | "body-parser": { | 958 | "body-parser": { |
866 | "version": "1.20.0", | 959 | "version": "1.20.0", |
867 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", | 960 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", |
... | @@ -960,6 +1053,11 @@ | ... | @@ -960,6 +1053,11 @@ |
960 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | 1053 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", |
961 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | 1054 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" |
962 | }, | 1055 | }, |
1056 | + "core-util-is": { | ||
1057 | + "version": "1.0.3", | ||
1058 | + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", | ||
1059 | + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" | ||
1060 | + }, | ||
963 | "debug": { | 1061 | "debug": { |
964 | "version": "2.6.9", | 1062 | "version": "2.6.9", |
965 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | 1063 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
... | @@ -1170,6 +1268,11 @@ | ... | @@ -1170,6 +1268,11 @@ |
1170 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", | 1268 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", |
1171 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" | 1269 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" |
1172 | }, | 1270 | }, |
1271 | + "isarray": { | ||
1272 | + "version": "1.0.0", | ||
1273 | + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | ||
1274 | + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||
1275 | + }, | ||
1173 | "jake": { | 1276 | "jake": { |
1174 | "version": "10.8.5", | 1277 | "version": "10.8.5", |
1175 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", | 1278 | "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", |
... | @@ -1232,6 +1335,24 @@ | ... | @@ -1232,6 +1335,24 @@ |
1232 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | 1335 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |
1233 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | 1336 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |
1234 | }, | 1337 | }, |
1338 | + "mysql": { | ||
1339 | + "version": "2.18.1", | ||
1340 | + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", | ||
1341 | + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", | ||
1342 | + "requires": { | ||
1343 | + "bignumber.js": "9.0.0", | ||
1344 | + "readable-stream": "2.3.7", | ||
1345 | + "safe-buffer": "5.1.2", | ||
1346 | + "sqlstring": "2.3.1" | ||
1347 | + }, | ||
1348 | + "dependencies": { | ||
1349 | + "safe-buffer": { | ||
1350 | + "version": "5.1.2", | ||
1351 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
1352 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
1353 | + } | ||
1354 | + } | ||
1355 | + }, | ||
1235 | "negotiator": { | 1356 | "negotiator": { |
1236 | "version": "0.6.3", | 1357 | "version": "0.6.3", |
1237 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", | 1358 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", |
... | @@ -1274,6 +1395,11 @@ | ... | @@ -1274,6 +1395,11 @@ |
1274 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", | 1395 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", |
1275 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" | 1396 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" |
1276 | }, | 1397 | }, |
1398 | + "process-nextick-args": { | ||
1399 | + "version": "2.0.1", | ||
1400 | + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", | ||
1401 | + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" | ||
1402 | + }, | ||
1277 | "proxy-addr": { | 1403 | "proxy-addr": { |
1278 | "version": "2.0.7", | 1404 | "version": "2.0.7", |
1279 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", | 1405 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", |
... | @@ -1307,6 +1433,27 @@ | ... | @@ -1307,6 +1433,27 @@ |
1307 | "unpipe": "1.0.0" | 1433 | "unpipe": "1.0.0" |
1308 | } | 1434 | } |
1309 | }, | 1435 | }, |
1436 | + "readable-stream": { | ||
1437 | + "version": "2.3.7", | ||
1438 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", | ||
1439 | + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", | ||
1440 | + "requires": { | ||
1441 | + "core-util-is": "~1.0.0", | ||
1442 | + "inherits": "~2.0.3", | ||
1443 | + "isarray": "~1.0.0", | ||
1444 | + "process-nextick-args": "~2.0.0", | ||
1445 | + "safe-buffer": "~5.1.1", | ||
1446 | + "string_decoder": "~1.1.1", | ||
1447 | + "util-deprecate": "~1.0.1" | ||
1448 | + }, | ||
1449 | + "dependencies": { | ||
1450 | + "safe-buffer": { | ||
1451 | + "version": "5.1.2", | ||
1452 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
1453 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
1454 | + } | ||
1455 | + } | ||
1456 | + }, | ||
1310 | "safe-buffer": { | 1457 | "safe-buffer": { |
1311 | "version": "5.2.1", | 1458 | "version": "5.2.1", |
1312 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | 1459 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", |
... | @@ -1370,11 +1517,31 @@ | ... | @@ -1370,11 +1517,31 @@ |
1370 | "object-inspect": "^1.9.0" | 1517 | "object-inspect": "^1.9.0" |
1371 | } | 1518 | } |
1372 | }, | 1519 | }, |
1520 | + "sqlstring": { | ||
1521 | + "version": "2.3.1", | ||
1522 | + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", | ||
1523 | + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" | ||
1524 | + }, | ||
1373 | "statuses": { | 1525 | "statuses": { |
1374 | "version": "2.0.1", | 1526 | "version": "2.0.1", |
1375 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", | 1527 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", |
1376 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" | 1528 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" |
1377 | }, | 1529 | }, |
1530 | + "string_decoder": { | ||
1531 | + "version": "1.1.1", | ||
1532 | + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
1533 | + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
1534 | + "requires": { | ||
1535 | + "safe-buffer": "~5.1.0" | ||
1536 | + }, | ||
1537 | + "dependencies": { | ||
1538 | + "safe-buffer": { | ||
1539 | + "version": "5.1.2", | ||
1540 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
1541 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
1542 | + } | ||
1543 | + } | ||
1544 | + }, | ||
1378 | "supports-color": { | 1545 | "supports-color": { |
1379 | "version": "7.2.0", | 1546 | "version": "7.2.0", |
1380 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", | 1547 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", |
... | @@ -1417,6 +1584,11 @@ | ... | @@ -1417,6 +1584,11 @@ |
1417 | } | 1584 | } |
1418 | } | 1585 | } |
1419 | }, | 1586 | }, |
1587 | + "util-deprecate": { | ||
1588 | + "version": "1.0.2", | ||
1589 | + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||
1590 | + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" | ||
1591 | + }, | ||
1420 | "utils-merge": { | 1592 | "utils-merge": { |
1421 | "version": "1.0.1", | 1593 | "version": "1.0.1", |
1422 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", | 1594 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", | ... | ... |
... | @@ -15,6 +15,7 @@ | ... | @@ -15,6 +15,7 @@ |
15 | "express": "^4.18.1", | 15 | "express": "^4.18.1", |
16 | "express-error-handler": "^1.1.0", | 16 | "express-error-handler": "^1.1.0", |
17 | "http": "^0.0.1-security", | 17 | "http": "^0.0.1-security", |
18 | + "mysql": "^2.18.1", | ||
18 | "path": "^0.12.7", | 19 | "path": "^0.12.7", |
19 | "serve-static": "^1.15.0" | 20 | "serve-static": "^1.15.0" |
20 | } | 21 | } | ... | ... |
-
Please register or login to post a comment