조민지

Merge branch 'developing' of http://khuhub.khu.ac.kr/2017104029/2018_2_project into chart

...@@ -39,10 +39,8 @@ build/Release ...@@ -39,10 +39,8 @@ build/Release
39 # Dependency directories 39 # Dependency directories
40 node_modules/ 40 node_modules/
41 jspm_packages/ 41 jspm_packages/
42 -kakao_option.js 42 +keys/api_option.js
43 -db_option.js 43 +keys/db_option.js
44 -session.js
45 -kakao_option.js
46 # TypeScript v1 declaration files 44 # TypeScript v1 declaration files
47 typings/ 45 typings/
48 46
......
...@@ -6,7 +6,9 @@ var logger = require('morgan'); ...@@ -6,7 +6,9 @@ var logger = require('morgan');
6 var indexRouter = require('./routes/index'); 6 var indexRouter = require('./routes/index');
7 var usersRouter = require('./routes/users'); 7 var usersRouter = require('./routes/users');
8 8
9 -var app = express(); 9 +var app = express(),
10 +server= require('http').createServer(app),
11 +SOCKETIO=require('./lib/socketio.js');
10 12
11 // view engine setup 13 // view engine setup
12 app.set('views', path.join(__dirname, 'views')); 14 app.set('views', path.join(__dirname, 'views'));
...@@ -37,4 +39,7 @@ app.use(function(err, req, res, next) { ...@@ -37,4 +39,7 @@ app.use(function(err, req, res, next) {
37 res.render('error'); 39 res.render('error');
38 }); 40 });
39 41
42 +server.listen(80);
43 +SOCKETIO(server,app);
44 +
40 module.exports = app; 45 module.exports = app;
......
1 +const mysql = require('mysql');
2 +const DB_option = require('../keys/db_option');
3 +
4 +module.exports = mysql.createConnection(DB_option);
1 +{
2 + "weather": {
3 + "minutely": [
4 + {
5 + "station": {
6 + "longitude": "127.1164",
7 + "latitude": "37.2772",
8 + "name": "기흥구",
9 + "id": "371",
10 + "type": "KMA"
11 + },
12 + "wind": {
13 + "wdir": "189.50",
14 + "wspd": "2.20"
15 + },
16 + "precipitation": {
17 + "sinceOntime": "0.00",
18 + "type": "0"
19 + },
20 + "sky": {
21 + "code": "SKY_A07",
22 + "name": "흐림"
23 + },
24 + "rain": {
25 + "sinceOntime": "0.00",
26 + "sinceMidnight": "",
27 + "last10min": "0.00",
28 + "last15min": "0.00",
29 + "last30min": "0.00",
30 + "last1hour": "0.00",
31 + "last6hour": "0.50",
32 + "last12hour": "0.50",
33 + "last24hour": "0.50"
34 + },
35 + "temperature": {
36 + "tc": "5.90",
37 + "tmax": "7.00",
38 + "tmin": "-1.00"
39 + },
40 + "humidity": "",
41 + "pressure": {
42 + "surface": "",
43 + "seaLevel": ""
44 + },
45 + "lightning": "0",
46 + "timeObservation": "2018-12-06 14:14:00"
47 + }
48 + ]
49 + },
50 + "common": {
51 + "alertYn": "Y",
52 + "stormYn": "N"
53 + },
54 + "result": {
55 + "code": 9200,
56 + "requestUrl": "/weather/current/minutely?appKey=key&lat=37.239795&lon=127.083240",
57 + "message": "성공"
58 + }
59 +},
60 +{
61 + "weather": {
62 + "wIndex": {
63 + "uvindex": [
64 + {
65 + "grid": {
66 + "city": "경기도",
67 + "county": "수원시",
68 + "village": ""
69 + },
70 + "day00": {
71 + "imageUrl": "http://files.weatherplanet.co.kr/weather/01_FCT/INDEX1/20181209/FCT_IDX_A07_1_2018120906_00D.gif",
72 + "index": "20.00",
73 + "comment": "자외선 걱정 없어요"
74 + },
75 + "day01": {
76 + "imageUrl": "http://files.weatherplanet.co.kr/weather/01_FCT/INDEX1/20181209/FCT_IDX_A07_1_2018120906_01D.gif",
77 + "index": "20.00",
78 + "comment": "자외선 걱정 없어요"
79 + },
80 + "day02": {
81 + "imageUrl": "http://files.weatherplanet.co.kr/weather/01_FCT/INDEX1/20181209/FCT_IDX_A07_1_2018120906_02D.gif",
82 + "index": "10.00",
83 + "comment": "자외선 없는 날입니다"
84 + }
85 + }
86 + ],
87 + "timeRelease": "2018-12-09 06:00:00"
88 + }
89 + },
90 + "common": {
91 + "alertYn": "Y",
92 + "stormYn": "N"
93 + },
94 + "result": {
95 + "code": 9200,
96 + "requestUrl": "/weather/index/uv?appKey=c13b1a68-ef31-4131-a1b7-4069c263f82d&version=1&lat=37.239795&lon=127.083240",
97 + "message": "성공"
98 + }
99 +}{
100 + "weather": {
101 + "wIndex": {
102 + "thIndex": [
103 + {
104 + "grid": {
105 + "city": "경기",
106 + "county": "용인시 기흥구",
107 + "village": "상갈동"
108 + },
109 + "forecast": {
110 + "timeRelease": "2018-12-09 14:00:00",
111 + "index43hour": "37.85",
112 + "index4hour": "38.40",
113 + "index7hour": "34.36",
114 + "index10hour": "31.08",
115 + "index13hour": "31.08",
116 + "index16hour": "27.60",
117 + "index19hour": "35.76",
118 + "index22hour": "44.84",
119 + "index25hour": "47.47",
120 + "index28hour": "42.45",
121 + "index31hour": "39.37",
122 + "index34hour": "37.85",
123 + "index37hour": "36.54",
124 + "index40hour": "35.73",
125 + "index46hour": "42.99",
126 + "index49hour": "39.12",
127 + "index52hour": "37.79",
128 + "index55hour": "37.13",
129 + "index58hour": "36.29",
130 + "index61hour": "",
131 + "index64hour": "",
132 + "index67hour": ""
133 + },
134 + "current": {
135 + "timeRelease": "2018-12-09 14:00:00",
136 + "index": "40.49"
137 + }
138 + }
139 + ]
140 + }
141 + },
142 + "common": {
143 + "alertYn": "Y",
144 + "stormYn": "N"
145 + },
146 + "result": {
147 + "code": 9200,
148 + "requestUrl": "/weather/index/th?appKey=c13b1a68-ef31-4131-a1b7-4069c263f82d&version=1&lat=37.239795&lon=127.083240",
149 + "message": "성공"
150 + }
151 +}{
152 + "weather": {
153 + "wIndex": {
154 + "heatIndex": [
155 + {
156 + "grid": {
157 + "city": "경기",
158 + "county": "용인시 기흥구",
159 + "village": "상갈동"
160 + },
161 + "forecast": {
162 + "timeRelease": "2018-12-09 14:00:00",
163 + "index4hour": "37.28",
164 + "index7hour": "70.81",
165 + "index10hour": "91.57",
166 + "index13hour": "91.57",
167 + "index16hour": "110.30",
168 + "index19hour": "71.89",
169 + "index22hour": "36.40",
170 + "index25hour": "27.82",
171 + "index28hour": "50.39",
172 + "index31hour": "61.62",
173 + "index34hour": "71.05",
174 + "index37hour": "75.20",
175 + "index40hour": "79.01",
176 + "index43hour": "71.05",
177 + "index46hour": "52.61",
178 + "index49hour": "67.96",
179 + "index52hour": "69.50",
180 + "index55hour": "69.08",
181 + "index58hour": "74.43",
182 + "index61hour": "",
183 + "index64hour": "",
184 + "index67hour": ""
185 + },
186 + "current": {
187 + "timeRelease": "2018-12-09 14:00:00",
188 + "index": "32.79"
189 + }
190 + }
191 + ]
192 + }
193 + },
194 + "common": {
195 + "alertYn": "Y",
196 + "stormYn": "N"
197 + },
198 + "result": {
199 + "code": 9200,
200 + "requestUrl": "/weather/index/heat?appKey=c13b1a68-ef31-4131-a1b7-4069c263f82d&version=1&lat=37.239795&lon=127.083240",
201 + "message": "성공"
202 + }
203 +}
204 +{
205 + "weather": {
206 + "wIndex": {
207 + "wctIndex": [
208 + {
209 + "grid": {
210 + "city": "경기",
211 + "county": "용인시 기흥구",
212 + "village": "상갈동"
213 + },
214 + "forecast": {
215 + "timeRelease": "2018-12-09 14:00:00",
216 + "index43hour": "-2.17",
217 + "index4hour": "-8.15",
218 + "index7hour": "-6.55",
219 + "index10hour": "-7.00",
220 + "index13hour": "-7.63",
221 + "index16hour": "-9.08",
222 + "index19hour": "-4.71",
223 + "index22hour": "1.18",
224 + "index25hour": "1.53",
225 + "index28hour": "-0.47",
226 + "index31hour": "-3.76",
227 + "index34hour": "-2.37",
228 + "index37hour": "-4.67",
229 + "index40hour": "-4.38",
230 + "index46hour": "-0.67",
231 + "index49hour": "-1.18",
232 + "index52hour": "-2.14",
233 + "index55hour": "-1.65",
234 + "index58hour": "-4.23",
235 + "index61hour": "",
236 + "index64hour": "",
237 + "index67hour": ""
238 + },
239 + "current": {
240 + "timeRelease": "2018-12-09 14:00:00",
241 + "index": "-6.22"
242 + }
243 + }
244 + ]
245 + }
246 + },
247 + "common": {
248 + "alertYn": "Y",
249 + "stormYn": "N"
250 + },
251 + "result": {
252 + "code": 9200,
253 + "requestUrl": "/weather/index/wct?appKey=c13b1a68-ef31-4131-a1b7-4069c263f82d&version=1&lat=37.239795&lon=127.083240",
254 + "message": "성공"
255 + }
256 +}
...\ No newline at end of file ...\ No newline at end of file
1 +const db = require('./db.js');
2 +const secret_key = require('../keys/api_option').key;
3 +const requesting = require('request');
4 +const lat = "37.239795";
5 +const lon = "127.083240";
6 +module.exports = (server, app) => {
7 +
8 + const io = require('socket.io', )(server, {
9 + transports: ['websocket']
10 + });
11 +
12 + let info = {}
13 + const CALL = (when, what) => {
14 + requesting.get({
15 + // api를 요청할 주소 -- 시크릿키,위도,경도 입력
16 + url: `https://api2.sktelecom.com/weather/${when}/${what}?appKey=${secret_key}&lat=${lat}&lon=${lon}`,
17 + json: true
18 + },
19 + //api에게 응답 받았을때 실행되는 callback function
20 + function (err, api_res, api_body) {
21 + if (err) throw err;
22 + // api의 대답이 있을경우 실행
23 + if (api_res) {
24 + return api_body;
25 + // api_body.weather.minutely[0]
26 + }
27 + });
28 + }
29 + io.on('connection', (socket) => { //웹 페이지 연결시 루프 동작
30 + let API_CALL;
31 + let Current_Weather;
32 + let Sensible_T;
33 + let Heat_index;
34 + let Discomport_index;
35 + let Ultra_Violet_index;
36 +
37 + socket.on("connection", () => {
38 + API_CALL = setInterval(() => {
39 +
40 + Current_Weather = CALL("current","minutely"); //현재날씨 (분별)
41 + Sensible_T = CALL("index","wct"); //체감온도
42 + Heat_index = CALL("index","heat"); //열지수
43 + Discomport_index = CALL("index","th"); //불쾌지수
44 + Ultra_Violet_index = CALL("index","uv"); //자외선지수
45 +
46 + socket.emit("weatherInfo_minutely_send_to_cliend",info);
47 + }, 60 * 1000); //1분마다 호출
48 + });
49 +
50 + socket.on('disconnecting', (reason) => {
51 + clearInterval(API_CALL); //연결 종료시 해제
52 + })
53 + })
54 +
55 +
56 +
57 +}
58 +
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
9 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", 9 "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
10 "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", 10 "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
11 "requires": { 11 "requires": {
12 - "mime-types": "2.1.21", 12 + "mime-types": "~2.1.18",
13 "negotiator": "0.6.1" 13 "negotiator": "0.6.1"
14 } 14 }
15 }, 15 },
...@@ -18,6 +18,17 @@ ...@@ -18,6 +18,17 @@
18 "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", 18 "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
19 "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" 19 "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
20 }, 20 },
21 + "ajv": {
22 + "version": "6.6.1",
23 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz",
24 + "integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==",
25 + "requires": {
26 + "fast-deep-equal": "^2.0.1",
27 + "fast-json-stable-stringify": "^2.0.0",
28 + "json-schema-traverse": "^0.4.1",
29 + "uri-js": "^4.2.2"
30 + }
31 + },
21 "array-flatten": { 32 "array-flatten": {
22 "version": "1.1.1", 33 "version": "1.1.1",
23 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 34 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
...@@ -28,11 +39,39 @@ ...@@ -28,11 +39,39 @@
28 "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", 39 "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
29 "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" 40 "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
30 }, 41 },
42 + "asn1": {
43 + "version": "0.2.4",
44 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
45 + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
46 + "requires": {
47 + "safer-buffer": "~2.1.0"
48 + }
49 + },
50 + "assert-plus": {
51 + "version": "1.0.0",
52 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
53 + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
54 + },
31 "async-limiter": { 55 "async-limiter": {
32 "version": "1.0.0", 56 "version": "1.0.0",
33 "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", 57 "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
34 "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" 58 "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
35 }, 59 },
60 + "asynckit": {
61 + "version": "0.4.0",
62 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
63 + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
64 + },
65 + "aws-sign2": {
66 + "version": "0.7.0",
67 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
68 + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
69 + },
70 + "aws4": {
71 + "version": "1.8.0",
72 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
73 + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
74 + },
36 "backo2": { 75 "backo2": {
37 "version": "1.0.2", 76 "version": "1.0.2",
38 "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", 77 "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
...@@ -56,6 +95,14 @@ ...@@ -56,6 +95,14 @@
56 "safe-buffer": "5.1.2" 95 "safe-buffer": "5.1.2"
57 } 96 }
58 }, 97 },
98 + "bcrypt-pbkdf": {
99 + "version": "1.0.2",
100 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
101 + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
102 + "requires": {
103 + "tweetnacl": "^0.14.3"
104 + }
105 + },
59 "better-assert": { 106 "better-assert": {
60 "version": "1.0.2", 107 "version": "1.0.2",
61 "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", 108 "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
...@@ -64,6 +111,11 @@ ...@@ -64,6 +111,11 @@
64 "callsite": "1.0.0" 111 "callsite": "1.0.0"
65 } 112 }
66 }, 113 },
114 + "bignumber.js": {
115 + "version": "4.1.0",
116 + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz",
117 + "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA=="
118 + },
67 "blob": { 119 "blob": {
68 "version": "0.0.5", 120 "version": "0.0.5",
69 "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", 121 "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
...@@ -75,15 +127,15 @@ ...@@ -75,15 +127,15 @@
75 "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", 127 "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
76 "requires": { 128 "requires": {
77 "bytes": "3.0.0", 129 "bytes": "3.0.0",
78 - "content-type": "1.0.4", 130 + "content-type": "~1.0.4",
79 "debug": "2.6.9", 131 "debug": "2.6.9",
80 - "depd": "1.1.2", 132 + "depd": "~1.1.2",
81 - "http-errors": "1.6.3", 133 + "http-errors": "~1.6.3",
82 "iconv-lite": "0.4.23", 134 "iconv-lite": "0.4.23",
83 - "on-finished": "2.3.0", 135 + "on-finished": "~2.3.0",
84 "qs": "6.5.2", 136 "qs": "6.5.2",
85 "raw-body": "2.3.3", 137 "raw-body": "2.3.3",
86 - "type-is": "1.6.16" 138 + "type-is": "~1.6.16"
87 } 139 }
88 }, 140 },
89 "bytes": { 141 "bytes": {
...@@ -101,6 +153,19 @@ ...@@ -101,6 +153,19 @@
101 "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", 153 "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz",
102 "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" 154 "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs="
103 }, 155 },
156 + "caseless": {
157 + "version": "0.12.0",
158 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
159 + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
160 + },
161 + "combined-stream": {
162 + "version": "1.0.7",
163 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
164 + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
165 + "requires": {
166 + "delayed-stream": "~1.0.0"
167 + }
168 + },
104 "component-bind": { 169 "component-bind": {
105 "version": "1.0.0", 170 "version": "1.0.0",
106 "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", 171 "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
...@@ -121,7 +186,7 @@ ...@@ -121,7 +186,7 @@
121 "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", 186 "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz",
122 "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", 187 "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==",
123 "requires": { 188 "requires": {
124 - "mime-db": "1.37.0" 189 + "mime-db": ">= 1.36.0 < 2"
125 } 190 }
126 }, 191 },
127 "compression": { 192 "compression": {
...@@ -129,13 +194,13 @@ ...@@ -129,13 +194,13 @@
129 "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", 194 "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
130 "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", 195 "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
131 "requires": { 196 "requires": {
132 - "accepts": "1.3.5", 197 + "accepts": "~1.3.5",
133 "bytes": "3.0.0", 198 "bytes": "3.0.0",
134 - "compressible": "2.0.15", 199 + "compressible": "~2.0.14",
135 "debug": "2.6.9", 200 "debug": "2.6.9",
136 - "on-headers": "1.0.1", 201 + "on-headers": "~1.0.1",
137 "safe-buffer": "5.1.2", 202 "safe-buffer": "5.1.2",
138 - "vary": "1.1.2" 203 + "vary": "~1.1.2"
139 } 204 }
140 }, 205 },
141 "content-disposition": { 206 "content-disposition": {
...@@ -172,11 +237,29 @@ ...@@ -172,11 +237,29 @@
172 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 237 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
173 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 238 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
174 }, 239 },
240 + "core-util-is": {
241 + "version": "1.0.2",
242 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
243 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
244 + },
245 + "dashdash": {
246 + "version": "1.14.1",
247 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
248 + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
249 + "requires": {
250 + "assert-plus": "^1.0.0"
251 + }
252 + },
175 "dasherize": { 253 "dasherize": {
176 "version": "2.0.0", 254 "version": "2.0.0",
177 "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", 255 "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz",
178 "integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg=" 256 "integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg="
179 }, 257 },
258 + "date-utils": {
259 + "version": "1.2.21",
260 + "resolved": "https://registry.npmjs.org/date-utils/-/date-utils-1.2.21.tgz",
261 + "integrity": "sha1-YfsWzcEnSzyayq/+n8ad+HIKK2Q="
262 + },
180 "debug": { 263 "debug": {
181 "version": "2.6.9", 264 "version": "2.6.9",
182 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 265 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
...@@ -185,6 +268,11 @@ ...@@ -185,6 +268,11 @@
185 "ms": "2.0.0" 268 "ms": "2.0.0"
186 } 269 }
187 }, 270 },
271 + "delayed-stream": {
272 + "version": "1.0.0",
273 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
274 + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
275 + },
188 "depd": { 276 "depd": {
189 "version": "1.1.2", 277 "version": "1.1.2",
190 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 278 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
...@@ -205,6 +293,15 @@ ...@@ -205,6 +293,15 @@
205 "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.0.0.tgz", 293 "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.0.0.tgz",
206 "integrity": "sha1-WTKJDcn04vGeXrAqIAJuXl78j1g=" 294 "integrity": "sha1-WTKJDcn04vGeXrAqIAJuXl78j1g="
207 }, 295 },
296 + "ecc-jsbn": {
297 + "version": "0.1.2",
298 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
299 + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
300 + "requires": {
301 + "jsbn": "~0.1.0",
302 + "safer-buffer": "^2.1.0"
303 + }
304 + },
208 "ee-first": { 305 "ee-first": {
209 "version": "1.1.1", 306 "version": "1.1.1",
210 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 307 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
...@@ -225,12 +322,12 @@ ...@@ -225,12 +322,12 @@
225 "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.1.tgz", 322 "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.1.tgz",
226 "integrity": "sha512-p0njqQo5QWVxJauKcnp5IO+LBeE5JD1tAf+UxPU8ASEUHSpsSSfYR+kVb8XGGH8AEDUa1Dk5jCvPQShNBL5BdQ==", 323 "integrity": "sha512-p0njqQo5QWVxJauKcnp5IO+LBeE5JD1tAf+UxPU8ASEUHSpsSSfYR+kVb8XGGH8AEDUa1Dk5jCvPQShNBL5BdQ==",
227 "requires": { 324 "requires": {
228 - "accepts": "1.3.5", 325 + "accepts": "~1.3.4",
229 "base64id": "1.0.0", 326 "base64id": "1.0.0",
230 "cookie": "0.3.1", 327 "cookie": "0.3.1",
231 - "debug": "3.1.0", 328 + "debug": "~3.1.0",
232 - "engine.io-parser": "2.1.3", 329 + "engine.io-parser": "~2.1.0",
233 - "ws": "6.1.2" 330 + "ws": "~6.1.0"
234 }, 331 },
235 "dependencies": { 332 "dependencies": {
236 "debug": { 333 "debug": {
...@@ -250,14 +347,14 @@ ...@@ -250,14 +347,14 @@
250 "requires": { 347 "requires": {
251 "component-emitter": "1.2.1", 348 "component-emitter": "1.2.1",
252 "component-inherit": "0.0.3", 349 "component-inherit": "0.0.3",
253 - "debug": "3.1.0", 350 + "debug": "~3.1.0",
254 - "engine.io-parser": "2.1.3", 351 + "engine.io-parser": "~2.1.1",
255 "has-cors": "1.1.0", 352 "has-cors": "1.1.0",
256 "indexof": "0.0.1", 353 "indexof": "0.0.1",
257 "parseqs": "0.0.5", 354 "parseqs": "0.0.5",
258 "parseuri": "0.0.5", 355 "parseuri": "0.0.5",
259 - "ws": "6.1.2", 356 + "ws": "~6.1.0",
260 - "xmlhttprequest-ssl": "1.5.5", 357 + "xmlhttprequest-ssl": "~1.5.4",
261 "yeast": "0.1.2" 358 "yeast": "0.1.2"
262 }, 359 },
263 "dependencies": { 360 "dependencies": {
...@@ -277,10 +374,10 @@ ...@@ -277,10 +374,10 @@
277 "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", 374 "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==",
278 "requires": { 375 "requires": {
279 "after": "0.8.2", 376 "after": "0.8.2",
280 - "arraybuffer.slice": "0.0.7", 377 + "arraybuffer.slice": "~0.0.7",
281 "base64-arraybuffer": "0.1.5", 378 "base64-arraybuffer": "0.1.5",
282 "blob": "0.0.5", 379 "blob": "0.0.5",
283 - "has-binary2": "1.0.3" 380 + "has-binary2": "~1.0.2"
284 } 381 }
285 }, 382 },
286 "escape-html": { 383 "escape-html": {
...@@ -303,36 +400,36 @@ ...@@ -303,36 +400,36 @@
303 "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", 400 "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
304 "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", 401 "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
305 "requires": { 402 "requires": {
306 - "accepts": "1.3.5", 403 + "accepts": "~1.3.5",
307 "array-flatten": "1.1.1", 404 "array-flatten": "1.1.1",
308 "body-parser": "1.18.3", 405 "body-parser": "1.18.3",
309 "content-disposition": "0.5.2", 406 "content-disposition": "0.5.2",
310 - "content-type": "1.0.4", 407 + "content-type": "~1.0.4",
311 "cookie": "0.3.1", 408 "cookie": "0.3.1",
312 "cookie-signature": "1.0.6", 409 "cookie-signature": "1.0.6",
313 "debug": "2.6.9", 410 "debug": "2.6.9",
314 - "depd": "1.1.2", 411 + "depd": "~1.1.2",
315 - "encodeurl": "1.0.2", 412 + "encodeurl": "~1.0.2",
316 - "escape-html": "1.0.3", 413 + "escape-html": "~1.0.3",
317 - "etag": "1.8.1", 414 + "etag": "~1.8.1",
318 "finalhandler": "1.1.1", 415 "finalhandler": "1.1.1",
319 "fresh": "0.5.2", 416 "fresh": "0.5.2",
320 "merge-descriptors": "1.0.1", 417 "merge-descriptors": "1.0.1",
321 - "methods": "1.1.2", 418 + "methods": "~1.1.2",
322 - "on-finished": "2.3.0", 419 + "on-finished": "~2.3.0",
323 - "parseurl": "1.3.2", 420 + "parseurl": "~1.3.2",
324 "path-to-regexp": "0.1.7", 421 "path-to-regexp": "0.1.7",
325 - "proxy-addr": "2.0.4", 422 + "proxy-addr": "~2.0.4",
326 "qs": "6.5.2", 423 "qs": "6.5.2",
327 - "range-parser": "1.2.0", 424 + "range-parser": "~1.2.0",
328 "safe-buffer": "5.1.2", 425 "safe-buffer": "5.1.2",
329 "send": "0.16.2", 426 "send": "0.16.2",
330 "serve-static": "1.13.2", 427 "serve-static": "1.13.2",
331 "setprototypeof": "1.1.0", 428 "setprototypeof": "1.1.0",
332 - "statuses": "1.4.0", 429 + "statuses": "~1.4.0",
333 - "type-is": "1.6.16", 430 + "type-is": "~1.6.16",
334 "utils-merge": "1.0.1", 431 "utils-merge": "1.0.1",
335 - "vary": "1.1.2" 432 + "vary": "~1.1.2"
336 }, 433 },
337 "dependencies": { 434 "dependencies": {
338 "statuses": { 435 "statuses": {
...@@ -342,6 +439,26 @@ ...@@ -342,6 +439,26 @@
342 } 439 }
343 } 440 }
344 }, 441 },
442 + "extend": {
443 + "version": "3.0.2",
444 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
445 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
446 + },
447 + "extsprintf": {
448 + "version": "1.3.0",
449 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
450 + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
451 + },
452 + "fast-deep-equal": {
453 + "version": "2.0.1",
454 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
455 + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
456 + },
457 + "fast-json-stable-stringify": {
458 + "version": "2.0.0",
459 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
460 + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
461 + },
345 "feature-policy": { 462 "feature-policy": {
346 "version": "0.2.0", 463 "version": "0.2.0",
347 "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.2.0.tgz", 464 "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.2.0.tgz",
...@@ -353,12 +470,12 @@ ...@@ -353,12 +470,12 @@
353 "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", 470 "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
354 "requires": { 471 "requires": {
355 "debug": "2.6.9", 472 "debug": "2.6.9",
356 - "encodeurl": "1.0.2", 473 + "encodeurl": "~1.0.2",
357 - "escape-html": "1.0.3", 474 + "escape-html": "~1.0.3",
358 - "on-finished": "2.3.0", 475 + "on-finished": "~2.3.0",
359 - "parseurl": "1.3.2", 476 + "parseurl": "~1.3.2",
360 - "statuses": "1.4.0", 477 + "statuses": "~1.4.0",
361 - "unpipe": "1.0.0" 478 + "unpipe": "~1.0.0"
362 }, 479 },
363 "dependencies": { 480 "dependencies": {
364 "statuses": { 481 "statuses": {
...@@ -368,6 +485,21 @@ ...@@ -368,6 +485,21 @@
368 } 485 }
369 } 486 }
370 }, 487 },
488 + "forever-agent": {
489 + "version": "0.6.1",
490 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
491 + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
492 + },
493 + "form-data": {
494 + "version": "2.3.3",
495 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
496 + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
497 + "requires": {
498 + "asynckit": "^0.4.0",
499 + "combined-stream": "^1.0.6",
500 + "mime-types": "^2.1.12"
501 + }
502 + },
371 "forwarded": { 503 "forwarded": {
372 "version": "0.1.2", 504 "version": "0.1.2",
373 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 505 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
...@@ -383,6 +515,28 @@ ...@@ -383,6 +515,28 @@
383 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 515 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
384 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 516 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
385 }, 517 },
518 + "getpass": {
519 + "version": "0.1.7",
520 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
521 + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
522 + "requires": {
523 + "assert-plus": "^1.0.0"
524 + }
525 + },
526 + "har-schema": {
527 + "version": "2.0.0",
528 + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
529 + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
530 + },
531 + "har-validator": {
532 + "version": "5.1.3",
533 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
534 + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
535 + "requires": {
536 + "ajv": "^6.5.5",
537 + "har-schema": "^2.0.0"
538 + }
539 + },
386 "has-binary2": { 540 "has-binary2": {
387 "version": "1.0.3", 541 "version": "1.0.3",
388 "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", 542 "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
...@@ -453,10 +607,20 @@ ...@@ -453,10 +607,20 @@
453 "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 607 "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
454 "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 608 "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
455 "requires": { 609 "requires": {
456 - "depd": "1.1.2", 610 + "depd": "~1.1.2",
457 "inherits": "2.0.3", 611 "inherits": "2.0.3",
458 "setprototypeof": "1.1.0", 612 "setprototypeof": "1.1.0",
459 - "statuses": "1.5.0" 613 + "statuses": ">= 1.4.0 < 2"
614 + }
615 + },
616 + "http-signature": {
617 + "version": "1.2.0",
618 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
619 + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
620 + "requires": {
621 + "assert-plus": "^1.0.0",
622 + "jsprim": "^1.2.2",
623 + "sshpk": "^1.7.0"
460 } 624 }
461 }, 625 },
462 "iconv-lite": { 626 "iconv-lite": {
...@@ -464,7 +628,7 @@ ...@@ -464,7 +628,7 @@
464 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", 628 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
465 "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", 629 "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
466 "requires": { 630 "requires": {
467 - "safer-buffer": "2.1.2" 631 + "safer-buffer": ">= 2.1.2 < 3"
468 } 632 }
469 }, 633 },
470 "ienoopen": { 634 "ienoopen": {
...@@ -487,11 +651,52 @@ ...@@ -487,11 +651,52 @@
487 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", 651 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
488 "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" 652 "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
489 }, 653 },
654 + "is-typedarray": {
655 + "version": "1.0.0",
656 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
657 + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
658 + },
490 "isarray": { 659 "isarray": {
491 "version": "2.0.1", 660 "version": "2.0.1",
492 "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", 661 "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
493 "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" 662 "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
494 }, 663 },
664 + "isstream": {
665 + "version": "0.1.2",
666 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
667 + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
668 + },
669 + "jsbn": {
670 + "version": "0.1.1",
671 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
672 + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
673 + },
674 + "json-schema": {
675 + "version": "0.2.3",
676 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
677 + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
678 + },
679 + "json-schema-traverse": {
680 + "version": "0.4.1",
681 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
682 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
683 + },
684 + "json-stringify-safe": {
685 + "version": "5.0.1",
686 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
687 + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
688 + },
689 + "jsprim": {
690 + "version": "1.4.1",
691 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
692 + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
693 + "requires": {
694 + "assert-plus": "1.0.0",
695 + "extsprintf": "1.3.0",
696 + "json-schema": "0.2.3",
697 + "verror": "1.10.0"
698 + }
699 + },
495 "media-typer": { 700 "media-typer": {
496 "version": "0.3.0", 701 "version": "0.3.0",
497 "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 702 "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
...@@ -522,7 +727,7 @@ ...@@ -522,7 +727,7 @@
522 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", 727 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
523 "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", 728 "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
524 "requires": { 729 "requires": {
525 - "mime-db": "1.37.0" 730 + "mime-db": "~1.37.0"
526 } 731 }
527 }, 732 },
528 "morgan": { 733 "morgan": {
...@@ -530,11 +735,11 @@ ...@@ -530,11 +735,11 @@
530 "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", 735 "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
531 "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", 736 "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
532 "requires": { 737 "requires": {
533 - "basic-auth": "2.0.1", 738 + "basic-auth": "~2.0.0",
534 "debug": "2.6.9", 739 "debug": "2.6.9",
535 - "depd": "1.1.2", 740 + "depd": "~1.1.2",
536 - "on-finished": "2.3.0", 741 + "on-finished": "~2.3.0",
537 - "on-headers": "1.0.1" 742 + "on-headers": "~1.0.1"
538 } 743 }
539 }, 744 },
540 "ms": { 745 "ms": {
...@@ -542,6 +747,17 @@ ...@@ -542,6 +747,17 @@
542 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 747 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
543 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 748 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
544 }, 749 },
750 + "mysql": {
751 + "version": "2.16.0",
752 + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.16.0.tgz",
753 + "integrity": "sha512-dPbN2LHonQp7D5ja5DJXNbCLe/HRdu+f3v61aguzNRQIrmZLOeRoymBYyeThrR6ug+FqzDL95Gc9maqZUJS+Gw==",
754 + "requires": {
755 + "bignumber.js": "4.1.0",
756 + "readable-stream": "2.3.6",
757 + "safe-buffer": "5.1.2",
758 + "sqlstring": "2.3.1"
759 + }
760 + },
545 "negotiator": { 761 "negotiator": {
546 "version": "0.6.1", 762 "version": "0.6.1",
547 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 763 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
...@@ -552,6 +768,11 @@ ...@@ -552,6 +768,11 @@
552 "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.0.0.tgz", 768 "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.0.0.tgz",
553 "integrity": "sha1-ICtIAhoMTL3i34DeFaF0Q8i0OYA=" 769 "integrity": "sha1-ICtIAhoMTL3i34DeFaF0Q8i0OYA="
554 }, 770 },
771 + "oauth-sign": {
772 + "version": "0.9.0",
773 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
774 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
775 + },
555 "object-component": { 776 "object-component": {
556 "version": "0.0.3", 777 "version": "0.0.3",
557 "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", 778 "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
...@@ -575,7 +796,7 @@ ...@@ -575,7 +796,7 @@
575 "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", 796 "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
576 "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", 797 "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
577 "requires": { 798 "requires": {
578 - "better-assert": "1.0.2" 799 + "better-assert": "~1.0.0"
579 } 800 }
580 }, 801 },
581 "parseuri": { 802 "parseuri": {
...@@ -583,7 +804,7 @@ ...@@ -583,7 +804,7 @@
583 "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", 804 "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
584 "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", 805 "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
585 "requires": { 806 "requires": {
586 - "better-assert": "1.0.2" 807 + "better-assert": "~1.0.0"
587 } 808 }
588 }, 809 },
589 "parseurl": { 810 "parseurl": {
...@@ -596,20 +817,40 @@ ...@@ -596,20 +817,40 @@
596 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 817 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
597 "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 818 "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
598 }, 819 },
820 + "performance-now": {
821 + "version": "2.1.0",
822 + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
823 + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
824 + },
599 "platform": { 825 "platform": {
600 "version": "1.3.5", 826 "version": "1.3.5",
601 "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz", 827 "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz",
602 "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q==" 828 "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q=="
603 }, 829 },
830 + "process-nextick-args": {
831 + "version": "2.0.0",
832 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
833 + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
834 + },
604 "proxy-addr": { 835 "proxy-addr": {
605 "version": "2.0.4", 836 "version": "2.0.4",
606 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", 837 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
607 "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", 838 "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
608 "requires": { 839 "requires": {
609 - "forwarded": "0.1.2", 840 + "forwarded": "~0.1.2",
610 "ipaddr.js": "1.8.0" 841 "ipaddr.js": "1.8.0"
611 } 842 }
612 }, 843 },
844 + "psl": {
845 + "version": "1.1.29",
846 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
847 + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ=="
848 + },
849 + "punycode": {
850 + "version": "2.1.1",
851 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
852 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
853 + },
613 "qs": { 854 "qs": {
614 "version": "6.5.2", 855 "version": "6.5.2",
615 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 856 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
...@@ -631,11 +872,59 @@ ...@@ -631,11 +872,59 @@
631 "unpipe": "1.0.0" 872 "unpipe": "1.0.0"
632 } 873 }
633 }, 874 },
875 + "readable-stream": {
876 + "version": "2.3.6",
877 + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
878 + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
879 + "requires": {
880 + "core-util-is": "~1.0.0",
881 + "inherits": "~2.0.3",
882 + "isarray": "~1.0.0",
883 + "process-nextick-args": "~2.0.0",
884 + "safe-buffer": "~5.1.1",
885 + "string_decoder": "~1.1.1",
886 + "util-deprecate": "~1.0.1"
887 + },
888 + "dependencies": {
889 + "isarray": {
890 + "version": "1.0.0",
891 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
892 + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
893 + }
894 + }
895 + },
634 "referrer-policy": { 896 "referrer-policy": {
635 "version": "1.1.0", 897 "version": "1.1.0",
636 "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.1.0.tgz", 898 "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.1.0.tgz",
637 "integrity": "sha1-NXdOtzW/UPtsB46DM0tHI1AgfXk=" 899 "integrity": "sha1-NXdOtzW/UPtsB46DM0tHI1AgfXk="
638 }, 900 },
901 + "request": {
902 + "version": "2.88.0",
903 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
904 + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
905 + "requires": {
906 + "aws-sign2": "~0.7.0",
907 + "aws4": "^1.8.0",
908 + "caseless": "~0.12.0",
909 + "combined-stream": "~1.0.6",
910 + "extend": "~3.0.2",
911 + "forever-agent": "~0.6.1",
912 + "form-data": "~2.3.2",
913 + "har-validator": "~5.1.0",
914 + "http-signature": "~1.2.0",
915 + "is-typedarray": "~1.0.0",
916 + "isstream": "~0.1.2",
917 + "json-stringify-safe": "~5.0.1",
918 + "mime-types": "~2.1.19",
919 + "oauth-sign": "~0.9.0",
920 + "performance-now": "^2.1.0",
921 + "qs": "~6.5.2",
922 + "safe-buffer": "^5.1.2",
923 + "tough-cookie": "~2.4.3",
924 + "tunnel-agent": "^0.6.0",
925 + "uuid": "^3.3.2"
926 + }
927 + },
639 "safe-buffer": { 928 "safe-buffer": {
640 "version": "5.1.2", 929 "version": "5.1.2",
641 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 930 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
...@@ -652,18 +941,18 @@ ...@@ -652,18 +941,18 @@
652 "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 941 "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
653 "requires": { 942 "requires": {
654 "debug": "2.6.9", 943 "debug": "2.6.9",
655 - "depd": "1.1.2", 944 + "depd": "~1.1.2",
656 - "destroy": "1.0.4", 945 + "destroy": "~1.0.4",
657 - "encodeurl": "1.0.2", 946 + "encodeurl": "~1.0.2",
658 - "escape-html": "1.0.3", 947 + "escape-html": "~1.0.3",
659 - "etag": "1.8.1", 948 + "etag": "~1.8.1",
660 "fresh": "0.5.2", 949 "fresh": "0.5.2",
661 - "http-errors": "1.6.3", 950 + "http-errors": "~1.6.2",
662 "mime": "1.4.1", 951 "mime": "1.4.1",
663 "ms": "2.0.0", 952 "ms": "2.0.0",
664 - "on-finished": "2.3.0", 953 + "on-finished": "~2.3.0",
665 - "range-parser": "1.2.0", 954 + "range-parser": "~1.2.0",
666 - "statuses": "1.4.0" 955 + "statuses": "~1.4.0"
667 }, 956 },
668 "dependencies": { 957 "dependencies": {
669 "statuses": { 958 "statuses": {
...@@ -678,9 +967,9 @@ ...@@ -678,9 +967,9 @@
678 "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", 967 "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
679 "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", 968 "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
680 "requires": { 969 "requires": {
681 - "encodeurl": "1.0.2", 970 + "encodeurl": "~1.0.2",
682 - "escape-html": "1.0.3", 971 + "escape-html": "~1.0.3",
683 - "parseurl": "1.3.2", 972 + "parseurl": "~1.3.2",
684 "send": "0.16.2" 973 "send": "0.16.2"
685 } 974 }
686 }, 975 },
...@@ -694,12 +983,12 @@ ...@@ -694,12 +983,12 @@
694 "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", 983 "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz",
695 "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", 984 "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==",
696 "requires": { 985 "requires": {
697 - "debug": "4.1.0", 986 + "debug": "~4.1.0",
698 - "engine.io": "3.3.1", 987 + "engine.io": "~3.3.1",
699 - "has-binary2": "1.0.3", 988 + "has-binary2": "~1.0.2",
700 - "socket.io-adapter": "1.1.1", 989 + "socket.io-adapter": "~1.1.0",
701 "socket.io-client": "2.2.0", 990 "socket.io-client": "2.2.0",
702 - "socket.io-parser": "3.3.0" 991 + "socket.io-parser": "~3.3.0"
703 }, 992 },
704 "dependencies": { 993 "dependencies": {
705 "debug": { 994 "debug": {
...@@ -707,7 +996,7 @@ ...@@ -707,7 +996,7 @@
707 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", 996 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
708 "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", 997 "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
709 "requires": { 998 "requires": {
710 - "ms": "2.1.1" 999 + "ms": "^2.1.1"
711 } 1000 }
712 }, 1001 },
713 "ms": { 1002 "ms": {
...@@ -731,15 +1020,15 @@ ...@@ -731,15 +1020,15 @@
731 "base64-arraybuffer": "0.1.5", 1020 "base64-arraybuffer": "0.1.5",
732 "component-bind": "1.0.0", 1021 "component-bind": "1.0.0",
733 "component-emitter": "1.2.1", 1022 "component-emitter": "1.2.1",
734 - "debug": "3.1.0", 1023 + "debug": "~3.1.0",
735 - "engine.io-client": "3.3.1", 1024 + "engine.io-client": "~3.3.1",
736 - "has-binary2": "1.0.3", 1025 + "has-binary2": "~1.0.2",
737 "has-cors": "1.1.0", 1026 "has-cors": "1.1.0",
738 "indexof": "0.0.1", 1027 "indexof": "0.0.1",
739 "object-component": "0.0.3", 1028 "object-component": "0.0.3",
740 "parseqs": "0.0.5", 1029 "parseqs": "0.0.5",
741 "parseuri": "0.0.5", 1030 "parseuri": "0.0.5",
742 - "socket.io-parser": "3.3.0", 1031 + "socket.io-parser": "~3.3.0",
743 "to-array": "0.1.4" 1032 "to-array": "0.1.4"
744 }, 1033 },
745 "dependencies": { 1034 "dependencies": {
...@@ -759,7 +1048,7 @@ ...@@ -759,7 +1048,7 @@
759 "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", 1048 "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==",
760 "requires": { 1049 "requires": {
761 "component-emitter": "1.2.1", 1050 "component-emitter": "1.2.1",
762 - "debug": "3.1.0", 1051 + "debug": "~3.1.0",
763 "isarray": "2.0.1" 1052 "isarray": "2.0.1"
764 }, 1053 },
765 "dependencies": { 1054 "dependencies": {
...@@ -773,23 +1062,81 @@ ...@@ -773,23 +1062,81 @@
773 } 1062 }
774 } 1063 }
775 }, 1064 },
1065 + "sqlstring": {
1066 + "version": "2.3.1",
1067 + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
1068 + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
1069 + },
1070 + "sshpk": {
1071 + "version": "1.15.2",
1072 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz",
1073 + "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==",
1074 + "requires": {
1075 + "asn1": "~0.2.3",
1076 + "assert-plus": "^1.0.0",
1077 + "bcrypt-pbkdf": "^1.0.0",
1078 + "dashdash": "^1.12.0",
1079 + "ecc-jsbn": "~0.1.1",
1080 + "getpass": "^0.1.1",
1081 + "jsbn": "~0.1.0",
1082 + "safer-buffer": "^2.0.2",
1083 + "tweetnacl": "~0.14.0"
1084 + }
1085 + },
776 "statuses": { 1086 "statuses": {
777 "version": "1.5.0", 1087 "version": "1.5.0",
778 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1088 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
779 "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1089 "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
780 }, 1090 },
1091 + "string_decoder": {
1092 + "version": "1.1.1",
1093 + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1094 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1095 + "requires": {
1096 + "safe-buffer": "~5.1.0"
1097 + }
1098 + },
781 "to-array": { 1099 "to-array": {
782 "version": "0.1.4", 1100 "version": "0.1.4",
783 "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", 1101 "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
784 "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" 1102 "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
785 }, 1103 },
1104 + "tough-cookie": {
1105 + "version": "2.4.3",
1106 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
1107 + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
1108 + "requires": {
1109 + "psl": "^1.1.24",
1110 + "punycode": "^1.4.1"
1111 + },
1112 + "dependencies": {
1113 + "punycode": {
1114 + "version": "1.4.1",
1115 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
1116 + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
1117 + }
1118 + }
1119 + },
1120 + "tunnel-agent": {
1121 + "version": "0.6.0",
1122 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1123 + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
1124 + "requires": {
1125 + "safe-buffer": "^5.0.1"
1126 + }
1127 + },
1128 + "tweetnacl": {
1129 + "version": "0.14.5",
1130 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
1131 + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
1132 + },
786 "type-is": { 1133 "type-is": {
787 "version": "1.6.16", 1134 "version": "1.6.16",
788 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", 1135 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
789 "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", 1136 "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
790 "requires": { 1137 "requires": {
791 "media-typer": "0.3.0", 1138 "media-typer": "0.3.0",
792 - "mime-types": "2.1.21" 1139 + "mime-types": "~2.1.18"
793 } 1140 }
794 }, 1141 },
795 "unpipe": { 1142 "unpipe": {
...@@ -797,22 +1144,50 @@ ...@@ -797,22 +1144,50 @@
797 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1144 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
798 "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1145 "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
799 }, 1146 },
1147 + "uri-js": {
1148 + "version": "4.2.2",
1149 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
1150 + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
1151 + "requires": {
1152 + "punycode": "^2.1.0"
1153 + }
1154 + },
1155 + "util-deprecate": {
1156 + "version": "1.0.2",
1157 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1158 + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
1159 + },
800 "utils-merge": { 1160 "utils-merge": {
801 "version": "1.0.1", 1161 "version": "1.0.1",
802 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1162 "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
803 "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1163 "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
804 }, 1164 },
1165 + "uuid": {
1166 + "version": "3.3.2",
1167 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
1168 + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
1169 + },
805 "vary": { 1170 "vary": {
806 "version": "1.1.2", 1171 "version": "1.1.2",
807 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1172 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
808 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1173 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
809 }, 1174 },
1175 + "verror": {
1176 + "version": "1.10.0",
1177 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
1178 + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
1179 + "requires": {
1180 + "assert-plus": "^1.0.0",
1181 + "core-util-is": "1.0.2",
1182 + "extsprintf": "^1.2.0"
1183 + }
1184 + },
810 "ws": { 1185 "ws": {
811 "version": "6.1.2", 1186 "version": "6.1.2",
812 "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz", 1187 "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz",
813 "integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==", 1188 "integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==",
814 "requires": { 1189 "requires": {
815 - "async-limiter": "1.0.0" 1190 + "async-limiter": "~1.0.0"
816 } 1191 }
817 }, 1192 },
818 "x-xss-protection": { 1193 "x-xss-protection": {
......
...@@ -9,12 +9,15 @@ ...@@ -9,12 +9,15 @@
9 "body-parser": "^1.18.3", 9 "body-parser": "^1.18.3",
10 "compression": "^1.7.3", 10 "compression": "^1.7.3",
11 "cookie-parser": "~1.4.3", 11 "cookie-parser": "~1.4.3",
12 + "date-utils": "^1.2.21",
12 "debug": "~2.6.9", 13 "debug": "~2.6.9",
13 "ejs": "~2.5.7", 14 "ejs": "~2.5.7",
14 "express": "~4.16.0", 15 "express": "~4.16.0",
16 + "helmet": "^3.13.0",
15 "http-errors": "~1.6.2", 17 "http-errors": "~1.6.2",
16 "morgan": "~1.9.0", 18 "morgan": "~1.9.0",
17 - "helmet": "^3.13.0", 19 + "mysql": "^2.16.0",
20 + "request": "^2.88.0",
18 "socket.io": "^2.1.1" 21 "socket.io": "^2.1.1"
19 } 22 }
20 } 23 }
......
1 var express = require('express'); 1 var express = require('express');
2 var router = express.Router(); 2 var router = express.Router();
3 +var db = require('../lib/db');
3 4
4 /* GET home page. */ 5 /* GET home page. */
5 router.get('/', function(req, res, next) { 6 router.get('/', function(req, res, next) {
6 - res.render('index', { title: 'Express' }); 7 + // 자외선지수, 불쾌지수, 열지수, 체감 온도, 바람속도, 현재기온, 하늘 상태, 강우량, 태풍, 낙뢰, 특보, 현재 시간
8 + var uvr, discomfort, heat, sensibleTem, windSpeed, presentTem, skyState, rainfall, typhoon, lightning, alert, time;
9 +
10 + // 쿼리문
11 + var sql = 'SELECT * FROM kkonzi_test.weatherInfo WHERE kkonzi_test.time > DATE_FORMAT(DATE_ADD(now(), INTERVAL -1 MINUTE), "%Y-%m-%d %H:%i:%s")'';
12 + db.query(sql, function(err, rows, fields){
13 + if (err) {
14 + console.log(err);
15 + } else {
16 + if (rows.length == 0){
17 +
18 + }
19 + else {
20 +
21 + }
22 + var tmp = rows.length - 1;
23 + time = rows[temp].time;
24 + uvr = rows[temp].UV;
25 + discomfort = rows[temp].discomfort;
26 + heat = rows[temp].heat;
27 + sensibleTem = rows[temp].SensibleT;
28 + windSpeed = rows[temp].wspd;
29 + presentTem = rows[temp].CurrentT;
30 + skyState = rows[temp].sky;
31 + rainfall = rows[temp].rain;
32 + typhoon = rows[temp].typhoon;
33 + lightning = rows[temp].lightning;
34 + alert = rows[temp].alert;
35 + }
36 + })
37 +
38 + res.render('index', {title: 'Express'});
7 }); 39 });
8 40
9 module.exports = router; 41 module.exports = router;
......
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 - <title><%= title %></title> 4 + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 - <link rel='stylesheet' href='/stylesheets/style.css' /> 5 + <meta name="viewport" content="width=device-width, initial-scale=1" />
6 + <title>Highcharts Example</title>
7 +
8 + <style type="text/css"></style>
6 </head> 9 </head>
7 <body> 10 <body>
8 - <h1><%= title %></h1> 11 + <script src="../code/highcharts.js"></script>
9 - <p>Welcome to <%= title %></p> 12 + <script src="../code/modules/exporting.js"></script>
13 + <script src="../code/modules/export-data.js"></script>
14 +
15 + <div
16 + id="container1"
17 + style="width:1260px; height: 400px; margin: 0 auto"
18 + ></div>
19 +
20 +<div style="width:1275px; margin:0 auto;">
21 + <div style="display: inline-block;">
22 + <div
23 + id="container2"
24 + style="width:400px; height: 300px; padding:0; margin-left:0px;margin-right: 30px;"
25 + ></div>
26 + </div>
27 + <div style="display: inline-block;">
28 + <div
29 + id="container3"
30 + style="width:400px; height: 300px; padding:0; margin-left:0px;margin-right: 30px;"
31 + ></div>
32 + </div>
33 +
34 + <div style="display: inline-block;">
35 + <div
36 + id="container4"
37 + style="width:400px; height: 300px; padding:0; margin-left:0px;"
38 + ></div>
39 + </div>
40 +
41 +</div>
42 +
43 + <script type="text/javascript">
44 + Highcharts.chart("container1", {
45 + chart: {
46 + type: "areaspline",
47 + animation: Highcharts.svg, // don't animate in old IE
48 + marginRight: 10,
49 + events: {
50 + load: function() {
51 + // set up the updating of the chart each second
52 + var series = this.series[0];
53 + setInterval(function() {
54 + var x = new Date().getTime(), // 현재 시간
55 + y = 0.7 //여기에 새로 넣을 값
56 + series.addPoint([x, y], true, true);
57 + }, 1000); //1000=1초 -> 1분=60000
58 + }
59 + }
60 + },
61 +
62 + time: {
63 + useUTC: false
64 + },
65 +
66 + title: {
67 + text: "실시간 사망률"
68 + },
69 + xAxis: {
70 + type: "datetime",
71 + tickPixelInterval: 150
72 + },
73 + yAxis: {
74 + title: {
75 + text: "Value"
76 + },
77 + plotLines: [
78 + {
79 + value: 0,
80 + width: 1,
81 + color: "#808080"
82 + }
83 + ]
84 + },
85 + tooltip: {
86 + headerFormat: "<b>{series.name}</b><br/>",
87 + pointFormat: "{point.x:%Y-%m-%d %H:%M:%S}<br/>{point.y:.2f}"
88 + },
89 + legend: {
90 + //enabled: false
91 + layout: "vertical",
92 + align: "left",
93 + verticalAlign: "top",
94 + x: 120,
95 + y: 70,
96 + floating: true,
97 + borderWidth: 1,
98 + backgroundColor:
99 + (Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
100 + "#FFFFFF"
101 + },
102 + exporting: {
103 + enabled: false
104 + },
105 + series: [
106 + {
107 + name: "사망률(%)",
108 + data: (function() {
109 + // generate an array of random data
110 + var data = [],
111 + time = new Date().getTime(),
112 + i;
113 +
114 + for (i = -19; i <= 0; i += 1) {
115 + data.push({
116 + x: time + i * 1000,
117 + y: 0
118 + });
119 + }
120 + return data;
121 + })()
122 + }
123 + ]
124 + });
125 +
126 + Highcharts.chart("container2", {
127 + chart: {
128 + type: "spline",
129 + animation: Highcharts.svg, // don't animate in old IE
130 + marginRight: 10,
131 + events: {
132 + load: function() {
133 + // set up the updating of the chart each second
134 + var series = this.series[0];
135 + setInterval(function() {
136 + var x = new Date().getTime(), // 현재 시간
137 + y = Math.random(); //
138 + series.addPoint([x, y], true, true);
139 + }, 3000); //1000=1초
140 + }
141 + }
142 + },
143 +
144 + time: {
145 + useUTC: false
146 + },
147 +
148 + title: {
149 + text: "실시간 사망률"
150 + },
151 + xAxis: {
152 + type: "datetime",
153 + tickPixelInterval: 150
154 + },
155 + yAxis: {
156 + title: {
157 + text: "Value"
158 + },
159 + plotLines: [
160 + {
161 + value: 0,
162 + width: 1,
163 + color: "#808080"
164 + }
165 + ]
166 + },
167 + tooltip: {
168 + headerFormat: "<b>{series.name}</b><br/>",
169 + pointFormat: "{point.x:%Y-%m-%d %H:%M:%S}<br/>{point.y:.2f}"
170 + },
171 + legend: {
172 + //enabled: false
173 + layout: "vertical",
174 + align: "left",
175 + verticalAlign: "top",
176 + x: 120,
177 + y: 70,
178 + floating: true,
179 + borderWidth: 1,
180 + backgroundColor:
181 + (Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
182 + "#FFFFFF"
183 + },
184 + exporting: {
185 + enabled: false
186 + },
187 + series: [
188 + {
189 + name: "사망률(%)",
190 + data: (function() {
191 + // generate an array of random data
192 + var data = [],
193 + time = new Date().getTime(),
194 + i;
195 +
196 + for (i = -19; i <= 0; i += 1) {
197 + data.push({
198 + x: time + i * 3000,
199 + y: 0
200 + });
201 + }
202 + return data;
203 + })()
204 + }
205 + ]
206 + });
207 +
208 + Highcharts.chart("container3", {
209 + chart: {
210 + type: "spline",
211 + animation: Highcharts.svg, // don't animate in old IE
212 + marginRight: 10,
213 + events: {
214 + load: function() {
215 + // set up the updating of the chart each second
216 + var series = this.series[0];
217 + setInterval(function() {
218 + var x = new Date().getTime(), // 현재 시간
219 + y = Math.random(); //
220 + series.addPoint([x, y], true, true);
221 + }, 3000); //1000=1초
222 + }
223 + }
224 + },
225 +
226 + time: {
227 + useUTC: false
228 + },
229 +
230 + title: {
231 + text: "실시간 사망률"
232 + },
233 + xAxis: {
234 + type: "datetime",
235 + tickPixelInterval: 150
236 + },
237 + yAxis: {
238 + title: {
239 + text: "Value"
240 + },
241 + plotLines: [
242 + {
243 + value: 0,
244 + width: 1,
245 + color: "#808080"
246 + }
247 + ]
248 + },
249 + tooltip: {
250 + headerFormat: "<b>{series.name}</b><br/>",
251 + pointFormat: "{point.x:%Y-%m-%d %H:%M:%S}<br/>{point.y:.2f}"
252 + },
253 + legend: {
254 + //enabled: false
255 + layout: "vertical",
256 + align: "left",
257 + verticalAlign: "top",
258 + x: 120,
259 + y: 70,
260 + floating: true,
261 + borderWidth: 1,
262 + backgroundColor:
263 + (Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
264 + "#FFFFFF"
265 + },
266 + exporting: {
267 + enabled: false
268 + },
269 + series: [
270 + {
271 + name: "사망률(%)",
272 + data: (function() {
273 + // generate an array of random data
274 + var data = [],
275 + time = new Date().getTime(),
276 + i;
277 +
278 + for (i = -19; i <= 0; i += 1) {
279 + data.push({
280 + x: time + i * 3000,
281 + y: 0
282 + });
283 + }
284 + return data;
285 + })()
286 + }
287 + ]
288 + });
289 +
290 + Highcharts.chart("container4", {
291 + chart: {
292 + type: "spline",
293 + animation: Highcharts.svg, // don't animate in old IE
294 + marginRight: 10,
295 + events: {
296 + load: function() {
297 + // set up the updating of the chart each second
298 + var series = this.series[0];
299 + setInterval(function() {
300 + var x = new Date().getTime(), // 현재 시간
301 + y = Math.random(); //
302 + series.addPoint([x, y], true, true);
303 + }, 3000); //1000=1초
304 + }
305 + }
306 + },
307 +
308 + time: {
309 + useUTC: false
310 + },
311 +
312 + title: {
313 + text: "실시간 사망률"
314 + },
315 + xAxis: {
316 + type: "datetime",
317 + tickPixelInterval: 150
318 + },
319 + yAxis: {
320 + title: {
321 + text: "Value"
322 + },
323 + plotLines: [
324 + {
325 + value: 0,
326 + width: 1,
327 + color: "#808080"
328 + }
329 + ]
330 + },
331 + tooltip: {
332 + headerFormat: "<b>{series.name}</b><br/>",
333 + pointFormat: "{point.x:%Y-%m-%d %H:%M:%S}<br/>{point.y:.2f}"
334 + },
335 + legend: {
336 + //enabled: false
337 + layout: "vertical",
338 + align: "left",
339 + verticalAlign: "top",
340 + x: 120,
341 + y: 70,
342 + floating: true,
343 + borderWidth: 1,
344 + backgroundColor:
345 + (Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||
346 + "#FFFFFF"
347 + },
348 + exporting: {
349 + enabled: false
350 + },
351 + series: [
352 + {
353 + name: "사망률(%)",
354 + data: (function() {
355 + // generate an array of random data
356 + var data = [],
357 + time = new Date().getTime(),
358 + i;
359 +
360 + for (i = -19; i <= 0; i += 1) {
361 + data.push({
362 + x: time + i * 3000,
363 + y: 0
364 + });
365 + }
366 + return data;
367 + })()
368 + }
369 + ]
370 + });
371 +
372 + </script>
10 </body> 373 </body>
11 </html> 374 </html>
......