Showing
5 changed files
with
1303 additions
and
207 deletions
... | @@ -17,14 +17,19 @@ | ... | @@ -17,14 +17,19 @@ |
17 | ## 개발 환경 및 도구 : | 17 | ## 개발 환경 및 도구 : |
18 | * Ubuntu Server 18.04 LTS | 18 | * Ubuntu Server 18.04 LTS |
19 | * Windows 10 | 19 | * Windows 10 |
20 | - * Ubuntu 16.04.7 | 20 | + * Ubuntu 20.04 LTS (Focal Fossa) |
21 | - | ||
22 | 21 | ||
23 | 22 | ||
23 | +## 사용방법 : | ||
24 | +<img src="/QR코드.jpg" width="20%" height="20%"alt="line"></img> | ||
25 | + Line 앱을 설치 후 QR코드를 사용해 친구 추가를 해주세요! | ||
24 | 26 | ||
25 | ## 설치방법 : | 27 | ## 설치방법 : |
26 | - 개발환경 설정이 끝나는 대로 추가예정 | 28 | + 미리 구축된 aws에서 |
27 | - (aws구축이 불가능한 문제가 있음) | 29 | + git clone http://khuhub.khu.ac.kr/2014104077/OSS-Project.git |
30 | + npm install --save express | ||
31 | + npm install --save request | ||
32 | + npm install --save xml-js | ||
28 | 33 | ||
29 | 34 | ||
30 | ## 주요 기능 및 명령어 | 35 | ## 주요 기능 및 명령어 |
... | @@ -38,8 +43,9 @@ | ... | @@ -38,8 +43,9 @@ |
38 | 곽원석 <rhkrdnjstjr1@khu.ac.kr> | 43 | 곽원석 <rhkrdnjstjr1@khu.ac.kr> |
39 | 44 | ||
40 | 45 | ||
41 | -License | 46 | +### License : |
42 | The MIT License (MIT) | 47 | The MIT License (MIT) |
48 | + | ||
43 | Copyright (c) 2020 곽원석 | 49 | Copyright (c) 2020 곽원석 |
44 | Permission is hereby granted, free of charge, to any person obtaining a copy | 50 | Permission is hereby granted, free of charge, to any person obtaining a copy |
45 | of this software and associated documentation files (the "Software"), to deal | 51 | of this software and associated documentation files (the "Software"), to deal | ... | ... |
1 | +//웹 프레임 웤 | ||
1 | var express = require('express'); | 2 | var express = require('express'); |
2 | -var app = express(); | ||
3 | 3 | ||
4 | +// 요청 리소스 표현 모듈 | ||
5 | +var request = require('request'); | ||
6 | + | ||
7 | +// api로 받아올 데이터포맷이 xml이므로 json으로 파싱할 필요가 있음 | ||
8 | +var convert = require('xml-js'); | ||
9 | +const bodyParser = require('body-parser'); | ||
10 | +var moment = require('moment'); | ||
11 | + | ||
12 | +// 라인 메신져 | ||
13 | +const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' | ||
14 | +const TOKEN = 'OPv3udmn1UGx+xWZFm80KeZbeGJm63nyt+sTpvBr1Mbc1Y0FAeK4MohQLcWq5yytJ6vnaNgXZfigAEFdbjzs05b4QAU+9r1jcZ05t6QvhWDTRYT0Z+YDMMePXtrQYCT84kmkH0OpJ4smBFwLxrtwtAdB04t89/1O/w1cDnyilFU=' | ||
4 | 15 | ||
5 | // 공공보건포털_API | 16 | // 공공보건포털_API |
6 | -var request = require('request'); | 17 | +const CORONA_URL = 'http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19InfStateJson'; |
7 | -// 파싱할 URL | 18 | +const SERVICE_KEY = 'DMUPOq6b%2B%2F1gqfLEXQ6bnhgoTO73BfPprA6HVNcV%2F6vHMGG%2Bgiw%2BPDkPvX1eQ7b9uvl%2B42fxUPkU0W3Si907Lw%3D%3D' |
8 | -var url = 'http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19InfStateJson'; | 19 | +queryParams = '?' + encodeURIComponent('ServiceKey') + '=' + SERVICE_KEY; // Service Key |
9 | -var queryParams = '?' + encodeURIComponent('ServiceKey') + '=서비스키'; /* Service Key*/ | 20 | +queryParams += '&' + encodeURIComponent('pageNo') + '=' + encodeURIComponent('1'); |
10 | -queryParams += '&' + encodeURIComponent('pageNo') + '=' + encodeURIComponent('1'); /* */ | 21 | +queryParams += '&' + encodeURIComponent('numOfRows') + '=' + encodeURIComponent('4'); |
11 | -queryParams += '&' + encodeURIComponent('numOfRows') + '=' + encodeURIComponent('10'); /* */ | 22 | +var menu = 0; |
12 | -queryParams += '&' + encodeURIComponent('startCreateDt') + '=' + encodeURIComponent('20200310'); /* */ | 23 | +var start_checker = false; |
13 | -queryParams += '&' + encodeURIComponent('endCreateDt') + '=' + encodeURIComponent('20200315'); /* */ | 24 | + |
14 | - | 25 | +// express 미들웨어 정의 |
15 | -request({ | 26 | +var app = express(); |
16 | - url: url + queryParams, | 27 | +app.use(bodyParser.json()); |
17 | - method: 'GET' | 28 | + |
18 | -}, function (error, response, body) { | 29 | +// 기타 비동기식 오류처리에 쓰일 모듈들 |
19 | - //console.log('Status', response.statusCode); | 30 | +const fs = require('fs'); |
20 | - //console.log('Headers', JSON.stringify(response.headers)); | 31 | +const path = require('path'); |
21 | - //console.log('Reponse received', body); | 32 | +const HTTPS = require('https'); |
33 | +const { measureMemory } = require('vm'); | ||
34 | +const domain = "www.oss-chatbot-kwak.tk" | ||
35 | +const sslport = 23023; | ||
36 | + | ||
37 | +// 챗봇으로 입력 | ||
38 | +app.post('/hook', function (req, res) { | ||
39 | + | ||
40 | + var eventObj = req.body.events[0]; | ||
41 | + var source = eventObj.source; | ||
42 | + var message = eventObj.message; | ||
43 | + | ||
44 | + // request log | ||
45 | + console.log('======================', new Date() ,'======================'); | ||
46 | + console.log('[request]', req.body); | ||
47 | + console.log('[request source] ', eventObj.source); | ||
48 | + console.log('[request message]', eventObj.message); | ||
49 | + | ||
50 | + // 챗봇시작 | ||
51 | + if(message.text == '/코로나' || message.text == '/corona'){ | ||
52 | + request.post( | ||
53 | + { | ||
54 | + url: TARGET_URL, | ||
55 | + headers: { | ||
56 | + 'Authorization': `Bearer ${TOKEN}` | ||
57 | + }, | ||
58 | + json: { | ||
59 | + "replyToken":eventObj.replyToken, | ||
60 | + "messages":[ | ||
61 | + { | ||
62 | + "type":"text", | ||
63 | + "text":"명령어 : " + message.text + " 로 코로나 19 bot을 시작하셨습니다." | ||
64 | + }, | ||
65 | + { | ||
66 | + "type":"text", | ||
67 | + "text":"명령어 :\n1. 확진자 수 :\t\t\t\t\t\t\t/확진자\n2. 격리해제 수 :\t\t/격리해제\n3. 검사진행 수 :\t\t/검사진행\n4. 사망자 수 :\t\t\t\t\t\t\t/사망자\n5. 치료중 환자 수 :\t/치료중\n6. 결과음성 수 :\t\t/결과음성\n7. 누적검사 수 :\t\t/누적검사\n8. 누적 확진률 :\t\t/누적확진\n" | ||
68 | + } | ||
69 | + ] | ||
70 | + } | ||
71 | + },(error, response, body) => { | ||
72 | + console.log(body) | ||
73 | + }); | ||
74 | + start_checker = true; | ||
75 | + return; | ||
76 | + } | ||
77 | + else if(message.text == '/확진자' && start_checker == true){ | ||
78 | + menu = 1; | ||
79 | + start_checker = false; | ||
80 | + request.post( | ||
81 | + { | ||
82 | + url: TARGET_URL, | ||
83 | + headers: { | ||
84 | + 'Authorization': `Bearer ${TOKEN}` | ||
85 | + }, | ||
86 | + json: { | ||
87 | + "replyToken":eventObj.replyToken, | ||
88 | + "messages":[ | ||
89 | + { | ||
90 | + "type":"text", | ||
91 | + "text":"확인하고 싶으신 일자를 적어주세요." | ||
92 | + }, | ||
93 | + { | ||
94 | + "type":"text", | ||
95 | + "text":"포맷) YYYYMMDD" | ||
96 | + } | ||
97 | + ] | ||
98 | + } | ||
99 | + },(error, response, body) => { | ||
100 | + console.log(body) | ||
101 | + }); | ||
102 | + return; | ||
103 | + } | ||
104 | + else if(message.text == '/격리해제' && start_checker == true){ | ||
105 | + menu = 2; | ||
106 | + start_checker = false; | ||
107 | + request.post( | ||
108 | + { | ||
109 | + url: TARGET_URL, | ||
110 | + headers: { | ||
111 | + 'Authorization': `Bearer ${TOKEN}` | ||
112 | + }, | ||
113 | + json: { | ||
114 | + "replyToken":eventObj.replyToken, | ||
115 | + "messages":[ | ||
116 | + { | ||
117 | + "type":"text", | ||
118 | + "text":"확인하고 싶으신 일자를 적어주세요." | ||
119 | + }, | ||
120 | + { | ||
121 | + "type":"text", | ||
122 | + "text":"포맷) YYYYMMDD" | ||
123 | + } | ||
124 | + ] | ||
125 | + } | ||
126 | + },(error, response, body) => { | ||
127 | + console.log(body) | ||
128 | + }); | ||
129 | + return; | ||
130 | + } | ||
131 | + else if(message.text == '/검사진행' && start_checker == true){ | ||
132 | + menu = 3; | ||
133 | + start_checker = false; | ||
134 | + request.post( | ||
135 | + { | ||
136 | + url: TARGET_URL, | ||
137 | + headers: { | ||
138 | + 'Authorization': `Bearer ${TOKEN}` | ||
139 | + }, | ||
140 | + json: { | ||
141 | + "replyToken":eventObj.replyToken, | ||
142 | + "messages":[ | ||
143 | + { | ||
144 | + "type":"text", | ||
145 | + "text":"확인하고 싶으신 일자를 적어주세요." | ||
146 | + }, | ||
147 | + { | ||
148 | + "type":"text", | ||
149 | + "text":"포맷) YYYYMMDD" | ||
150 | + } | ||
151 | + ] | ||
152 | + } | ||
153 | + },(error, response, body) => { | ||
154 | + console.log(body) | ||
155 | + }); | ||
156 | + return; | ||
157 | + } | ||
158 | + else if(message.text == '/사망자' && start_checker == true){ | ||
159 | + menu = 4; | ||
160 | + start_checker = false; | ||
161 | + request.post( | ||
162 | + { | ||
163 | + url: TARGET_URL, | ||
164 | + headers: { | ||
165 | + 'Authorization': `Bearer ${TOKEN}` | ||
166 | + }, | ||
167 | + json: { | ||
168 | + "replyToken":eventObj.replyToken, | ||
169 | + "messages":[ | ||
170 | + { | ||
171 | + "type":"text", | ||
172 | + "text":"확인하고 싶으신 일자를 적어주세요." | ||
173 | + }, | ||
174 | + { | ||
175 | + "type":"text", | ||
176 | + "text":"포맷) YYYYMMDD" | ||
177 | + } | ||
178 | + ] | ||
179 | + } | ||
180 | + },(error, response, body) => { | ||
181 | + console.log(body) | ||
182 | + }); | ||
183 | + return; | ||
184 | + } | ||
185 | + else if(message.text == '/치료중' && start_checker == true){ | ||
186 | + menu = 5; | ||
187 | + start_checker = false; | ||
188 | + request.post( | ||
189 | + { | ||
190 | + url: TARGET_URL, | ||
191 | + headers: { | ||
192 | + 'Authorization': `Bearer ${TOKEN}` | ||
193 | + }, | ||
194 | + json: { | ||
195 | + "replyToken":eventObj.replyToken, | ||
196 | + "messages":[ | ||
197 | + { | ||
198 | + "type":"text", | ||
199 | + "text":"확인하고 싶으신 일자를 적어주세요." | ||
200 | + }, | ||
201 | + { | ||
202 | + "type":"text", | ||
203 | + "text":"포맷) YYYYMMDD" | ||
204 | + } | ||
205 | + ] | ||
206 | + } | ||
207 | + },(error, response, body) => { | ||
208 | + console.log(body) | ||
209 | + }); | ||
210 | + return; | ||
211 | + } | ||
212 | + else if(message.text == '/음성' && start_checker == true){ | ||
213 | + menu = 6; | ||
214 | + start_checker = false; | ||
215 | + request.post( | ||
216 | + { | ||
217 | + url: TARGET_URL, | ||
218 | + headers: { | ||
219 | + 'Authorization': `Bearer ${TOKEN}` | ||
220 | + }, | ||
221 | + json: { | ||
222 | + "replyToken":eventObj.replyToken, | ||
223 | + "messages":[ | ||
224 | + { | ||
225 | + "type":"text", | ||
226 | + "text":"확인하고 싶으신 일자를 적어주세요." | ||
227 | + }, | ||
228 | + { | ||
229 | + "type":"text", | ||
230 | + "text":"포맷) YYYYMMDD" | ||
231 | + } | ||
232 | + ] | ||
233 | + } | ||
234 | + },(error, response, body) => { | ||
235 | + console.log(body) | ||
236 | + }); | ||
237 | + return; | ||
238 | + } | ||
239 | + else if(message.text == '/누적검사' && start_checker == true){ | ||
240 | + menu = 7; | ||
241 | + start_checker = false; | ||
242 | + request.post( | ||
243 | + { | ||
244 | + url: TARGET_URL, | ||
245 | + headers: { | ||
246 | + 'Authorization': `Bearer ${TOKEN}` | ||
247 | + }, | ||
248 | + json: { | ||
249 | + "replyToken":eventObj.replyToken, | ||
250 | + "messages":[ | ||
251 | + { | ||
252 | + "type":"text", | ||
253 | + "text":"확인하고 싶으신 일자를 적어주세요." | ||
254 | + }, | ||
255 | + { | ||
256 | + "type":"text", | ||
257 | + "text":"포맷) YYYYMMDD" | ||
258 | + } | ||
259 | + ] | ||
260 | + } | ||
261 | + },(error, response, body) => { | ||
262 | + console.log(body) | ||
263 | + }); | ||
264 | + return; | ||
265 | + } | ||
266 | + else if(message.text == '/누적확진' && start_checker == true){ | ||
267 | + menu = 8; | ||
268 | + start_checker = false; | ||
269 | + request.post( | ||
270 | + { | ||
271 | + url: TARGET_URL, | ||
272 | + headers: { | ||
273 | + 'Authorization': `Bearer ${TOKEN}` | ||
274 | + }, | ||
275 | + json: { | ||
276 | + "replyToken":eventObj.replyToken, | ||
277 | + "messages":[ | ||
278 | + { | ||
279 | + "type":"text", | ||
280 | + "text":"확인하고 싶으신 일자를 적어주세요.\n포맷 : YYYYMMDD 입니다." | ||
281 | + }, | ||
282 | + { | ||
283 | + "type":"text", | ||
284 | + "text":"포맷) YYYYMMDD" | ||
285 | + } | ||
286 | + ] | ||
287 | + } | ||
288 | + },(error, response, body) => { | ||
289 | + console.log(body) | ||
290 | + }); | ||
291 | + return; | ||
292 | + } | ||
293 | + else if(start_checker == true){ | ||
294 | + menu = 0; | ||
295 | + request.post( | ||
296 | + { | ||
297 | + url: TARGET_URL, | ||
298 | + headers: { | ||
299 | + 'Authorization': `Bearer ${TOKEN}` | ||
300 | + }, | ||
301 | + json: { | ||
302 | + "replyToken":eventObj.replyToken, | ||
303 | + "messages":[ | ||
304 | + { | ||
305 | + "type":"text", | ||
306 | + "text":"선택하신 정보가 정확하지 않거나 없습니다.\n처음부터 다시 진행해주세요." | ||
307 | + }, | ||
308 | + ] | ||
309 | + } | ||
310 | + },(error, response, body) => { | ||
311 | + console.log(body) | ||
312 | + }); | ||
313 | + start_checker = false; | ||
314 | + return; | ||
315 | + } | ||
316 | + | ||
317 | + if((menu != 0) && moment(message.text).isAfter(20200301)){ | ||
318 | + today = message.text; | ||
319 | + queryParams += '&' + encodeURIComponent('endCreateDt') + '=' + encodeURIComponent(today); | ||
320 | + switch(menu){ | ||
321 | + case 1: | ||
322 | + bot_reply_1(eventObj.replyToken, message); | ||
323 | + break; | ||
324 | + case 2: | ||
325 | + bot_reply_2(eventObj.replyToken, message); | ||
326 | + break; | ||
327 | + case 3: | ||
328 | + bot_reply_3(eventObj.replyToken, message); | ||
329 | + break; | ||
330 | + case 4: | ||
331 | + bot_reply_4(eventObj.replyToken, message); | ||
332 | + break; | ||
333 | + case 5: | ||
334 | + bot_reply_5(eventObj.replyToken, message); | ||
335 | + break; | ||
336 | + case 6: | ||
337 | + bot_reply_6(eventObj.replyToken, message); | ||
338 | + break; | ||
339 | + case 7: | ||
340 | + bot_reply_7(eventObj.replyToken, message); | ||
341 | + break; | ||
342 | + case 8: | ||
343 | + bot_reply_8(eventObj.replyToken, message); | ||
344 | + break; | ||
345 | + default : | ||
346 | + break; | ||
347 | + } | ||
348 | + } | ||
349 | + else if(menu == 0){ | ||
350 | + request.post( | ||
351 | + { | ||
352 | + url: TARGET_URL, | ||
353 | + headers: { | ||
354 | + 'Authorization': `Bearer ${TOKEN}` | ||
355 | + }, | ||
356 | + json: { | ||
357 | + "replyToken":eventObj.replyToken, | ||
358 | + "messages":[ | ||
359 | + { | ||
360 | + "type":"text", | ||
361 | + "text":"코로나 봇을 찾으시나요?\n명령어는 /코로나 또는 /corona 입니다." | ||
362 | + } | ||
363 | + ] | ||
364 | + } | ||
365 | + },(error, response, body) => { | ||
366 | + console.log(body) | ||
367 | + }); | ||
368 | + } | ||
369 | + else{ | ||
370 | + request.post( | ||
371 | + { | ||
372 | + url: TARGET_URL, | ||
373 | + headers: { | ||
374 | + 'Authorization': `Bearer ${TOKEN}` | ||
375 | + }, | ||
376 | + json: { | ||
377 | + "replyToken":eventObj.replyToken, | ||
378 | + "messages":[ | ||
379 | + { | ||
380 | + "type":"text", | ||
381 | + "text":"바른 날짜를 입력해주세요.." | ||
382 | + } | ||
383 | + ] | ||
384 | + } | ||
385 | + },(error, response, body) => { | ||
386 | + console.log(body) | ||
387 | + }); | ||
388 | + } | ||
389 | + | ||
390 | + | ||
391 | + res.sendStatus(200); | ||
22 | }); | 392 | }); |
393 | + | ||
394 | +function bot_reply_1(replyToken, message) { | ||
395 | + request({ | ||
396 | + url: CORONA_URL + queryParams, | ||
397 | + method: 'GET' | ||
398 | + },(error, response, body) => { | ||
399 | + if(!error && response.statusCode == 200) { | ||
400 | + console.log('Status', response.statusCode); | ||
401 | + console.log('Headers', JSON.stringify(response.headers)); | ||
402 | + var xmlToJson = convert.xml2json(response.body, {compact: true, spaces: 4}); | ||
403 | + const jsonData = JSON.parse(xmlToJson); // json text -> json object | ||
404 | + console.log('Reponse received', xmlToJson); // json text | ||
405 | + | ||
406 | + var resultMessage1 = jsonData.response.body.items.item[1]; | ||
407 | + var resultMessage2 = jsonData.response.body.items.item[0]; | ||
408 | + | ||
409 | + request.post( | ||
410 | + { | ||
411 | + url: TARGET_URL, | ||
412 | + headers: { | ||
413 | + 'Authorization': `Bearer ${TOKEN}` | ||
414 | + }, | ||
415 | + json: { | ||
416 | + "replyToken":replyToken, | ||
417 | + "messages":[ | ||
418 | + { | ||
419 | + "type":"text", | ||
420 | + "text": '선택하신 날짜와 정보의 Corona Virus-19 현황은 다음과 같습니다.' | ||
421 | + }, | ||
422 | + { | ||
423 | + "type":"text", | ||
424 | + "text": "확진자 수 : " + (parseInt(resultMessage2.decideCnt._text)-parseInt(resultMessage1.decideCnt._text)) | ||
425 | + }, | ||
426 | + { | ||
427 | + "type":"text", | ||
428 | + "text": "등록일시분초 : " + resultMessage2.createDt._text | ||
429 | + } | ||
430 | + ] | ||
431 | + } | ||
432 | + },(error, response, body) => { | ||
433 | + console.log(body) | ||
434 | + }); | ||
435 | + } | ||
436 | + }); | ||
437 | +} | ||
438 | +function bot_reply_2(replyToken, message) { | ||
439 | + request({ | ||
440 | + url: CORONA_URL + queryParams, | ||
441 | + method: 'GET' | ||
442 | + },(error, response, body) => { | ||
443 | + if(!error && response.statusCode == 200) { | ||
444 | + console.log('Status', response.statusCode); | ||
445 | + console.log('Headers', JSON.stringify(response.headers)); | ||
446 | + var xmlToJson = convert.xml2json(response.body, {compact: true, spaces: 4}); | ||
447 | + const jsonData = JSON.parse(xmlToJson); // json text -> json object | ||
448 | + console.log('Reponse received', xmlToJson); // json text | ||
449 | + | ||
450 | + var resultMessage1 = jsonData.response.body.items.item[1]; | ||
451 | + var resultMessage2 = jsonData.response.body.items.item[0]; | ||
452 | + request.post( | ||
453 | + { | ||
454 | + url: TARGET_URL, | ||
455 | + headers: { | ||
456 | + 'Authorization': `Bearer ${TOKEN}` | ||
457 | + }, | ||
458 | + json: { | ||
459 | + "replyToken":replyToken, | ||
460 | + "messages":[ | ||
461 | + { | ||
462 | + "type":"text", | ||
463 | + "text": '선택하신 날짜와 정보의 Corona Virus-19 현황은 다음과 같습니다.' | ||
464 | + }, | ||
465 | + { | ||
466 | + "type":"text", | ||
467 | + "text": "격리해제 수 : " + (parseInt(resultMessage2.clearCnt._text)-parseInt(resultMessage1.clearCnt._text)) | ||
468 | + }, | ||
469 | + { | ||
470 | + "type":"text", | ||
471 | + "text": "등록일시분초 : " + resultMessage2.createDt._text | ||
472 | + } | ||
473 | + ] | ||
474 | + } | ||
475 | + },(error, response, body) => { | ||
476 | + console.log(body) | ||
477 | + }); | ||
478 | + } | ||
479 | + }); | ||
480 | +} | ||
481 | +function bot_reply_3(replyToken, message) { | ||
482 | + request({ | ||
483 | + url: CORONA_URL + queryParams, | ||
484 | + method: 'GET' | ||
485 | + },(error, response, body) => { | ||
486 | + if(!error && response.statusCode == 200) { | ||
487 | + console.log('Status', response.statusCode); | ||
488 | + console.log('Headers', JSON.stringify(response.headers)); | ||
489 | + var xmlToJson = convert.xml2json(response.body, {compact: true, spaces: 4}); | ||
490 | + const jsonData = JSON.parse(xmlToJson); // json text -> json object | ||
491 | + console.log('Reponse received', xmlToJson); // json text | ||
492 | + | ||
493 | + var resultMessage1 = jsonData.response.body.items.item[1]; | ||
494 | + var resultMessage2 = jsonData.response.body.items.item[0]; | ||
495 | + request.post( | ||
496 | + { | ||
497 | + url: TARGET_URL, | ||
498 | + headers: { | ||
499 | + 'Authorization': `Bearer ${TOKEN}` | ||
500 | + }, | ||
501 | + json: { | ||
502 | + "replyToken":replyToken, | ||
503 | + "messages":[ | ||
504 | + { | ||
505 | + "type":"text", | ||
506 | + "text": '선택하신 날짜와 정보의 Corona Virus-19 현황은 다음과 같습니다.' | ||
507 | + }, | ||
508 | + { | ||
509 | + "type":"text", | ||
510 | + "text": "검사진행 수 : " + (parseInt(resultMessage2.examCnt._text)-parseInt(resultMessage1.examCnt._text)) | ||
511 | + }, | ||
512 | + { | ||
513 | + "type":"text", | ||
514 | + "text": "등록일시분초 : " + resultMessage2.createDt._text | ||
515 | + } | ||
516 | + ] | ||
517 | + } | ||
518 | + },(error, response, body) => { | ||
519 | + console.log(body) | ||
520 | + }); | ||
521 | + } | ||
522 | + }); | ||
523 | +} | ||
524 | +function bot_reply_4(replyToken, message) { | ||
525 | + request({ | ||
526 | + url: CORONA_URL + queryParams, | ||
527 | + method: 'GET' | ||
528 | + },(error, response, body) => { | ||
529 | + if(!error && response.statusCode == 200) { | ||
530 | + console.log('Status', response.statusCode); | ||
531 | + console.log('Headers', JSON.stringify(response.headers)); | ||
532 | + var xmlToJson = convert.xml2json(response.body, {compact: true, spaces: 4}); | ||
533 | + const jsonData = JSON.parse(xmlToJson); // json text -> json object | ||
534 | + console.log('Reponse received', xmlToJson); // json text | ||
535 | + | ||
536 | + var resultMessage1 = jsonData.response.body.items.item[1]; | ||
537 | + var resultMessage2 = jsonData.response.body.items.item[0]; | ||
538 | + request.post( | ||
539 | + { | ||
540 | + url: TARGET_URL, | ||
541 | + headers: { | ||
542 | + 'Authorization': `Bearer ${TOKEN}` | ||
543 | + }, | ||
544 | + json: { | ||
545 | + "replyToken":replyToken, | ||
546 | + "messages":[ | ||
547 | + { | ||
548 | + "type":"text", | ||
549 | + "text": '선택하신 날짜와 정보의 Corona Virus-19 현황은 다음과 같습니다.' | ||
550 | + }, | ||
551 | + { | ||
552 | + "type":"text", | ||
553 | + "text": "사망자 수 : " + (parseInt(resultMessage2.deathCnt._text)-parseInt(resultMessage1.deathCnt._text)) | ||
554 | + }, | ||
555 | + { | ||
556 | + "type":"text", | ||
557 | + "text": "등록일시분초 : " + resultMessage2.createDt._text | ||
558 | + } | ||
559 | + ] | ||
560 | + } | ||
561 | + },(error, response, body) => { | ||
562 | + console.log(body) | ||
563 | + }); | ||
564 | + } | ||
565 | + }); | ||
566 | +} | ||
567 | +function bot_reply_5(replyToken, message) { | ||
568 | + request({ | ||
569 | + url: CORONA_URL + queryParams, | ||
570 | + method: 'GET' | ||
571 | + },(error, response, body) => { | ||
572 | + if(!error && response.statusCode == 200) { | ||
573 | + console.log('Status', response.statusCode); | ||
574 | + console.log('Headers', JSON.stringify(response.headers)); | ||
575 | + var xmlToJson = convert.xml2json(response.body, {compact: true, spaces: 4}); | ||
576 | + const jsonData = JSON.parse(xmlToJson); // json text -> json object | ||
577 | + console.log('Reponse received', xmlToJson); // json text | ||
578 | + | ||
579 | + var resultMessage1 = jsonData.response.body.items.item[1]; | ||
580 | + var resultMessage2 = jsonData.response.body.items.item[0]; | ||
581 | + request.post( | ||
582 | + { | ||
583 | + url: TARGET_URL, | ||
584 | + headers: { | ||
585 | + 'Authorization': `Bearer ${TOKEN}` | ||
586 | + }, | ||
587 | + json: { | ||
588 | + "replyToken":replyToken, | ||
589 | + "messages":[ | ||
590 | + { | ||
591 | + "type":"text", | ||
592 | + "text": '선택하신 날짜와 정보의 Corona Virus-19 현황은 다음과 같습니다.' | ||
593 | + }, | ||
594 | + { | ||
595 | + "type":"text", | ||
596 | + "text": "치료중 환자 수 : " + (parseInt(resultMessage2.careCnt._text)-parseInt(resultMessage1.careCnt._text)) | ||
597 | + }, | ||
598 | + { | ||
599 | + "type":"text", | ||
600 | + "text": "등록일시분초 : " + resultMessage2.createDt._text | ||
601 | + } | ||
602 | + ] | ||
603 | + } | ||
604 | + },(error, response, body) => { | ||
605 | + console.log(body) | ||
606 | + }); | ||
607 | + } | ||
608 | + }); | ||
609 | +} | ||
610 | +function bot_reply_6(replyToken, message) { | ||
611 | + request({ | ||
612 | + url: CORONA_URL + queryParams, | ||
613 | + method: 'GET' | ||
614 | + },(error, response, body) => { | ||
615 | + if(!error && response.statusCode == 200) { | ||
616 | + console.log('Status', response.statusCode); | ||
617 | + console.log('Headers', JSON.stringify(response.headers)); | ||
618 | + var xmlToJson = convert.xml2json(response.body, {compact: true, spaces: 4}); | ||
619 | + const jsonData = JSON.parse(xmlToJson); // json text -> json object | ||
620 | + console.log('Reponse received', xmlToJson); // json text | ||
621 | + | ||
622 | + var resultMessage1 = jsonData.response.body.items.item[1]; | ||
623 | + var resultMessage2 = jsonData.response.body.items.item[0]; | ||
624 | + request.post( | ||
625 | + { | ||
626 | + url: TARGET_URL, | ||
627 | + headers: { | ||
628 | + 'Authorization': `Bearer ${TOKEN}` | ||
629 | + }, | ||
630 | + json: { | ||
631 | + "replyToken":replyToken, | ||
632 | + "messages":[ | ||
633 | + { | ||
634 | + "type":"text", | ||
635 | + "text": '선택하신 날짜와 정보의 Corona Virus-19 현황은 다음과 같습니다.' | ||
636 | + }, | ||
637 | + { | ||
638 | + "type":"text", | ||
639 | + "text": "결과 음성 수 : " + (parseInt(resultMessage2.resutlNegCnt._text)-parseInt(resultMessage1.resutlNegCnt._text)) | ||
640 | + }, | ||
641 | + { | ||
642 | + "type":"text", | ||
643 | + "text": "등록일시분초 : " + resultMessage2.createDt._text | ||
644 | + } | ||
645 | + ] | ||
646 | + } | ||
647 | + },(error, response, body) => { | ||
648 | + console.log(body) | ||
649 | + }); | ||
650 | + } | ||
651 | + }); | ||
652 | +} | ||
653 | +function bot_reply_7(replyToken, message) { | ||
654 | + request({ | ||
655 | + url: CORONA_URL + queryParams, | ||
656 | + method: 'GET' | ||
657 | + },(error, response, body) => { | ||
658 | + if(!error && response.statusCode == 200) { | ||
659 | + console.log('Status', response.statusCode); | ||
660 | + console.log('Headers', JSON.stringify(response.headers)); | ||
661 | + var xmlToJson = convert.xml2json(response.body, {compact: true, spaces: 4}); | ||
662 | + const jsonData = JSON.parse(xmlToJson); // json text -> json object | ||
663 | + console.log('Reponse received', xmlToJson); // json text | ||
664 | + | ||
665 | + var resultMessage = jsonData.response.body.items.item; | ||
666 | + | ||
667 | + request.post( | ||
668 | + { | ||
669 | + url: TARGET_URL, | ||
670 | + headers: { | ||
671 | + 'Authorization': `Bearer ${TOKEN}` | ||
672 | + }, | ||
673 | + json: { | ||
674 | + "replyToken":replyToken, | ||
675 | + "messages":[ | ||
676 | + { | ||
677 | + "type":"text", | ||
678 | + "text": '선택하신 날짜와 정보의 Corona Virus-19 현황은 다음과 같습니다.' | ||
679 | + }, | ||
680 | + { | ||
681 | + "type":"text", | ||
682 | + "text": "누적 검사 수 : " + resultMessage.accExamCnt._text | ||
683 | + }, | ||
684 | + { | ||
685 | + "type":"text", | ||
686 | + "text": "누적 검사 완료 수 : " + resultMessage.accExamCompCnt._text | ||
687 | + }, | ||
688 | + { | ||
689 | + "type":"text", | ||
690 | + "text": "등록일시분초 : " + resultMessage.createDt._text | ||
691 | + } | ||
692 | + ] | ||
693 | + } | ||
694 | + },(error, response, body) => { | ||
695 | + console.log(body) | ||
696 | + }); | ||
697 | + } | ||
698 | + }); | ||
699 | +} | ||
700 | +function bot_reply_8(replyToken, message) { | ||
701 | + request({ | ||
702 | + url: CORONA_URL + queryParams, | ||
703 | + method: 'GET' | ||
704 | + },(error, response, body) => { | ||
705 | + if(!error && response.statusCode == 200) { | ||
706 | + console.log('Status', response.statusCode); | ||
707 | + console.log('Headers', JSON.stringify(response.headers)); | ||
708 | + var xmlToJson = convert.xml2json(response.body, {compact: true, spaces: 4}); | ||
709 | + const jsonData = JSON.parse(xmlToJson); // json text -> json object | ||
710 | + console.log('Reponse received', xmlToJson); // json text | ||
711 | + | ||
712 | + var resultMessage = jsonData.response.body.items.item; | ||
713 | + | ||
714 | + request.post( | ||
715 | + { | ||
716 | + url: TARGET_URL, | ||
717 | + headers: { | ||
718 | + 'Authorization': `Bearer ${TOKEN}` | ||
719 | + }, | ||
720 | + json: { | ||
721 | + "replyToken":replyToken, | ||
722 | + "messages":[ | ||
723 | + { | ||
724 | + "type":"text", | ||
725 | + "text": '선택하신 날짜와 정보의 Corona Virus-19 현황은 다음과 같습니다.' | ||
726 | + }, | ||
727 | + { | ||
728 | + "type":"text", | ||
729 | + "text": "누적 확진률 : " + resultMessage.accDefRate._text | ||
730 | + }, | ||
731 | + { | ||
732 | + "type":"text", | ||
733 | + "text": "등록일시분초 : " + resultMessage.createDt._text | ||
734 | + } | ||
735 | + ] | ||
736 | + } | ||
737 | + },(error, response, body) => { | ||
738 | + console.log(body) | ||
739 | + }); | ||
740 | + } | ||
741 | + }); | ||
742 | +} | ||
743 | + | ||
744 | +// Https server 오류처리 | ||
745 | +try { | ||
746 | + const option = { | ||
747 | + ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'), | ||
748 | + key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(), | ||
749 | + cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(), | ||
750 | + }; | ||
751 | + | ||
752 | + HTTPS.createServer(option, app).listen(sslport, () => { | ||
753 | + console.log(`[HTTPS] Server is started on port ${sslport}`); | ||
754 | + }); | ||
755 | + } catch (error) { | ||
756 | + console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.'); | ||
757 | + console.log(error); | ||
758 | + } | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
app_mother_legacy.js
deleted
100644 → 0
1 | -var express = require('express'); | ||
2 | -var app = express(); | ||
3 | -const line = require('@line/bot-sdk'); | ||
4 | - | ||
5 | - | ||
6 | -//papago api | ||
7 | -var request = require('request'); | ||
8 | - | ||
9 | -//번역 api_url | ||
10 | -var translate_api_url = 'https://openapi.naver.com/v1/papago/n2mt'; | ||
11 | - | ||
12 | -//언어감지 api_url | ||
13 | -var languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs' | ||
14 | - | ||
15 | -// Naver Auth Key | ||
16 | -//새로 발급받은 naver papago api id, pw 입력 | ||
17 | -var client_id = 'xZMx34y7uru1v8lywZ2d'; | ||
18 | -var client_secret = 'p6L7M7WsH9'; | ||
19 | - | ||
20 | -const config = { | ||
21 | - channelAccessToken: 'mnny0MJSezgBXzR9C3Ddcc1Csdb7Y9jkvy2nqV5saOmvR2YOJ1/kj/2M0CNsLA+57B2qDpdUQ7WbCTtIKx/LAJ6Kwfop4tX3up7EM8H9EZK1td6GMbhhCb6wvUFVdb1PcTO4joCv8mspd3ubo8a+gAdB04t89/1O/w1cDnyilFU=', | ||
22 | - channelSecret: 'bde77633a16fc5bfbd532d5990c6170e', | ||
23 | -}; | ||
24 | - | ||
25 | - | ||
26 | -// create LINE SDK client | ||
27 | -const client = new line.Client(config); | ||
28 | - | ||
29 | -// create Express app | ||
30 | -// about Express itself: https://expressjs.com/ | ||
31 | - | ||
32 | -// register a webhook handler with middleware | ||
33 | -// about the middleware, please refer to doc | ||
34 | -app.post('/webhook', line.middleware(config), (req, res) => { | ||
35 | - Promise | ||
36 | - .all(req.body.events.map(handleEvent)) | ||
37 | - .then((result) => res.json(result)) | ||
38 | - .catch((err) => { | ||
39 | - console.error(err); | ||
40 | - res.status(200).end(); | ||
41 | - }); | ||
42 | -}); | ||
43 | - | ||
44 | -// event handler | ||
45 | -function handleEvent(event) { | ||
46 | - if (event.type !== 'message' || event.message.type !== 'text') { | ||
47 | - // ignore non-text-message event | ||
48 | - return Promise.resolve(null); | ||
49 | - } | ||
50 | - return new Promise(function(resolve, reject) { | ||
51 | - //언어 감지 option | ||
52 | - var detect_options = { | ||
53 | - url : languagedetect_api_url, | ||
54 | - form : {'query': event.message.text}, | ||
55 | - headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret} | ||
56 | - }; | ||
57 | - | ||
58 | - //papago 언어 감지 | ||
59 | - request.post(detect_options,function(error,response,body){ | ||
60 | - console.log(response.statusCode); | ||
61 | - if(!error && response.statusCode == 200){ | ||
62 | - var detect_body = JSON.parse(response.body); | ||
63 | - var source = ''; | ||
64 | - var target = ''; | ||
65 | - var result = { type: 'text', text:''}; | ||
66 | - | ||
67 | - //언어 감지가 제대로 됐는지 확인 | ||
68 | - console.log(detect_body.langCode); | ||
69 | - | ||
70 | - | ||
71 | - //번역은 한국어->영어 / 영어->한국어만 지원 | ||
72 | - if(detect_body.langCode == 'ko'||detect_body.langCode == 'en'){ | ||
73 | - source = detect_body.langCode == 'ko' ? 'ko':'en'; | ||
74 | - target = source == 'ko' ? 'en':'ko'; | ||
75 | - //papago 번역 option | ||
76 | - var options = { | ||
77 | - url: translate_api_url, | ||
78 | - // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text) | ||
79 | - form: {'source':source, 'target':target, 'text':event.message.text}, | ||
80 | - headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret} | ||
81 | - }; | ||
82 | - | ||
83 | - // Naver Post API | ||
84 | - request.post(options, function(error, response, body){ | ||
85 | - // Translate API Sucess | ||
86 | - if(!error && response.statusCode == 200){ | ||
87 | - // JSON | ||
88 | - var objBody = JSON.parse(response.body); | ||
89 | - // Message 잘 찍히는지 확인 | ||
90 | - | ||
91 | - result.text = objBody.message.result.translatedText; | ||
92 | - console.log(result.text); | ||
93 | - //번역된 문장 보내기 | ||
94 | - client.replyMessage(event.replyToken,result).then(resolve).catch(reject); | ||
95 | - } | ||
96 | - }); | ||
97 | - } | ||
98 | - // 메시지의 언어가 영어 또는 한국어가 아닐 경우 | ||
99 | - else{ | ||
100 | - result.text = '언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.'; | ||
101 | - client.replyMessage(event.replyToken,result).then(resolve).catch(reject); | ||
102 | - } | ||
103 | - | ||
104 | - } | ||
105 | - | ||
106 | - }); | ||
107 | - | ||
108 | - }); | ||
109 | - } | ||
110 | - | ||
111 | -app.listen(3000, function () { | ||
112 | - console.log('Linebot listening on port 3000!'); | ||
113 | -}); |
1 | { | 1 | { |
2 | - "name": "linebot", | 2 | + "name": "corona_bot", |
3 | "version": "1.0.0", | 3 | "version": "1.0.0", |
4 | "lockfileVersion": 1, | 4 | "lockfileVersion": 1, |
5 | "requires": true, | 5 | "requires": true, |
... | @@ -48,19 +48,73 @@ | ... | @@ -48,19 +48,73 @@ |
48 | "integrity": "sha512-RO4ig5taKmcrU4Rex8ojG1gpwFkjddzug9iPQSDvbewHN9vDpcFewevkaOK+KT+w1LeZnxbgOyfXwV4pxsQ4GQ==" | 48 | "integrity": "sha512-RO4ig5taKmcrU4Rex8ojG1gpwFkjddzug9iPQSDvbewHN9vDpcFewevkaOK+KT+w1LeZnxbgOyfXwV4pxsQ4GQ==" |
49 | }, | 49 | }, |
50 | "accepts": { | 50 | "accepts": { |
51 | - "version": "1.3.5", | 51 | + "version": "1.3.7", |
52 | - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", | 52 | + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", |
53 | - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", | 53 | + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", |
54 | "requires": { | 54 | "requires": { |
55 | - "mime-types": "~2.1.18", | 55 | + "mime-types": "~2.1.24", |
56 | - "negotiator": "0.6.1" | 56 | + "negotiator": "0.6.2" |
57 | + }, | ||
58 | + "dependencies": { | ||
59 | + "mime-db": { | ||
60 | + "version": "1.44.0", | ||
61 | + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", | ||
62 | + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" | ||
63 | + }, | ||
64 | + "mime-types": { | ||
65 | + "version": "2.1.27", | ||
66 | + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", | ||
67 | + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", | ||
68 | + "requires": { | ||
69 | + "mime-db": "1.44.0" | ||
70 | + } | ||
71 | + } | ||
72 | + } | ||
73 | + }, | ||
74 | + "ajv": { | ||
75 | + "version": "6.12.6", | ||
76 | + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", | ||
77 | + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", | ||
78 | + "requires": { | ||
79 | + "fast-deep-equal": "^3.1.1", | ||
80 | + "fast-json-stable-stringify": "^2.0.0", | ||
81 | + "json-schema-traverse": "^0.4.1", | ||
82 | + "uri-js": "^4.2.2" | ||
57 | } | 83 | } |
58 | }, | 84 | }, |
59 | "array-flatten": { | 85 | "array-flatten": { |
60 | "version": "1.1.1", | 86 | "version": "1.1.1", |
61 | - "resolved": "http://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | 87 | + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |
62 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" | 88 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" |
63 | }, | 89 | }, |
90 | + "asn1": { | ||
91 | + "version": "0.2.4", | ||
92 | + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", | ||
93 | + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", | ||
94 | + "requires": { | ||
95 | + "safer-buffer": "~2.1.0" | ||
96 | + } | ||
97 | + }, | ||
98 | + "assert-plus": { | ||
99 | + "version": "1.0.0", | ||
100 | + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", | ||
101 | + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" | ||
102 | + }, | ||
103 | + "asynckit": { | ||
104 | + "version": "0.4.0", | ||
105 | + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", | ||
106 | + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" | ||
107 | + }, | ||
108 | + "aws-sign2": { | ||
109 | + "version": "0.7.0", | ||
110 | + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", | ||
111 | + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" | ||
112 | + }, | ||
113 | + "aws4": { | ||
114 | + "version": "1.11.0", | ||
115 | + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", | ||
116 | + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" | ||
117 | + }, | ||
64 | "axios": { | 118 | "axios": { |
65 | "version": "0.16.2", | 119 | "version": "0.16.2", |
66 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.16.2.tgz", | 120 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.16.2.tgz", |
... | @@ -70,6 +124,14 @@ | ... | @@ -70,6 +124,14 @@ |
70 | "is-buffer": "^1.1.5" | 124 | "is-buffer": "^1.1.5" |
71 | } | 125 | } |
72 | }, | 126 | }, |
127 | + "bcrypt-pbkdf": { | ||
128 | + "version": "1.0.2", | ||
129 | + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", | ||
130 | + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", | ||
131 | + "requires": { | ||
132 | + "tweetnacl": "^0.14.3" | ||
133 | + } | ||
134 | + }, | ||
73 | "body-parser": { | 135 | "body-parser": { |
74 | "version": "1.18.3", | 136 | "version": "1.18.3", |
75 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", | 137 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", |
... | @@ -92,10 +154,26 @@ | ... | @@ -92,10 +154,26 @@ |
92 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", | 154 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", |
93 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" | 155 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" |
94 | }, | 156 | }, |
157 | + "caseless": { | ||
158 | + "version": "0.12.0", | ||
159 | + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", | ||
160 | + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" | ||
161 | + }, | ||
162 | + "combined-stream": { | ||
163 | + "version": "1.0.8", | ||
164 | + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", | ||
165 | + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", | ||
166 | + "requires": { | ||
167 | + "delayed-stream": "~1.0.0" | ||
168 | + } | ||
169 | + }, | ||
95 | "content-disposition": { | 170 | "content-disposition": { |
96 | - "version": "0.5.2", | 171 | + "version": "0.5.3", |
97 | - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", | 172 | + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", |
98 | - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" | 173 | + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", |
174 | + "requires": { | ||
175 | + "safe-buffer": "5.1.2" | ||
176 | + } | ||
99 | }, | 177 | }, |
100 | "content-type": { | 178 | "content-type": { |
101 | "version": "1.0.4", | 179 | "version": "1.0.4", |
... | @@ -103,15 +181,28 @@ | ... | @@ -103,15 +181,28 @@ |
103 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" | 181 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" |
104 | }, | 182 | }, |
105 | "cookie": { | 183 | "cookie": { |
106 | - "version": "0.3.1", | 184 | + "version": "0.4.0", |
107 | - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", | 185 | + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", |
108 | - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" | 186 | + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" |
109 | }, | 187 | }, |
110 | "cookie-signature": { | 188 | "cookie-signature": { |
111 | "version": "1.0.6", | 189 | "version": "1.0.6", |
112 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | 190 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", |
113 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | 191 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" |
114 | }, | 192 | }, |
193 | + "core-util-is": { | ||
194 | + "version": "1.0.2", | ||
195 | + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | ||
196 | + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" | ||
197 | + }, | ||
198 | + "dashdash": { | ||
199 | + "version": "1.14.1", | ||
200 | + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", | ||
201 | + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", | ||
202 | + "requires": { | ||
203 | + "assert-plus": "^1.0.0" | ||
204 | + } | ||
205 | + }, | ||
115 | "debug": { | 206 | "debug": { |
116 | "version": "2.6.9", | 207 | "version": "2.6.9", |
117 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | 208 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
... | @@ -120,6 +211,11 @@ | ... | @@ -120,6 +211,11 @@ |
120 | "ms": "2.0.0" | 211 | "ms": "2.0.0" |
121 | } | 212 | } |
122 | }, | 213 | }, |
214 | + "delayed-stream": { | ||
215 | + "version": "1.0.0", | ||
216 | + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | ||
217 | + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" | ||
218 | + }, | ||
123 | "depd": { | 219 | "depd": { |
124 | "version": "1.1.2", | 220 | "version": "1.1.2", |
125 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", | 221 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", |
... | @@ -130,6 +226,15 @@ | ... | @@ -130,6 +226,15 @@ |
130 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | 226 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", |
131 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" | 227 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" |
132 | }, | 228 | }, |
229 | + "ecc-jsbn": { | ||
230 | + "version": "0.1.2", | ||
231 | + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", | ||
232 | + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", | ||
233 | + "requires": { | ||
234 | + "jsbn": "~0.1.0", | ||
235 | + "safer-buffer": "^2.1.0" | ||
236 | + } | ||
237 | + }, | ||
133 | "ee-first": { | 238 | "ee-first": { |
134 | "version": "1.1.1", | 239 | "version": "1.1.1", |
135 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", | 240 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", |
... | @@ -151,41 +256,153 @@ | ... | @@ -151,41 +256,153 @@ |
151 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" | 256 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" |
152 | }, | 257 | }, |
153 | "express": { | 258 | "express": { |
154 | - "version": "4.16.4", | 259 | + "version": "4.17.1", |
155 | - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", | 260 | + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", |
156 | - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", | 261 | + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", |
157 | "requires": { | 262 | "requires": { |
158 | - "accepts": "~1.3.5", | 263 | + "accepts": "~1.3.7", |
159 | "array-flatten": "1.1.1", | 264 | "array-flatten": "1.1.1", |
160 | - "body-parser": "1.18.3", | 265 | + "body-parser": "1.19.0", |
161 | - "content-disposition": "0.5.2", | 266 | + "content-disposition": "0.5.3", |
162 | "content-type": "~1.0.4", | 267 | "content-type": "~1.0.4", |
163 | - "cookie": "0.3.1", | 268 | + "cookie": "0.4.0", |
164 | "cookie-signature": "1.0.6", | 269 | "cookie-signature": "1.0.6", |
165 | "debug": "2.6.9", | 270 | "debug": "2.6.9", |
166 | "depd": "~1.1.2", | 271 | "depd": "~1.1.2", |
167 | "encodeurl": "~1.0.2", | 272 | "encodeurl": "~1.0.2", |
168 | "escape-html": "~1.0.3", | 273 | "escape-html": "~1.0.3", |
169 | "etag": "~1.8.1", | 274 | "etag": "~1.8.1", |
170 | - "finalhandler": "1.1.1", | 275 | + "finalhandler": "~1.1.2", |
171 | "fresh": "0.5.2", | 276 | "fresh": "0.5.2", |
172 | "merge-descriptors": "1.0.1", | 277 | "merge-descriptors": "1.0.1", |
173 | "methods": "~1.1.2", | 278 | "methods": "~1.1.2", |
174 | "on-finished": "~2.3.0", | 279 | "on-finished": "~2.3.0", |
175 | - "parseurl": "~1.3.2", | 280 | + "parseurl": "~1.3.3", |
176 | "path-to-regexp": "0.1.7", | 281 | "path-to-regexp": "0.1.7", |
177 | - "proxy-addr": "~2.0.4", | 282 | + "proxy-addr": "~2.0.5", |
178 | - "qs": "6.5.2", | 283 | + "qs": "6.7.0", |
179 | - "range-parser": "~1.2.0", | 284 | + "range-parser": "~1.2.1", |
180 | "safe-buffer": "5.1.2", | 285 | "safe-buffer": "5.1.2", |
181 | - "send": "0.16.2", | 286 | + "send": "0.17.1", |
182 | - "serve-static": "1.13.2", | 287 | + "serve-static": "1.14.1", |
183 | - "setprototypeof": "1.1.0", | 288 | + "setprototypeof": "1.1.1", |
184 | - "statuses": "~1.4.0", | 289 | + "statuses": "~1.5.0", |
185 | - "type-is": "~1.6.16", | 290 | + "type-is": "~1.6.18", |
186 | "utils-merge": "1.0.1", | 291 | "utils-merge": "1.0.1", |
187 | "vary": "~1.1.2" | 292 | "vary": "~1.1.2" |
293 | + }, | ||
294 | + "dependencies": { | ||
295 | + "body-parser": { | ||
296 | + "version": "1.19.0", | ||
297 | + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", | ||
298 | + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", | ||
299 | + "requires": { | ||
300 | + "bytes": "3.1.0", | ||
301 | + "content-type": "~1.0.4", | ||
302 | + "debug": "2.6.9", | ||
303 | + "depd": "~1.1.2", | ||
304 | + "http-errors": "1.7.2", | ||
305 | + "iconv-lite": "0.4.24", | ||
306 | + "on-finished": "~2.3.0", | ||
307 | + "qs": "6.7.0", | ||
308 | + "raw-body": "2.4.0", | ||
309 | + "type-is": "~1.6.17" | ||
310 | + } | ||
311 | + }, | ||
312 | + "bytes": { | ||
313 | + "version": "3.1.0", | ||
314 | + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", | ||
315 | + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" | ||
316 | + }, | ||
317 | + "http-errors": { | ||
318 | + "version": "1.7.2", | ||
319 | + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", | ||
320 | + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", | ||
321 | + "requires": { | ||
322 | + "depd": "~1.1.2", | ||
323 | + "inherits": "2.0.3", | ||
324 | + "setprototypeof": "1.1.1", | ||
325 | + "statuses": ">= 1.5.0 < 2", | ||
326 | + "toidentifier": "1.0.0" | ||
327 | + } | ||
328 | + }, | ||
329 | + "iconv-lite": { | ||
330 | + "version": "0.4.24", | ||
331 | + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", | ||
332 | + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", | ||
333 | + "requires": { | ||
334 | + "safer-buffer": ">= 2.1.2 < 3" | ||
335 | + } | ||
336 | + }, | ||
337 | + "mime-db": { | ||
338 | + "version": "1.44.0", | ||
339 | + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", | ||
340 | + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" | ||
341 | + }, | ||
342 | + "mime-types": { | ||
343 | + "version": "2.1.27", | ||
344 | + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", | ||
345 | + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", | ||
346 | + "requires": { | ||
347 | + "mime-db": "1.44.0" | ||
348 | + } | ||
349 | + }, | ||
350 | + "qs": { | ||
351 | + "version": "6.7.0", | ||
352 | + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", | ||
353 | + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" | ||
354 | + }, | ||
355 | + "raw-body": { | ||
356 | + "version": "2.4.0", | ||
357 | + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", | ||
358 | + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", | ||
359 | + "requires": { | ||
360 | + "bytes": "3.1.0", | ||
361 | + "http-errors": "1.7.2", | ||
362 | + "iconv-lite": "0.4.24", | ||
363 | + "unpipe": "1.0.0" | ||
364 | + } | ||
365 | + }, | ||
366 | + "setprototypeof": { | ||
367 | + "version": "1.1.1", | ||
368 | + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", | ||
369 | + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" | ||
370 | + }, | ||
371 | + "statuses": { | ||
372 | + "version": "1.5.0", | ||
373 | + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", | ||
374 | + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" | ||
375 | + }, | ||
376 | + "type-is": { | ||
377 | + "version": "1.6.18", | ||
378 | + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | ||
379 | + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", | ||
380 | + "requires": { | ||
381 | + "media-typer": "0.3.0", | ||
382 | + "mime-types": "~2.1.24" | ||
188 | } | 383 | } |
384 | + } | ||
385 | + } | ||
386 | + }, | ||
387 | + "extend": { | ||
388 | + "version": "3.0.2", | ||
389 | + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", | ||
390 | + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" | ||
391 | + }, | ||
392 | + "extsprintf": { | ||
393 | + "version": "1.3.0", | ||
394 | + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", | ||
395 | + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" | ||
396 | + }, | ||
397 | + "fast-deep-equal": { | ||
398 | + "version": "3.1.3", | ||
399 | + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", | ||
400 | + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" | ||
401 | + }, | ||
402 | + "fast-json-stable-stringify": { | ||
403 | + "version": "2.1.0", | ||
404 | + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", | ||
405 | + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" | ||
189 | }, | 406 | }, |
190 | "file-type": { | 407 | "file-type": { |
191 | "version": "7.7.1", | 408 | "version": "7.7.1", |
... | @@ -193,17 +410,24 @@ | ... | @@ -193,17 +410,24 @@ |
193 | "integrity": "sha512-bTrKkzzZI6wH+NXhyD3SOXtb2zXTw2SbwI2RxUlRcXVsnN7jNL5hJzVQLYv7FOQhxFkK4XWdAflEaWFpaLLWpQ==" | 410 | "integrity": "sha512-bTrKkzzZI6wH+NXhyD3SOXtb2zXTw2SbwI2RxUlRcXVsnN7jNL5hJzVQLYv7FOQhxFkK4XWdAflEaWFpaLLWpQ==" |
194 | }, | 411 | }, |
195 | "finalhandler": { | 412 | "finalhandler": { |
196 | - "version": "1.1.1", | 413 | + "version": "1.1.2", |
197 | - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", | 414 | + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", |
198 | - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", | 415 | + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", |
199 | "requires": { | 416 | "requires": { |
200 | "debug": "2.6.9", | 417 | "debug": "2.6.9", |
201 | "encodeurl": "~1.0.2", | 418 | "encodeurl": "~1.0.2", |
202 | "escape-html": "~1.0.3", | 419 | "escape-html": "~1.0.3", |
203 | "on-finished": "~2.3.0", | 420 | "on-finished": "~2.3.0", |
204 | - "parseurl": "~1.3.2", | 421 | + "parseurl": "~1.3.3", |
205 | - "statuses": "~1.4.0", | 422 | + "statuses": "~1.5.0", |
206 | "unpipe": "~1.0.0" | 423 | "unpipe": "~1.0.0" |
424 | + }, | ||
425 | + "dependencies": { | ||
426 | + "statuses": { | ||
427 | + "version": "1.5.0", | ||
428 | + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", | ||
429 | + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" | ||
430 | + } | ||
207 | } | 431 | } |
208 | }, | 432 | }, |
209 | "follow-redirects": { | 433 | "follow-redirects": { |
... | @@ -224,6 +448,21 @@ | ... | @@ -224,6 +448,21 @@ |
224 | } | 448 | } |
225 | } | 449 | } |
226 | }, | 450 | }, |
451 | + "forever-agent": { | ||
452 | + "version": "0.6.1", | ||
453 | + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", | ||
454 | + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" | ||
455 | + }, | ||
456 | + "form-data": { | ||
457 | + "version": "2.3.3", | ||
458 | + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", | ||
459 | + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", | ||
460 | + "requires": { | ||
461 | + "asynckit": "^0.4.0", | ||
462 | + "combined-stream": "^1.0.6", | ||
463 | + "mime-types": "^2.1.12" | ||
464 | + } | ||
465 | + }, | ||
227 | "forwarded": { | 466 | "forwarded": { |
228 | "version": "0.1.2", | 467 | "version": "0.1.2", |
229 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", | 468 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", |
... | @@ -234,6 +473,28 @@ | ... | @@ -234,6 +473,28 @@ |
234 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", | 473 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", |
235 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" | 474 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" |
236 | }, | 475 | }, |
476 | + "getpass": { | ||
477 | + "version": "0.1.7", | ||
478 | + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", | ||
479 | + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", | ||
480 | + "requires": { | ||
481 | + "assert-plus": "^1.0.0" | ||
482 | + } | ||
483 | + }, | ||
484 | + "har-schema": { | ||
485 | + "version": "2.0.0", | ||
486 | + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", | ||
487 | + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" | ||
488 | + }, | ||
489 | + "har-validator": { | ||
490 | + "version": "5.1.5", | ||
491 | + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", | ||
492 | + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", | ||
493 | + "requires": { | ||
494 | + "ajv": "^6.12.3", | ||
495 | + "har-schema": "^2.0.0" | ||
496 | + } | ||
497 | + }, | ||
237 | "http-errors": { | 498 | "http-errors": { |
238 | "version": "1.6.3", | 499 | "version": "1.6.3", |
239 | "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", | 500 | "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", |
... | @@ -245,6 +506,16 @@ | ... | @@ -245,6 +506,16 @@ |
245 | "statuses": ">= 1.4.0 < 2" | 506 | "statuses": ">= 1.4.0 < 2" |
246 | } | 507 | } |
247 | }, | 508 | }, |
509 | + "http-signature": { | ||
510 | + "version": "1.2.0", | ||
511 | + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", | ||
512 | + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", | ||
513 | + "requires": { | ||
514 | + "assert-plus": "^1.0.0", | ||
515 | + "jsprim": "^1.2.2", | ||
516 | + "sshpk": "^1.7.0" | ||
517 | + } | ||
518 | + }, | ||
248 | "iconv-lite": { | 519 | "iconv-lite": { |
249 | "version": "0.4.23", | 520 | "version": "0.4.23", |
250 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", | 521 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", |
... | @@ -259,15 +530,56 @@ | ... | @@ -259,15 +530,56 @@ |
259 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" | 530 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" |
260 | }, | 531 | }, |
261 | "ipaddr.js": { | 532 | "ipaddr.js": { |
262 | - "version": "1.8.0", | 533 | + "version": "1.9.1", |
263 | - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", | 534 | + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", |
264 | - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" | 535 | + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" |
265 | }, | 536 | }, |
266 | "is-buffer": { | 537 | "is-buffer": { |
267 | "version": "1.1.6", | 538 | "version": "1.1.6", |
268 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", | 539 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", |
269 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" | 540 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" |
270 | }, | 541 | }, |
542 | + "is-typedarray": { | ||
543 | + "version": "1.0.0", | ||
544 | + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", | ||
545 | + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" | ||
546 | + }, | ||
547 | + "isstream": { | ||
548 | + "version": "0.1.2", | ||
549 | + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", | ||
550 | + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" | ||
551 | + }, | ||
552 | + "jsbn": { | ||
553 | + "version": "0.1.1", | ||
554 | + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", | ||
555 | + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" | ||
556 | + }, | ||
557 | + "json-schema": { | ||
558 | + "version": "0.2.3", | ||
559 | + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", | ||
560 | + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" | ||
561 | + }, | ||
562 | + "json-schema-traverse": { | ||
563 | + "version": "0.4.1", | ||
564 | + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", | ||
565 | + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" | ||
566 | + }, | ||
567 | + "json-stringify-safe": { | ||
568 | + "version": "5.0.1", | ||
569 | + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", | ||
570 | + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" | ||
571 | + }, | ||
572 | + "jsprim": { | ||
573 | + "version": "1.4.1", | ||
574 | + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", | ||
575 | + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", | ||
576 | + "requires": { | ||
577 | + "assert-plus": "1.0.0", | ||
578 | + "extsprintf": "1.3.0", | ||
579 | + "json-schema": "0.2.3", | ||
580 | + "verror": "1.10.0" | ||
581 | + } | ||
582 | + }, | ||
271 | "media-typer": { | 583 | "media-typer": { |
272 | "version": "0.3.0", | 584 | "version": "0.3.0", |
273 | "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | 585 | "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", |
... | @@ -284,9 +596,9 @@ | ... | @@ -284,9 +596,9 @@ |
284 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" | 596 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" |
285 | }, | 597 | }, |
286 | "mime": { | 598 | "mime": { |
287 | - "version": "1.4.1", | 599 | + "version": "1.6.0", |
288 | - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", | 600 | + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", |
289 | - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" | 601 | + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" |
290 | }, | 602 | }, |
291 | "mime-db": { | 603 | "mime-db": { |
292 | "version": "1.37.0", | 604 | "version": "1.37.0", |
... | @@ -307,9 +619,14 @@ | ... | @@ -307,9 +619,14 @@ |
307 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | 619 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |
308 | }, | 620 | }, |
309 | "negotiator": { | 621 | "negotiator": { |
310 | - "version": "0.6.1", | 622 | + "version": "0.6.2", |
311 | - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", | 623 | + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", |
312 | - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" | 624 | + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" |
625 | + }, | ||
626 | + "oauth-sign": { | ||
627 | + "version": "0.9.0", | ||
628 | + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", | ||
629 | + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" | ||
313 | }, | 630 | }, |
314 | "on-finished": { | 631 | "on-finished": { |
315 | "version": "2.3.0", | 632 | "version": "2.3.0", |
... | @@ -320,33 +637,48 @@ | ... | @@ -320,33 +637,48 @@ |
320 | } | 637 | } |
321 | }, | 638 | }, |
322 | "parseurl": { | 639 | "parseurl": { |
323 | - "version": "1.3.2", | 640 | + "version": "1.3.3", |
324 | - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", | 641 | + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", |
325 | - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" | 642 | + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" |
326 | }, | 643 | }, |
327 | "path-to-regexp": { | 644 | "path-to-regexp": { |
328 | "version": "0.1.7", | 645 | "version": "0.1.7", |
329 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", | 646 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", |
330 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" | 647 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" |
331 | }, | 648 | }, |
649 | + "performance-now": { | ||
650 | + "version": "2.1.0", | ||
651 | + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", | ||
652 | + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" | ||
653 | + }, | ||
332 | "proxy-addr": { | 654 | "proxy-addr": { |
333 | - "version": "2.0.4", | 655 | + "version": "2.0.6", |
334 | - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", | 656 | + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", |
335 | - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", | 657 | + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", |
336 | "requires": { | 658 | "requires": { |
337 | "forwarded": "~0.1.2", | 659 | "forwarded": "~0.1.2", |
338 | - "ipaddr.js": "1.8.0" | 660 | + "ipaddr.js": "1.9.1" |
339 | } | 661 | } |
340 | }, | 662 | }, |
663 | + "psl": { | ||
664 | + "version": "1.8.0", | ||
665 | + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", | ||
666 | + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" | ||
667 | + }, | ||
668 | + "punycode": { | ||
669 | + "version": "2.1.1", | ||
670 | + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", | ||
671 | + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" | ||
672 | + }, | ||
341 | "qs": { | 673 | "qs": { |
342 | "version": "6.5.2", | 674 | "version": "6.5.2", |
343 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", | 675 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", |
344 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" | 676 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" |
345 | }, | 677 | }, |
346 | "range-parser": { | 678 | "range-parser": { |
347 | - "version": "1.2.0", | 679 | + "version": "1.2.1", |
348 | - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", | 680 | + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", |
349 | - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" | 681 | + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" |
350 | }, | 682 | }, |
351 | "raw-body": { | 683 | "raw-body": { |
352 | "version": "2.3.3", | 684 | "version": "2.3.3", |
... | @@ -359,6 +691,33 @@ | ... | @@ -359,6 +691,33 @@ |
359 | "unpipe": "1.0.0" | 691 | "unpipe": "1.0.0" |
360 | } | 692 | } |
361 | }, | 693 | }, |
694 | + "request": { | ||
695 | + "version": "2.88.2", | ||
696 | + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", | ||
697 | + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", | ||
698 | + "requires": { | ||
699 | + "aws-sign2": "~0.7.0", | ||
700 | + "aws4": "^1.8.0", | ||
701 | + "caseless": "~0.12.0", | ||
702 | + "combined-stream": "~1.0.6", | ||
703 | + "extend": "~3.0.2", | ||
704 | + "forever-agent": "~0.6.1", | ||
705 | + "form-data": "~2.3.2", | ||
706 | + "har-validator": "~5.1.3", | ||
707 | + "http-signature": "~1.2.0", | ||
708 | + "is-typedarray": "~1.0.0", | ||
709 | + "isstream": "~0.1.2", | ||
710 | + "json-stringify-safe": "~5.0.1", | ||
711 | + "mime-types": "~2.1.19", | ||
712 | + "oauth-sign": "~0.9.0", | ||
713 | + "performance-now": "^2.1.0", | ||
714 | + "qs": "~6.5.2", | ||
715 | + "safe-buffer": "^5.1.2", | ||
716 | + "tough-cookie": "~2.5.0", | ||
717 | + "tunnel-agent": "^0.6.0", | ||
718 | + "uuid": "^3.3.2" | ||
719 | + } | ||
720 | + }, | ||
362 | "safe-buffer": { | 721 | "safe-buffer": { |
363 | "version": "5.1.2", | 722 | "version": "5.1.2", |
364 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | 723 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", |
... | @@ -370,9 +729,9 @@ | ... | @@ -370,9 +729,9 @@ |
370 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | 729 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" |
371 | }, | 730 | }, |
372 | "send": { | 731 | "send": { |
373 | - "version": "0.16.2", | 732 | + "version": "0.17.1", |
374 | - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", | 733 | + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", |
375 | - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", | 734 | + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", |
376 | "requires": { | 735 | "requires": { |
377 | "debug": "2.6.9", | 736 | "debug": "2.6.9", |
378 | "depd": "~1.1.2", | 737 | "depd": "~1.1.2", |
... | @@ -381,23 +740,57 @@ | ... | @@ -381,23 +740,57 @@ |
381 | "escape-html": "~1.0.3", | 740 | "escape-html": "~1.0.3", |
382 | "etag": "~1.8.1", | 741 | "etag": "~1.8.1", |
383 | "fresh": "0.5.2", | 742 | "fresh": "0.5.2", |
384 | - "http-errors": "~1.6.2", | 743 | + "http-errors": "~1.7.2", |
385 | - "mime": "1.4.1", | 744 | + "mime": "1.6.0", |
386 | - "ms": "2.0.0", | 745 | + "ms": "2.1.1", |
387 | "on-finished": "~2.3.0", | 746 | "on-finished": "~2.3.0", |
388 | - "range-parser": "~1.2.0", | 747 | + "range-parser": "~1.2.1", |
389 | - "statuses": "~1.4.0" | 748 | + "statuses": "~1.5.0" |
749 | + }, | ||
750 | + "dependencies": { | ||
751 | + "http-errors": { | ||
752 | + "version": "1.7.3", | ||
753 | + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", | ||
754 | + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", | ||
755 | + "requires": { | ||
756 | + "depd": "~1.1.2", | ||
757 | + "inherits": "2.0.4", | ||
758 | + "setprototypeof": "1.1.1", | ||
759 | + "statuses": ">= 1.5.0 < 2", | ||
760 | + "toidentifier": "1.0.0" | ||
761 | + } | ||
762 | + }, | ||
763 | + "inherits": { | ||
764 | + "version": "2.0.4", | ||
765 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||
766 | + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||
767 | + }, | ||
768 | + "ms": { | ||
769 | + "version": "2.1.1", | ||
770 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", | ||
771 | + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" | ||
772 | + }, | ||
773 | + "setprototypeof": { | ||
774 | + "version": "1.1.1", | ||
775 | + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", | ||
776 | + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" | ||
777 | + }, | ||
778 | + "statuses": { | ||
779 | + "version": "1.5.0", | ||
780 | + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", | ||
781 | + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" | ||
782 | + } | ||
390 | } | 783 | } |
391 | }, | 784 | }, |
392 | "serve-static": { | 785 | "serve-static": { |
393 | - "version": "1.13.2", | 786 | + "version": "1.14.1", |
394 | - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", | 787 | + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", |
395 | - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", | 788 | + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", |
396 | "requires": { | 789 | "requires": { |
397 | "encodeurl": "~1.0.2", | 790 | "encodeurl": "~1.0.2", |
398 | "escape-html": "~1.0.3", | 791 | "escape-html": "~1.0.3", |
399 | - "parseurl": "~1.3.2", | 792 | + "parseurl": "~1.3.3", |
400 | - "send": "0.16.2" | 793 | + "send": "0.17.1" |
401 | } | 794 | } |
402 | }, | 795 | }, |
403 | "setprototypeof": { | 796 | "setprototypeof": { |
... | @@ -405,11 +798,54 @@ | ... | @@ -405,11 +798,54 @@ |
405 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", | 798 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", |
406 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" | 799 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" |
407 | }, | 800 | }, |
801 | + "sshpk": { | ||
802 | + "version": "1.16.1", | ||
803 | + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", | ||
804 | + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", | ||
805 | + "requires": { | ||
806 | + "asn1": "~0.2.3", | ||
807 | + "assert-plus": "^1.0.0", | ||
808 | + "bcrypt-pbkdf": "^1.0.0", | ||
809 | + "dashdash": "^1.12.0", | ||
810 | + "ecc-jsbn": "~0.1.1", | ||
811 | + "getpass": "^0.1.1", | ||
812 | + "jsbn": "~0.1.0", | ||
813 | + "safer-buffer": "^2.0.2", | ||
814 | + "tweetnacl": "~0.14.0" | ||
815 | + } | ||
816 | + }, | ||
408 | "statuses": { | 817 | "statuses": { |
409 | "version": "1.4.0", | 818 | "version": "1.4.0", |
410 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", | 819 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", |
411 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" | 820 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" |
412 | }, | 821 | }, |
822 | + "toidentifier": { | ||
823 | + "version": "1.0.0", | ||
824 | + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", | ||
825 | + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" | ||
826 | + }, | ||
827 | + "tough-cookie": { | ||
828 | + "version": "2.5.0", | ||
829 | + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", | ||
830 | + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", | ||
831 | + "requires": { | ||
832 | + "psl": "^1.1.28", | ||
833 | + "punycode": "^2.1.1" | ||
834 | + } | ||
835 | + }, | ||
836 | + "tunnel-agent": { | ||
837 | + "version": "0.6.0", | ||
838 | + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", | ||
839 | + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", | ||
840 | + "requires": { | ||
841 | + "safe-buffer": "^5.0.1" | ||
842 | + } | ||
843 | + }, | ||
844 | + "tweetnacl": { | ||
845 | + "version": "0.14.5", | ||
846 | + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", | ||
847 | + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" | ||
848 | + }, | ||
413 | "type-is": { | 849 | "type-is": { |
414 | "version": "1.6.16", | 850 | "version": "1.6.16", |
415 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", | 851 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", |
... | @@ -424,15 +860,38 @@ | ... | @@ -424,15 +860,38 @@ |
424 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | 860 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", |
425 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" | 861 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" |
426 | }, | 862 | }, |
863 | + "uri-js": { | ||
864 | + "version": "4.4.0", | ||
865 | + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", | ||
866 | + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", | ||
867 | + "requires": { | ||
868 | + "punycode": "^2.1.0" | ||
869 | + } | ||
870 | + }, | ||
427 | "utils-merge": { | 871 | "utils-merge": { |
428 | "version": "1.0.1", | 872 | "version": "1.0.1", |
429 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", | 873 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", |
430 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" | 874 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" |
431 | }, | 875 | }, |
876 | + "uuid": { | ||
877 | + "version": "3.4.0", | ||
878 | + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", | ||
879 | + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" | ||
880 | + }, | ||
432 | "vary": { | 881 | "vary": { |
433 | "version": "1.1.2", | 882 | "version": "1.1.2", |
434 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", | 883 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", |
435 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" | 884 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" |
885 | + }, | ||
886 | + "verror": { | ||
887 | + "version": "1.10.0", | ||
888 | + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", | ||
889 | + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", | ||
890 | + "requires": { | ||
891 | + "assert-plus": "^1.0.0", | ||
892 | + "core-util-is": "1.0.2", | ||
893 | + "extsprintf": "^1.2.0" | ||
894 | + } | ||
436 | } | 895 | } |
437 | } | 896 | } |
438 | } | 897 | } | ... | ... |
... | @@ -4,13 +4,21 @@ | ... | @@ -4,13 +4,21 @@ |
4 | "description": "", | 4 | "description": "", |
5 | "main": "app.js", | 5 | "main": "app.js", |
6 | "scripts": { | 6 | "scripts": { |
7 | - "test": "echo \"Error: no test specified\" && exit 1", | 7 | + "test": "echo \"Error: no test specified\" && exit 1" |
8 | - "start": "node server.js" | ||
9 | }, | 8 | }, |
10 | - "author": "KwakWonseok", | 9 | + "repository": { |
10 | + "type": "git", | ||
11 | + "url": "http://khuhub.khu.ac.kr/2014104077/OSS-Project.git" | ||
12 | + } | ||
13 | + "author": { | ||
14 | + "name": "KwakWonseok", | ||
15 | + "email": "rhkrdnjstjr1@khu.ac.kr", | ||
16 | + "url": "http://khuhub.khu.ac.kr/u/2014104077" | ||
17 | + } | ||
11 | "license": "MIT", | 18 | "license": "MIT", |
12 | "dependencies": { | 19 | "dependencies": { |
13 | "@line/bot-sdk": "^6.4.0", | 20 | "@line/bot-sdk": "^6.4.0", |
14 | - "express": "^4.16.4" | 21 | + "express": "^4.17.1", |
22 | + "request": "^2.88.2" | ||
23 | + } | ||
15 | } | 24 | } |
16 | -} | ... | ... |
-
Please register or login to post a comment