강민구

shoppingmall

1 +<!DOCTYPE html>
2 +<html>
3 + <head>
4 + <title>CuBe!</title>
5 + <script src="./app.js"></script>
6 + </head>
7 + <body>
8 +
9 + <p type="text" name="관리자메뉴" maxlength=20 size=20 > 관리자 메뉴입니다. </p>
10 +
11 + <form action="/adminsee" method="post">
12 + <tr>
13 + <td><input type="submit" value="상품메뉴"></td>
14 + </tr>
15 +
16 + </table>
17 + </form>
18 + <form action="/reg" method="post">
19 + <table>
20 + <tr>
21 + <td>제품 이름 : </td>
22 + <td><input type="text" name="name"></td>
23 + </tr>
24 + <tr>
25 + <td>분류 : 1:음식, 2:의류, 3:전자제품, 4:가구, 5:문구 </td>
26 + <td><input type="text" name= "category"></td>
27 + </tr>
28 + <tr>
29 + <td>원가 : </td>
30 + <td><input type="text" name="cost"></td>
31 + </tr>
32 + <tr>
33 + <td>판매가 : </td>
34 + <td><input type="text" name="price"></td>
35 + </tr>
36 + <tr>
37 + <td>순이익 : </td>
38 + <td><input type="text" name="profit"></td>
39 + </tr>
40 + <tr>
41 + <td>제품설명 : </td>
42 + <td><input type="text" name="content"></td>
43 + </tr>
44 + <tr>
45 + <td>이미지 : </td>
46 + <td><input type="text" name="image"></td>
47 + </tr>
48 + <tr>
49 + <td><input type="submit" value="상품등록"></td>
50 + </tr>
51 +
52 + </table>
53 + </form>
54 + <form action="/handling" method="post">
55 + <tr>
56 + <td>배송할 주문 : </td>
57 + <td><input type="text" name="id"></td>
58 + </tr>
59 + <tr>
60 + <td><input type="submit" value="주문처리"></td>
61 + </tr>
62 + </form>
63 +<form action="/" method="get">
64 + <tr>
65 + <td><input type="submit" value="처음화면으로"></td>
66 + </tr>
67 +
68 + </table>
69 +</form>
70 + </body>
71 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +let express = require('express');
2 +let app = express();
3 +let bodyParser = require('body-parser');
4 +let session = require('express-session')
5 +
6 +app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}))
7 +app.use(bodyParser.urlencoded({ extended: false }));
8 +app.use(bodyParser.json());
9 +
10 +var db_config = require(__dirname+ '/cf.js');
11 +var conn = db_config.init();
12 +
13 +db_config.connect(conn);
14 +
15 +app.set('views', __dirname + '/views');
16 +app.set('view engine', 'ejs');
17 +
18 +app.set('port',process.env.PORT || 80 );
19 +
20 +let server = app.listen(80, () => console.log('Server is running on port 80...'));
21 +
22 +const jsdom = require("jsdom");
23 +const {JSDOM} = jsdom;
24 +global.document = new JSDOM('/index.html').window.document;
25 +
26 +const path = require('path');
27 +const { copyFileSync } = require('fs');
28 +app.set('front', process.env.FRONT || path.join(__dirname, '../프로젝트'));
29 +
30 +app.get('/', (req, res) =>
31 + res.sendFile(path.join(app.get('front'), '/index.html')),
32 +);
33 +app.get('/join.html', (req, res) =>
34 + res.sendFile(path.join(app.get('front'), '/join.html')),
35 +);
36 +app.post('/signup', function (req, res){
37 + let body = req.body;
38 + console.log(body);
39 +
40 + var table = 'cust';
41 + var sql = `INSERT INTO `+ table + ` VALUES(?,?,?,?,?,NOW(),?,?,1,0)`;
42 + if ( body.code == 'alsrnvkdlxld') sql = `INSERT INTO `+ table + ` VALUES(?,?,?,?,?,NOW(),?,?,1,1)`;
43 + var params = [body.id, body.password, body.name, body.email, body.address_num,
44 + body.address, body.phone];
45 + console.log(sql);
46 + conn.query(sql, params, function(err) {
47 + if(err) {
48 + console.log('query is not excuted. insert fail...\n' + err);
49 + res.redirect("/failcust");
50 + }
51 + else {
52 + res.redirect('/');
53 + }
54 + });
55 +})
56 +app.post('/login', function (req,res){
57 + let body = req.body;
58 + let i =0;
59 + new Promise((r1, r2) => {
60 + var sql = 'SELECT * FROM cust';
61 + conn.query(sql, function (err, cust, fields) {
62 + if(err) {
63 + console.log('query is not excuted. select fail...\n' + err)
64 + res.redirect("/failcust");
65 + }
66 + else {
67 + User = cust;
68 + console.log('users : ', User);
69 + console.log(User.length);
70 + r1();
71 + }
72 + });
73 +
74 + })
75 + .then(() => {
76 + new Promise((r1, r2) => {
77 + for(i = 0 ; i < User.length; i++){
78 + if (body.id == User[i].id && body.password == User[i].pwd){
79 + if(User[i].isadmin == 1){
80 + res.redirect('/admin');
81 + return;
82 + } else{
83 + res.redirect('/cust');
84 + return;
85 + }
86 + }
87 + if(i == User.length){
88 + r1();
89 + }
90 + }
91 + })
92 + .then(() => {
93 + console.log(User);
94 + console.log(i);
95 + console.log(User[i].id);
96 + res.redirect('/');
97 + })
98 + })
99 +})
100 +app.get('/cust', (req, res) =>
101 + res.sendFile(path.join(app.get('front'), '/cust.html')),
102 +);
103 +app.get('/admin', (req, res) =>
104 + res.sendFile(path.join(app.get('front'), '/admin.html')),
105 +);
106 +
107 +app.post('/reg', function (req, res) {
108 + let body = req.body;
109 + var Item = '';
110 + var sql = 'SELECT id FROM item';
111 + conn.query(sql, function (err, item, fields) {
112 + if(err) {
113 + console.log('query is not excuted. select fail...\n' + err)
114 + res.redirect("/failcust");
115 + }
116 + else {
117 + Item = item;
118 + console.log('items : ',Item);
119 + //res.send("OK");
120 +
121 +
122 + var table = 'item';
123 + var sql = `INSERT INTO `+ table + ` VALUES(?,?,?,?,?,?,?,?,1,Now())`;
124 +
125 + var params = [Item.length, body.name, body.category, body.cost, body.price,
126 + body.profit, body.content,body.image ];
127 + console.log(sql);
128 + conn.query(sql, params, function(err) {
129 + if(err) {
130 + console.log('query is not excuted. insert fail...\n' + err);
131 + res.redirect("/failcust");
132 + }
133 + else {
134 + res.redirect('/admin');
135 + }
136 + });
137 +
138 +
139 + }
140 + });
141 +
142 +
143 +
144 +})
145 +
146 +app.post('/handling', function (req, res) {
147 + let body = req.body;
148 + let id = body.id;
149 +
150 + var sql = 'update item_order set complete = 1 where id = ?';
151 + var param = id;
152 + conn.query(sql,param, function (err, item, fields) {
153 + if(err) {
154 + console.log('query is not excuted. select fail...\n' + err)
155 + res.redirect("/failcust");
156 + }
157 + else {
158 + console.log('update item : ',id);
159 + //res.send("OK");
160 + res.redirect('/admin');
161 +
162 + }
163 + })
164 +})
165 +app.post('/see', function (req, res) {
166 + let body = req.body;
167 + var Item = '';
168 + var sql = 'SELECT * FROM item';
169 + conn.query(sql, function (err, item, fields) {
170 + if(err) {
171 + console.log('query is not excuted. select fail...\n' + err)
172 + res.redirect("/failcust");
173 + }
174 + else {
175 + Item = item;
176 + console.log('items : ',Item);
177 + //res.send("OK");
178 +
179 + res.write(cust_html);
180 +
181 + for(let i = 0; i < Item.length; i++){
182 + res.write(Item[i].name +' | 번호 : '+ Item[i].id +' | 가격 : '+ Item[i].price + ' | 상품설명 : ' + Item[i].content + "<br></br>");
183 +
184 +
185 +
186 + }
187 + res.end();
188 + }
189 + });
190 +
191 +})
192 +app.post('/adminsee', function (req, res) {
193 + let body = req.body;
194 + var Item = '';
195 + var sql = 'SELECT * FROM item_order';
196 + conn.query(sql, function (err, item, fields) {
197 + if(err) {
198 + console.log('query is not excuted. select fail...\n' + err)
199 + res.redirect("/failcust");
200 + }
201 + else {
202 + Item = item;
203 + console.log('items : ',Item);
204 + //res.send("OK");
205 +
206 + res.write(adminsee_html);
207 +
208 + for(let i = 0; i < Item.length; i++){
209 + res.write(' | 주문번호 : ' + Item[i].id +' | 상품번호 : '+ Item[i].item_id +' | 상품갯수 : '+ Item[i].count + ' | 주문고객 : ' + Item[i].cust_id +
210 + ' | 주문처리 유무 : ' + Item[i].complete + "<br></br>");
211 +
212 +
213 +
214 + }
215 + res.end();
216 + }
217 + });
218 +
219 +})
220 +app.get('/failcust', (req, res) =>
221 + res.sendFile(path.join(app.get('front'), '/fail.html')),
222 +);
223 +app.post('/buy', function (req, res) {
224 + let body = req.body;
225 + var usrid = body.usrid;
226 + var usrpwd = body.usrpwd;
227 + var id = body.item_id;
228 + var count = body.item_count;
229 + var table = 'item_order';
230 + console.log(Item_order);
231 + console.log(usrid);
232 + var Item_order = '';
233 + var User = '';
234 + var sql = 'SELECT * FROM item_order';
235 + conn.query(sql, function (err, item, fields) {
236 + if(err) {
237 + console.log('query is not excuted. select fail...\n' + err)
238 + res.redirect("/failcust");
239 + }
240 + else {
241 + Item_order = item;
242 + console.log('items : ',Item);
243 + //res.send("OK");
244 +
245 +
246 + var sql = 'SELECT * FROM cust';
247 + conn.query(sql, function (err, cust, fields) {
248 + if(err) {
249 + console.log('query is not excuted. select fail...\n' + err)
250 + res.redirect("/failcust");
251 + }
252 + else {
253 + User = cust;
254 + console.log('User : ',User);
255 + //res.send("OK");
256 + for(let i = 0 ; i < User.length ; i++){
257 + if (usrid == User[i].id && usrpwd == User[i].pwd){
258 + // 주문내역에 추가하는 구문
259 + var sql = `INSERT INTO `+ table + ` VALUES(?,?,?,0,?)`;
260 + var params = [ Item_order.length , id, count, usrid];
261 + console.log(sql);
262 + conn.query(sql, params, function(err) {
263 + if(err) {
264 + console.log('query is not excuted. insert fail...\n' + err);
265 + res.redirect("/failcust");
266 + return;
267 + }
268 + else {
269 + res.redirect('/cust');
270 + return;
271 + }
272 + });
273 + }
274 + }
275 + }
276 + })
277 + }
278 + })
279 +});
280 +
281 +app.post('/check', function (req,res){
282 + let body = req.body;
283 + var order = '';
284 + var table = 'item_order'
285 + console.log(typeof(body.usrid));
286 + var sql = 'SELECT * FROM '+table+ ' WHERE cust_id = ?';
287 + var params = body.usrid;
288 + conn.query(sql, params,function (err, item, fields) {
289 + if(err) {
290 + console.log('query is not excuted. select fail...\n' + err)
291 + res.redirect("/failcust");
292 + }
293 + else {
294 + order = item;
295 + console.log('item orders : ',order);
296 + //res.send("OK");
297 + res.write(`
298 + <!DOCTYPE html>
299 + <html>
300 + <head>
301 + <meta charset="utf-8">
302 + <title>CuBe!</title>
303 + <script src="./app.js"></script>
304 + </head>
305 + <body>
306 + <form action="/cust" method="get">
307 + <tr>
308 + <td><input type="submit" value="이전으로"></td>
309 + </tr>
310 + </form>
311 + </body>
312 + </html>`)
313 + for(let i = 0; i < order.length; i++){
314 + res.write('상품번호 : ' + order[i].id +' | 상품 : '+ order[i].item_id +' | 갯수 : '+ order[i].count + ' | 배송여부 : ' + order[i].complete + "<br></br>");
315 +
316 + }
317 + res.end();
318 + }
319 + });
320 +})
321 +/*
322 +app.get('/', function (req, res) {
323 + res.send('ROOT');
324 +});*/
325 +app.get ('/login', function (req, res){
326 +
327 + res.sendFile(path.join(app.get('front'), '/index.html'));
328 + let tep = req.body;
329 + console.log(tep)
330 + console.log("nono")
331 + /*var a = document.querySelector("#pass")
332 + var b = document.getElementById("pass");
333 + console.log(a);
334 + console.log(b);*/
335 +});
336 +
337 +app.get('/list', function (req, res) {
338 + var sql = 'SELECT * FROM cust';
339 + conn.query(sql, function (err, rows, fields) {
340 + if(err) {
341 + console.log('query is not excuted. select fail...\n' + err)
342 + res.send("fail");
343 + }
344 + else {
345 + console.log(rows);
346 + console.log(rows[0].id);
347 + res.send("OK");
348 + }
349 + });
350 +});
351 +
352 +app.get('/write', function (req, res) {
353 + res.render('write.ejs');
354 +});
355 +
356 +app.post('/writeAf', function (req, res) {
357 + var body = req.body;
358 + console.log(body);
359 + var table = 'cust';
360 + var sql = `INSERT INTO `+ table + ` VALUES(?,?,?,?,?,NOW(),?,?,?,?)`;
361 + var params = [body.id, body.pwd, body.name, body.email, body.address_num,
362 + body.address, body.phone, body.useyn ,body.isadmin];
363 + console.log(sql);
364 + conn.query(sql, params, function(err) {
365 + if(err) {
366 + console.log('query is not excuted. insert fail...\n' + err);
367 + res.send("fail");
368 + }
369 + else {
370 + res.redirect('/list');
371 + }
372 + });
373 +});
374 +
375 +
376 +//var User = getItemOrder('cust');
377 +var User = getUser();
378 +function getUser(){
379 + var user = '';
380 + var sql = 'SELECT * FROM cust';
381 + conn.query(sql, function (err, cust, fields) {
382 + if(err) {
383 + console.log('query is not excuted. select fail...\n' + err)
384 + res.send("fail");
385 + }
386 + else {
387 + user = cust;
388 + console.log('users : ', user);
389 + console.log(user.length);
390 + return user;
391 + }
392 + });
393 +
394 +}
395 +var Item_order = getItemOrder();
396 +function getItemOrder( tab){
397 + var order = '';
398 + var table = 'item_order'
399 + var sql = 'SELECT * FROM '+table;
400 + conn.query(sql, function (err, item, fields) {
401 + if(err) {
402 + console.log('query is not excuted. select fail...\n' + err)
403 + res.send("fail");
404 + }
405 + else {
406 + order = item;
407 + console.log('item orders : ',order);
408 + //res.send("OK");
409 +
410 + return order;
411 + }
412 + });
413 +}
414 +var Item = getItem();
415 +function getItem(){
416 + var Item = '';
417 + var sql = 'SELECT * FROM item';
418 + conn.query(sql, function (err, item, fields) {
419 + if(err) {
420 + console.log('query is not excuted. select fail...\n' + err)
421 + res.send("fail");
422 + }
423 + else {
424 + Item = item;
425 + console.log('items : ',Item);
426 + //res.send("OK");
427 + return Item;
428 + }
429 + });
430 +}
431 +var cust_html = `
432 +<!DOCTYPE html>
433 +<html>
434 + <head>
435 + <meta charset="utf-8">
436 + <title>CuBe!</title>
437 + <script src="./app.js"></script>
438 + </head>
439 + <body>
440 +
441 +
442 + <form action="/buy" method="post">
443 + <tr>
444 + <td><input type="text" name= "item_id" placeholder="구입할 상품 번호" ></td>
445 + </tr>
446 + <tr>
447 + <td><input type="text" name= "item_count" placeholder="구입할 상품 갯수" ></td>
448 + </tr>
449 + <tr>
450 + <td><input type="text" name= "usrid" placeholder="아이디" ></td>
451 + </tr>
452 + <tr>
453 + <td><input type="text" name= "usrpwd" placeholder="비밀번호" ></td>
454 + </tr>
455 + <tr>
456 + <td><input type="submit" value="상품구매"></td>
457 + </tr>
458 + </form>
459 + <form action="/cust" method="get">
460 + <tr>
461 + <td><input type="submit" value="이전으로"></td>
462 + </tr>
463 + </form>
464 + </table>
465 + <button type="button" value="로그인" onclick="money()">돈충전!!</button>
466 + <tr></tr>
467 + <!-- <a href="./login"><button type="button" value="로그인">로그인</button></a>-->
468 + <div>
469 + 잔액 : <div type ="text" id="pass"> 0 </div>
470 + </div>
471 + <script>
472 + var Money = 0;
473 + function money(){
474 + Money += 10000;
475 + document.getElementById('pass').innerHTML = Money;
476 + }
477 + </script>
478 + </body>
479 +</html>`
480 +var adminsee_html = `
481 +<!DOCTYPE html>
482 +<html>
483 + <head>
484 + <meta charset="utf-8">
485 + <title>CuBe!</title>
486 + <script src="./app.js"></script>
487 + </head>
488 + <body>
489 +
490 + <form action="/admin" method="get">
491 + <tr>
492 + <td><input type="submit" value="이전으로"></td>
493 + </tr>
494 + </form>
495 + </table>
496 + <button type="button" onclick="money()">돈충전!!</button>
497 + <tr></tr>
498 + <div>
499 + 잔액 : <div type ="text" id="pass"> 0 </div>
500 + </div>
501 + <script>
502 + var Money = 0;
503 + function money(){
504 + Money += 10000;
505 + document.getElementById('pass').innerHTML = Money;
506 + }
507 + </script>
508 + </body>
509 +</html>`
510 +var buy_html = `
511 +<!DOCTYPE html>
512 +<html>
513 + <head>
514 + <meta charset="utf-8">
515 + <title>CuBe!</title>
516 + <script src="./app.js"></script>
517 + </head>
518 + <body>
519 +
520 +
521 + <form action="/buy" method="post">
522 + <tr>
523 + <td><input type="text" name= "item_id" placeholder="구입할 상품 번호" ></td>
524 + </tr>
525 + <tr>
526 + <td><input type="text" name= "item_count" placeholder="구입할 상품 갯수" ></td>
527 + </tr>
528 +
529 + <tr>
530 + <td><input type="submit" value="상품구매"></td>
531 + </tr>
532 +
533 + </table>
534 + <!--<button type="button" value="로그인" onclick="login()">hololool</button>
535 + <a href="./login"><button type="button" value="로그인">로그인</button></a>-->
536 +
537 +
538 +</form>
539 + </body>
540 +</html>`
541 +
542 +
543 +
544 +
545 +/*
546 +let auth = (req, res, next) => {
547 + // Session Check
548 + if(req.session.isAdmin != true){
549 + // 어드민 여부 체크 필요
550 + res.send("you're not admin");
551 + return;
552 + }
553 + if (req.session.id == null)
554 + res.send("Error");
555 + else
556 + next();
557 +};
558 +let users = new Array();
559 +users[0] = {
560 + "id" : 0,
561 + "name" : "jin",
562 + "password" : "abc",
563 + "isAdmin" : true
564 +}
565 +users[1] = {
566 + "id" : 1,
567 + "name" : "jain",
568 + "password" : "abcd",
569 + "isAdmin" : false
570 +}
571 +app.post('/users', auth, (req, res) => {
572 + users[req.body.id] = [req.body.id, req.body.name, req.body.password, req.body.isAdmin];
573 +
574 +});
575 +app.put('/login', (req, res) => {
576 + var a = req.body.id;
577 +
578 + req.session.id = a;
579 + req.session.password = a.passowrd;
580 + req.session.isAdmin = user[a].isAdmin;
581 + // users 배열에서 찾도록 처리 해야 함
582 + // admin 여부를 확인하여 체크
583 + // req.body.id : ID
584 + // req.body.password : 패스워드
585 + res.send("Login");
586 +});
587 +
588 +app.put('/logout', (req, res) => {
589 + // Logout
590 + var a = req.body.id;
591 + res.send(a);
592 + // 세션 유효 여부를 체크하고 세션 Delete
593 + req.session.id = null;
594 + req.session.password = null;
595 + req.session.isAdmin = null;
596 +
597 + res.send("LogOut");
598 +
599 +});
600 +
601 +app.put('/users', (req, res) => {
602 + // update
603 + users[req.body.id].id = req.body.id;
604 + users[req.body.id].password = req.body.password;
605 + users[req.body.id].isAdmin = req.body.isAdmin ;
606 +
607 + res.send(users[req.body.id]);
608 +
609 + res.send("update");
610 +
611 +});
612 +
613 +app.get('/users/:userId', auth, (req, res) => {
614 + // get User Information
615 + let userId = req.params.id;
616 + console.log(user[userId]);
617 +
618 + res.send("OK");
619 +});
620 +
621 +// 사용자 추가 시에 admin 여부도 추가해야 함
622 +app.delete('/users/:userId', auth, (req, res) => {
623 +
624 + users[req.body.id] = null;
625 +
626 +});
627 +*/
628 +
629 +/*
630 +const html = `
631 +<!DOCTYPE html>
632 +<html>
633 +<head>
634 + <meta charset="UTF-8">
635 + <title>practice</title>
636 +</head>
637 +<body>
638 + <h1>한글 되네?</h1>
639 + <h2>신기하구나.. 너란 녀석....</h2>
640 + <script src="./app.js">
641 + document.getElementById("temp").innerHTML = ${rows[0]}
642 + </script>
643 +</body>
644 +</html>
645 +`;*/
...\ No newline at end of file ...\ No newline at end of file
1 +var mysql = require('mysql');
2 +var db_info = {
3 + host: 'localhost',
4 + port: '3306',
5 + user: 'ggalsrn',
6 + password: 'dkswjswlcla1.',
7 + database: 'shoppingmall'
8 +}
9 +
10 +module.exports = {
11 + init: function () {
12 + return mysql.createConnection(db_info);
13 + },
14 + connect: function(conn) {
15 + conn.connect(function(err) {
16 + if(err) console.error('mysql connection error : ' + err);
17 + else console.log('mysql is connected successfully!');
18 + });
19 + }
20 +}
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html>
3 + <head>
4 + <title>CuBe!</title>
5 + <script src="./app.js"></script>
6 + </head>
7 + <body>
8 + <div type ="text" id="temp"></div>
9 + <form action="/see" method="post">
10 + <tr>
11 + <td><input type="submit" value="상품메뉴"></td>
12 + </tr>
13 +
14 + </table>
15 + </form>
16 +
17 + <form action="/check" method="post">
18 + <tr>
19 + <td><input type="submit" value="주문내역확인"></td>
20 + </tr>
21 + <tr>
22 + <td><input type="text" name= "usrid" placeholder="주문한사용자 id"></td>
23 + </tr>
24 +
25 + </table>
26 +</form>
27 +<form action="/" method="get">
28 + <tr>
29 + <td><input type="submit" value="처음화면으로"></td>
30 + </tr>
31 +
32 +</table>
33 +</form>
34 + </body>
35 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html>
3 + <head>
4 + <title>CuBe!</title>
5 + <script src="./app.js"></script>
6 + </head>
7 + <body>
8 +
9 + <p type="text" name="실패" maxlength=20 size=20 > 실패 </p>
10 +
11 + <div type ="text" id="temp"></div>
12 + <form action="/" method="get">
13 + <tr>
14 + <td><input type="submit" value="처음화면으로"></td>
15 + </tr>
16 +
17 + </table>
18 + </form>
19 + <form action="/cust" method="get">
20 + <tr>
21 + <td><input type="submit" value="메뉴로"></td>
22 + </tr>
23 +
24 + </table>
25 +</form>
26 + </body>
27 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html>
3 + <head>
4 + <title>CuBe!</title>
5 + <!--<script src="./app.js" type="text/javascript"></script>-->
6 + </head>
7 + <body>
8 +
9 + <script src="./app.js" type="text/javascript"></script>
10 +
11 +
12 + <a href="./join.html"><input type="button" value="회원가입"></a>
13 +
14 + <form action="/login" method="post">
15 + <table>
16 + <tr>
17 + <td>ID : </td>
18 + <td><input type="text" name="id"></td>
19 + </tr>
20 + <tr>
21 + <td>비번 : </td>
22 + <td><input type="password" name="password"></td>
23 + </tr>
24 + <tr>
25 + <td><input type="submit" value="로그인"></td>
26 + </tr>
27 + </table>
28 + </form>
29 +
30 + <!--<button type="button" value="로그인" onclick="login()">홀롤롤로</button>
31 + <a href="./login"><button type="button" value="로그인">로그인</button></a>
32 +
33 +
34 + <div type ="text" id="pass">hi</div>
35 + <script>
36 + function login(){
37 + document.getElementById('pass').innerHTML = "not hi"
38 + }
39 + </script>
40 + -->
41 + </body>
42 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html>
3 + <head>
4 + <title>CuBe!</title>
5 + <script src="./app.js"></script>
6 + </head>
7 + <body><!--
8 + <p>
9 + <div type="text" name="회원가입" placeholder="회원가입" maxlength=20 size=20 ></div>
10 + </p> -->
11 +
12 + <form action="/signup" method="post">
13 + <table>
14 + <tr>
15 + <td>아이디 : </td>
16 + <td><input type="text" name="id"></td>
17 + </tr>
18 + <tr>
19 + <td>비번 : </td>
20 + <td><input type="password" name="password"></td>
21 + </tr>
22 + <tr>
23 + <td>이름 : </td>
24 + <td><input type="text" name= "name"></td>
25 + </tr>
26 + <tr>
27 + <td>이메일 : </td>
28 + <td><input type="text" name="email"></td>
29 + </tr>
30 + <tr>
31 + <td>우편번호 : </td>
32 + <td><input type="text" name="address_num"></td>
33 + </tr>
34 + <tr>
35 + <td>주소 : </td>
36 + <td><input type="text" name="address"></td>
37 + </tr>
38 + <tr>
39 + <td>핸드폰번호 : </td>
40 + <td><input type="text" name="phone"></td>
41 + </tr>
42 + <tr>
43 + <td>관리자 가입코드 : </td>
44 + <td><input type="text" name="code"></td>
45 + </tr>
46 + <tr>
47 + <td><input type="submit" value="가입"></td>
48 + </tr>
49 + </table>
50 + </form>
51 + </body>
52 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +var express = require('express');
2 +const request = require('request');
3 +const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
4 +const TOKEN = 'rQFBQXVZqeF1uFJSoPwloR8avp6Gkxssb2jNJdAFtfK'
5 +
6 +const fs = require('fs');
7 +const path = require('path');
8 +const HTTPS = require('https');
9 +const domain = "localhost:80"
10 +const sslport = 23023;
11 +const bodyParser = require('body-parser');
12 +
13 +let session = require('express-session');
14 +const { text } = require('body-parser');
15 +var app = express();
16 +app.use(bodyParser.json());
17 +
18 +var User = new Array();
19 +/*
20 +app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}))
21 +app.use(bodyParser.urlencoded({ extended: false }));
22 +*/
23 +var db_config = require(__dirname+ '/cf.js');
24 +var conn = db_config.init();
25 +
26 +db_config.connect(conn);
27 +
28 +app.set('views', __dirname + '/views');
29 +app.set('view engine', 'ejs');
30 +
31 +
32 +var ordernum = 0;
33 +var sql = 'SELECT * FROM item_order';
34 +conn.query(sql, function (err, rows, fields) {
35 + if(err) {
36 + console.log('query is not excuted. select fail...\n' + err)
37 + }
38 + else {
39 + ordernum = rows.length;
40 + }
41 +});
42 +function SL(text){
43 +for(let j =0; j < text.length; j++){
44 + if(text[j] = '-'){
45 + return [text.slice(0,j),text.slice(j+1)]
46 + }
47 + else return;
48 +}
49 +}
50 +function Message(Message){
51 + request.post(
52 + {
53 + url: TARGET_URL,
54 + headers: {
55 + 'Authorization': `Bearer ${TOKEN}`
56 + },
57 + json: {
58 + "replyToken":replyToken,
59 + "messages":[
60 + {
61 + "type":"text",
62 + "text":Message
63 + }
64 + ]
65 + }
66 + },(error, response, body) => {
67 + console.log(body)
68 + });
69 + return console.log(Message);
70 +}
71 +
72 +
73 +function purchase(z, text){
74 + let found = false;
75 + if(text == '0'){
76 + User[z].state = null;
77 + return;
78 + }
79 + var tx;
80 + if (! (tx = SL(text))) return Message("잘못된 입력입니다.");
81 + for( let i= 0; i < items.length; i++){
82 + if(tx[0] == items[i].id){
83 + found= true;
84 + var table = 'item_order';
85 + var sql = `INSERT INTO `+ table + ` VALUES(?,?,?,?,?)`;
86 + var params = [ordernum++, items[i].id, tx[1], 0, User[z].id];
87 + console.log(sql);
88 + conn.query(sql, params, function(err) {
89 + if(err) {
90 + console.log('query is not excuted. insert fail...\n' + err);
91 + Message('주문에 실패했습니다')
92 + return ;
93 + }
94 + else {
95 + console.log('주문성공')
96 + User[z].state = null;
97 + }
98 + });
99 +
100 + }
101 + }
102 + if (!found){
103 + Message("존재하지 않는 상품입니다");
104 + return;
105 + }
106 +}
107 +var items = '';
108 +
109 +
110 +
111 +
112 +app.post('/hook', function(req, res) {
113 + var eventObj = req.body.events[0];
114 + var text = eventObj.message.text;
115 + var replyToken = eventObj.replyToken;
116 + var cur_user = eventObj.source.userId;
117 + console.log(req.body)
118 + console.log(cur_user);
119 +
120 + var Cus = false;
121 + var z = 0
122 + for( z = 0; z < User.length; z++){
123 + if(cur_user == User[z].id){
124 + Cus = true;
125 + break;
126 + }
127 + }
128 + if( text == '회원가입') {
129 + for( var i = 0; i < User.length; i++){
130 + if(cur_user == User[i]){
131 + Message('회원가입이 이미 된 고객입니다')
132 + return;
133 + }
134 + }
135 +
136 + User.push([{"id" : cur_user},{"state" : null} ]);
137 + }
138 + if(!Cus) {
139 + Message('회원가입을 진행 후 쇼핑해주세요')
140 + }
141 + if(User[z].state != null){
142 + switch(User[z].state){
143 + case '상품구매':
144 + purchase(z,text)
145 + }
146 + }
147 + console.log('start');
148 + if( text == '상품구매') {
149 + var Message ='번호-갯수를 입력하시면(ex:5번을 5개 구매 = 5-5) 구매를\n, 0을 누르시면 취소입니다.\n'
150 + User[z].state = '상품구매'
151 + for(let i=0;i<items.length;i++){
152 + Message += items[i].id +'. '+ items[i].name + '\n'
153 + }
154 + Message(Message);
155 +
156 +
157 + }
158 +});
159 +
160 +try {
161 +
162 +var sql = 'SELECT * FROM item';
163 +conn.query(sql, function (err, rows, fields) {
164 + if(err) {
165 + console.log('query is not excuted. select fail...\n' + err)
166 + }
167 + else {
168 + items = rows;
169 + }
170 +});
171 + const option = {
172 + ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'),
173 + key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(),
174 + cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(),
175 + };
176 + HTTPS.createServer(option, app).listen(sslport, () => {
177 + console.log(`[HTTPS] Server is started on port ${sslport}`);
178 + });
179 +
180 +
181 + } catch (error) {
182 + console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
183 + console.log(error);
184 +}
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "name": "app",
3 + "version": "1.0.0",
4 + "lockfileVersion": 1,
5 + "requires": true,
6 + "dependencies": {
7 + "@tootallnate/once": {
8 + "version": "2.0.0",
9 + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
10 + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A=="
11 + },
12 + "abab": {
13 + "version": "2.0.5",
14 + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
15 + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
16 + },
17 + "accepts": {
18 + "version": "1.3.7",
19 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
20 + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
21 + "requires": {
22 + "mime-types": "~2.1.24",
23 + "negotiator": "0.6.2"
24 + }
25 + },
26 + "acorn": {
27 + "version": "8.6.0",
28 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
29 + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw=="
30 + },
31 + "acorn-globals": {
32 + "version": "6.0.0",
33 + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
34 + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
35 + "requires": {
36 + "acorn": "^7.1.1",
37 + "acorn-walk": "^7.1.1"
38 + },
39 + "dependencies": {
40 + "acorn": {
41 + "version": "7.4.1",
42 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
43 + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
44 + }
45 + }
46 + },
47 + "acorn-walk": {
48 + "version": "7.2.0",
49 + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
50 + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA=="
51 + },
52 + "agent-base": {
53 + "version": "6.0.2",
54 + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
55 + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
56 + "requires": {
57 + "debug": "4"
58 + },
59 + "dependencies": {
60 + "debug": {
61 + "version": "4.3.3",
62 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
63 + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
64 + "requires": {
65 + "ms": "2.1.2"
66 + }
67 + },
68 + "ms": {
69 + "version": "2.1.2",
70 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
71 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
72 + }
73 + }
74 + },
75 + "ajv": {
76 + "version": "6.12.6",
77 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
78 + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
79 + "requires": {
80 + "fast-deep-equal": "^3.1.1",
81 + "fast-json-stable-stringify": "^2.0.0",
82 + "json-schema-traverse": "^0.4.1",
83 + "uri-js": "^4.2.2"
84 + }
85 + },
86 + "ansi-styles": {
87 + "version": "3.2.1",
88 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
89 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
90 + "requires": {
91 + "color-convert": "^1.9.0"
92 + }
93 + },
94 + "array-flatten": {
95 + "version": "1.1.1",
96 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
97 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
98 + },
99 + "asn1": {
100 + "version": "0.2.6",
101 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
102 + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
103 + "requires": {
104 + "safer-buffer": "~2.1.0"
105 + }
106 + },
107 + "assert-plus": {
108 + "version": "1.0.0",
109 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
110 + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
111 + },
112 + "async": {
113 + "version": "0.9.2",
114 + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
115 + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
116 + },
117 + "asynckit": {
118 + "version": "0.4.0",
119 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
120 + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
121 + },
122 + "aws-sign2": {
123 + "version": "0.7.0",
124 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
125 + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
126 + },
127 + "aws4": {
128 + "version": "1.11.0",
129 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
130 + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
131 + },
132 + "balanced-match": {
133 + "version": "1.0.2",
134 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
135 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
136 + },
137 + "bcrypt-pbkdf": {
138 + "version": "1.0.2",
139 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
140 + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
141 + "requires": {
142 + "tweetnacl": "^0.14.3"
143 + }
144 + },
145 + "bignumber.js": {
146 + "version": "9.0.0",
147 + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
148 + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A=="
149 + },
150 + "body-parser": {
151 + "version": "1.19.0",
152 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
153 + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
154 + "requires": {
155 + "bytes": "3.1.0",
156 + "content-type": "~1.0.4",
157 + "debug": "2.6.9",
158 + "depd": "~1.1.2",
159 + "http-errors": "1.7.2",
160 + "iconv-lite": "0.4.24",
161 + "on-finished": "~2.3.0",
162 + "qs": "6.7.0",
163 + "raw-body": "2.4.0",
164 + "type-is": "~1.6.17"
165 + }
166 + },
167 + "brace-expansion": {
168 + "version": "1.1.11",
169 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
170 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
171 + "requires": {
172 + "balanced-match": "^1.0.0",
173 + "concat-map": "0.0.1"
174 + }
175 + },
176 + "browser-process-hrtime": {
177 + "version": "1.0.0",
178 + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
179 + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
180 + },
181 + "bytes": {
182 + "version": "3.1.0",
183 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
184 + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
185 + },
186 + "caseless": {
187 + "version": "0.12.0",
188 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
189 + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
190 + },
191 + "chalk": {
192 + "version": "2.4.2",
193 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
194 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
195 + "requires": {
196 + "ansi-styles": "^3.2.1",
197 + "escape-string-regexp": "^1.0.5",
198 + "supports-color": "^5.3.0"
199 + }
200 + },
201 + "color-convert": {
202 + "version": "1.9.3",
203 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
204 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
205 + "requires": {
206 + "color-name": "1.1.3"
207 + }
208 + },
209 + "color-name": {
210 + "version": "1.1.3",
211 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
212 + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
213 + },
214 + "combined-stream": {
215 + "version": "1.0.8",
216 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
217 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
218 + "requires": {
219 + "delayed-stream": "~1.0.0"
220 + }
221 + },
222 + "concat-map": {
223 + "version": "0.0.1",
224 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
225 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
226 + },
227 + "content-disposition": {
228 + "version": "0.5.3",
229 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
230 + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
231 + "requires": {
232 + "safe-buffer": "5.1.2"
233 + }
234 + },
235 + "content-type": {
236 + "version": "1.0.4",
237 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
238 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
239 + },
240 + "cookie": {
241 + "version": "0.4.0",
242 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
243 + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
244 + },
245 + "cookie-signature": {
246 + "version": "1.0.6",
247 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
248 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
249 + },
250 + "core-util-is": {
251 + "version": "1.0.3",
252 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
253 + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
254 + },
255 + "cssom": {
256 + "version": "0.5.0",
257 + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
258 + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw=="
259 + },
260 + "cssstyle": {
261 + "version": "2.3.0",
262 + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
263 + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
264 + "requires": {
265 + "cssom": "~0.3.6"
266 + },
267 + "dependencies": {
268 + "cssom": {
269 + "version": "0.3.8",
270 + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
271 + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
272 + }
273 + }
274 + },
275 + "dashdash": {
276 + "version": "1.14.1",
277 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
278 + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
279 + "requires": {
280 + "assert-plus": "^1.0.0"
281 + }
282 + },
283 + "data-urls": {
284 + "version": "3.0.1",
285 + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.1.tgz",
286 + "integrity": "sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==",
287 + "requires": {
288 + "abab": "^2.0.3",
289 + "whatwg-mimetype": "^3.0.0",
290 + "whatwg-url": "^10.0.0"
291 + }
292 + },
293 + "debug": {
294 + "version": "2.6.9",
295 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
296 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
297 + "requires": {
298 + "ms": "2.0.0"
299 + }
300 + },
301 + "decimal.js": {
302 + "version": "10.3.1",
303 + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
304 + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ=="
305 + },
306 + "deep-is": {
307 + "version": "0.1.4",
308 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
309 + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
310 + },
311 + "delayed-stream": {
312 + "version": "1.0.0",
313 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
314 + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
315 + },
316 + "depd": {
317 + "version": "1.1.2",
318 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
319 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
320 + },
321 + "destroy": {
322 + "version": "1.0.4",
323 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
324 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
325 + },
326 + "domexception": {
327 + "version": "4.0.0",
328 + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
329 + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
330 + "requires": {
331 + "webidl-conversions": "^7.0.0"
332 + }
333 + },
334 + "ecc-jsbn": {
335 + "version": "0.1.2",
336 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
337 + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
338 + "requires": {
339 + "jsbn": "~0.1.0",
340 + "safer-buffer": "^2.1.0"
341 + }
342 + },
343 + "ee-first": {
344 + "version": "1.1.1",
345 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
346 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
347 + },
348 + "ejs": {
349 + "version": "3.1.6",
350 + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz",
351 + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==",
352 + "requires": {
353 + "jake": "^10.6.1"
354 + }
355 + },
356 + "encodeurl": {
357 + "version": "1.0.2",
358 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
359 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
360 + },
361 + "escape-html": {
362 + "version": "1.0.3",
363 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
364 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
365 + },
366 + "escape-string-regexp": {
367 + "version": "1.0.5",
368 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
369 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
370 + },
371 + "escodegen": {
372 + "version": "2.0.0",
373 + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
374 + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
375 + "requires": {
376 + "esprima": "^4.0.1",
377 + "estraverse": "^5.2.0",
378 + "esutils": "^2.0.2",
379 + "optionator": "^0.8.1",
380 + "source-map": "~0.6.1"
381 + }
382 + },
383 + "esprima": {
384 + "version": "4.0.1",
385 + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
386 + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
387 + },
388 + "estraverse": {
389 + "version": "5.3.0",
390 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
391 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
392 + },
393 + "esutils": {
394 + "version": "2.0.3",
395 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
396 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
397 + },
398 + "etag": {
399 + "version": "1.8.1",
400 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
401 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
402 + },
403 + "express": {
404 + "version": "4.17.1",
405 + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
406 + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
407 + "requires": {
408 + "accepts": "~1.3.7",
409 + "array-flatten": "1.1.1",
410 + "body-parser": "1.19.0",
411 + "content-disposition": "0.5.3",
412 + "content-type": "~1.0.4",
413 + "cookie": "0.4.0",
414 + "cookie-signature": "1.0.6",
415 + "debug": "2.6.9",
416 + "depd": "~1.1.2",
417 + "encodeurl": "~1.0.2",
418 + "escape-html": "~1.0.3",
419 + "etag": "~1.8.1",
420 + "finalhandler": "~1.1.2",
421 + "fresh": "0.5.2",
422 + "merge-descriptors": "1.0.1",
423 + "methods": "~1.1.2",
424 + "on-finished": "~2.3.0",
425 + "parseurl": "~1.3.3",
426 + "path-to-regexp": "0.1.7",
427 + "proxy-addr": "~2.0.5",
428 + "qs": "6.7.0",
429 + "range-parser": "~1.2.1",
430 + "safe-buffer": "5.1.2",
431 + "send": "0.17.1",
432 + "serve-static": "1.14.1",
433 + "setprototypeof": "1.1.1",
434 + "statuses": "~1.5.0",
435 + "type-is": "~1.6.18",
436 + "utils-merge": "1.0.1",
437 + "vary": "~1.1.2"
438 + }
439 + },
440 + "express-session": {
441 + "version": "1.17.2",
442 + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz",
443 + "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==",
444 + "requires": {
445 + "cookie": "0.4.1",
446 + "cookie-signature": "1.0.6",
447 + "debug": "2.6.9",
448 + "depd": "~2.0.0",
449 + "on-headers": "~1.0.2",
450 + "parseurl": "~1.3.3",
451 + "safe-buffer": "5.2.1",
452 + "uid-safe": "~2.1.5"
453 + },
454 + "dependencies": {
455 + "cookie": {
456 + "version": "0.4.1",
457 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
458 + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
459 + },
460 + "depd": {
461 + "version": "2.0.0",
462 + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
463 + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
464 + },
465 + "safe-buffer": {
466 + "version": "5.2.1",
467 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
468 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
469 + }
470 + }
471 + },
472 + "extend": {
473 + "version": "3.0.2",
474 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
475 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
476 + },
477 + "extsprintf": {
478 + "version": "1.3.0",
479 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
480 + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
481 + },
482 + "fast-deep-equal": {
483 + "version": "3.1.3",
484 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
485 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
486 + },
487 + "fast-json-stable-stringify": {
488 + "version": "2.1.0",
489 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
490 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
491 + },
492 + "fast-levenshtein": {
493 + "version": "2.0.6",
494 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
495 + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
496 + },
497 + "filelist": {
498 + "version": "1.0.2",
499 + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz",
500 + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==",
501 + "requires": {
502 + "minimatch": "^3.0.4"
503 + }
504 + },
505 + "finalhandler": {
506 + "version": "1.1.2",
507 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
508 + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
509 + "requires": {
510 + "debug": "2.6.9",
511 + "encodeurl": "~1.0.2",
512 + "escape-html": "~1.0.3",
513 + "on-finished": "~2.3.0",
514 + "parseurl": "~1.3.3",
515 + "statuses": "~1.5.0",
516 + "unpipe": "~1.0.0"
517 + }
518 + },
519 + "forever-agent": {
520 + "version": "0.6.1",
521 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
522 + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
523 + },
524 + "form-data": {
525 + "version": "2.3.3",
526 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
527 + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
528 + "requires": {
529 + "asynckit": "^0.4.0",
530 + "combined-stream": "^1.0.6",
531 + "mime-types": "^2.1.12"
532 + }
533 + },
534 + "forwarded": {
535 + "version": "0.2.0",
536 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
537 + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
538 + },
539 + "fresh": {
540 + "version": "0.5.2",
541 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
542 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
543 + },
544 + "getpass": {
545 + "version": "0.1.7",
546 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
547 + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
548 + "requires": {
549 + "assert-plus": "^1.0.0"
550 + }
551 + },
552 + "har-schema": {
553 + "version": "2.0.0",
554 + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
555 + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
556 + },
557 + "har-validator": {
558 + "version": "5.1.5",
559 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
560 + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
561 + "requires": {
562 + "ajv": "^6.12.3",
563 + "har-schema": "^2.0.0"
564 + }
565 + },
566 + "has-flag": {
567 + "version": "3.0.0",
568 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
569 + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
570 + },
571 + "html-encoding-sniffer": {
572 + "version": "3.0.0",
573 + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
574 + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
575 + "requires": {
576 + "whatwg-encoding": "^2.0.0"
577 + }
578 + },
579 + "http-errors": {
580 + "version": "1.7.2",
581 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
582 + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
583 + "requires": {
584 + "depd": "~1.1.2",
585 + "inherits": "2.0.3",
586 + "setprototypeof": "1.1.1",
587 + "statuses": ">= 1.5.0 < 2",
588 + "toidentifier": "1.0.0"
589 + }
590 + },
591 + "http-proxy-agent": {
592 + "version": "5.0.0",
593 + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
594 + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
595 + "requires": {
596 + "@tootallnate/once": "2",
597 + "agent-base": "6",
598 + "debug": "4"
599 + },
600 + "dependencies": {
601 + "debug": {
602 + "version": "4.3.3",
603 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
604 + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
605 + "requires": {
606 + "ms": "2.1.2"
607 + }
608 + },
609 + "ms": {
610 + "version": "2.1.2",
611 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
612 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
613 + }
614 + }
615 + },
616 + "http-signature": {
617 + "version": "1.2.0",
618 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
619 + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
620 + "requires": {
621 + "assert-plus": "^1.0.0",
622 + "jsprim": "^1.2.2",
623 + "sshpk": "^1.7.0"
624 + }
625 + },
626 + "https-proxy-agent": {
627 + "version": "5.0.0",
628 + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
629 + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
630 + "requires": {
631 + "agent-base": "6",
632 + "debug": "4"
633 + },
634 + "dependencies": {
635 + "debug": {
636 + "version": "4.3.3",
637 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
638 + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
639 + "requires": {
640 + "ms": "2.1.2"
641 + }
642 + },
643 + "ms": {
644 + "version": "2.1.2",
645 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
646 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
647 + }
648 + }
649 + },
650 + "iconv-lite": {
651 + "version": "0.4.24",
652 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
653 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
654 + "requires": {
655 + "safer-buffer": ">= 2.1.2 < 3"
656 + }
657 + },
658 + "inherits": {
659 + "version": "2.0.3",
660 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
661 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
662 + },
663 + "ipaddr.js": {
664 + "version": "1.9.1",
665 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
666 + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
667 + },
668 + "is-potential-custom-element-name": {
669 + "version": "1.0.1",
670 + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
671 + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
672 + },
673 + "is-typedarray": {
674 + "version": "1.0.0",
675 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
676 + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
677 + },
678 + "isarray": {
679 + "version": "1.0.0",
680 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
681 + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
682 + },
683 + "isstream": {
684 + "version": "0.1.2",
685 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
686 + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
687 + },
688 + "jake": {
689 + "version": "10.8.2",
690 + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
691 + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
692 + "requires": {
693 + "async": "0.9.x",
694 + "chalk": "^2.4.2",
695 + "filelist": "^1.0.1",
696 + "minimatch": "^3.0.4"
697 + }
698 + },
699 + "jsbn": {
700 + "version": "0.1.1",
701 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
702 + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
703 + },
704 + "jsdom": {
705 + "version": "19.0.0",
706 + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz",
707 + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==",
708 + "requires": {
709 + "abab": "^2.0.5",
710 + "acorn": "^8.5.0",
711 + "acorn-globals": "^6.0.0",
712 + "cssom": "^0.5.0",
713 + "cssstyle": "^2.3.0",
714 + "data-urls": "^3.0.1",
715 + "decimal.js": "^10.3.1",
716 + "domexception": "^4.0.0",
717 + "escodegen": "^2.0.0",
718 + "form-data": "^4.0.0",
719 + "html-encoding-sniffer": "^3.0.0",
720 + "http-proxy-agent": "^5.0.0",
721 + "https-proxy-agent": "^5.0.0",
722 + "is-potential-custom-element-name": "^1.0.1",
723 + "nwsapi": "^2.2.0",
724 + "parse5": "6.0.1",
725 + "saxes": "^5.0.1",
726 + "symbol-tree": "^3.2.4",
727 + "tough-cookie": "^4.0.0",
728 + "w3c-hr-time": "^1.0.2",
729 + "w3c-xmlserializer": "^3.0.0",
730 + "webidl-conversions": "^7.0.0",
731 + "whatwg-encoding": "^2.0.0",
732 + "whatwg-mimetype": "^3.0.0",
733 + "whatwg-url": "^10.0.0",
734 + "ws": "^8.2.3",
735 + "xml-name-validator": "^4.0.0"
736 + },
737 + "dependencies": {
738 + "form-data": {
739 + "version": "4.0.0",
740 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
741 + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
742 + "requires": {
743 + "asynckit": "^0.4.0",
744 + "combined-stream": "^1.0.8",
745 + "mime-types": "^2.1.12"
746 + }
747 + },
748 + "tough-cookie": {
749 + "version": "4.0.0",
750 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
751 + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
752 + "requires": {
753 + "psl": "^1.1.33",
754 + "punycode": "^2.1.1",
755 + "universalify": "^0.1.2"
756 + }
757 + }
758 + }
759 + },
760 + "json-schema": {
761 + "version": "0.4.0",
762 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
763 + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
764 + },
765 + "json-schema-traverse": {
766 + "version": "0.4.1",
767 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
768 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
769 + },
770 + "json-stringify-safe": {
771 + "version": "5.0.1",
772 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
773 + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
774 + },
775 + "jsprim": {
776 + "version": "1.4.2",
777 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
778 + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
779 + "requires": {
780 + "assert-plus": "1.0.0",
781 + "extsprintf": "1.3.0",
782 + "json-schema": "0.4.0",
783 + "verror": "1.10.0"
784 + }
785 + },
786 + "levn": {
787 + "version": "0.3.0",
788 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
789 + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
790 + "requires": {
791 + "prelude-ls": "~1.1.2",
792 + "type-check": "~0.3.2"
793 + }
794 + },
795 + "media-typer": {
796 + "version": "0.3.0",
797 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
798 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
799 + },
800 + "merge-descriptors": {
801 + "version": "1.0.1",
802 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
803 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
804 + },
805 + "methods": {
806 + "version": "1.1.2",
807 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
808 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
809 + },
810 + "mime": {
811 + "version": "1.6.0",
812 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
813 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
814 + },
815 + "mime-db": {
816 + "version": "1.50.0",
817 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz",
818 + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A=="
819 + },
820 + "mime-types": {
821 + "version": "2.1.33",
822 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz",
823 + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==",
824 + "requires": {
825 + "mime-db": "1.50.0"
826 + }
827 + },
828 + "minimatch": {
829 + "version": "3.0.4",
830 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
831 + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
832 + "requires": {
833 + "brace-expansion": "^1.1.7"
834 + }
835 + },
836 + "ms": {
837 + "version": "2.0.0",
838 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
839 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
840 + },
841 + "mysql": {
842 + "version": "2.18.1",
843 + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
844 + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==",
845 + "requires": {
846 + "bignumber.js": "9.0.0",
847 + "readable-stream": "2.3.7",
848 + "safe-buffer": "5.1.2",
849 + "sqlstring": "2.3.1"
850 + }
851 + },
852 + "negotiator": {
853 + "version": "0.6.2",
854 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
855 + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
856 + },
857 + "nwsapi": {
858 + "version": "2.2.0",
859 + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
860 + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ=="
861 + },
862 + "oauth-sign": {
863 + "version": "0.9.0",
864 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
865 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
866 + },
867 + "on-finished": {
868 + "version": "2.3.0",
869 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
870 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
871 + "requires": {
872 + "ee-first": "1.1.1"
873 + }
874 + },
875 + "on-headers": {
876 + "version": "1.0.2",
877 + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
878 + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
879 + },
880 + "optionator": {
881 + "version": "0.8.3",
882 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
883 + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
884 + "requires": {
885 + "deep-is": "~0.1.3",
886 + "fast-levenshtein": "~2.0.6",
887 + "levn": "~0.3.0",
888 + "prelude-ls": "~1.1.2",
889 + "type-check": "~0.3.2",
890 + "word-wrap": "~1.2.3"
891 + }
892 + },
893 + "oracledb": {
894 + "version": "5.3.0",
895 + "resolved": "https://registry.npmjs.org/oracledb/-/oracledb-5.3.0.tgz",
896 + "integrity": "sha512-HMJzQ6lCf287ztvvehTEmjCWA21FQ3RMvM+mgoqd4i8pkREuqFWO+y3ovsGR9moJUg4T0xjcwS8rl4mggWPxmg=="
897 + },
898 + "parse5": {
899 + "version": "6.0.1",
900 + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
901 + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
902 + },
903 + "parseurl": {
904 + "version": "1.3.3",
905 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
906 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
907 + },
908 + "path-to-regexp": {
909 + "version": "0.1.7",
910 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
911 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
912 + },
913 + "performance-now": {
914 + "version": "2.1.0",
915 + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
916 + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
917 + },
918 + "prelude-ls": {
919 + "version": "1.1.2",
920 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
921 + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
922 + },
923 + "process-nextick-args": {
924 + "version": "2.0.1",
925 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
926 + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
927 + },
928 + "proxy-addr": {
929 + "version": "2.0.7",
930 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
931 + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
932 + "requires": {
933 + "forwarded": "0.2.0",
934 + "ipaddr.js": "1.9.1"
935 + }
936 + },
937 + "psl": {
938 + "version": "1.8.0",
939 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
940 + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
941 + },
942 + "punycode": {
943 + "version": "2.1.1",
944 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
945 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
946 + },
947 + "qs": {
948 + "version": "6.7.0",
949 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
950 + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
951 + },
952 + "random-bytes": {
953 + "version": "1.0.0",
954 + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
955 + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
956 + },
957 + "range-parser": {
958 + "version": "1.2.1",
959 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
960 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
961 + },
962 + "raw-body": {
963 + "version": "2.4.0",
964 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
965 + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
966 + "requires": {
967 + "bytes": "3.1.0",
968 + "http-errors": "1.7.2",
969 + "iconv-lite": "0.4.24",
970 + "unpipe": "1.0.0"
971 + }
972 + },
973 + "readable-stream": {
974 + "version": "2.3.7",
975 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
976 + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
977 + "requires": {
978 + "core-util-is": "~1.0.0",
979 + "inherits": "~2.0.3",
980 + "isarray": "~1.0.0",
981 + "process-nextick-args": "~2.0.0",
982 + "safe-buffer": "~5.1.1",
983 + "string_decoder": "~1.1.1",
984 + "util-deprecate": "~1.0.1"
985 + }
986 + },
987 + "request": {
988 + "version": "2.88.2",
989 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
990 + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
991 + "requires": {
992 + "aws-sign2": "~0.7.0",
993 + "aws4": "^1.8.0",
994 + "caseless": "~0.12.0",
995 + "combined-stream": "~1.0.6",
996 + "extend": "~3.0.2",
997 + "forever-agent": "~0.6.1",
998 + "form-data": "~2.3.2",
999 + "har-validator": "~5.1.3",
1000 + "http-signature": "~1.2.0",
1001 + "is-typedarray": "~1.0.0",
1002 + "isstream": "~0.1.2",
1003 + "json-stringify-safe": "~5.0.1",
1004 + "mime-types": "~2.1.19",
1005 + "oauth-sign": "~0.9.0",
1006 + "performance-now": "^2.1.0",
1007 + "qs": "~6.5.2",
1008 + "safe-buffer": "^5.1.2",
1009 + "tough-cookie": "~2.5.0",
1010 + "tunnel-agent": "^0.6.0",
1011 + "uuid": "^3.3.2"
1012 + },
1013 + "dependencies": {
1014 + "qs": {
1015 + "version": "6.5.2",
1016 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
1017 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
1018 + }
1019 + }
1020 + },
1021 + "safe-buffer": {
1022 + "version": "5.1.2",
1023 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1024 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1025 + },
1026 + "safer-buffer": {
1027 + "version": "2.1.2",
1028 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1029 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1030 + },
1031 + "saxes": {
1032 + "version": "5.0.1",
1033 + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
1034 + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
1035 + "requires": {
1036 + "xmlchars": "^2.2.0"
1037 + }
1038 + },
1039 + "send": {
1040 + "version": "0.17.1",
1041 + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
1042 + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
1043 + "requires": {
1044 + "debug": "2.6.9",
1045 + "depd": "~1.1.2",
1046 + "destroy": "~1.0.4",
1047 + "encodeurl": "~1.0.2",
1048 + "escape-html": "~1.0.3",
1049 + "etag": "~1.8.1",
1050 + "fresh": "0.5.2",
1051 + "http-errors": "~1.7.2",
1052 + "mime": "1.6.0",
1053 + "ms": "2.1.1",
1054 + "on-finished": "~2.3.0",
1055 + "range-parser": "~1.2.1",
1056 + "statuses": "~1.5.0"
1057 + },
1058 + "dependencies": {
1059 + "ms": {
1060 + "version": "2.1.1",
1061 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1062 + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
1063 + }
1064 + }
1065 + },
1066 + "serve-static": {
1067 + "version": "1.14.1",
1068 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
1069 + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
1070 + "requires": {
1071 + "encodeurl": "~1.0.2",
1072 + "escape-html": "~1.0.3",
1073 + "parseurl": "~1.3.3",
1074 + "send": "0.17.1"
1075 + }
1076 + },
1077 + "setprototypeof": {
1078 + "version": "1.1.1",
1079 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
1080 + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
1081 + },
1082 + "source-map": {
1083 + "version": "0.6.1",
1084 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1085 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1086 + "optional": true
1087 + },
1088 + "sqlstring": {
1089 + "version": "2.3.1",
1090 + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
1091 + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
1092 + },
1093 + "sshpk": {
1094 + "version": "1.16.1",
1095 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
1096 + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
1097 + "requires": {
1098 + "asn1": "~0.2.3",
1099 + "assert-plus": "^1.0.0",
1100 + "bcrypt-pbkdf": "^1.0.0",
1101 + "dashdash": "^1.12.0",
1102 + "ecc-jsbn": "~0.1.1",
1103 + "getpass": "^0.1.1",
1104 + "jsbn": "~0.1.0",
1105 + "safer-buffer": "^2.0.2",
1106 + "tweetnacl": "~0.14.0"
1107 + }
1108 + },
1109 + "statuses": {
1110 + "version": "1.5.0",
1111 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1112 + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
1113 + },
1114 + "string_decoder": {
1115 + "version": "1.1.1",
1116 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1117 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1118 + "requires": {
1119 + "safe-buffer": "~5.1.0"
1120 + }
1121 + },
1122 + "supports-color": {
1123 + "version": "5.5.0",
1124 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1125 + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1126 + "requires": {
1127 + "has-flag": "^3.0.0"
1128 + }
1129 + },
1130 + "symbol-tree": {
1131 + "version": "3.2.4",
1132 + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
1133 + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
1134 + },
1135 + "toidentifier": {
1136 + "version": "1.0.0",
1137 + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
1138 + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
1139 + },
1140 + "tough-cookie": {
1141 + "version": "2.5.0",
1142 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
1143 + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
1144 + "requires": {
1145 + "psl": "^1.1.28",
1146 + "punycode": "^2.1.1"
1147 + }
1148 + },
1149 + "tr46": {
1150 + "version": "3.0.0",
1151 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
1152 + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
1153 + "requires": {
1154 + "punycode": "^2.1.1"
1155 + }
1156 + },
1157 + "tunnel-agent": {
1158 + "version": "0.6.0",
1159 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1160 + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
1161 + "requires": {
1162 + "safe-buffer": "^5.0.1"
1163 + }
1164 + },
1165 + "tweetnacl": {
1166 + "version": "0.14.5",
1167 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
1168 + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
1169 + },
1170 + "type-check": {
1171 + "version": "0.3.2",
1172 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
1173 + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
1174 + "requires": {
1175 + "prelude-ls": "~1.1.2"
1176 + }
1177 + },
1178 + "type-is": {
1179 + "version": "1.6.18",
1180 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1181 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1182 + "requires": {
1183 + "media-typer": "0.3.0",
1184 + "mime-types": "~2.1.24"
1185 + }
1186 + },
1187 + "uid-safe": {
1188 + "version": "2.1.5",
1189 + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
1190 + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
1191 + "requires": {
1192 + "random-bytes": "~1.0.0"
1193 + }
1194 + },
1195 + "universalify": {
1196 + "version": "0.1.2",
1197 + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
1198 + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
1199 + },
1200 + "unpipe": {
1201 + "version": "1.0.0",
1202 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1203 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
1204 + },
1205 + "uri-js": {
1206 + "version": "4.4.1",
1207 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
1208 + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1209 + "requires": {
1210 + "punycode": "^2.1.0"
1211 + }
1212 + },
1213 + "util-deprecate": {
1214 + "version": "1.0.2",
1215 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1216 + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
1217 + },
1218 + "utils-merge": {
1219 + "version": "1.0.1",
1220 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1221 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
1222 + },
1223 + "uuid": {
1224 + "version": "3.4.0",
1225 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
1226 + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
1227 + },
1228 + "vary": {
1229 + "version": "1.1.2",
1230 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1231 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
1232 + },
1233 + "verror": {
1234 + "version": "1.10.0",
1235 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
1236 + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
1237 + "requires": {
1238 + "assert-plus": "^1.0.0",
1239 + "core-util-is": "1.0.2",
1240 + "extsprintf": "^1.2.0"
1241 + },
1242 + "dependencies": {
1243 + "core-util-is": {
1244 + "version": "1.0.2",
1245 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
1246 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
1247 + }
1248 + }
1249 + },
1250 + "w3c-hr-time": {
1251 + "version": "1.0.2",
1252 + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
1253 + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
1254 + "requires": {
1255 + "browser-process-hrtime": "^1.0.0"
1256 + }
1257 + },
1258 + "w3c-xmlserializer": {
1259 + "version": "3.0.0",
1260 + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz",
1261 + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==",
1262 + "requires": {
1263 + "xml-name-validator": "^4.0.0"
1264 + }
1265 + },
1266 + "webidl-conversions": {
1267 + "version": "7.0.0",
1268 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
1269 + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
1270 + },
1271 + "whatwg-encoding": {
1272 + "version": "2.0.0",
1273 + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
1274 + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
1275 + "requires": {
1276 + "iconv-lite": "0.6.3"
1277 + },
1278 + "dependencies": {
1279 + "iconv-lite": {
1280 + "version": "0.6.3",
1281 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
1282 + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
1283 + "requires": {
1284 + "safer-buffer": ">= 2.1.2 < 3.0.0"
1285 + }
1286 + }
1287 + }
1288 + },
1289 + "whatwg-mimetype": {
1290 + "version": "3.0.0",
1291 + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
1292 + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q=="
1293 + },
1294 + "whatwg-url": {
1295 + "version": "10.0.0",
1296 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz",
1297 + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==",
1298 + "requires": {
1299 + "tr46": "^3.0.0",
1300 + "webidl-conversions": "^7.0.0"
1301 + }
1302 + },
1303 + "word-wrap": {
1304 + "version": "1.2.3",
1305 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
1306 + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
1307 + },
1308 + "ws": {
1309 + "version": "8.3.0",
1310 + "resolved": "https://registry.npmjs.org/ws/-/ws-8.3.0.tgz",
1311 + "integrity": "sha512-Gs5EZtpqZzLvmIM59w4igITU57lrtYVFneaa434VROv4thzJyV6UjIL3D42lslWlI+D4KzLYnxSwtfuiO79sNw=="
1312 + },
1313 + "xml-name-validator": {
1314 + "version": "4.0.0",
1315 + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
1316 + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw=="
1317 + },
1318 + "xmlchars": {
1319 + "version": "2.2.0",
1320 + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
1321 + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
1322 + }
1323 + }
1324 +}
1 +{
2 + "name": "app",
3 + "version": "1.0.0",
4 + "description": "",
5 + "main": "index.js",
6 + "scripts": {
7 + "test": "echo \"Error: no test specified\" && exit 1"
8 + },
9 + "author": "",
10 + "license": "ISC",
11 + "dependencies": {
12 + "body-parser": "^1.17.1",
13 + "ejs": "^3.1.6",
14 + "express": "^4.15.2",
15 + "express-session": "^1.15.2",
16 + "jsdom": "^19.0.0",
17 + "mysql": "^2.18.1",
18 + "oracledb": "^5.3.0",
19 + "request": "^2.88.2"
20 + }
21 +}
1 +create table users(
2 + id varchar2(20) primary key,
3 + pwd varchar2(20),
4 + name varchar2(20),
5 + email varchar2(40),
6 + zip_code varchar2(7),
7 + address varchar2(100),
8 + phone varchar2(20),
9 + useyn number default 1, -- 활동 : 1, 탈퇴 : 2
10 + regdate date default sysdate);
1 +create table cust(
2 + id varchar(35) primary key,
3 + pwd varchar(12),
4 + name varchar(4),
5 + email varchar(40),
6 + address_num int,
7 + signdate timestamp default Now(),
8 + address varchar(40),
9 + phone varchar(15),
10 + useyn int default 1, -- 활동 : 1, 탈퇴 : 0
11 + isadmin int default 0 -- 관리자 : 1, 회원 : 0
12 +);
13 +create table emp(
14 + id varchar(35) ,
15 + pwd varchar(12),
16 + name varchar(4),
17 + email varchar(40),
18 + phone varchar(15),
19 + primary key (id),
20 + FOREIGN KEY (id) REFERENCES cust(id)
21 +);
22 +create table item(
23 + id varchar(40),
24 + name varchar(20),
25 + category int,
26 + cost int,
27 + price int,
28 + profit int,
29 + content varchar(1000),
30 + image varchar(100),
31 + useyn int default 1, -- 판매 1, 미판매 0
32 + signdate timestamp default Now(),
33 + primary key (id)
34 +);
35 +create table item_order(
36 + id int,
37 + item_id varchar(40),
38 + count int,
39 + complete int default 0,-- 주문 처리 후 0, 주문 해결완료(배송완료) 1
40 + cust_id varchar(35),
41 + primary key (id),
42 + FOREIGN KEY (item_id) REFERENCES item(id),
43 + FOREIGN KEY (cust_id) REFERENCES cust(id)
44 +);
45 +/*
46 +insert into users
47 +values ('U26c8ad1695d48e6b4bcccd4e6d25f3d9',
48 +'124578','민구','ggalsrn@naver.com','17117',default ,'0288',default,default)
49 +*/
...\ No newline at end of file ...\ No newline at end of file