김성욱

dafadfa

...@@ -41,6 +41,36 @@ apiRouter.post('/sayHello', function(req, res) { ...@@ -41,6 +41,36 @@ apiRouter.post('/sayHello', function(req, res) {
41 res.status(200).send(responseBody); 41 res.status(200).send(responseBody);
42 }); 42 });
43 43
44 +apiRouter.post('/test', (req, res) => {
45 + const responseBody = {
46 + version: "2.0",
47 + template: {
48 + outputs: [
49 + {
50 + simpleText: {
51 + text: '재밌는 MBTI 테스트'
52 + }
53 + }
54 + ],
55 + quickReplies: [
56 + {
57 + action: "block",
58 + label: "할래!",
59 + message: "할래!",
60 + blockId: "6294c3ecf591aa1905548230"
61 + },
62 + {
63 + action: "block",
64 + label: "안 할래",
65 + message: "안 할래",
66 + blockId: "628b7ef293b31d5b60ab4b29"
67 + }
68 + ]
69 + }
70 + }
71 + res.status(200).send(responseBody);
72 +});
73 +
44 apiRouter.post('/question1', (req, res) => { 74 apiRouter.post('/question1', (req, res) => {
45 var userId = req.body.userRequest.user.id; 75 var userId = req.body.userRequest.user.id;
46 var mesg = req.body.userRequest; 76 var mesg = req.body.userRequest;
...@@ -53,7 +83,409 @@ apiRouter.post('/question1', (req, res) => { ...@@ -53,7 +83,409 @@ apiRouter.post('/question1', (req, res) => {
53 outputs: [ 83 outputs: [
54 { 84 {
55 simpleText: { 85 simpleText: {
56 - text: '금방 새로운 직장 사람들과 어울리기 시작합니다.' 86 + text: '금방 새로운 직장 사람들과 어울리기 시작합니다.'
87 + }
88 + }
89 + ],
90 + quickReplies: [
91 + {
92 + action: "block",
93 + label: "네",
94 + message: "네",
95 + blockId: "6297b11ae7a0253c7662ccea"
96 + },
97 + {
98 + action: "block",
99 + label: "아니오",
100 + message: "아니오",
101 + blockId: "6297b11ae7a0253c7662ccea"
102 + }
103 + ]
104 + }
105 + }
106 + res.status(200).send(responseBody);
107 +});
108 +
109 +apiRouter.post('/question2', (req, res) => {
110 + var userId = req.body.userRequest.user.id;
111 + var mesg = req.body.userRequest.utterance;
112 + console.log('[q2:user message] ', mesg);
113 + var mbti = '';
114 + if (mesg == "네") {
115 + mbti = 'E';
116 + } else if (mesg == "아니오") {
117 + mbti = 'I';
118 + }
119 + userDB[userId][0] += mbti;
120 + console.log(userDB[userId]);
121 + const responseBody = {
122 + version: "2.0",
123 + template: {
124 + outputs: [
125 + {
126 + simpleText: {
127 + text: '평소 깻잎논쟁에 대해 1시간 이상을 생각해 보는 편입니다.'
128 + }
129 + }
130 + ],
131 + quickReplies: [
132 + {
133 + action: "block",
134 + label: "네",
135 + message: "네",
136 + blockId: "6297b122ab89e678ee86b331"
137 + },
138 + {
139 + action: "block",
140 + label: "아니오",
141 + message: "아니오",
142 + blockId: "6297b122ab89e678ee86b331"
143 + }
144 + ]
145 + }
146 + }
147 + res.status(200).send(responseBody);
148 +});
149 +
150 +apiRouter.post('/question3', function(req, res) {
151 + var userId = req.body.userRequest.user.id;
152 + var mesg = req.body.userRequest.utterance;
153 + console.log('[q3:user message] ', mesg);
154 + var mbti = '';
155 + if (mesg == '네') {
156 + mbti = 'N';
157 + } else if (mesg == '아니오') {
158 + mbti = 'S';
159 + }
160 + userDB[userId][1] += mbti;
161 + console.log(userDB[userId]);
162 + const responseBody = {
163 + version: "2.0",
164 + template: {
165 + outputs: [
166 + {
167 + "simpleText": {
168 + "text": "토론 시 사람들의 민감한 반응보다 보다 진실을 더 중요시해야 합니다."
169 + }
170 + }
171 + ],
172 + quickReplies: [
173 + {
174 + action: "block",
175 + label: "네",
176 + message: "네",
177 + blockId: "6297b1275ceed96c38544a08"
178 + },
179 + {
180 + action: "block",
181 + label: "아니오",
182 + message: "아니오",
183 + blockId: "6297b1275ceed96c38544a08"
184 + }
185 + ]
186 + }
187 + };
188 + res.status(200).send(responseBody);
189 +});
190 +
191 +apiRouter.post('/question4', (req, res) => {
192 + var userId = req.body.userRequest.user.id;
193 + var mesg = req.body.userRequest.utterance;
194 + console.log('[q4:user message] ', mesg);
195 + var mbti = '';
196 + if (mesg == "네") {
197 + mbti = 'T';
198 + } else if (mesg == "아니오") {
199 + mbti = 'F';
200 + }
201 + userDB[userId][2] += mbti;
202 + console.log(userDB[userId]);
203 + const responseBody = {
204 + version: "2.0",
205 + template: {
206 + outputs: [
207 + {
208 + simpleText: {
209 + text: "주의깊게 미리 계획하기 보다는 즉흥적으로 움직입니다."
210 + }
211 + }
212 + ],
213 + quickReplies: [
214 + {
215 + action: "block",
216 + label: "네",
217 + message: "네",
218 + blockId: "6297b12be7a0253c7662ccec"
219 + },
220 + {
221 + action: "block",
222 + label: "아니오",
223 + message: "아니오",
224 + blockId: "6297b12be7a0253c7662ccec"
225 + }
226 + ]
227 + }
228 + }
229 + res.status(200).send(responseBody);
230 +});
231 +
232 +apiRouter.post('/question5', (req, res) => {
233 + var userId = req.body.userRequest.user.id;
234 + var mesg = req.body.userRequest;
235 + console.log('[q1:user message] ', mesg);
236 + var mbti = '';
237 + if (mesg == "네") {
238 + mbti = 'P';
239 + } else if (mesg == "아니오") {
240 + mbti = 'J';
241 + }
242 + userDB[userId][3] += mbti;
243 + console.log(userDB[userId]);
244 + const responseBody = {
245 + version: "2.0",
246 + template: {
247 + outputs: [
248 + {
249 + simpleText: {
250 + text: '주목받는 것을 좋아합니다.'
251 + }
252 + }
253 + ],
254 + quickReplies: [
255 + {
256 + action: "block",
257 + label: "네",
258 + message: "네",
259 + blockId: "6297b130e7a0253c7662ccee"
260 + },
261 + {
262 + action: "block",
263 + label: "아니오",
264 + message: "아니오",
265 + blockId: "6297b130e7a0253c7662ccee"
266 + }
267 + ]
268 + }
269 + }
270 + res.status(200).send(responseBody);
271 +});
272 +
273 +apiRouter.post('/question6', (req, res) => {
274 + var userId = req.body.userRequest.user.id;
275 + var mesg = req.body.userRequest.utterance;
276 + console.log('[q2:user message] ', mesg);
277 + var mbti = '';
278 + if (mesg == "네") {
279 + mbti = 'E';
280 + } else if (mesg == "아니오") {
281 + mbti = 'I';
282 + }
283 + userDB[userId][0] += mbti;
284 + console.log(userDB[userId]);
285 + const responseBody = {
286 + version: "2.0",
287 + template: {
288 + outputs: [
289 + {
290 + simpleText: {
291 + text: '종종 인간 실존에 대한 이유를 생각합니다.'
292 + }
293 + }
294 + ],
295 + quickReplies: [
296 + {
297 + action: "block",
298 + label: "네",
299 + message: "네",
300 + blockId: "6297b133f591aa190554a260"
301 + },
302 + {
303 + action: "block",
304 + label: "아니오",
305 + message: "아니오",
306 + blockId: "6297b133f591aa190554a260"
307 + }
308 + ]
309 + }
310 + }
311 + res.status(200).send(responseBody);
312 +});
313 +
314 +apiRouter.post('/question7', (req, res) => {
315 + var userId = req.body.userRequest.user.id;
316 + var mesg = req.body.userRequest.utterance;
317 + console.log('[q2:user message] ', mesg);
318 + var mbti = '';
319 + if (mesg == "네") {
320 + mbti = 'N';
321 + } else if (mesg == "아니오") {
322 + mbti = 'S';
323 + }
324 + userDB[userId][1] += mbti;
325 + console.log(userDB[userId]);
326 + const responseBody = {
327 + version: "2.0",
328 + template: {
329 + outputs: [
330 + {
331 + simpleText: {
332 + text: '어떤 일에서 성과를 냈을 때 “고생했어”보다 “잘했어”라는 말이 더 좋습니다.'
333 + }
334 + }
335 + ],
336 + quickReplies: [
337 + {
338 + action: "block",
339 + label: "네",
340 + message: "네",
341 + blockId: "6297b3505ceed96c38544a0a"
342 + },
343 + {
344 + action: "block",
345 + label: "아니오",
346 + message: "아니오",
347 + blockId: "6297b3505ceed96c38544a0a"
348 + }
349 + ]
350 + }
351 + }
352 + res.status(200).send(responseBody);
353 +});
354 +
355 +apiRouter.post('/question8', (req, res) => {
356 + var userId = req.body.userRequest.user.id;
357 + userDB[userId] = ['','','','',''];
358 + console.log(userDB);
359 + const responseBody = {
360 + version: "2.0",
361 + template: {
362 + outputs: [
363 + {
364 + simpleText: {
365 + text: '[question8]\n여행 계획을 어떻게 세우시나요?'
366 + }
367 + }
368 + ],
369 + quickReplies: [
370 + {
371 + action: "block",
372 + label: "테마만 정한다(ex.맛집 방문하는 날, 사진 찍는 날)",
373 + message: "테마만 정한다(ex.맛집 방문하는 날, 사진 찍는 날)",
374 + blockId: "629780e9e7a0253c7662cca6"
375 + },
376 + {
377 + action: "block",
378 + label: "시간과 장소를 자세하게 정한다",
379 + message: "시간과 장소를 자세하게 정한다",
380 + blockId: "629780e9e7a0253c7662cca6"
381 + }
382 + ]
383 + }
384 + }
385 + res.status(200).send(responseBody);
386 + });
387 +
388 + apiRouter.post('/question9', (req, res) => {
389 + var mesg = req.body.userRequest.utterance;
390 + var userId = req.body.userRequest.user.id;
391 + var mbti = '';
392 + if (mesg == "테마만 정한다(ex.맛집 방문하는 날, 사진 찍는 날)"){
393 + mbti = 'P';
394 + }
395 + else if (mesg == "시간과 장소를 자세하게 정한다") {
396 + mbti = 'J';
397 + }
398 + userDB[userId][3] += mbti;
399 + console.log(userDB);
400 + const responseBody = {
401 + version: "2.0",
402 + template: {
403 + outputs: [
404 + {
405 + simpleText: {
406 + text: '[question9]\n재미있는 책이나 비디오 게임이 사교 모임보다 더 낫습니다.'
407 + }
408 + }
409 + ],
410 + quickReplies: [
411 + {
412 + action: "block",
413 + label: "네",
414 + message: "네",
415 + blockId: "629780f4ab89e678ee86b2de"
416 + },
417 + {
418 + action: "block",
419 + label: "아니오",
420 + message: "아니오",
421 + blockId: "629780f4ab89e678ee86b2de"
422 + }
423 + ]
424 + }
425 + }
426 + res.status(200).send(responseBody);
427 + });
428 +
429 + apiRouter.post('/question10', (req, res) => {
430 + var mesg = req.body.userRequest.utterance;
431 + var userId = req.body.userRequest.user.id;
432 + var mbti = '';
433 + if (mesg == "네"){
434 + mbti = 'I';
435 + }
436 + else if (mesg == "아니오") {
437 + mbti = 'E';
438 + }
439 + userDB[userId][0] += mbti;
440 + console.log(userDB);
441 + const responseBody = {
442 + version: "2.0",
443 + template: {
444 + outputs: [
445 + {
446 + simpleText: {
447 + text: '[question10]\n본인이 창의적이기보다 현실적인 사람이라고 생각합니다.'
448 + }
449 + }
450 + ],
451 + quickReplies: [
452 + {
453 + action: "block",
454 + label: "네",
455 + message: "네",
456 + blockId: "629781015ceed96c385449c8"
457 + },
458 + {
459 + action: "block",
460 + label: "아니오",
461 + message: "아니오",
462 + blockId: "629781015ceed96c385449c8"
463 + }
464 + ]
465 + }
466 + }
467 + res.status(200).send(responseBody);
468 + });
469 +
470 + apiRouter.post('/question11', (req, res) => {
471 + var mesg = req.body.userRequest.utterance;
472 + var userId = req.body.userRequest.user.id;
473 + var mbti = '';
474 + if (mesg == "네"){
475 + mbti = 'S';
476 + }
477 + else if (mesg == "아니오") {
478 + mbti = 'N';
479 + }
480 + userDB[userId][1] += mbti;
481 + console.log(userDB);
482 + const responseBody = {
483 + version: "2.0",
484 + template: {
485 + outputs: [
486 + {
487 + simpleText: {
488 + text: '[question11]\n팀플을 하는 경우, 충실하지만 실적을 못 내는 팀원을 제명하기 어려워합니다.'
57 } 489 }
58 } 490 }
59 ], 491 ],
...@@ -62,39 +494,39 @@ apiRouter.post('/question1', (req, res) => { ...@@ -62,39 +494,39 @@ apiRouter.post('/question1', (req, res) => {
62 action: "block", 494 action: "block",
63 label: "네", 495 label: "네",
64 message: "네", 496 message: "네",
65 - blockId: "6297b11ae7a0253c7662ccea" 497 + blockId: "6297810fe7a0253c7662cca8"
66 }, 498 },
67 { 499 {
68 action: "block", 500 action: "block",
69 label: "아니오", 501 label: "아니오",
70 message: "아니오", 502 message: "아니오",
71 - blockId: "6297b11ae7a0253c7662ccea" 503 + blockId: "6297810fe7a0253c7662cca8"
72 } 504 }
73 ] 505 ]
74 } 506 }
75 } 507 }
76 res.status(200).send(responseBody); 508 res.status(200).send(responseBody);
77 -}); 509 + });
78 510
79 -apiRouter.post('/question2', (req, res) => { 511 + apiRouter.post('/question12', (req, res) => {
80 - var userId = req.body.userRequest.user.id;
81 var mesg = req.body.userRequest.utterance; 512 var mesg = req.body.userRequest.utterance;
82 - console.log('[q2:user message] ', mesg); 513 + var userId = req.body.userRequest.user.id;
83 var mbti = ''; 514 var mbti = '';
84 - if (mesg == "네") { 515 + if (mesg == "네"){
85 - mbti = 'E'; 516 + mbti = 'F';
86 - } else if (mesg == "아니오") {
87 - mbti = 'I';
88 } 517 }
89 - userDB[userId][0] += mbti; 518 + else if (mesg == "아니오") {
90 - console.log(userDB[userId]); 519 + mbti = 'T';
520 + }
521 + userDB[userId][2] += mbti;
522 + console.log(userDB);
91 const responseBody = { 523 const responseBody = {
92 version: "2.0", 524 version: "2.0",
93 template: { 525 template: {
94 outputs: [ 526 outputs: [
95 { 527 {
96 simpleText: { 528 simpleText: {
97 - text: '평소 깻잎논쟁에 대해 1시간 이상을 생각해 보는 편입니다.' 529 + text: '[question12]\n집과 업무 환경이 잘 정돈되어 있습니다.'
98 } 530 }
99 } 531 }
100 ], 532 ],
...@@ -103,39 +535,80 @@ apiRouter.post('/question2', (req, res) => { ...@@ -103,39 +535,80 @@ apiRouter.post('/question2', (req, res) => {
103 action: "block", 535 action: "block",
104 label: "네", 536 label: "네",
105 message: "네", 537 message: "네",
106 - blockId: "6297b122ab89e678ee86b331" 538 + blockId: "6297811bf591aa190554a22e"
107 }, 539 },
108 { 540 {
109 action: "block", 541 action: "block",
110 label: "아니오", 542 label: "아니오",
111 message: "아니오", 543 message: "아니오",
112 - blockId: "6297b122ab89e678ee86b331" 544 + blockId: "6297811bf591aa190554a22e"
113 } 545 }
114 ] 546 ]
115 } 547 }
116 } 548 }
117 res.status(200).send(responseBody); 549 res.status(200).send(responseBody);
118 -}); 550 + });
119 551
120 -apiRouter.post('/question3', function(req, res) { 552 + apiRouter.post('/question13', (req, res) => {
553 + var mesg = req.body.userRequest.utterance;
121 var userId = req.body.userRequest.user.id; 554 var userId = req.body.userRequest.user.id;
555 + var mbti = '';
556 + if (mesg == "네"){
557 + mbti = 'J';
558 + }
559 + else if (mesg == "아니오") {
560 + mbti = 'P';
561 + }
562 + userDB[userId][3] += mbti;
563 + console.log(userDB);
564 + const responseBody = {
565 + version: "2.0",
566 + template: {
567 + outputs: [
568 + {
569 + simpleText: {
570 + text: '[question13]\n친구 관계가 좁고 깊은 편입니다.'
571 + }
572 + }
573 + ],
574 + quickReplies: [
575 + {
576 + action: "block",
577 + label: "네",
578 + message: "네",
579 + blockId: "62978127ab89e678ee86b2e2"
580 + },
581 + {
582 + action: "block",
583 + label: "아니오",
584 + message: "아니오",
585 + blockId: "62978127ab89e678ee86b2e2"
586 + }
587 + ]
588 + }
589 + }
590 + res.status(200).send(responseBody);
591 + });
592 +
593 + apiRouter.post('/question14', (req, res) => {
122 var mesg = req.body.userRequest.utterance; 594 var mesg = req.body.userRequest.utterance;
123 - console.log('[q3:user message] ', mesg); 595 + var userId = req.body.userRequest.user.id;
124 var mbti = ''; 596 var mbti = '';
125 - if (mesg == '네') { 597 + if (mesg == "네"){
126 - mbti = 'N'; 598 + mbti = 'I';
127 - } else if (mesg == '아니오') {
128 - mbti = 'S';
129 } 599 }
130 - userDB[userId][1] += mbti; 600 + else if (mesg == "아니오") {
131 - console.log(userDB[userId]); 601 + mbti = 'E';
602 + }
603 + userDB[userId][0] += mbti;
604 + console.log(userDB);
132 const responseBody = { 605 const responseBody = {
133 version: "2.0", 606 version: "2.0",
134 template: { 607 template: {
135 outputs: [ 608 outputs: [
136 { 609 {
137 - "simpleText": { 610 + simpleText: {
138 - "text": "토론 시 사람들의 민감한 반응보다 보다 진실을 더 중요시해야 합니다." 611 + text: '[question14]\n공부하기 싫을 때 공부는 왜 해야 하는 것인지 고민에 빠질 때가 있습니다.'
139 } 612 }
140 } 613 }
141 ], 614 ],
...@@ -144,29 +617,60 @@ apiRouter.post('/question3', function(req, res) { ...@@ -144,29 +617,60 @@ apiRouter.post('/question3', function(req, res) {
144 action: "block", 617 action: "block",
145 label: "네", 618 label: "네",
146 message: "네", 619 message: "네",
147 - blockId: "6297b1275ceed96c38544a08" 620 + blockId: "62979c9ce7a0253c7662ccd4"
148 }, 621 },
149 { 622 {
150 action: "block", 623 action: "block",
151 label: "아니오", 624 label: "아니오",
152 message: "아니오", 625 message: "아니오",
153 - blockId: "6297b1275ceed96c38544a08" 626 + blockId: "62979c9ce7a0253c7662ccd4"
154 } 627 }
155 ] 628 ]
156 } 629 }
157 - }; 630 + }
631 + res.status(200).send(responseBody);
632 + });
633 +
634 + apiRouter.post('/question15', (req, res) => {
635 + var userId = req.body.userRequest.user.id;
636 + userDB[userId] = ['','','','',''];
637 + const responseBody = {
638 + version: "2.0",
639 + template: {
640 + outputs: [
641 + {
642 + simpleText: {
643 + text: '[Question 15/20]\n친구: 우울해서 아이패드 샀어'
644 + }
645 + }
646 + ],
647 + quickReplies: [
648 + {
649 + action: "block",
650 + label: "왜ㅠㅠ무슨일 있었어?",
651 + message: "왜ㅠㅠ무슨일 있었어?",
652 + blockId: "6294c467e7a0253c7662acac"
653 + },
654 + {
655 + action: "block",
656 + label: "어떤 기종샀어?",
657 + message: "어떤 기종샀어?",
658 + blockId: "6294c467e7a0253c7662acac"
659 + }
660 + ]
661 + }
662 + }
158 res.status(200).send(responseBody); 663 res.status(200).send(responseBody);
159 }); 664 });
160 665
161 -apiRouter.post('/question4', (req, res) => { 666 +apiRouter.post('/question16', (req, res) => {
162 var userId = req.body.userRequest.user.id; 667 var userId = req.body.userRequest.user.id;
163 var mesg = req.body.userRequest.utterance; 668 var mesg = req.body.userRequest.utterance;
164 - console.log('[q4:user message] ', mesg);
165 var mbti = ''; 669 var mbti = '';
166 - if (mesg == "네") { 670 + if (mesg == "왜ㅠㅠ무슨일 있었어?") {
167 - mbti = 'T';
168 - } else if (mesg == "아니오") {
169 mbti = 'F'; 671 mbti = 'F';
672 + } else if (mesg == "어떤 기종샀어?") {
673 + mbti = 'T';
170 } 674 }
171 userDB[userId][2] += mbti; 675 userDB[userId][2] += mbti;
172 console.log(userDB[userId]); 676 console.log(userDB[userId]);
...@@ -176,7 +680,7 @@ apiRouter.post('/question4', (req, res) => { ...@@ -176,7 +680,7 @@ apiRouter.post('/question4', (req, res) => {
176 outputs: [ 680 outputs: [
177 { 681 {
178 simpleText: { 682 simpleText: {
179 - text: "주의깊게 미리 계획하기 보다는 즉흥적으로 움직입니다." 683 + text: '[Question 16/20]\n이메일에 가능한 빨리 회신하려고 하고 지저분한 편지함을 참을 수 없다.'
180 } 684 }
181 } 685 }
182 ], 686 ],
...@@ -185,13 +689,13 @@ apiRouter.post('/question4', (req, res) => { ...@@ -185,13 +689,13 @@ apiRouter.post('/question4', (req, res) => {
185 action: "block", 689 action: "block",
186 label: "네", 690 label: "네",
187 message: "네", 691 message: "네",
188 - blockId: "6297b12be7a0253c7662ccec" 692 + blockId: "6294c4755ceed96c38542a53"
189 }, 693 },
190 { 694 {
191 action: "block", 695 action: "block",
192 label: "아니오", 696 label: "아니오",
193 message: "아니오", 697 message: "아니오",
194 - blockId: "6297b12be7a0253c7662ccec" 698 + blockId: "6294c4755ceed96c38542a53"
195 } 699 }
196 ] 700 ]
197 } 701 }
...@@ -199,15 +703,14 @@ apiRouter.post('/question4', (req, res) => { ...@@ -199,15 +703,14 @@ apiRouter.post('/question4', (req, res) => {
199 res.status(200).send(responseBody); 703 res.status(200).send(responseBody);
200 }); 704 });
201 705
202 -apiRouter.post('/question5', (req, res) => { 706 +apiRouter.post('/question17', (req, res) => {
203 var userId = req.body.userRequest.user.id; 707 var userId = req.body.userRequest.user.id;
204 - var mesg = req.body.userRequest; 708 + var mesg = req.body.userRequest.utterance;
205 - console.log('[q1:user message] ', mesg);
206 var mbti = ''; 709 var mbti = '';
207 if (mesg == "네") { 710 if (mesg == "네") {
208 - mbti = 'P';
209 - } else if (mesg == "아니오") {
210 mbti = 'J'; 711 mbti = 'J';
712 + } else if (mesg == "아니오") {
713 + mbti = 'P';
211 } 714 }
212 userDB[userId][3] += mbti; 715 userDB[userId][3] += mbti;
213 console.log(userDB[userId]); 716 console.log(userDB[userId]);
...@@ -217,7 +720,7 @@ apiRouter.post('/question5', (req, res) => { ...@@ -217,7 +720,7 @@ apiRouter.post('/question5', (req, res) => {
217 outputs: [ 720 outputs: [
218 { 721 {
219 simpleText: { 722 simpleText: {
220 - text: '주목받는 것을 좋아합니다.' 723 + text: '[Question 17/20]\n당일에 갑자기 잡히는 약속이 부담스럽다.'
221 } 724 }
222 } 725 }
223 ], 726 ],
...@@ -226,13 +729,13 @@ apiRouter.post('/question5', (req, res) => { ...@@ -226,13 +729,13 @@ apiRouter.post('/question5', (req, res) => {
226 action: "block", 729 action: "block",
227 label: "네", 730 label: "네",
228 message: "네", 731 message: "네",
229 - blockId: "6297b130e7a0253c7662ccee" 732 + blockId: "6294c4aff591aa1905548236"
230 }, 733 },
231 { 734 {
232 action: "block", 735 action: "block",
233 label: "아니오", 736 label: "아니오",
234 message: "아니오", 737 message: "아니오",
235 - blockId: "6297b130e7a0253c7662ccee" 738 + blockId: "6294c4aff591aa1905548236"
236 } 739 }
237 ] 740 ]
238 } 741 }
...@@ -240,15 +743,14 @@ apiRouter.post('/question5', (req, res) => { ...@@ -240,15 +743,14 @@ apiRouter.post('/question5', (req, res) => {
240 res.status(200).send(responseBody); 743 res.status(200).send(responseBody);
241 }); 744 });
242 745
243 -apiRouter.post('/question6', (req, res) => { 746 +apiRouter.post('/question18', (req, res) => {
244 var userId = req.body.userRequest.user.id; 747 var userId = req.body.userRequest.user.id;
245 var mesg = req.body.userRequest.utterance; 748 var mesg = req.body.userRequest.utterance;
246 - console.log('[q2:user message] ', mesg);
247 var mbti = ''; 749 var mbti = '';
248 if (mesg == "네") { 750 if (mesg == "네") {
249 - mbti = 'E';
250 - } else if (mesg == "아니오") {
251 mbti = 'I'; 751 mbti = 'I';
752 + } else if (mesg == "아니오") {
753 + mbti = 'E';
252 } 754 }
253 userDB[userId][0] += mbti; 755 userDB[userId][0] += mbti;
254 console.log(userDB[userId]); 756 console.log(userDB[userId]);
...@@ -258,7 +760,7 @@ apiRouter.post('/question6', (req, res) => { ...@@ -258,7 +760,7 @@ apiRouter.post('/question6', (req, res) => {
258 outputs: [ 760 outputs: [
259 { 761 {
260 simpleText: { 762 simpleText: {
261 - text: '종종 인간 실존에 대한 이유를 생각합니다.' 763 + text: '[Question 18/20]\n비행기에 타기 전 만약 비행기에 테러범이 있으면 어떻게 행동할지 상상해봤다.'
262 } 764 }
263 } 765 }
264 ], 766 ],
...@@ -267,13 +769,13 @@ apiRouter.post('/question6', (req, res) => { ...@@ -267,13 +769,13 @@ apiRouter.post('/question6', (req, res) => {
267 action: "block", 769 action: "block",
268 label: "네", 770 label: "네",
269 message: "네", 771 message: "네",
270 - blockId: "6297b133f591aa190554a260" 772 + blockId: "6294c4c2e7a0253c7662acb1"
271 }, 773 },
272 { 774 {
273 action: "block", 775 action: "block",
274 label: "아니오", 776 label: "아니오",
275 message: "아니오", 777 message: "아니오",
276 - blockId: "6297b133f591aa190554a260" 778 + blockId: "6294c4c2e7a0253c7662acb1"
277 } 779 }
278 ] 780 ]
279 } 781 }
...@@ -281,10 +783,9 @@ apiRouter.post('/question6', (req, res) => { ...@@ -281,10 +783,9 @@ apiRouter.post('/question6', (req, res) => {
281 res.status(200).send(responseBody); 783 res.status(200).send(responseBody);
282 }); 784 });
283 785
284 -apiRouter.post('/question7', (req, res) => { 786 +apiRouter.post('/question19', (req, res) => {
285 var userId = req.body.userRequest.user.id; 787 var userId = req.body.userRequest.user.id;
286 var mesg = req.body.userRequest.utterance; 788 var mesg = req.body.userRequest.utterance;
287 - console.log('[q2:user message] ', mesg);
288 var mbti = ''; 789 var mbti = '';
289 if (mesg == "네") { 790 if (mesg == "네") {
290 mbti = 'N'; 791 mbti = 'N';
...@@ -299,7 +800,47 @@ apiRouter.post('/question7', (req, res) => { ...@@ -299,7 +800,47 @@ apiRouter.post('/question7', (req, res) => {
299 outputs: [ 800 outputs: [
300 { 801 {
301 simpleText: { 802 simpleText: {
302 - text: '어떤 일에서 성과를 냈을 때 “고생했어”보다 “잘했어”라는 말이 더 좋습니다.' 803 + text: '[Question 19/20]\n친구가 취업이 안돼서 힘들어하는 상황에 당신의 반응은?'
804 + }
805 + }
806 + ],
807 + quickReplies: [
808 + {
809 + action: "block",
810 + label: "요즘 취업 어렵지 힘들겠다ㅠㅠ",
811 + message: "요즘 취업 어렵지 힘들겠다ㅠㅠ",
812 + blockId: "6294c4c8e7a0253c7662acb3"
813 + },
814 + {
815 + action: "block",
816 + label: "무슨 준비하고있어? 이력서는 넣어봤어?",
817 + message: "무슨 준비하고있어? 이력서는 넣어봤어?",
818 + blockId: "6294c4c8e7a0253c7662acb3"
819 + }
820 + ]
821 + }
822 + }
823 + res.status(200).send(responseBody);
824 +});
825 +
826 +apiRouter.post('/question20', (req, res) => {
827 + var userId = req.body.userRequest.user.id;
828 + var mesg = req.body.userRequest.utterance;
829 + var mbti = '';
830 + if (mesg == "요즘 취업 어렵지 힘들겠다ㅠㅠ") {
831 + mbti = 'F';
832 + } else if (mesg == "무슨 준비하고있어? 이력서는 넣어봤어?") {
833 + mbti = 'T';
834 + }
835 + userDB[userId][2] += mbti;
836 + console.log(userDB[userId]);
837 + const responseBody = {
838 + version: "2.0",
839 + template: {
840 + outputs: [
841 + {
842 + simpleText: {
843 + text: '[Question 20/20]\n마지막 여행지를 향해 가던 중 흥미로운 장소를 발견했을 때, 남은 일정을 고려하는 편이다.'
303 } 844 }
304 } 845 }
305 ], 846 ],
...@@ -308,13 +849,13 @@ apiRouter.post('/question7', (req, res) => { ...@@ -308,13 +849,13 @@ apiRouter.post('/question7', (req, res) => {
308 action: "block", 849 action: "block",
309 label: "네", 850 label: "네",
310 message: "네", 851 message: "네",
311 - blockId: "6297b3505ceed96c38544a0a" 852 + blockId: "6293885b7bd2fd4333583df0"
312 }, 853 },
313 { 854 {
314 action: "block", 855 action: "block",
315 label: "아니오", 856 label: "아니오",
316 message: "아니오", 857 message: "아니오",
317 - blockId: "6297b3505ceed96c38544a0a" 858 + blockId: "6293885b7bd2fd4333583df0"
318 } 859 }
319 ] 860 ]
320 } 861 }
...@@ -334,7 +875,7 @@ apiRouter.post('/result', (req, res) => { ...@@ -334,7 +875,7 @@ apiRouter.post('/result', (req, res) => {
334 } 875 }
335 userDB[userId][2] += mbti; 876 userDB[userId][2] += mbti;
336 console.log(userDB[userId]); 877 console.log(userDB[userId]);
337 - result(userDB); 878 + result(userDB[userId]);
338 const responseBody = { 879 const responseBody = {
339 version: "2.0", 880 version: "2.0",
340 template: { 881 template: {
...@@ -439,7 +980,7 @@ function result(Array){ ...@@ -439,7 +980,7 @@ function result(Array){
439 for(let j=0;j<4;j++){ 980 for(let j=0;j<4;j++){
440 for(let i=0; i<3; i++){ 981 for(let i=0; i<3; i++){
441 if(j==0){ 982 if(j==0){
442 - if(userDB[userId][j][i]=="E"){ 983 + if(Array[j][i]=="E"){
443 E++; 984 E++;
444 } 985 }
445 else{ 986 else{
...@@ -447,7 +988,7 @@ function result(Array){ ...@@ -447,7 +988,7 @@ function result(Array){
447 } 988 }
448 } 989 }
449 else if(j==1){ 990 else if(j==1){
450 - if(userDB[userId][j][i]=="N"){ 991 + if(Array[j][i]=="N"){
451 N++; 992 N++;
452 } 993 }
453 else{ 994 else{
...@@ -455,7 +996,7 @@ function result(Array){ ...@@ -455,7 +996,7 @@ function result(Array){
455 } 996 }
456 } 997 }
457 else if(j==2){ 998 else if(j==2){
458 - if(userDB[userId][j][i]=="F"){ 999 + if(Array[j][i]=="F"){
459 F++; 1000 F++;
460 } 1001 }
461 else{ 1002 else{
...@@ -463,7 +1004,7 @@ function result(Array){ ...@@ -463,7 +1004,7 @@ function result(Array){
463 } 1004 }
464 } 1005 }
465 else if(j==3){ 1006 else if(j==3){
466 - if(userDB[userId][j][i]=="N"){ 1007 + if(Array[j][i]=="N"){
467 P++; 1008 P++;
468 } 1009 }
469 else{ 1010 else{
...@@ -474,24 +1015,210 @@ function result(Array){ ...@@ -474,24 +1015,210 @@ function result(Array){
474 } 1015 }
475 1016
476 if(E>I) 1017 if(E>I)
477 - userDB[userId][4]+='E'; 1018 + Array[4]+='E';
478 else 1019 else
479 - userDB[userId][4]+='I'; 1020 + Array[4]+='I';
480 1021
481 if(N>S) 1022 if(N>S)
482 - userDB[userId][4]+='N'; 1023 + Array[4]+='N';
483 else 1024 else
484 - userDB[userId][4]+='S'; 1025 + Array[4]+='S';
485 1026
486 if(F>T) 1027 if(F>T)
487 - userDB[userId][4]+='F'; 1028 + Array[4]+='F';
488 else 1029 else
489 - userDB[userId][4]+='T'; 1030 + Array[4]+='T';
490 1031
491 if(P>J) 1032 if(P>J)
492 - userDB[userId][4]+='P'; 1033 + Array[4]+='P';
493 else 1034 else
494 - userDB[userId][4]+='J'; 1035 + Array[4]+='J';
1036 +}
1037 +
1038 +apiRouter.post('/result', (req, res) => {
1039 + var mesg = req.body.userRequest.utterance;
1040 + var userId = req.body.userRequest.user.id;
1041 + mbtiper = ['','','','','','','',''];
1042 + var mbti = '';
1043 + if (mesg == "네"){
1044 + mbti = 'N';
1045 + }
1046 + else if (mesg == "아니오") {
1047 + mbti = 'S';
1048 + }
1049 + userDB[userId][1] += mbti;
1050 + var e = 0;
1051 + var n = 0;
1052 + var f = 0;
1053 + var j = 0;
1054 + for(i=0; i<2; i++){
1055 + if(userDB[userId][0][i] == "E"){
1056 + e++;
1057 + }
1058 + }
1059 + for(i=0; i<2; i++){
1060 + if(userDB[userId][1][i] == "N"){
1061 + n++;
1062 + }
1063 + }
1064 + for(i=0; i<1; i++){
1065 + if(userDB[userId][2][i] == "F"){
1066 + f++;
1067 + }
1068 + }
1069 + for(i=0; i<2; i++){
1070 + if(userDB[userId][3][i] == "J"){
1071 + j++;
1072 + }
1073 + }
1074 + var i = 2-e;
1075 + var s = 2-n;
1076 + var t = 1-f;
1077 + var p = 2-j;
1078 + mbtiper[0] += 20 * e;
1079 + mbtiper[1] += 20 * i;
1080 + mbtiper[2] += 20 * n;
1081 + mbtiper[3] += 20 * s;
1082 + mbtiper[4] += 20 * t;
1083 + mbtiper[5] += 20 * f;
1084 + mbtiper[6] += 20 * j;
1085 + mbtiper[7] += 20 * p;
1086 + if(mbtiper[0]>mbtiper[1]){
1087 + userDB[userId][4] += 'E';
1088 + } else {
1089 + userDB[userId][4] += 'I';
1090 + }
1091 + if(mbtiper[2]>mbtiper[3]){
1092 + userDB[userId][4] += 'N';
1093 + } else {
1094 + userDB[userId][4] += 'S';
1095 + }
1096 + if(mbtiper[4]>mbtiper[5]){
1097 + userDB[userId][4] += 'T';
1098 + } else {
1099 + userDB[userId][4] += 'F';
1100 + }
1101 + if(mbtiper[6]>mbtiper[7]){
1102 + userDB[userId][4] += 'J';
1103 + } else {
1104 + userDB[userId][4] += 'P';
1105 + }
1106 + const responseBody = {
1107 + version: "2.0",
1108 + template: {
1109 + outputs: [
1110 + {
1111 + simpleText: {
1112 + text: "당신의 MBTI는 : "+userDB[userId][4]
1113 + }
1114 + }
1115 + ],
1116 + quickReplies: [{
1117 + action: "block",
1118 + label: "MBTI 테스트 다시하기",
1119 + message: "MBTI 테스트 다시하기",
1120 + blockId : "62977ff05ceed96c385449b9"
1121 + },
1122 + {
1123 + action: "block",
1124 + label: "결과 상세보기",
1125 + message: "결과 상세보기",
1126 + blockId: "62987b78e7a0253c7662dcd9"
1127 + }]
1128 + }
1129 + }
1130 + res.status(200).send(responseBody);
1131 + });
1132 +
1133 +apiRouter.post('/percent', (req, res) => {
1134 + const responseBody = {
1135 + version: "2.0",
1136 + template: {
1137 + outputs: [
1138 + {
1139 + simpleText: {
1140 + text: 'E: '+mbtiper[0]+'%\nI: '+mbtiper[1]+'%\nN: '+mbtiper[2]+'%\nS: '+mbtiper[3]+'%\nT: '+mbtiper[4]+'%\nF: '+mbtiper[5]+'%\nJ: '+mbtiper[6]+'%\nP: '+mbtiper[7]+'%'
1141 + }
1142 + }
1143 + ]
1144 + }
1145 + }
1146 + res.status(200).send(responseBody);
1147 + });
1148 +
1149 + apiRouter.post('/result', (req, res) => {
1150 + var userId = req.body.userRequest.user.id;
1151 + var mesg = req.body.userRequest.utterance;
1152 + var mbti = '';
1153 + if (mesg == "네") {
1154 + mbti = 'J';
1155 + } else if (mesg == "아니오") {
1156 + mbti = 'P';
1157 + }
1158 + userDB[userId][3] += mbti;
1159 + console.log(userDB[userId]);
1160 + analysis_mbti(userDB[userId]);
1161 + const responseBody = {
1162 + version: "2.0",
1163 + template: {
1164 + outputs: [
1165 + {
1166 + simpleText: {
1167 + text: "당신의 MBTI는 : "+userDB[userId][4]
1168 +
1169 + }
1170 + }
1171 + ],
1172 + quickReplies: [{
1173 + action: "block",
1174 + label: "MBTI 테스트 다시하기",
1175 + message: "MBTI 테스트 다시하기",
1176 + blockId : "628b7ef293b31d5b60ab4b29" //to question 1
1177 + }]
1178 + }
1179 + }
1180 + res.status(200).send(responseBody);
1181 +});
1182 +
1183 +function analysis_mbti(userdb) {
1184 + var e = count_mbti(userdb[0], 'E');
1185 + var i = 1-e; //-> 5
1186 + var n = count_mbti(userdb[1], 'N');
1187 + var s = 1-n; //-> 5
1188 + var f = count_mbti(userdb[2], 'F');
1189 + var t = 2-f; //-> 5
1190 + var j = count_mbti(userdb[3], 'J');
1191 + var p = 2-j; //-> 5
1192 + if (e > i) {
1193 + userdb[4] += 'E';
1194 + } else {
1195 + userdb[4] += 'I';
1196 + }
1197 + if (n > s) {
1198 + userdb[4] += 'N';
1199 + } else {
1200 + userdb[4] += 'S';
1201 + }
1202 + if (f > t) {
1203 + userdb[4] += 'F';
1204 + } else {
1205 + userdb[4] += 'T';
1206 + }
1207 + if (j > p) {
1208 + userdb[4] += 'J';
1209 + } else {
1210 + userdb[4] += 'P';
1211 + }
1212 +}
1213 +
1214 +function count_mbti(item_list, mbti_ch) {
1215 + var result = 0;
1216 + for (var i=0; i<5; i++) {
1217 + if(item_list[i] == 'mbti_ch'){
1218 + result += 1;
1219 + }
1220 + }
1221 + return result;
495 } 1222 }
496 1223
497 app.listen((process.env.PORT || 3000), function() { 1224 app.listen((process.env.PORT || 3000), function() {
......
1 -{
2 - "name": "example",
3 - "version": "1.0.0",
4 - "lockfileVersion": 2,
5 - "requires": true,
6 - "packages": {
7 - "": {
8 - "name": "example",
9 - "version": "1.0.0",
10 - "license": "ISC",
11 - "dependencies": {
12 - "body-parser": "^1.20.0",
13 - "express": "^4.18.1",
14 - "morgan": "^1.10.0"
15 - },
16 - "engines": {
17 - "node": "16.14.2",
18 - "npm": "8.5.0"
19 - }
20 - },
21 - "node_modules/accepts": {
22 - "version": "1.3.8",
23 - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
24 - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
25 - "dependencies": {
26 - "mime-types": "~2.1.34",
27 - "negotiator": "0.6.3"
28 - },
29 - "engines": {
30 - "node": ">= 0.6"
31 - }
32 - },
33 - "node_modules/array-flatten": {
34 - "version": "1.1.1",
35 - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
36 - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
37 - },
38 - "node_modules/basic-auth": {
39 - "version": "2.0.1",
40 - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
41 - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
42 - "dependencies": {
43 - "safe-buffer": "5.1.2"
44 - },
45 - "engines": {
46 - "node": ">= 0.8"
47 - }
48 - },
49 - "node_modules/basic-auth/node_modules/safe-buffer": {
50 - "version": "5.1.2",
51 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
52 - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
53 - },
54 - "node_modules/body-parser": {
55 - "version": "1.20.0",
56 - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
57 - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
58 - "dependencies": {
59 - "bytes": "3.1.2",
60 - "content-type": "~1.0.4",
61 - "debug": "2.6.9",
62 - "depd": "2.0.0",
63 - "destroy": "1.2.0",
64 - "http-errors": "2.0.0",
65 - "iconv-lite": "0.4.24",
66 - "on-finished": "2.4.1",
67 - "qs": "6.10.3",
68 - "raw-body": "2.5.1",
69 - "type-is": "~1.6.18",
70 - "unpipe": "1.0.0"
71 - },
72 - "engines": {
73 - "node": ">= 0.8",
74 - "npm": "1.2.8000 || >= 1.4.16"
75 - }
76 - },
77 - "node_modules/bytes": {
78 - "version": "3.1.2",
79 - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
80 - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
81 - "engines": {
82 - "node": ">= 0.8"
83 - }
84 - },
85 - "node_modules/call-bind": {
86 - "version": "1.0.2",
87 - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
88 - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
89 - "dependencies": {
90 - "function-bind": "^1.1.1",
91 - "get-intrinsic": "^1.0.2"
92 - },
93 - "funding": {
94 - "url": "https://github.com/sponsors/ljharb"
95 - }
96 - },
97 - "node_modules/content-disposition": {
98 - "version": "0.5.4",
99 - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
100 - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
101 - "dependencies": {
102 - "safe-buffer": "5.2.1"
103 - },
104 - "engines": {
105 - "node": ">= 0.6"
106 - }
107 - },
108 - "node_modules/content-type": {
109 - "version": "1.0.4",
110 - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
111 - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
112 - "engines": {
113 - "node": ">= 0.6"
114 - }
115 - },
116 - "node_modules/cookie": {
117 - "version": "0.5.0",
118 - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
119 - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
120 - "engines": {
121 - "node": ">= 0.6"
122 - }
123 - },
124 - "node_modules/cookie-signature": {
125 - "version": "1.0.6",
126 - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
127 - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
128 - },
129 - "node_modules/debug": {
130 - "version": "2.6.9",
131 - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
132 - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
133 - "dependencies": {
134 - "ms": "2.0.0"
135 - }
136 - },
137 - "node_modules/depd": {
138 - "version": "2.0.0",
139 - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
140 - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
141 - "engines": {
142 - "node": ">= 0.8"
143 - }
144 - },
145 - "node_modules/destroy": {
146 - "version": "1.2.0",
147 - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
148 - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
149 - "engines": {
150 - "node": ">= 0.8",
151 - "npm": "1.2.8000 || >= 1.4.16"
152 - }
153 - },
154 - "node_modules/ee-first": {
155 - "version": "1.1.1",
156 - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
157 - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
158 - },
159 - "node_modules/encodeurl": {
160 - "version": "1.0.2",
161 - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
162 - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
163 - "engines": {
164 - "node": ">= 0.8"
165 - }
166 - },
167 - "node_modules/escape-html": {
168 - "version": "1.0.3",
169 - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
170 - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
171 - },
172 - "node_modules/etag": {
173 - "version": "1.8.1",
174 - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
175 - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
176 - "engines": {
177 - "node": ">= 0.6"
178 - }
179 - },
180 - "node_modules/express": {
181 - "version": "4.18.1",
182 - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
183 - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
184 - "dependencies": {
185 - "accepts": "~1.3.8",
186 - "array-flatten": "1.1.1",
187 - "body-parser": "1.20.0",
188 - "content-disposition": "0.5.4",
189 - "content-type": "~1.0.4",
190 - "cookie": "0.5.0",
191 - "cookie-signature": "1.0.6",
192 - "debug": "2.6.9",
193 - "depd": "2.0.0",
194 - "encodeurl": "~1.0.2",
195 - "escape-html": "~1.0.3",
196 - "etag": "~1.8.1",
197 - "finalhandler": "1.2.0",
198 - "fresh": "0.5.2",
199 - "http-errors": "2.0.0",
200 - "merge-descriptors": "1.0.1",
201 - "methods": "~1.1.2",
202 - "on-finished": "2.4.1",
203 - "parseurl": "~1.3.3",
204 - "path-to-regexp": "0.1.7",
205 - "proxy-addr": "~2.0.7",
206 - "qs": "6.10.3",
207 - "range-parser": "~1.2.1",
208 - "safe-buffer": "5.2.1",
209 - "send": "0.18.0",
210 - "serve-static": "1.15.0",
211 - "setprototypeof": "1.2.0",
212 - "statuses": "2.0.1",
213 - "type-is": "~1.6.18",
214 - "utils-merge": "1.0.1",
215 - "vary": "~1.1.2"
216 - },
217 - "engines": {
218 - "node": ">= 0.10.0"
219 - }
220 - },
221 - "node_modules/finalhandler": {
222 - "version": "1.2.0",
223 - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
224 - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
225 - "dependencies": {
226 - "debug": "2.6.9",
227 - "encodeurl": "~1.0.2",
228 - "escape-html": "~1.0.3",
229 - "on-finished": "2.4.1",
230 - "parseurl": "~1.3.3",
231 - "statuses": "2.0.1",
232 - "unpipe": "~1.0.0"
233 - },
234 - "engines": {
235 - "node": ">= 0.8"
236 - }
237 - },
238 - "node_modules/forwarded": {
239 - "version": "0.2.0",
240 - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
241 - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
242 - "engines": {
243 - "node": ">= 0.6"
244 - }
245 - },
246 - "node_modules/fresh": {
247 - "version": "0.5.2",
248 - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
249 - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
250 - "engines": {
251 - "node": ">= 0.6"
252 - }
253 - },
254 - "node_modules/function-bind": {
255 - "version": "1.1.1",
256 - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
257 - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
258 - },
259 - "node_modules/get-intrinsic": {
260 - "version": "1.1.1",
261 - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
262 - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
263 - "dependencies": {
264 - "function-bind": "^1.1.1",
265 - "has": "^1.0.3",
266 - "has-symbols": "^1.0.1"
267 - },
268 - "funding": {
269 - "url": "https://github.com/sponsors/ljharb"
270 - }
271 - },
272 - "node_modules/has": {
273 - "version": "1.0.3",
274 - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
275 - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
276 - "dependencies": {
277 - "function-bind": "^1.1.1"
278 - },
279 - "engines": {
280 - "node": ">= 0.4.0"
281 - }
282 - },
283 - "node_modules/has-symbols": {
284 - "version": "1.0.3",
285 - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
286 - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
287 - "engines": {
288 - "node": ">= 0.4"
289 - },
290 - "funding": {
291 - "url": "https://github.com/sponsors/ljharb"
292 - }
293 - },
294 - "node_modules/http-errors": {
295 - "version": "2.0.0",
296 - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
297 - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
298 - "dependencies": {
299 - "depd": "2.0.0",
300 - "inherits": "2.0.4",
301 - "setprototypeof": "1.2.0",
302 - "statuses": "2.0.1",
303 - "toidentifier": "1.0.1"
304 - },
305 - "engines": {
306 - "node": ">= 0.8"
307 - }
308 - },
309 - "node_modules/iconv-lite": {
310 - "version": "0.4.24",
311 - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
312 - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
313 - "dependencies": {
314 - "safer-buffer": ">= 2.1.2 < 3"
315 - },
316 - "engines": {
317 - "node": ">=0.10.0"
318 - }
319 - },
320 - "node_modules/inherits": {
321 - "version": "2.0.4",
322 - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
323 - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
324 - },
325 - "node_modules/ipaddr.js": {
326 - "version": "1.9.1",
327 - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
328 - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
329 - "engines": {
330 - "node": ">= 0.10"
331 - }
332 - },
333 - "node_modules/media-typer": {
334 - "version": "0.3.0",
335 - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
336 - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
337 - "engines": {
338 - "node": ">= 0.6"
339 - }
340 - },
341 - "node_modules/merge-descriptors": {
342 - "version": "1.0.1",
343 - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
344 - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
345 - },
346 - "node_modules/methods": {
347 - "version": "1.1.2",
348 - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
349 - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
350 - "engines": {
351 - "node": ">= 0.6"
352 - }
353 - },
354 - "node_modules/mime": {
355 - "version": "1.6.0",
356 - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
357 - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
358 - "bin": {
359 - "mime": "cli.js"
360 - },
361 - "engines": {
362 - "node": ">=4"
363 - }
364 - },
365 - "node_modules/mime-db": {
366 - "version": "1.52.0",
367 - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
368 - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
369 - "engines": {
370 - "node": ">= 0.6"
371 - }
372 - },
373 - "node_modules/mime-types": {
374 - "version": "2.1.35",
375 - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
376 - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
377 - "dependencies": {
378 - "mime-db": "1.52.0"
379 - },
380 - "engines": {
381 - "node": ">= 0.6"
382 - }
383 - },
384 - "node_modules/morgan": {
385 - "version": "1.10.0",
386 - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
387 - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
388 - "dependencies": {
389 - "basic-auth": "~2.0.1",
390 - "debug": "2.6.9",
391 - "depd": "~2.0.0",
392 - "on-finished": "~2.3.0",
393 - "on-headers": "~1.0.2"
394 - },
395 - "engines": {
396 - "node": ">= 0.8.0"
397 - }
398 - },
399 - "node_modules/morgan/node_modules/on-finished": {
400 - "version": "2.3.0",
401 - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
402 - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
403 - "dependencies": {
404 - "ee-first": "1.1.1"
405 - },
406 - "engines": {
407 - "node": ">= 0.8"
408 - }
409 - },
410 - "node_modules/ms": {
411 - "version": "2.0.0",
412 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
413 - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
414 - },
415 - "node_modules/negotiator": {
416 - "version": "0.6.3",
417 - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
418 - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
419 - "engines": {
420 - "node": ">= 0.6"
421 - }
422 - },
423 - "node_modules/object-inspect": {
424 - "version": "1.12.1",
425 - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz",
426 - "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==",
427 - "funding": {
428 - "url": "https://github.com/sponsors/ljharb"
429 - }
430 - },
431 - "node_modules/on-finished": {
432 - "version": "2.4.1",
433 - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
434 - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
435 - "dependencies": {
436 - "ee-first": "1.1.1"
437 - },
438 - "engines": {
439 - "node": ">= 0.8"
440 - }
441 - },
442 - "node_modules/on-headers": {
443 - "version": "1.0.2",
444 - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
445 - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
446 - "engines": {
447 - "node": ">= 0.8"
448 - }
449 - },
450 - "node_modules/parseurl": {
451 - "version": "1.3.3",
452 - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
453 - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
454 - "engines": {
455 - "node": ">= 0.8"
456 - }
457 - },
458 - "node_modules/path-to-regexp": {
459 - "version": "0.1.7",
460 - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
461 - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
462 - },
463 - "node_modules/proxy-addr": {
464 - "version": "2.0.7",
465 - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
466 - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
467 - "dependencies": {
468 - "forwarded": "0.2.0",
469 - "ipaddr.js": "1.9.1"
470 - },
471 - "engines": {
472 - "node": ">= 0.10"
473 - }
474 - },
475 - "node_modules/qs": {
476 - "version": "6.10.3",
477 - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
478 - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
479 - "dependencies": {
480 - "side-channel": "^1.0.4"
481 - },
482 - "engines": {
483 - "node": ">=0.6"
484 - },
485 - "funding": {
486 - "url": "https://github.com/sponsors/ljharb"
487 - }
488 - },
489 - "node_modules/range-parser": {
490 - "version": "1.2.1",
491 - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
492 - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
493 - "engines": {
494 - "node": ">= 0.6"
495 - }
496 - },
497 - "node_modules/raw-body": {
498 - "version": "2.5.1",
499 - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
500 - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
501 - "dependencies": {
502 - "bytes": "3.1.2",
503 - "http-errors": "2.0.0",
504 - "iconv-lite": "0.4.24",
505 - "unpipe": "1.0.0"
506 - },
507 - "engines": {
508 - "node": ">= 0.8"
509 - }
510 - },
511 - "node_modules/safe-buffer": {
512 - "version": "5.2.1",
513 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
514 - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
515 - "funding": [
516 - {
517 - "type": "github",
518 - "url": "https://github.com/sponsors/feross"
519 - },
520 - {
521 - "type": "patreon",
522 - "url": "https://www.patreon.com/feross"
523 - },
524 - {
525 - "type": "consulting",
526 - "url": "https://feross.org/support"
527 - }
528 - ]
529 - },
530 - "node_modules/safer-buffer": {
531 - "version": "2.1.2",
532 - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
533 - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
534 - },
535 - "node_modules/send": {
536 - "version": "0.18.0",
537 - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
538 - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
539 - "dependencies": {
540 - "debug": "2.6.9",
541 - "depd": "2.0.0",
542 - "destroy": "1.2.0",
543 - "encodeurl": "~1.0.2",
544 - "escape-html": "~1.0.3",
545 - "etag": "~1.8.1",
546 - "fresh": "0.5.2",
547 - "http-errors": "2.0.0",
548 - "mime": "1.6.0",
549 - "ms": "2.1.3",
550 - "on-finished": "2.4.1",
551 - "range-parser": "~1.2.1",
552 - "statuses": "2.0.1"
553 - },
554 - "engines": {
555 - "node": ">= 0.8.0"
556 - }
557 - },
558 - "node_modules/send/node_modules/ms": {
559 - "version": "2.1.3",
560 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
561 - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
562 - },
563 - "node_modules/serve-static": {
564 - "version": "1.15.0",
565 - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
566 - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
567 - "dependencies": {
568 - "encodeurl": "~1.0.2",
569 - "escape-html": "~1.0.3",
570 - "parseurl": "~1.3.3",
571 - "send": "0.18.0"
572 - },
573 - "engines": {
574 - "node": ">= 0.8.0"
575 - }
576 - },
577 - "node_modules/setprototypeof": {
578 - "version": "1.2.0",
579 - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
580 - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
581 - },
582 - "node_modules/side-channel": {
583 - "version": "1.0.4",
584 - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
585 - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
586 - "dependencies": {
587 - "call-bind": "^1.0.0",
588 - "get-intrinsic": "^1.0.2",
589 - "object-inspect": "^1.9.0"
590 - },
591 - "funding": {
592 - "url": "https://github.com/sponsors/ljharb"
593 - }
594 - },
595 - "node_modules/statuses": {
596 - "version": "2.0.1",
597 - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
598 - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
599 - "engines": {
600 - "node": ">= 0.8"
601 - }
602 - },
603 - "node_modules/toidentifier": {
604 - "version": "1.0.1",
605 - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
606 - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
607 - "engines": {
608 - "node": ">=0.6"
609 - }
610 - },
611 - "node_modules/type-is": {
612 - "version": "1.6.18",
613 - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
614 - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
615 - "dependencies": {
616 - "media-typer": "0.3.0",
617 - "mime-types": "~2.1.24"
618 - },
619 - "engines": {
620 - "node": ">= 0.6"
621 - }
622 - },
623 - "node_modules/unpipe": {
624 - "version": "1.0.0",
625 - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
626 - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
627 - "engines": {
628 - "node": ">= 0.8"
629 - }
630 - },
631 - "node_modules/utils-merge": {
632 - "version": "1.0.1",
633 - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
634 - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
635 - "engines": {
636 - "node": ">= 0.4.0"
637 - }
638 - },
639 - "node_modules/vary": {
640 - "version": "1.1.2",
641 - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
642 - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
643 - "engines": {
644 - "node": ">= 0.8"
645 - }
646 - }
647 - },
648 - "dependencies": {
649 - "accepts": {
650 - "version": "1.3.8",
651 - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
652 - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
653 - "requires": {
654 - "mime-types": "~2.1.34",
655 - "negotiator": "0.6.3"
656 - }
657 - },
658 - "array-flatten": {
659 - "version": "1.1.1",
660 - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
661 - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
662 - },
663 - "basic-auth": {
664 - "version": "2.0.1",
665 - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
666 - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
667 - "requires": {
668 - "safe-buffer": "5.1.2"
669 - },
670 - "dependencies": {
671 - "safe-buffer": {
672 - "version": "5.1.2",
673 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
674 - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
675 - }
676 - }
677 - },
678 - "body-parser": {
679 - "version": "1.20.0",
680 - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
681 - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
682 - "requires": {
683 - "bytes": "3.1.2",
684 - "content-type": "~1.0.4",
685 - "debug": "2.6.9",
686 - "depd": "2.0.0",
687 - "destroy": "1.2.0",
688 - "http-errors": "2.0.0",
689 - "iconv-lite": "0.4.24",
690 - "on-finished": "2.4.1",
691 - "qs": "6.10.3",
692 - "raw-body": "2.5.1",
693 - "type-is": "~1.6.18",
694 - "unpipe": "1.0.0"
695 - }
696 - },
697 - "bytes": {
698 - "version": "3.1.2",
699 - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
700 - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
701 - },
702 - "call-bind": {
703 - "version": "1.0.2",
704 - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
705 - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
706 - "requires": {
707 - "function-bind": "^1.1.1",
708 - "get-intrinsic": "^1.0.2"
709 - }
710 - },
711 - "content-disposition": {
712 - "version": "0.5.4",
713 - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
714 - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
715 - "requires": {
716 - "safe-buffer": "5.2.1"
717 - }
718 - },
719 - "content-type": {
720 - "version": "1.0.4",
721 - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
722 - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
723 - },
724 - "cookie": {
725 - "version": "0.5.0",
726 - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
727 - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
728 - },
729 - "cookie-signature": {
730 - "version": "1.0.6",
731 - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
732 - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
733 - },
734 - "debug": {
735 - "version": "2.6.9",
736 - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
737 - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
738 - "requires": {
739 - "ms": "2.0.0"
740 - }
741 - },
742 - "depd": {
743 - "version": "2.0.0",
744 - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
745 - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
746 - },
747 - "destroy": {
748 - "version": "1.2.0",
749 - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
750 - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
751 - },
752 - "ee-first": {
753 - "version": "1.1.1",
754 - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
755 - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
756 - },
757 - "encodeurl": {
758 - "version": "1.0.2",
759 - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
760 - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
761 - },
762 - "escape-html": {
763 - "version": "1.0.3",
764 - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
765 - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
766 - },
767 - "etag": {
768 - "version": "1.8.1",
769 - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
770 - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
771 - },
772 - "express": {
773 - "version": "4.18.1",
774 - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
775 - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
776 - "requires": {
777 - "accepts": "~1.3.8",
778 - "array-flatten": "1.1.1",
779 - "body-parser": "1.20.0",
780 - "content-disposition": "0.5.4",
781 - "content-type": "~1.0.4",
782 - "cookie": "0.5.0",
783 - "cookie-signature": "1.0.6",
784 - "debug": "2.6.9",
785 - "depd": "2.0.0",
786 - "encodeurl": "~1.0.2",
787 - "escape-html": "~1.0.3",
788 - "etag": "~1.8.1",
789 - "finalhandler": "1.2.0",
790 - "fresh": "0.5.2",
791 - "http-errors": "2.0.0",
792 - "merge-descriptors": "1.0.1",
793 - "methods": "~1.1.2",
794 - "on-finished": "2.4.1",
795 - "parseurl": "~1.3.3",
796 - "path-to-regexp": "0.1.7",
797 - "proxy-addr": "~2.0.7",
798 - "qs": "6.10.3",
799 - "range-parser": "~1.2.1",
800 - "safe-buffer": "5.2.1",
801 - "send": "0.18.0",
802 - "serve-static": "1.15.0",
803 - "setprototypeof": "1.2.0",
804 - "statuses": "2.0.1",
805 - "type-is": "~1.6.18",
806 - "utils-merge": "1.0.1",
807 - "vary": "~1.1.2"
808 - }
809 - },
810 - "finalhandler": {
811 - "version": "1.2.0",
812 - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
813 - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
814 - "requires": {
815 - "debug": "2.6.9",
816 - "encodeurl": "~1.0.2",
817 - "escape-html": "~1.0.3",
818 - "on-finished": "2.4.1",
819 - "parseurl": "~1.3.3",
820 - "statuses": "2.0.1",
821 - "unpipe": "~1.0.0"
822 - }
823 - },
824 - "forwarded": {
825 - "version": "0.2.0",
826 - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
827 - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
828 - },
829 - "fresh": {
830 - "version": "0.5.2",
831 - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
832 - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
833 - },
834 - "function-bind": {
835 - "version": "1.1.1",
836 - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
837 - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
838 - },
839 - "get-intrinsic": {
840 - "version": "1.1.1",
841 - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
842 - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
843 - "requires": {
844 - "function-bind": "^1.1.1",
845 - "has": "^1.0.3",
846 - "has-symbols": "^1.0.1"
847 - }
848 - },
849 - "has": {
850 - "version": "1.0.3",
851 - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
852 - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
853 - "requires": {
854 - "function-bind": "^1.1.1"
855 - }
856 - },
857 - "has-symbols": {
858 - "version": "1.0.3",
859 - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
860 - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
861 - },
862 - "http-errors": {
863 - "version": "2.0.0",
864 - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
865 - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
866 - "requires": {
867 - "depd": "2.0.0",
868 - "inherits": "2.0.4",
869 - "setprototypeof": "1.2.0",
870 - "statuses": "2.0.1",
871 - "toidentifier": "1.0.1"
872 - }
873 - },
874 - "iconv-lite": {
875 - "version": "0.4.24",
876 - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
877 - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
878 - "requires": {
879 - "safer-buffer": ">= 2.1.2 < 3"
880 - }
881 - },
882 - "inherits": {
883 - "version": "2.0.4",
884 - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
885 - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
886 - },
887 - "ipaddr.js": {
888 - "version": "1.9.1",
889 - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
890 - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
891 - },
892 - "media-typer": {
893 - "version": "0.3.0",
894 - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
895 - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
896 - },
897 - "merge-descriptors": {
898 - "version": "1.0.1",
899 - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
900 - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
901 - },
902 - "methods": {
903 - "version": "1.1.2",
904 - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
905 - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
906 - },
907 - "mime": {
908 - "version": "1.6.0",
909 - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
910 - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
911 - },
912 - "mime-db": {
913 - "version": "1.52.0",
914 - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
915 - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
916 - },
917 - "mime-types": {
918 - "version": "2.1.35",
919 - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
920 - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
921 - "requires": {
922 - "mime-db": "1.52.0"
923 - }
924 - },
925 - "morgan": {
926 - "version": "1.10.0",
927 - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
928 - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
929 - "requires": {
930 - "basic-auth": "~2.0.1",
931 - "debug": "2.6.9",
932 - "depd": "~2.0.0",
933 - "on-finished": "~2.3.0",
934 - "on-headers": "~1.0.2"
935 - },
936 - "dependencies": {
937 - "on-finished": {
938 - "version": "2.3.0",
939 - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
940 - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
941 - "requires": {
942 - "ee-first": "1.1.1"
943 - }
944 - }
945 - }
946 - },
947 - "ms": {
948 - "version": "2.0.0",
949 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
950 - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
951 - },
952 - "negotiator": {
953 - "version": "0.6.3",
954 - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
955 - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
956 - },
957 - "object-inspect": {
958 - "version": "1.12.1",
959 - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz",
960 - "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA=="
961 - },
962 - "on-finished": {
963 - "version": "2.4.1",
964 - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
965 - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
966 - "requires": {
967 - "ee-first": "1.1.1"
968 - }
969 - },
970 - "on-headers": {
971 - "version": "1.0.2",
972 - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
973 - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
974 - },
975 - "parseurl": {
976 - "version": "1.3.3",
977 - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
978 - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
979 - },
980 - "path-to-regexp": {
981 - "version": "0.1.7",
982 - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
983 - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
984 - },
985 - "proxy-addr": {
986 - "version": "2.0.7",
987 - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
988 - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
989 - "requires": {
990 - "forwarded": "0.2.0",
991 - "ipaddr.js": "1.9.1"
992 - }
993 - },
994 - "qs": {
995 - "version": "6.10.3",
996 - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
997 - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
998 - "requires": {
999 - "side-channel": "^1.0.4"
1000 - }
1001 - },
1002 - "range-parser": {
1003 - "version": "1.2.1",
1004 - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1005 - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1006 - },
1007 - "raw-body": {
1008 - "version": "2.5.1",
1009 - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
1010 - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
1011 - "requires": {
1012 - "bytes": "3.1.2",
1013 - "http-errors": "2.0.0",
1014 - "iconv-lite": "0.4.24",
1015 - "unpipe": "1.0.0"
1016 - }
1017 - },
1018 - "safe-buffer": {
1019 - "version": "5.2.1",
1020 - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1021 - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1022 - },
1023 - "safer-buffer": {
1024 - "version": "2.1.2",
1025 - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1026 - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1027 - },
1028 - "send": {
1029 - "version": "0.18.0",
1030 - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1031 - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1032 - "requires": {
1033 - "debug": "2.6.9",
1034 - "depd": "2.0.0",
1035 - "destroy": "1.2.0",
1036 - "encodeurl": "~1.0.2",
1037 - "escape-html": "~1.0.3",
1038 - "etag": "~1.8.1",
1039 - "fresh": "0.5.2",
1040 - "http-errors": "2.0.0",
1041 - "mime": "1.6.0",
1042 - "ms": "2.1.3",
1043 - "on-finished": "2.4.1",
1044 - "range-parser": "~1.2.1",
1045 - "statuses": "2.0.1"
1046 - },
1047 - "dependencies": {
1048 - "ms": {
1049 - "version": "2.1.3",
1050 - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1051 - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1052 - }
1053 - }
1054 - },
1055 - "serve-static": {
1056 - "version": "1.15.0",
1057 - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1058 - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1059 - "requires": {
1060 - "encodeurl": "~1.0.2",
1061 - "escape-html": "~1.0.3",
1062 - "parseurl": "~1.3.3",
1063 - "send": "0.18.0"
1064 - }
1065 - },
1066 - "setprototypeof": {
1067 - "version": "1.2.0",
1068 - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1069 - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1070 - },
1071 - "side-channel": {
1072 - "version": "1.0.4",
1073 - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1074 - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1075 - "requires": {
1076 - "call-bind": "^1.0.0",
1077 - "get-intrinsic": "^1.0.2",
1078 - "object-inspect": "^1.9.0"
1079 - }
1080 - },
1081 - "statuses": {
1082 - "version": "2.0.1",
1083 - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1084 - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
1085 - },
1086 - "toidentifier": {
1087 - "version": "1.0.1",
1088 - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1089 - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
1090 - },
1091 - "type-is": {
1092 - "version": "1.6.18",
1093 - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1094 - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1095 - "requires": {
1096 - "media-typer": "0.3.0",
1097 - "mime-types": "~2.1.24"
1098 - }
1099 - },
1100 - "unpipe": {
1101 - "version": "1.0.0",
1102 - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1103 - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
1104 - },
1105 - "utils-merge": {
1106 - "version": "1.0.1",
1107 - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1108 - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
1109 - },
1110 - "vary": {
1111 - "version": "1.1.2",
1112 - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1113 - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
1114 - }
1115 - }
1116 -}
1 -{
2 - "name": "example",
3 - "version": "1.0.0",
4 - "description": "",
5 - "main": "index.js",
6 - "scripts": {
7 - "start": "node index.js",
8 - "test": "echo \"Error: no test specified\" && exit 1"
9 - },
10 - "author": "",
11 - "license": "ISC",
12 - "engines": {
13 - "node": "16.14.2",
14 - "npm": "8.5.0"
15 - },
16 - "dependencies": {
17 - "body-parser": "^1.20.0",
18 - "express": "^4.18.1",
19 - "morgan": "^1.10.0"
20 - }
21 -}