박찬수

folder commit

1 +# 즐겨찾는 팀을 기반으로 한 축구경기 추천 챗봇
2 +
3 +<!--Table of Contents-->
4 +## Table of Contents
5 +1. About the Project
6 +2. Getting Started (Installation)
7 +3. Usage
8 +4. Roadmap
9 +5. Contributing
10 +6. License
11 +7. Contact
12 +
13 +<p align="right">(<a href="#top">back to top</a>)</p>
14 +
15 +<!--About The Project-->
16 +## About The Project
17 +- 본 프로젝트에서는 사용자가 응원하는 축구팀을 즐겨찾기로 추가하여 챗봇과의 대화를 통해 축구경기에 대한 정보를 얻을 수 있게 서비스를 제공합니다.
18 +
19 +### Built With
20 +- [Node.js](https://nodejs.org/ko/)
21 +
22 +<p align="right">(<a href="#top">back to top</a>)</p>
23 +
24 +<!--Getting Started (Installation)-->
25 +## Getting Started
26 +
27 +### Prerequisites
28 +- npm
29 +```
30 +npm install
31 +```
32 +
33 +### Installation
34 +- Messaging API
35 +1. Get a free API Key at <https://developers.line.biz/en/services/messaging-api/>
36 +2. Clone the repo
37 +```
38 +git clone http://khuhub.khu.ac.kr/2018102191/enjoy_soccer.git
39 +```
40 +3.Install NPM packages
41 +```
42 +npm install
43 +```
44 +<p align="right">(<a href="#top">back to top</a>)</p>
45 +
46 +<!--Usage-->
47 +## Usage
48 +<p align="right">(<a href="#top">back to top</a>)</p>
49 +
50 +<!--Roadmap-->
51 +## Roadmap
52 +
53 +<p align="right">(<a href="#top">back to top</a>)</p>
54 +
55 +<!--Contributing-->
56 +## Contributing
57 +1. Fork the Project
58 +2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
59 +3. Commit your Changes (git commit -m 'Add some AmazingFeature')
60 +4. Push to the Branch (git push origin feature/AmazingFeature)
61 +5. Open a Pull Request
62 +
63 +<p align="right">(<a href="#top">back to top</a>)</p>
64 +
65 +<!--License-->
66 +## License
67 +
68 +<p align="right">(<a href="#top">back to top</a>)</p>
69 +
70 +<!--Contact-->
71 +## Contact
72 +- 박찬수 : suplife0@khu.ac.kr
73 +- 백지원 : wldnjsl2001@khu.ac.kr
74 +- 차가민 : gmcha0323@khu.ac.kr
75 +- Project Link : http://khuhub.khu.ac.kr/2018102191/enjoy_soccer
76 +
77 +<p align="right">(<a href="#top">back to top</a>)</p>
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "name": "reply",
3 + "version": "1.0.0",
4 + "lockfileVersion": 2,
5 + "requires": true,
6 + "packages": {
7 + "": {
8 + "name": "reply",
9 + "version": "1.0.0",
10 + "license": "ISC",
11 + "dependencies": {
12 + "body-parser": "^1.19.0",
13 + "express": "^4.17.1",
14 + "request": "^2.88.2"
15 + }
16 + },
17 + "node_modules/accepts": {
18 + "version": "1.3.7",
19 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
20 + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
21 + "dependencies": {
22 + "mime-types": "~2.1.24",
23 + "negotiator": "0.6.2"
24 + },
25 + "engines": {
26 + "node": ">= 0.6"
27 + }
28 + },
29 + "node_modules/ajv": {
30 + "version": "6.12.2",
31 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
32 + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
33 + "dependencies": {
34 + "fast-deep-equal": "^3.1.1",
35 + "fast-json-stable-stringify": "^2.0.0",
36 + "json-schema-traverse": "^0.4.1",
37 + "uri-js": "^4.2.2"
38 + }
39 + },
40 + "node_modules/array-flatten": {
41 + "version": "1.1.1",
42 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
43 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
44 + },
45 + "node_modules/asn1": {
46 + "version": "0.2.4",
47 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
48 + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
49 + "dependencies": {
50 + "safer-buffer": "~2.1.0"
51 + }
52 + },
53 + "node_modules/assert-plus": {
54 + "version": "1.0.0",
55 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
56 + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
57 + "engines": {
58 + "node": ">=0.8"
59 + }
60 + },
61 + "node_modules/asynckit": {
62 + "version": "0.4.0",
63 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
64 + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
65 + },
66 + "node_modules/aws-sign2": {
67 + "version": "0.7.0",
68 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
69 + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
70 + "engines": {
71 + "node": "*"
72 + }
73 + },
74 + "node_modules/aws4": {
75 + "version": "1.9.1",
76 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
77 + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
78 + },
79 + "node_modules/bcrypt-pbkdf": {
80 + "version": "1.0.2",
81 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
82 + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
83 + "dependencies": {
84 + "tweetnacl": "^0.14.3"
85 + }
86 + },
87 + "node_modules/body-parser": {
88 + "version": "1.19.0",
89 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
90 + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
91 + "dependencies": {
92 + "bytes": "3.1.0",
93 + "content-type": "~1.0.4",
94 + "debug": "2.6.9",
95 + "depd": "~1.1.2",
96 + "http-errors": "1.7.2",
97 + "iconv-lite": "0.4.24",
98 + "on-finished": "~2.3.0",
99 + "qs": "6.7.0",
100 + "raw-body": "2.4.0",
101 + "type-is": "~1.6.17"
102 + },
103 + "engines": {
104 + "node": ">= 0.8"
105 + }
106 + },
107 + "node_modules/bytes": {
108 + "version": "3.1.0",
109 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
110 + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
111 + "engines": {
112 + "node": ">= 0.8"
113 + }
114 + },
115 + "node_modules/caseless": {
116 + "version": "0.12.0",
117 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
118 + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
119 + },
120 + "node_modules/combined-stream": {
121 + "version": "1.0.8",
122 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
123 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
124 + "dependencies": {
125 + "delayed-stream": "~1.0.0"
126 + },
127 + "engines": {
128 + "node": ">= 0.8"
129 + }
130 + },
131 + "node_modules/content-disposition": {
132 + "version": "0.5.3",
133 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
134 + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
135 + "dependencies": {
136 + "safe-buffer": "5.1.2"
137 + },
138 + "engines": {
139 + "node": ">= 0.6"
140 + }
141 + },
142 + "node_modules/content-type": {
143 + "version": "1.0.4",
144 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
145 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
146 + "engines": {
147 + "node": ">= 0.6"
148 + }
149 + },
150 + "node_modules/cookie": {
151 + "version": "0.4.0",
152 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
153 + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
154 + "engines": {
155 + "node": ">= 0.6"
156 + }
157 + },
158 + "node_modules/cookie-signature": {
159 + "version": "1.0.6",
160 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
161 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
162 + },
163 + "node_modules/core-util-is": {
164 + "version": "1.0.2",
165 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
166 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
167 + },
168 + "node_modules/dashdash": {
169 + "version": "1.14.1",
170 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
171 + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
172 + "dependencies": {
173 + "assert-plus": "^1.0.0"
174 + },
175 + "engines": {
176 + "node": ">=0.10"
177 + }
178 + },
179 + "node_modules/debug": {
180 + "version": "2.6.9",
181 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
182 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
183 + "dependencies": {
184 + "ms": "2.0.0"
185 + }
186 + },
187 + "node_modules/delayed-stream": {
188 + "version": "1.0.0",
189 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
190 + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
191 + "engines": {
192 + "node": ">=0.4.0"
193 + }
194 + },
195 + "node_modules/depd": {
196 + "version": "1.1.2",
197 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
198 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
199 + "engines": {
200 + "node": ">= 0.6"
201 + }
202 + },
203 + "node_modules/destroy": {
204 + "version": "1.0.4",
205 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
206 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
207 + },
208 + "node_modules/ecc-jsbn": {
209 + "version": "0.1.2",
210 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
211 + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
212 + "dependencies": {
213 + "jsbn": "~0.1.0",
214 + "safer-buffer": "^2.1.0"
215 + }
216 + },
217 + "node_modules/ee-first": {
218 + "version": "1.1.1",
219 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
220 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
221 + },
222 + "node_modules/encodeurl": {
223 + "version": "1.0.2",
224 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
225 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
226 + "engines": {
227 + "node": ">= 0.8"
228 + }
229 + },
230 + "node_modules/escape-html": {
231 + "version": "1.0.3",
232 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
233 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
234 + },
235 + "node_modules/etag": {
236 + "version": "1.8.1",
237 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
238 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
239 + "engines": {
240 + "node": ">= 0.6"
241 + }
242 + },
243 + "node_modules/express": {
244 + "version": "4.17.1",
245 + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
246 + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
247 + "dependencies": {
248 + "accepts": "~1.3.7",
249 + "array-flatten": "1.1.1",
250 + "body-parser": "1.19.0",
251 + "content-disposition": "0.5.3",
252 + "content-type": "~1.0.4",
253 + "cookie": "0.4.0",
254 + "cookie-signature": "1.0.6",
255 + "debug": "2.6.9",
256 + "depd": "~1.1.2",
257 + "encodeurl": "~1.0.2",
258 + "escape-html": "~1.0.3",
259 + "etag": "~1.8.1",
260 + "finalhandler": "~1.1.2",
261 + "fresh": "0.5.2",
262 + "merge-descriptors": "1.0.1",
263 + "methods": "~1.1.2",
264 + "on-finished": "~2.3.0",
265 + "parseurl": "~1.3.3",
266 + "path-to-regexp": "0.1.7",
267 + "proxy-addr": "~2.0.5",
268 + "qs": "6.7.0",
269 + "range-parser": "~1.2.1",
270 + "safe-buffer": "5.1.2",
271 + "send": "0.17.1",
272 + "serve-static": "1.14.1",
273 + "setprototypeof": "1.1.1",
274 + "statuses": "~1.5.0",
275 + "type-is": "~1.6.18",
276 + "utils-merge": "1.0.1",
277 + "vary": "~1.1.2"
278 + },
279 + "engines": {
280 + "node": ">= 0.10.0"
281 + }
282 + },
283 + "node_modules/extend": {
284 + "version": "3.0.2",
285 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
286 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
287 + },
288 + "node_modules/extsprintf": {
289 + "version": "1.3.0",
290 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
291 + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
292 + "engines": [
293 + "node >=0.6.0"
294 + ]
295 + },
296 + "node_modules/fast-deep-equal": {
297 + "version": "3.1.1",
298 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
299 + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
300 + },
301 + "node_modules/fast-json-stable-stringify": {
302 + "version": "2.1.0",
303 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
304 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
305 + },
306 + "node_modules/finalhandler": {
307 + "version": "1.1.2",
308 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
309 + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
310 + "dependencies": {
311 + "debug": "2.6.9",
312 + "encodeurl": "~1.0.2",
313 + "escape-html": "~1.0.3",
314 + "on-finished": "~2.3.0",
315 + "parseurl": "~1.3.3",
316 + "statuses": "~1.5.0",
317 + "unpipe": "~1.0.0"
318 + },
319 + "engines": {
320 + "node": ">= 0.8"
321 + }
322 + },
323 + "node_modules/forever-agent": {
324 + "version": "0.6.1",
325 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
326 + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
327 + "engines": {
328 + "node": "*"
329 + }
330 + },
331 + "node_modules/form-data": {
332 + "version": "2.3.3",
333 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
334 + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
335 + "dependencies": {
336 + "asynckit": "^0.4.0",
337 + "combined-stream": "^1.0.6",
338 + "mime-types": "^2.1.12"
339 + },
340 + "engines": {
341 + "node": ">= 0.12"
342 + }
343 + },
344 + "node_modules/forwarded": {
345 + "version": "0.1.2",
346 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
347 + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
348 + "engines": {
349 + "node": ">= 0.6"
350 + }
351 + },
352 + "node_modules/fresh": {
353 + "version": "0.5.2",
354 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
355 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
356 + "engines": {
357 + "node": ">= 0.6"
358 + }
359 + },
360 + "node_modules/getpass": {
361 + "version": "0.1.7",
362 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
363 + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
364 + "dependencies": {
365 + "assert-plus": "^1.0.0"
366 + }
367 + },
368 + "node_modules/har-schema": {
369 + "version": "2.0.0",
370 + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
371 + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
372 + "engines": {
373 + "node": ">=4"
374 + }
375 + },
376 + "node_modules/har-validator": {
377 + "version": "5.1.3",
378 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
379 + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
380 + "deprecated": "this library is no longer supported",
381 + "dependencies": {
382 + "ajv": "^6.5.5",
383 + "har-schema": "^2.0.0"
384 + },
385 + "engines": {
386 + "node": ">=6"
387 + }
388 + },
389 + "node_modules/http-errors": {
390 + "version": "1.7.2",
391 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
392 + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
393 + "dependencies": {
394 + "depd": "~1.1.2",
395 + "inherits": "2.0.3",
396 + "setprototypeof": "1.1.1",
397 + "statuses": ">= 1.5.0 < 2",
398 + "toidentifier": "1.0.0"
399 + },
400 + "engines": {
401 + "node": ">= 0.6"
402 + }
403 + },
404 + "node_modules/http-signature": {
405 + "version": "1.2.0",
406 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
407 + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
408 + "dependencies": {
409 + "assert-plus": "^1.0.0",
410 + "jsprim": "^1.2.2",
411 + "sshpk": "^1.7.0"
412 + },
413 + "engines": {
414 + "node": ">=0.8",
415 + "npm": ">=1.3.7"
416 + }
417 + },
418 + "node_modules/iconv-lite": {
419 + "version": "0.4.24",
420 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
421 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
422 + "dependencies": {
423 + "safer-buffer": ">= 2.1.2 < 3"
424 + },
425 + "engines": {
426 + "node": ">=0.10.0"
427 + }
428 + },
429 + "node_modules/inherits": {
430 + "version": "2.0.3",
431 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
432 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
433 + },
434 + "node_modules/ipaddr.js": {
435 + "version": "1.9.1",
436 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
437 + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
438 + "engines": {
439 + "node": ">= 0.10"
440 + }
441 + },
442 + "node_modules/is-typedarray": {
443 + "version": "1.0.0",
444 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
445 + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
446 + },
447 + "node_modules/isstream": {
448 + "version": "0.1.2",
449 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
450 + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
451 + },
452 + "node_modules/jsbn": {
453 + "version": "0.1.1",
454 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
455 + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
456 + },
457 + "node_modules/json-schema": {
458 + "version": "0.2.3",
459 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
460 + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
461 + },
462 + "node_modules/json-schema-traverse": {
463 + "version": "0.4.1",
464 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
465 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
466 + },
467 + "node_modules/json-stringify-safe": {
468 + "version": "5.0.1",
469 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
470 + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
471 + },
472 + "node_modules/jsprim": {
473 + "version": "1.4.1",
474 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
475 + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
476 + "engines": [
477 + "node >=0.6.0"
478 + ],
479 + "dependencies": {
480 + "assert-plus": "1.0.0",
481 + "extsprintf": "1.3.0",
482 + "json-schema": "0.2.3",
483 + "verror": "1.10.0"
484 + }
485 + },
486 + "node_modules/media-typer": {
487 + "version": "0.3.0",
488 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
489 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
490 + "engines": {
491 + "node": ">= 0.6"
492 + }
493 + },
494 + "node_modules/merge-descriptors": {
495 + "version": "1.0.1",
496 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
497 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
498 + },
499 + "node_modules/methods": {
500 + "version": "1.1.2",
501 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
502 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
503 + "engines": {
504 + "node": ">= 0.6"
505 + }
506 + },
507 + "node_modules/mime": {
508 + "version": "1.6.0",
509 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
510 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
511 + "bin": {
512 + "mime": "cli.js"
513 + },
514 + "engines": {
515 + "node": ">=4"
516 + }
517 + },
518 + "node_modules/mime-db": {
519 + "version": "1.44.0",
520 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
521 + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
522 + "engines": {
523 + "node": ">= 0.6"
524 + }
525 + },
526 + "node_modules/mime-types": {
527 + "version": "2.1.27",
528 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
529 + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
530 + "dependencies": {
531 + "mime-db": "1.44.0"
532 + },
533 + "engines": {
534 + "node": ">= 0.6"
535 + }
536 + },
537 + "node_modules/ms": {
538 + "version": "2.0.0",
539 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
540 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
541 + },
542 + "node_modules/negotiator": {
543 + "version": "0.6.2",
544 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
545 + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
546 + "engines": {
547 + "node": ">= 0.6"
548 + }
549 + },
550 + "node_modules/oauth-sign": {
551 + "version": "0.9.0",
552 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
553 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
554 + "engines": {
555 + "node": "*"
556 + }
557 + },
558 + "node_modules/on-finished": {
559 + "version": "2.3.0",
560 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
561 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
562 + "dependencies": {
563 + "ee-first": "1.1.1"
564 + },
565 + "engines": {
566 + "node": ">= 0.8"
567 + }
568 + },
569 + "node_modules/parseurl": {
570 + "version": "1.3.3",
571 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
572 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
573 + "engines": {
574 + "node": ">= 0.8"
575 + }
576 + },
577 + "node_modules/path-to-regexp": {
578 + "version": "0.1.7",
579 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
580 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
581 + },
582 + "node_modules/performance-now": {
583 + "version": "2.1.0",
584 + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
585 + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
586 + },
587 + "node_modules/proxy-addr": {
588 + "version": "2.0.6",
589 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
590 + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
591 + "dependencies": {
592 + "forwarded": "~0.1.2",
593 + "ipaddr.js": "1.9.1"
594 + },
595 + "engines": {
596 + "node": ">= 0.10"
597 + }
598 + },
599 + "node_modules/psl": {
600 + "version": "1.8.0",
601 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
602 + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
603 + },
604 + "node_modules/punycode": {
605 + "version": "2.1.1",
606 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
607 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
608 + "engines": {
609 + "node": ">=6"
610 + }
611 + },
612 + "node_modules/qs": {
613 + "version": "6.7.0",
614 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
615 + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
616 + "engines": {
617 + "node": ">=0.6"
618 + }
619 + },
620 + "node_modules/range-parser": {
621 + "version": "1.2.1",
622 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
623 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
624 + "engines": {
625 + "node": ">= 0.6"
626 + }
627 + },
628 + "node_modules/raw-body": {
629 + "version": "2.4.0",
630 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
631 + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
632 + "dependencies": {
633 + "bytes": "3.1.0",
634 + "http-errors": "1.7.2",
635 + "iconv-lite": "0.4.24",
636 + "unpipe": "1.0.0"
637 + },
638 + "engines": {
639 + "node": ">= 0.8"
640 + }
641 + },
642 + "node_modules/request": {
643 + "version": "2.88.2",
644 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
645 + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
646 + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
647 + "dependencies": {
648 + "aws-sign2": "~0.7.0",
649 + "aws4": "^1.8.0",
650 + "caseless": "~0.12.0",
651 + "combined-stream": "~1.0.6",
652 + "extend": "~3.0.2",
653 + "forever-agent": "~0.6.1",
654 + "form-data": "~2.3.2",
655 + "har-validator": "~5.1.3",
656 + "http-signature": "~1.2.0",
657 + "is-typedarray": "~1.0.0",
658 + "isstream": "~0.1.2",
659 + "json-stringify-safe": "~5.0.1",
660 + "mime-types": "~2.1.19",
661 + "oauth-sign": "~0.9.0",
662 + "performance-now": "^2.1.0",
663 + "qs": "~6.5.2",
664 + "safe-buffer": "^5.1.2",
665 + "tough-cookie": "~2.5.0",
666 + "tunnel-agent": "^0.6.0",
667 + "uuid": "^3.3.2"
668 + },
669 + "engines": {
670 + "node": ">= 6"
671 + }
672 + },
673 + "node_modules/request/node_modules/qs": {
674 + "version": "6.5.2",
675 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
676 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
677 + "engines": {
678 + "node": ">=0.6"
679 + }
680 + },
681 + "node_modules/safe-buffer": {
682 + "version": "5.1.2",
683 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
684 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
685 + },
686 + "node_modules/safer-buffer": {
687 + "version": "2.1.2",
688 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
689 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
690 + },
691 + "node_modules/send": {
692 + "version": "0.17.1",
693 + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
694 + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
695 + "dependencies": {
696 + "debug": "2.6.9",
697 + "depd": "~1.1.2",
698 + "destroy": "~1.0.4",
699 + "encodeurl": "~1.0.2",
700 + "escape-html": "~1.0.3",
701 + "etag": "~1.8.1",
702 + "fresh": "0.5.2",
703 + "http-errors": "~1.7.2",
704 + "mime": "1.6.0",
705 + "ms": "2.1.1",
706 + "on-finished": "~2.3.0",
707 + "range-parser": "~1.2.1",
708 + "statuses": "~1.5.0"
709 + },
710 + "engines": {
711 + "node": ">= 0.8.0"
712 + }
713 + },
714 + "node_modules/send/node_modules/ms": {
715 + "version": "2.1.1",
716 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
717 + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
718 + },
719 + "node_modules/serve-static": {
720 + "version": "1.14.1",
721 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
722 + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
723 + "dependencies": {
724 + "encodeurl": "~1.0.2",
725 + "escape-html": "~1.0.3",
726 + "parseurl": "~1.3.3",
727 + "send": "0.17.1"
728 + },
729 + "engines": {
730 + "node": ">= 0.8.0"
731 + }
732 + },
733 + "node_modules/setprototypeof": {
734 + "version": "1.1.1",
735 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
736 + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
737 + },
738 + "node_modules/sshpk": {
739 + "version": "1.16.1",
740 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
741 + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
742 + "dependencies": {
743 + "asn1": "~0.2.3",
744 + "assert-plus": "^1.0.0",
745 + "bcrypt-pbkdf": "^1.0.0",
746 + "dashdash": "^1.12.0",
747 + "ecc-jsbn": "~0.1.1",
748 + "getpass": "^0.1.1",
749 + "jsbn": "~0.1.0",
750 + "safer-buffer": "^2.0.2",
751 + "tweetnacl": "~0.14.0"
752 + },
753 + "bin": {
754 + "sshpk-conv": "bin/sshpk-conv",
755 + "sshpk-sign": "bin/sshpk-sign",
756 + "sshpk-verify": "bin/sshpk-verify"
757 + },
758 + "engines": {
759 + "node": ">=0.10.0"
760 + }
761 + },
762 + "node_modules/statuses": {
763 + "version": "1.5.0",
764 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
765 + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
766 + "engines": {
767 + "node": ">= 0.6"
768 + }
769 + },
770 + "node_modules/toidentifier": {
771 + "version": "1.0.0",
772 + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
773 + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
774 + "engines": {
775 + "node": ">=0.6"
776 + }
777 + },
778 + "node_modules/tough-cookie": {
779 + "version": "2.5.0",
780 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
781 + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
782 + "dependencies": {
783 + "psl": "^1.1.28",
784 + "punycode": "^2.1.1"
785 + },
786 + "engines": {
787 + "node": ">=0.8"
788 + }
789 + },
790 + "node_modules/tunnel-agent": {
791 + "version": "0.6.0",
792 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
793 + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
794 + "dependencies": {
795 + "safe-buffer": "^5.0.1"
796 + },
797 + "engines": {
798 + "node": "*"
799 + }
800 + },
801 + "node_modules/tweetnacl": {
802 + "version": "0.14.5",
803 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
804 + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
805 + },
806 + "node_modules/type-is": {
807 + "version": "1.6.18",
808 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
809 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
810 + "dependencies": {
811 + "media-typer": "0.3.0",
812 + "mime-types": "~2.1.24"
813 + },
814 + "engines": {
815 + "node": ">= 0.6"
816 + }
817 + },
818 + "node_modules/unpipe": {
819 + "version": "1.0.0",
820 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
821 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
822 + "engines": {
823 + "node": ">= 0.8"
824 + }
825 + },
826 + "node_modules/uri-js": {
827 + "version": "4.2.2",
828 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
829 + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
830 + "dependencies": {
831 + "punycode": "^2.1.0"
832 + }
833 + },
834 + "node_modules/utils-merge": {
835 + "version": "1.0.1",
836 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
837 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
838 + "engines": {
839 + "node": ">= 0.4.0"
840 + }
841 + },
842 + "node_modules/uuid": {
843 + "version": "3.4.0",
844 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
845 + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
846 + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
847 + "bin": {
848 + "uuid": "bin/uuid"
849 + }
850 + },
851 + "node_modules/vary": {
852 + "version": "1.1.2",
853 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
854 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
855 + "engines": {
856 + "node": ">= 0.8"
857 + }
858 + },
859 + "node_modules/verror": {
860 + "version": "1.10.0",
861 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
862 + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
863 + "engines": [
864 + "node >=0.6.0"
865 + ],
866 + "dependencies": {
867 + "assert-plus": "^1.0.0",
868 + "core-util-is": "1.0.2",
869 + "extsprintf": "^1.2.0"
870 + }
871 + }
872 + },
873 + "dependencies": {
874 + "accepts": {
875 + "version": "1.3.7",
876 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
877 + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
878 + "requires": {
879 + "mime-types": "~2.1.24",
880 + "negotiator": "0.6.2"
881 + }
882 + },
883 + "ajv": {
884 + "version": "6.12.2",
885 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
886 + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
887 + "requires": {
888 + "fast-deep-equal": "^3.1.1",
889 + "fast-json-stable-stringify": "^2.0.0",
890 + "json-schema-traverse": "^0.4.1",
891 + "uri-js": "^4.2.2"
892 + }
893 + },
894 + "array-flatten": {
895 + "version": "1.1.1",
896 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
897 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
898 + },
899 + "asn1": {
900 + "version": "0.2.4",
901 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
902 + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
903 + "requires": {
904 + "safer-buffer": "~2.1.0"
905 + }
906 + },
907 + "assert-plus": {
908 + "version": "1.0.0",
909 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
910 + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
911 + },
912 + "asynckit": {
913 + "version": "0.4.0",
914 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
915 + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
916 + },
917 + "aws-sign2": {
918 + "version": "0.7.0",
919 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
920 + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
921 + },
922 + "aws4": {
923 + "version": "1.9.1",
924 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
925 + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
926 + },
927 + "bcrypt-pbkdf": {
928 + "version": "1.0.2",
929 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
930 + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
931 + "requires": {
932 + "tweetnacl": "^0.14.3"
933 + }
934 + },
935 + "body-parser": {
936 + "version": "1.19.0",
937 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
938 + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
939 + "requires": {
940 + "bytes": "3.1.0",
941 + "content-type": "~1.0.4",
942 + "debug": "2.6.9",
943 + "depd": "~1.1.2",
944 + "http-errors": "1.7.2",
945 + "iconv-lite": "0.4.24",
946 + "on-finished": "~2.3.0",
947 + "qs": "6.7.0",
948 + "raw-body": "2.4.0",
949 + "type-is": "~1.6.17"
950 + }
951 + },
952 + "bytes": {
953 + "version": "3.1.0",
954 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
955 + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
956 + },
957 + "caseless": {
958 + "version": "0.12.0",
959 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
960 + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
961 + },
962 + "combined-stream": {
963 + "version": "1.0.8",
964 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
965 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
966 + "requires": {
967 + "delayed-stream": "~1.0.0"
968 + }
969 + },
970 + "content-disposition": {
971 + "version": "0.5.3",
972 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
973 + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
974 + "requires": {
975 + "safe-buffer": "5.1.2"
976 + }
977 + },
978 + "content-type": {
979 + "version": "1.0.4",
980 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
981 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
982 + },
983 + "cookie": {
984 + "version": "0.4.0",
985 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
986 + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
987 + },
988 + "cookie-signature": {
989 + "version": "1.0.6",
990 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
991 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
992 + },
993 + "core-util-is": {
994 + "version": "1.0.2",
995 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
996 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
997 + },
998 + "dashdash": {
999 + "version": "1.14.1",
1000 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
1001 + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
1002 + "requires": {
1003 + "assert-plus": "^1.0.0"
1004 + }
1005 + },
1006 + "debug": {
1007 + "version": "2.6.9",
1008 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1009 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1010 + "requires": {
1011 + "ms": "2.0.0"
1012 + }
1013 + },
1014 + "delayed-stream": {
1015 + "version": "1.0.0",
1016 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
1017 + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
1018 + },
1019 + "depd": {
1020 + "version": "1.1.2",
1021 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
1022 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
1023 + },
1024 + "destroy": {
1025 + "version": "1.0.4",
1026 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
1027 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
1028 + },
1029 + "ecc-jsbn": {
1030 + "version": "0.1.2",
1031 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
1032 + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
1033 + "requires": {
1034 + "jsbn": "~0.1.0",
1035 + "safer-buffer": "^2.1.0"
1036 + }
1037 + },
1038 + "ee-first": {
1039 + "version": "1.1.1",
1040 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
1041 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
1042 + },
1043 + "encodeurl": {
1044 + "version": "1.0.2",
1045 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
1046 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
1047 + },
1048 + "escape-html": {
1049 + "version": "1.0.3",
1050 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
1051 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
1052 + },
1053 + "etag": {
1054 + "version": "1.8.1",
1055 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
1056 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
1057 + },
1058 + "express": {
1059 + "version": "4.17.1",
1060 + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
1061 + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
1062 + "requires": {
1063 + "accepts": "~1.3.7",
1064 + "array-flatten": "1.1.1",
1065 + "body-parser": "1.19.0",
1066 + "content-disposition": "0.5.3",
1067 + "content-type": "~1.0.4",
1068 + "cookie": "0.4.0",
1069 + "cookie-signature": "1.0.6",
1070 + "debug": "2.6.9",
1071 + "depd": "~1.1.2",
1072 + "encodeurl": "~1.0.2",
1073 + "escape-html": "~1.0.3",
1074 + "etag": "~1.8.1",
1075 + "finalhandler": "~1.1.2",
1076 + "fresh": "0.5.2",
1077 + "merge-descriptors": "1.0.1",
1078 + "methods": "~1.1.2",
1079 + "on-finished": "~2.3.0",
1080 + "parseurl": "~1.3.3",
1081 + "path-to-regexp": "0.1.7",
1082 + "proxy-addr": "~2.0.5",
1083 + "qs": "6.7.0",
1084 + "range-parser": "~1.2.1",
1085 + "safe-buffer": "5.1.2",
1086 + "send": "0.17.1",
1087 + "serve-static": "1.14.1",
1088 + "setprototypeof": "1.1.1",
1089 + "statuses": "~1.5.0",
1090 + "type-is": "~1.6.18",
1091 + "utils-merge": "1.0.1",
1092 + "vary": "~1.1.2"
1093 + }
1094 + },
1095 + "extend": {
1096 + "version": "3.0.2",
1097 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
1098 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
1099 + },
1100 + "extsprintf": {
1101 + "version": "1.3.0",
1102 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
1103 + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
1104 + },
1105 + "fast-deep-equal": {
1106 + "version": "3.1.1",
1107 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
1108 + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
1109 + },
1110 + "fast-json-stable-stringify": {
1111 + "version": "2.1.0",
1112 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1113 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
1114 + },
1115 + "finalhandler": {
1116 + "version": "1.1.2",
1117 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
1118 + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
1119 + "requires": {
1120 + "debug": "2.6.9",
1121 + "encodeurl": "~1.0.2",
1122 + "escape-html": "~1.0.3",
1123 + "on-finished": "~2.3.0",
1124 + "parseurl": "~1.3.3",
1125 + "statuses": "~1.5.0",
1126 + "unpipe": "~1.0.0"
1127 + }
1128 + },
1129 + "forever-agent": {
1130 + "version": "0.6.1",
1131 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
1132 + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
1133 + },
1134 + "form-data": {
1135 + "version": "2.3.3",
1136 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
1137 + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
1138 + "requires": {
1139 + "asynckit": "^0.4.0",
1140 + "combined-stream": "^1.0.6",
1141 + "mime-types": "^2.1.12"
1142 + }
1143 + },
1144 + "forwarded": {
1145 + "version": "0.1.2",
1146 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
1147 + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
1148 + },
1149 + "fresh": {
1150 + "version": "0.5.2",
1151 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
1152 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
1153 + },
1154 + "getpass": {
1155 + "version": "0.1.7",
1156 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
1157 + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
1158 + "requires": {
1159 + "assert-plus": "^1.0.0"
1160 + }
1161 + },
1162 + "har-schema": {
1163 + "version": "2.0.0",
1164 + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
1165 + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
1166 + },
1167 + "har-validator": {
1168 + "version": "5.1.3",
1169 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
1170 + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
1171 + "requires": {
1172 + "ajv": "^6.5.5",
1173 + "har-schema": "^2.0.0"
1174 + }
1175 + },
1176 + "http-errors": {
1177 + "version": "1.7.2",
1178 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
1179 + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
1180 + "requires": {
1181 + "depd": "~1.1.2",
1182 + "inherits": "2.0.3",
1183 + "setprototypeof": "1.1.1",
1184 + "statuses": ">= 1.5.0 < 2",
1185 + "toidentifier": "1.0.0"
1186 + }
1187 + },
1188 + "http-signature": {
1189 + "version": "1.2.0",
1190 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
1191 + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
1192 + "requires": {
1193 + "assert-plus": "^1.0.0",
1194 + "jsprim": "^1.2.2",
1195 + "sshpk": "^1.7.0"
1196 + }
1197 + },
1198 + "iconv-lite": {
1199 + "version": "0.4.24",
1200 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1201 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1202 + "requires": {
1203 + "safer-buffer": ">= 2.1.2 < 3"
1204 + }
1205 + },
1206 + "inherits": {
1207 + "version": "2.0.3",
1208 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1209 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
1210 + },
1211 + "ipaddr.js": {
1212 + "version": "1.9.1",
1213 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1214 + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
1215 + },
1216 + "is-typedarray": {
1217 + "version": "1.0.0",
1218 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
1219 + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
1220 + },
1221 + "isstream": {
1222 + "version": "0.1.2",
1223 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
1224 + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
1225 + },
1226 + "jsbn": {
1227 + "version": "0.1.1",
1228 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
1229 + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
1230 + },
1231 + "json-schema": {
1232 + "version": "0.2.3",
1233 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1234 + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
1235 + },
1236 + "json-schema-traverse": {
1237 + "version": "0.4.1",
1238 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1239 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
1240 + },
1241 + "json-stringify-safe": {
1242 + "version": "5.0.1",
1243 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1244 + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
1245 + },
1246 + "jsprim": {
1247 + "version": "1.4.1",
1248 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
1249 + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
1250 + "requires": {
1251 + "assert-plus": "1.0.0",
1252 + "extsprintf": "1.3.0",
1253 + "json-schema": "0.2.3",
1254 + "verror": "1.10.0"
1255 + }
1256 + },
1257 + "media-typer": {
1258 + "version": "0.3.0",
1259 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1260 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
1261 + },
1262 + "merge-descriptors": {
1263 + "version": "1.0.1",
1264 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1265 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
1266 + },
1267 + "methods": {
1268 + "version": "1.1.2",
1269 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1270 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
1271 + },
1272 + "mime": {
1273 + "version": "1.6.0",
1274 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1275 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
1276 + },
1277 + "mime-db": {
1278 + "version": "1.44.0",
1279 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
1280 + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
1281 + },
1282 + "mime-types": {
1283 + "version": "2.1.27",
1284 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
1285 + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
1286 + "requires": {
1287 + "mime-db": "1.44.0"
1288 + }
1289 + },
1290 + "ms": {
1291 + "version": "2.0.0",
1292 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1293 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1294 + },
1295 + "negotiator": {
1296 + "version": "0.6.2",
1297 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
1298 + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
1299 + },
1300 + "oauth-sign": {
1301 + "version": "0.9.0",
1302 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
1303 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
1304 + },
1305 + "on-finished": {
1306 + "version": "2.3.0",
1307 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
1308 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
1309 + "requires": {
1310 + "ee-first": "1.1.1"
1311 + }
1312 + },
1313 + "parseurl": {
1314 + "version": "1.3.3",
1315 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1316 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
1317 + },
1318 + "path-to-regexp": {
1319 + "version": "0.1.7",
1320 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1321 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
1322 + },
1323 + "performance-now": {
1324 + "version": "2.1.0",
1325 + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
1326 + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
1327 + },
1328 + "proxy-addr": {
1329 + "version": "2.0.6",
1330 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
1331 + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
1332 + "requires": {
1333 + "forwarded": "~0.1.2",
1334 + "ipaddr.js": "1.9.1"
1335 + }
1336 + },
1337 + "psl": {
1338 + "version": "1.8.0",
1339 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
1340 + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
1341 + },
1342 + "punycode": {
1343 + "version": "2.1.1",
1344 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1345 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
1346 + },
1347 + "qs": {
1348 + "version": "6.7.0",
1349 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
1350 + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
1351 + },
1352 + "range-parser": {
1353 + "version": "1.2.1",
1354 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1355 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1356 + },
1357 + "raw-body": {
1358 + "version": "2.4.0",
1359 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
1360 + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
1361 + "requires": {
1362 + "bytes": "3.1.0",
1363 + "http-errors": "1.7.2",
1364 + "iconv-lite": "0.4.24",
1365 + "unpipe": "1.0.0"
1366 + }
1367 + },
1368 + "request": {
1369 + "version": "2.88.2",
1370 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
1371 + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
1372 + "requires": {
1373 + "aws-sign2": "~0.7.0",
1374 + "aws4": "^1.8.0",
1375 + "caseless": "~0.12.0",
1376 + "combined-stream": "~1.0.6",
1377 + "extend": "~3.0.2",
1378 + "forever-agent": "~0.6.1",
1379 + "form-data": "~2.3.2",
1380 + "har-validator": "~5.1.3",
1381 + "http-signature": "~1.2.0",
1382 + "is-typedarray": "~1.0.0",
1383 + "isstream": "~0.1.2",
1384 + "json-stringify-safe": "~5.0.1",
1385 + "mime-types": "~2.1.19",
1386 + "oauth-sign": "~0.9.0",
1387 + "performance-now": "^2.1.0",
1388 + "qs": "~6.5.2",
1389 + "safe-buffer": "^5.1.2",
1390 + "tough-cookie": "~2.5.0",
1391 + "tunnel-agent": "^0.6.0",
1392 + "uuid": "^3.3.2"
1393 + },
1394 + "dependencies": {
1395 + "qs": {
1396 + "version": "6.5.2",
1397 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
1398 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
1399 + }
1400 + }
1401 + },
1402 + "safe-buffer": {
1403 + "version": "5.1.2",
1404 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1405 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1406 + },
1407 + "safer-buffer": {
1408 + "version": "2.1.2",
1409 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1410 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1411 + },
1412 + "send": {
1413 + "version": "0.17.1",
1414 + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
1415 + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
1416 + "requires": {
1417 + "debug": "2.6.9",
1418 + "depd": "~1.1.2",
1419 + "destroy": "~1.0.4",
1420 + "encodeurl": "~1.0.2",
1421 + "escape-html": "~1.0.3",
1422 + "etag": "~1.8.1",
1423 + "fresh": "0.5.2",
1424 + "http-errors": "~1.7.2",
1425 + "mime": "1.6.0",
1426 + "ms": "2.1.1",
1427 + "on-finished": "~2.3.0",
1428 + "range-parser": "~1.2.1",
1429 + "statuses": "~1.5.0"
1430 + },
1431 + "dependencies": {
1432 + "ms": {
1433 + "version": "2.1.1",
1434 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1435 + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
1436 + }
1437 + }
1438 + },
1439 + "serve-static": {
1440 + "version": "1.14.1",
1441 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
1442 + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
1443 + "requires": {
1444 + "encodeurl": "~1.0.2",
1445 + "escape-html": "~1.0.3",
1446 + "parseurl": "~1.3.3",
1447 + "send": "0.17.1"
1448 + }
1449 + },
1450 + "setprototypeof": {
1451 + "version": "1.1.1",
1452 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
1453 + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
1454 + },
1455 + "sshpk": {
1456 + "version": "1.16.1",
1457 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
1458 + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
1459 + "requires": {
1460 + "asn1": "~0.2.3",
1461 + "assert-plus": "^1.0.0",
1462 + "bcrypt-pbkdf": "^1.0.0",
1463 + "dashdash": "^1.12.0",
1464 + "ecc-jsbn": "~0.1.1",
1465 + "getpass": "^0.1.1",
1466 + "jsbn": "~0.1.0",
1467 + "safer-buffer": "^2.0.2",
1468 + "tweetnacl": "~0.14.0"
1469 + }
1470 + },
1471 + "statuses": {
1472 + "version": "1.5.0",
1473 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1474 + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
1475 + },
1476 + "toidentifier": {
1477 + "version": "1.0.0",
1478 + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
1479 + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
1480 + },
1481 + "tough-cookie": {
1482 + "version": "2.5.0",
1483 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
1484 + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
1485 + "requires": {
1486 + "psl": "^1.1.28",
1487 + "punycode": "^2.1.1"
1488 + }
1489 + },
1490 + "tunnel-agent": {
1491 + "version": "0.6.0",
1492 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1493 + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
1494 + "requires": {
1495 + "safe-buffer": "^5.0.1"
1496 + }
1497 + },
1498 + "tweetnacl": {
1499 + "version": "0.14.5",
1500 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
1501 + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
1502 + },
1503 + "type-is": {
1504 + "version": "1.6.18",
1505 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1506 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1507 + "requires": {
1508 + "media-typer": "0.3.0",
1509 + "mime-types": "~2.1.24"
1510 + }
1511 + },
1512 + "unpipe": {
1513 + "version": "1.0.0",
1514 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1515 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
1516 + },
1517 + "uri-js": {
1518 + "version": "4.2.2",
1519 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
1520 + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
1521 + "requires": {
1522 + "punycode": "^2.1.0"
1523 + }
1524 + },
1525 + "utils-merge": {
1526 + "version": "1.0.1",
1527 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1528 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
1529 + },
1530 + "uuid": {
1531 + "version": "3.4.0",
1532 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
1533 + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
1534 + },
1535 + "vary": {
1536 + "version": "1.1.2",
1537 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1538 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
1539 + },
1540 + "verror": {
1541 + "version": "1.10.0",
1542 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
1543 + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
1544 + "requires": {
1545 + "assert-plus": "^1.0.0",
1546 + "core-util-is": "1.0.2",
1547 + "extsprintf": "^1.2.0"
1548 + }
1549 + }
1550 + }
1551 +}
1 +{
2 + "name": "reply",
3 + "version": "1.0.0",
4 + "description": "",
5 + "main": "app.js",
6 + "scripts": {
7 + "test": "echo \"Error: no test specified\" && exit 1"
8 + },
9 + "author": "",
10 + "license": "ISC",
11 + "dependencies": {
12 + "body-parser": "^1.19.0",
13 + "express": "^4.17.1",
14 + "request": "^2.88.2"
15 + }
16 +}
1 +const request = require('request');
2 +const TARGET_URL = 'https://api.line.me/v2/bot/message/push'
3 +const MULTI_TARGET_URL = 'https://api.line.me/v2/bot/message/multicast'
4 +const BROAD_TARGET_URL = 'https://api.line.me/v2/bot/message/broadcast'
5 +const TOKEN = 'XOyIf8jsoQKq3b1zqxE4wawAoFU2Hz433AO3w8/ye+i6+2KrXpyfFwY0Dk/xhHQLPgtgPTiEP/m4IRW+SlVhdtzfH6c0Lfdw6nJ95QOugHfNWfviAmn5Uojh8LQJeAy21bvaNMCy11f+qgLSRnXmCgdB04t89/1O/w1cDnyilFU='
6 +const USER_ID = '사Uc4258407a7677769f74ba184ec036651'
7 +
8 +//Single User
9 +// request.post(
10 +// {
11 +// url: TARGET_URL,
12 +// headers: {
13 +// 'Authorization': `Bearer ${TOKEN}`
14 +// },
15 +// json: {
16 +// "to": `${USER_ID}`,
17 +// "messages":[
18 +// {
19 +// "type":"text",
20 +// "text":"Hello, user"
21 +// },
22 +// {
23 +// "type":"text",
24 +// "text":"May I help you?"
25 +// }
26 +// ]
27 +// }
28 +// },(error, response, body) => {
29 +// console.log(body)
30 +// });
31 +
32 +
33 +// Multicast User
34 +request.post(
35 + {
36 + url: MULTI_TARGET_URL,
37 + headers: {
38 + 'Authorization': `Bearer ${TOKEN}`
39 + },
40 + json: {
41 + "to": [`${USER_ID}`],
42 + "messages":[
43 + {
44 + "type":"text",
45 + "text":"Hello, user"
46 + },
47 + {
48 + "type":"text",
49 + "text":"May I help you?"
50 + }
51 + ]
52 + }
53 + },(error, response, body) => {
54 + console.log(body)
55 + });
56 +
57 +
58 +// Broadcast
59 + request.post(
60 + {
61 + url: BROAD_TARGET_URL,
62 + headers: {
63 + 'Authorization': `Bearer ${TOKEN}`
64 + },
65 + json: {
66 + "messages":[
67 + {
68 + "type":"text",
69 + "text":"Hello, user"
70 + },
71 + {
72 + "type":"text",
73 + "text":"May I help you?"
74 + }
75 + ]
76 + }
77 + },(error, response, body) => {
78 + console.log(body)
79 + });
...\ No newline at end of file ...\ No newline at end of file
1 +var express = require('express');
2 +const request = require('request');
3 +const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' // reply api
4 +const TOKEN = 'XOyIf8jsoQKq3b1zqxE4wawAoFU2Hz433AO3w8/ye+i6+2KrXpyfFwY0Dk/xhHQLPgtgPTiEP/m4IRW+SlVhdtzfH6c0Lfdw6nJ95QOugHfNWfviAmn5Uojh8LQJeAy21bvaNMCy11f+qgLSRnXmCgdB04t89/1O/w1cDnyilFU='
5 +const fs = require('fs');
6 +const path = require('path');
7 +const HTTPS = require('https');
8 +const domain = "2018102191.osschatbot2022.tk"
9 +const sslport = 23023;
10 +
11 +const bodyParser = require('body-parser');
12 +var app = express();
13 +app.use(bodyParser.json());
14 +app.post('/hook', function (req, res) {
15 +
16 + var eventObj = req.body.events[0];
17 + var source = eventObj.source;
18 + var message = eventObj.message;
19 +
20 + // request log
21 + console.log('======================', new Date() ,'======================');
22 + console.log('[request]', req.body);
23 + console.log('[request source] ', eventObj.source);
24 + console.log('[request message]', eventObj.message);
25 +
26 + request.post(
27 + {
28 + url: TARGET_URL,
29 + headers: {
30 + 'Authorization': `Bearer ${TOKEN}` // 인증정보 : channel token 값을 통해 인증.
31 + },
32 + json: {
33 + "replyToken":eventObj.replyToken, // reply token : 누구한테 보낼 것인지?를 판별하기 위해!
34 + "messages":[
35 + {
36 + "type":"text",
37 + "text":"Hello, user"
38 + },
39 + {
40 + "type":"text",
41 + "text":"May I help you?"
42 + }
43 + ]
44 + }
45 + },(error, response, body) => {
46 + console.log(body)
47 + });
48 +
49 +
50 + res.sendStatus(200);
51 +});
52 +
53 +try {
54 + const option = {
55 + ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'),
56 + key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(),
57 + cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(),
58 + };
59 +
60 + HTTPS.createServer(option, app).listen(sslport, () => {
61 + console.log(`[HTTPS] Server is started on port ${sslport}`);
62 + });
63 + } catch (error) {
64 + console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
65 + console.log(error);
66 + }
67 +
1 +// const request = require('request');
2 +// const TARGET_URL = 'https://api.line.me/v2/bot/message/push'
3 +// const MULTI_TARGET_URL = 'https://api.line.me/v2/bot/message/multicast'
4 +// const BROAD_TARGET_URL = 'https://api.line.me/v2/bot/message/broadcast'
5 +// const TOKEN = 'XOyIf8jsoQKq3b1zqxE4wawAoFU2Hz433AO3w8/ye+i6+2KrXpyfFwY0Dk/xhHQLPgtgPTiEP/m4IRW+SlVhdtzfH6c0Lfdw6nJ95QOugHfNWfviAmn5Uojh8LQJeAy21bvaNMCy11f+qgLSRnXmCgdB04t89/1O/w1cDnyilFU='
6 +// const USER_ID = '사Uc4258407a7677769f74ba184ec036651'
7 +
8 +// var express = require('express');
9 +// const request = require('request');
10 +// const fs = require('fs');
11 +// const path = require('path');
12 +// const HTTPS = require('https');
13 +// const domain = "2018102191.osschatbot2022.tk"
14 +// const sslport = 23023;
15 +
16 +// // Reply Script
17 +
18 +// const bodyParser = require('body-parser');
19 +// var app = express();
20 +// app.use(bodyParser.json());
21 +// app.post('/hook', function (req, res) {
22 +
23 +// var eventObj = req.body.events[0];
24 +// var source = eventObj.source;
25 +// var message = eventObj.message;
26 +
27 +// // request log
28 +// console.log('======================', new Date() ,'======================');
29 +// console.log('[request]', req.body);
30 +// console.log('[request source] ', eventObj.source);
31 +// console.log('[request message]', eventObj.message);
32 +
33 +// request.post(
34 +// {
35 +// url: TARGET_URL,
36 +// headers: {
37 +// 'Authorization': `Bearer ${TOKEN}` // 인증정보 : channel token 값을 통해 인증.
38 +// },
39 +// json: {
40 +// "replyToken":eventObj.replyToken, // reply token : 누구한테 보낼 것인지?를 판별하기 위해!
41 +// "messages":[
42 +// {
43 +// "type":"text",
44 +// "text":"Hello, user"
45 +// },
46 +// {
47 +// "type":"text",
48 +// "text":"May I help you?"
49 +// }
50 +// ]
51 +// }
52 +// },(error, response, body) => {
53 +// console.log(body)
54 +// });
55 +
56 +
57 +// res.sendStatus(200);
58 +// });
59 +
60 +// try {
61 +// const option = {
62 +// ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'),
63 +// key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(),
64 +// cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(),
65 +// };
66 +
67 +// HTTPS.createServer(option, app).listen(sslport, () => {
68 +// console.log(`[HTTPS] Server is started on port ${sslport}`);
69 +// });
70 +// } catch (error) {
71 +// console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
72 +// console.log(error);
73 +// }
74 +
75 +// // Push Script
76 +
77 +// function SinglePush()
78 +// {
79 +// request.post(
80 +// {
81 +// url: TARGET_URL,
82 +// headers: {
83 +// 'Authorization': `Bearer ${TOKEN}`
84 +// },
85 +// json: {
86 +// "to": `${USER_ID}`,
87 +// "messages":[
88 +// {
89 +// "type":"text",
90 +// "text":"Hello, user"
91 +// },
92 +// {
93 +// "type":"text",
94 +// "text":"May I help you?"
95 +// }
96 +// ]
97 +// }
98 +// },(error, response, body) => {
99 +// console.log(body)
100 +// });
101 +// }
102 +
103 +// function MultiPush()
104 +// {
105 +// request.post(
106 +// {
107 +// url: MULTI_TARGET_URL,
108 +// headers: {
109 +// 'Authorization': `Bearer ${TOKEN}`
110 +// },
111 +// json: {
112 +// "to": [`${USER_ID}`],
113 +// "messages":[
114 +// {
115 +// "type":"text",
116 +// "text":"Hello, user"
117 +// },
118 +// {
119 +// "type":"text",
120 +// "text":"May I help you?"
121 +// }
122 +// ]
123 +// }
124 +// },(error, response, body) => {
125 +// console.log(body)
126 +// });
127 +// }
128 +
129 +// function BroadCast()
130 +// {
131 +// request.post(
132 +// {
133 +// url: BROAD_TARGET_URL,
134 +// headers: {
135 +// 'Authorization': `Bearer ${TOKEN}`
136 +// },
137 +// json: {
138 +// "messages":[
139 +// {
140 +// "type":"text",
141 +// "text":"Hello, user"
142 +// },
143 +// {
144 +// "type":"text",
145 +// "text":"May I help you?"
146 +// }
147 +// ]
148 +// }
149 +// },(error, response, body) => {
150 +// console.log(body)
151 +// });
152 +// }
153 +
154 +// // Single User
155 +// // request.post(
156 +// // {
157 +// // url: TARGET_URL,
158 +// // headers: {
159 +// // 'Authorization': `Bearer ${TOKEN}`
160 +// // },
161 +// // json: {
162 +// // "to": `${USER_ID}`,
163 +// // "messages":[
164 +// // {
165 +// // "type":"text",
166 +// // "text":"Hello, user"
167 +// // },
168 +// // {
169 +// // "type":"text",
170 +// // "text":"May I help you?"
171 +// // }
172 +// // ]
173 +// // }
174 +// // },(error, response, body) => {
175 +// // console.log(body)
176 +// // });
177 +
178 +
179 +// // Multicast User
180 +// // request.post(
181 +// // {
182 +// // url: MULTI_TARGET_URL,
183 +// // headers: {
184 +// // 'Authorization': `Bearer ${TOKEN}`
185 +// // },
186 +// // json: {
187 +// // "to": [`${USER_ID}`],
188 +// // "messages":[
189 +// // {
190 +// // "type":"text",
191 +// // "text":"Hello, user"
192 +// // },
193 +// // {
194 +// // "type":"text",
195 +// // "text":"May I help you?"
196 +// // }
197 +// // ]
198 +// // }
199 +// // },(error, response, body) => {
200 +// // console.log(body)
201 +// // });
202 +
203 +
204 +// // Broadcast
205 +// // request.post(
206 +// // {
207 +// // url: BROAD_TARGET_URL,
208 +// // headers: {
209 +// // 'Authorization': `Bearer ${TOKEN}`
210 +// // },
211 +// // json: {
212 +// // "messages":[
213 +// // {
214 +// // "type":"text",
215 +// // "text":"Hello, user"
216 +// // },
217 +// // {
218 +// // "type":"text",
219 +// // "text":"May I help you?"
220 +// // }
221 +// // ]
222 +// // }
223 +// // },(error, response, body) => {
224 +// // console.log(body)
225 +// // });
1 +var express = require('express');
2 +const request = require('request');
3 +const TARGET_URL = 'https://api.line.me/v2/bot/message/reply'
4 +const TOKEN = 'XOyIf8jsoQKq3b1zqxE4wawAoFU2Hz433AO3w8/ye+i6+2KrXpyfFwY0Dk/xhHQLPgtgPTiEP/m4IRW+SlVhdtzfH6c0Lfdw6nJ95QOugHfNWfviAmn5Uojh8LQJeAy21bvaNMCy11f+qgLSRnXmCgdB04t89/1O/w1cDnyilFU='
5 +const PAPAGO_URL = 'https://openapi.naver.com/v1/papago/n2mt'
6 +const PAPAGO_ID = 'UZMyxEhDtcZQ4JNNeohy'
7 +const PAPAGO_SECRET = 'J2yR82NwYK'
8 +const fs = require('fs');
9 +const path = require('path');
10 +const HTTPS = require('https');
11 +const domain = "2018102191.osschatbot2022.tk"
12 +const sslport = 23023;
13 +const bodyParser = require('body-parser');
14 +
15 +var language = "en";
16 +
17 +var app = express();
18 +app.use(bodyParser.json());
19 +app.post('/hook', function (req, res) {
20 +
21 + var eventObj = req.body.events[0];
22 + var source = eventObj.source;
23 + var message = eventObj.message;
24 +
25 + // request log
26 + console.log('======================', new Date() ,'======================');
27 + console.log('[request]', req.body);
28 + console.log('[request source] ', eventObj.source);
29 + console.log('[request message]', eventObj.message);
30 +
31 + trans(eventObj.replyToken, eventObj.message.text);
32 +
33 +
34 + res.sendStatus(200);
35 +});
36 +
37 +function trans(replyToken, message) {
38 + console.log(message);
39 + switch(message)
40 + {
41 + case "영어":
42 + language = "en";
43 + console.log("영어로 변경");
44 + return;
45 + break;
46 + case "일본어":
47 + language = "ja";
48 + console.log("일본어로 변경");
49 + return;
50 + break;
51 + case "프랑스어":
52 + language = "fr";
53 + console.log("프랑스어로 변경");
54 + return;
55 + break;
56 + default:
57 + break;
58 + }
59 +
60 + request.post(
61 + {
62 + url: PAPAGO_URL,
63 + headers: {
64 + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
65 + 'X-Naver-Client-Id': `${PAPAGO_ID}`,
66 + 'X-Naver-Client-Secret': `${PAPAGO_SECRET}`
67 + },
68 + body: 'source=ko&target=' + language + '&text=' + message,
69 + json:true
70 + },(error, response, body) => {
71 + if(!error && response.statusCode == 200) {
72 + console.log(body.message);
73 + var transMessage = body.message.result.translatedText;
74 + request.post(
75 + {
76 + url: TARGET_URL,
77 + headers: {
78 + 'Authorization': `Bearer ${TOKEN}`
79 + },
80 + json: {
81 + "replyToken":replyToken,
82 + "messages":[
83 + {
84 + "type":"text",
85 + "text":transMessage
86 + }
87 + ]
88 + }
89 + },(error, response, body) => {
90 + console.log(body)
91 + });
92 + }
93 + });
94 +
95 +}
96 +
97 +try {
98 + const option = {
99 + ca: fs.readFileSync('/etc/letsencrypt/live/' + domain +'/fullchain.pem'),
100 + key: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/privkey.pem'), 'utf8').toString(),
101 + cert: fs.readFileSync(path.resolve(process.cwd(), '/etc/letsencrypt/live/' + domain +'/cert.pem'), 'utf8').toString(),
102 + };
103 +
104 + HTTPS.createServer(option, app).listen(sslport, () => {
105 + console.log(`[HTTPS] Server is started on port ${sslport}`);
106 + });
107 + } catch (error) {
108 + console.log('[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.');
109 + console.log(error);
110 + }
111 +
...\ No newline at end of file ...\ No newline at end of file