이유혁

Set the project repository

1 +node_modules/
...\ No newline at end of file ...\ No newline at end of file
1 +# mother project : Line ChatBot Translator<br>
1 +var express = require('express');
2 +var app = express();
3 +const line = require('@line/bot-sdk');
4 +
5 +
6 +//papago api
7 +var request = require('request');
8 +
9 +//번역 api_url
10 +var translate_api_url = 'https://openapi.naver.com/v1/papago/n2mt';
11 +
12 +//언어감지 api_url
13 +var languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs';
14 +
15 +// Naver Auth Key
16 +//새로 발급받은 naver papago api id, pw 입력
17 +var client_id = 'xZMx34y7uru1v8lywZ2d';
18 +var client_secret = 'p6L7M7WsH9';
19 +
20 +const config = {
21 + channelAccessToken: 'mnny0MJSezgBXzR9C3Ddcc1Csdb7Y9jkvy2nqV5saOmvR2YOJ1/kj/2M0CNsLA+57B2qDpdUQ7WbCTtIKx/LAJ6Kwfop4tX3up7EM8H9EZK1td6GMbhhCb6wvUFVdb1PcTO4joCv8mspd3ubo8a+gAdB04t89/1O/w1cDnyilFU=',
22 + channelSecret: 'bde77633a16fc5bfbd532d5990c6170e',
23 +};
24 +
25 +
26 +// create LINE SDK client
27 +const client = new line.Client(config);
28 +
29 +// create Express app
30 +// about Express itself: https://expressjs.com/
31 +
32 +// register a webhook handler with middleware
33 +// about the middleware, please refer to doc
34 +app.post('/webhook', line.middleware(config), (req, res) => {
35 + Promise
36 + .all(req.body.events.map(handleEvent))
37 + .then((result) => res.json(result))
38 + .catch((err) => {
39 + console.error(err);
40 + res.status(200).end();
41 + });
42 +});
43 +
44 +// event handler
45 +function handleEvent(event) {
46 + if (event.type !== 'message' || event.message.type !== 'text') {
47 + // ignore non-text-message event
48 + return Promise.resolve(null);
49 + }
50 + return new Promise(function(resolve, reject) {
51 + //언어 감지 option
52 + var detect_options = {
53 + url : languagedetect_api_url,
54 + form : {'query': event.message.text},
55 + headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
56 + };
57 +
58 + //papago 언어 감지
59 + request.post(detect_options,function(error,response,body){
60 + console.log(response.statusCode);
61 + if(!error && response.statusCode == 200){
62 + var detect_body = JSON.parse(response.body);
63 + var source = '';
64 + var target = '';
65 + var result = { type: 'text', text:''};
66 +
67 + //언어 감지가 제대로 됐는지 확인
68 + console.log(detect_body.langCode);
69 +
70 +
71 + //번역은 한국어->영어 / 영어->한국어만 지원
72 + if(detect_body.langCode == 'ko'||detect_body.langCode == 'en'){
73 + source = detect_body.langCode == 'ko' ? 'ko':'en';
74 + target = source == 'ko' ? 'en':'ko';
75 + //papago 번역 option
76 + var options = {
77 + url: translate_api_url,
78 + // 한국어(source : ko), 영어(target: en), 카톡에서 받는 메시지(text)
79 + form: {'source':source, 'target':target, 'text':event.message.text},
80 + headers: {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret}
81 + };
82 +
83 + // Naver Post API
84 + request.post(options, function(error, response, body){
85 + // Translate API Sucess
86 + if(!error && response.statusCode == 200){
87 + // JSON
88 + var objBody = JSON.parse(response.body);
89 + // Message 잘 찍히는지 확인
90 +
91 + result.text = objBody.message.result.translatedText;
92 + console.log(result.text);
93 + //번역된 문장 보내기
94 + client.replyMessage(event.replyToken,result).then(resolve).catch(reject);
95 + }
96 + });
97 + }
98 + // 메시지의 언어가 영어 또는 한국어가 아닐 경우
99 + else{
100 + result.text = '언어를 감지할 수 없습니다. \n 번역 언어는 한글 또는 영어만 가능합니다.';
101 + client.replyMessage(event.replyToken,result).then(resolve).catch(reject);
102 + }
103 +
104 + }
105 +
106 + });
107 +
108 + });
109 + }
110 +
111 +app.listen(3000, function () {
112 + console.log('Linebot listening on port 3000!');
113 +});
1 +#!/usr/bin/env node
2 +
3 +/**
4 + * Module dependencies.
5 + */
6 +
7 +var app = require('../app');
8 +var debug = require('debug')('project:server');
9 +var http = require('http');
10 +
11 +/**
12 + * Get port from environment and store in Express.
13 + */
14 +
15 +var port = normalizePort(process.env.PORT || '3000');
16 +app.set('port', port);
17 +
18 +/**
19 + * Create HTTP server.
20 + */
21 +
22 +var server = http.createServer(app);
23 +
24 +/**
25 + * Listen on provided port, on all network interfaces.
26 + */
27 +
28 +server.listen(port);
29 +server.on('error', onError);
30 +server.on('listening', onListening);
31 +
32 +/**
33 + * Normalize a port into a number, string, or false.
34 + */
35 +
36 +function normalizePort(val) {
37 + var port = parseInt(val, 10);
38 +
39 + if (isNaN(port)) {
40 + // named pipe
41 + return val;
42 + }
43 +
44 + if (port >= 0) {
45 + // port number
46 + return port;
47 + }
48 +
49 + return false;
50 +}
51 +
52 +/**
53 + * Event listener for HTTP server "error" event.
54 + */
55 +
56 +function onError(error) {
57 + if (error.syscall !== 'listen') {
58 + throw error;
59 + }
60 +
61 + var bind = typeof port === 'string'
62 + ? 'Pipe ' + port
63 + : 'Port ' + port;
64 +
65 + // handle specific listen errors with friendly messages
66 + switch (error.code) {
67 + case 'EACCES':
68 + console.error(bind + ' requires elevated privileges');
69 + process.exit(1);
70 + break;
71 + case 'EADDRINUSE':
72 + console.error(bind + ' is already in use');
73 + process.exit(1);
74 + break;
75 + default:
76 + throw error;
77 + }
78 +}
79 +
80 +/**
81 + * Event listener for HTTP server "listening" event.
82 + */
83 +
84 +function onListening() {
85 + var addr = server.address();
86 + var bind = typeof addr === 'string'
87 + ? 'pipe ' + addr
88 + : 'port ' + addr.port;
89 + debug('Listening on ' + bind);
90 +}
1 +{
2 + "name": "linebot",
3 + "version": "1.0.0",
4 + "lockfileVersion": 1,
5 + "requires": true,
6 + "dependencies": {
7 + "@line/bot-sdk": {
8 + "version": "6.8.3",
9 + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-6.8.3.tgz",
10 + "integrity": "sha512-nj2T4CQxw0W/juAlpj0kMTDScOh5QUK6xMCR2dZp+pN8B0vj/c+5uX3TyGB4ijz/NIsehgfKujPgzw7LhtYtJw==",
11 + "requires": {
12 + "@types/body-parser": "^1.16.8",
13 + "@types/file-type": "^5.2.1",
14 + "@types/node": "^7.0.31",
15 + "axios": "^0.19.0",
16 + "body-parser": "^1.18.2",
17 + "file-type": "^7.2.0"
18 + }
19 + },
20 + "@types/body-parser": {
21 + "version": "1.17.1",
22 + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.1.tgz",
23 + "integrity": "sha512-RoX2EZjMiFMjZh9lmYrwgoP9RTpAjSHiJxdp4oidAQVO02T7HER3xj9UKue5534ULWeqVEkujhWcyvUce+d68w==",
24 + "requires": {
25 + "@types/connect": "*",
26 + "@types/node": "*"
27 + }
28 + },
29 + "@types/connect": {
30 + "version": "3.4.32",
31 + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz",
32 + "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==",
33 + "requires": {
34 + "@types/node": "*"
35 + }
36 + },
37 + "@types/file-type": {
38 + "version": "5.2.2",
39 + "resolved": "https://registry.npmjs.org/@types/file-type/-/file-type-5.2.2.tgz",
40 + "integrity": "sha512-GWtM4fyqfb+bec4ocpo51/y4x0b83Je+iA6eV131LT9wL0//G+1UgwbkMg7w61ceOwR+KkZXK00z44jrrNljWg==",
41 + "requires": {
42 + "@types/node": "*"
43 + }
44 + },
45 + "@types/node": {
46 + "version": "7.10.9",
47 + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.9.tgz",
48 + "integrity": "sha512-usSpgoUsRtO5xNV5YEPU8PPnHisFx8u0rokj1BPVn/hDF7zwUDzVLiuKZM38B7z8V2111Fj6kd4rGtQFUZpNOw=="
49 + },
50 + "accepts": {
51 + "version": "1.3.5",
52 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
53 + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
54 + "requires": {
55 + "mime-types": "~2.1.18",
56 + "negotiator": "0.6.1"
57 + }
58 + },
59 + "ajv": {
60 + "version": "6.10.2",
61 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
62 + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
63 + "requires": {
64 + "fast-deep-equal": "^2.0.1",
65 + "fast-json-stable-stringify": "^2.0.0",
66 + "json-schema-traverse": "^0.4.1",
67 + "uri-js": "^4.2.2"
68 + }
69 + },
70 + "array-flatten": {
71 + "version": "1.1.1",
72 + "resolved": "http://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
73 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
74 + },
75 + "asn1": {
76 + "version": "0.2.4",
77 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
78 + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
79 + "requires": {
80 + "safer-buffer": "~2.1.0"
81 + }
82 + },
83 + "assert-plus": {
84 + "version": "1.0.0",
85 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
86 + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
87 + },
88 + "asynckit": {
89 + "version": "0.4.0",
90 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
91 + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
92 + },
93 + "aws-sign2": {
94 + "version": "0.7.0",
95 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
96 + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
97 + },
98 + "aws4": {
99 + "version": "1.8.0",
100 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
101 + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
102 + },
103 + "axios": {
104 + "version": "0.19.0",
105 + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
106 + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
107 + "requires": {
108 + "follow-redirects": "1.5.10",
109 + "is-buffer": "^2.0.2"
110 + }
111 + },
112 + "bcrypt-pbkdf": {
113 + "version": "1.0.2",
114 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
115 + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
116 + "requires": {
117 + "tweetnacl": "^0.14.3"
118 + }
119 + },
120 + "body-parser": {
121 + "version": "1.18.3",
122 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
123 + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
124 + "requires": {
125 + "bytes": "3.0.0",
126 + "content-type": "~1.0.4",
127 + "debug": "2.6.9",
128 + "depd": "~1.1.2",
129 + "http-errors": "~1.6.3",
130 + "iconv-lite": "0.4.23",
131 + "on-finished": "~2.3.0",
132 + "qs": "6.5.2",
133 + "raw-body": "2.3.3",
134 + "type-is": "~1.6.16"
135 + }
136 + },
137 + "bytes": {
138 + "version": "3.0.0",
139 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
140 + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
141 + },
142 + "caseless": {
143 + "version": "0.12.0",
144 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
145 + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
146 + },
147 + "combined-stream": {
148 + "version": "1.0.8",
149 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
150 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
151 + "requires": {
152 + "delayed-stream": "~1.0.0"
153 + }
154 + },
155 + "content-disposition": {
156 + "version": "0.5.2",
157 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
158 + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
159 + },
160 + "content-type": {
161 + "version": "1.0.4",
162 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
163 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
164 + },
165 + "cookie": {
166 + "version": "0.3.1",
167 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
168 + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
169 + },
170 + "cookie-signature": {
171 + "version": "1.0.6",
172 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
173 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
174 + },
175 + "core-util-is": {
176 + "version": "1.0.2",
177 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
178 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
179 + },
180 + "dashdash": {
181 + "version": "1.14.1",
182 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
183 + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
184 + "requires": {
185 + "assert-plus": "^1.0.0"
186 + }
187 + },
188 + "debug": {
189 + "version": "2.6.9",
190 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
191 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
192 + "requires": {
193 + "ms": "2.0.0"
194 + }
195 + },
196 + "delayed-stream": {
197 + "version": "1.0.0",
198 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
199 + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
200 + },
201 + "depd": {
202 + "version": "1.1.2",
203 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
204 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
205 + },
206 + "destroy": {
207 + "version": "1.0.4",
208 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
209 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
210 + },
211 + "ecc-jsbn": {
212 + "version": "0.1.2",
213 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
214 + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
215 + "requires": {
216 + "jsbn": "~0.1.0",
217 + "safer-buffer": "^2.1.0"
218 + }
219 + },
220 + "ee-first": {
221 + "version": "1.1.1",
222 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
223 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
224 + },
225 + "encodeurl": {
226 + "version": "1.0.2",
227 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
228 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
229 + },
230 + "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 + "etag": {
236 + "version": "1.8.1",
237 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
238 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
239 + },
240 + "express": {
241 + "version": "4.16.4",
242 + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
243 + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
244 + "requires": {
245 + "accepts": "~1.3.5",
246 + "array-flatten": "1.1.1",
247 + "body-parser": "1.18.3",
248 + "content-disposition": "0.5.2",
249 + "content-type": "~1.0.4",
250 + "cookie": "0.3.1",
251 + "cookie-signature": "1.0.6",
252 + "debug": "2.6.9",
253 + "depd": "~1.1.2",
254 + "encodeurl": "~1.0.2",
255 + "escape-html": "~1.0.3",
256 + "etag": "~1.8.1",
257 + "finalhandler": "1.1.1",
258 + "fresh": "0.5.2",
259 + "merge-descriptors": "1.0.1",
260 + "methods": "~1.1.2",
261 + "on-finished": "~2.3.0",
262 + "parseurl": "~1.3.2",
263 + "path-to-regexp": "0.1.7",
264 + "proxy-addr": "~2.0.4",
265 + "qs": "6.5.2",
266 + "range-parser": "~1.2.0",
267 + "safe-buffer": "5.1.2",
268 + "send": "0.16.2",
269 + "serve-static": "1.13.2",
270 + "setprototypeof": "1.1.0",
271 + "statuses": "~1.4.0",
272 + "type-is": "~1.6.16",
273 + "utils-merge": "1.0.1",
274 + "vary": "~1.1.2"
275 + }
276 + },
277 + "extend": {
278 + "version": "3.0.2",
279 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
280 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
281 + },
282 + "extsprintf": {
283 + "version": "1.3.0",
284 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
285 + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
286 + },
287 + "fast-deep-equal": {
288 + "version": "2.0.1",
289 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
290 + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
291 + },
292 + "fast-json-stable-stringify": {
293 + "version": "2.0.0",
294 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
295 + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
296 + },
297 + "file-type": {
298 + "version": "7.7.1",
299 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-7.7.1.tgz",
300 + "integrity": "sha512-bTrKkzzZI6wH+NXhyD3SOXtb2zXTw2SbwI2RxUlRcXVsnN7jNL5hJzVQLYv7FOQhxFkK4XWdAflEaWFpaLLWpQ=="
301 + },
302 + "finalhandler": {
303 + "version": "1.1.1",
304 + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
305 + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
306 + "requires": {
307 + "debug": "2.6.9",
308 + "encodeurl": "~1.0.2",
309 + "escape-html": "~1.0.3",
310 + "on-finished": "~2.3.0",
311 + "parseurl": "~1.3.2",
312 + "statuses": "~1.4.0",
313 + "unpipe": "~1.0.0"
314 + }
315 + },
316 + "follow-redirects": {
317 + "version": "1.5.10",
318 + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
319 + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
320 + "requires": {
321 + "debug": "=3.1.0"
322 + },
323 + "dependencies": {
324 + "debug": {
325 + "version": "3.1.0",
326 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
327 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
328 + "requires": {
329 + "ms": "2.0.0"
330 + }
331 + }
332 + }
333 + },
334 + "forever-agent": {
335 + "version": "0.6.1",
336 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
337 + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
338 + },
339 + "form-data": {
340 + "version": "2.3.3",
341 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
342 + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
343 + "requires": {
344 + "asynckit": "^0.4.0",
345 + "combined-stream": "^1.0.6",
346 + "mime-types": "^2.1.12"
347 + }
348 + },
349 + "forwarded": {
350 + "version": "0.1.2",
351 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
352 + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
353 + },
354 + "fresh": {
355 + "version": "0.5.2",
356 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
357 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
358 + },
359 + "getpass": {
360 + "version": "0.1.7",
361 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
362 + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
363 + "requires": {
364 + "assert-plus": "^1.0.0"
365 + }
366 + },
367 + "har-schema": {
368 + "version": "2.0.0",
369 + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
370 + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
371 + },
372 + "har-validator": {
373 + "version": "5.1.3",
374 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
375 + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
376 + "requires": {
377 + "ajv": "^6.5.5",
378 + "har-schema": "^2.0.0"
379 + }
380 + },
381 + "http-errors": {
382 + "version": "1.6.3",
383 + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
384 + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
385 + "requires": {
386 + "depd": "~1.1.2",
387 + "inherits": "2.0.3",
388 + "setprototypeof": "1.1.0",
389 + "statuses": ">= 1.4.0 < 2"
390 + }
391 + },
392 + "http-signature": {
393 + "version": "1.2.0",
394 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
395 + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
396 + "requires": {
397 + "assert-plus": "^1.0.0",
398 + "jsprim": "^1.2.2",
399 + "sshpk": "^1.7.0"
400 + }
401 + },
402 + "iconv-lite": {
403 + "version": "0.4.23",
404 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
405 + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
406 + "requires": {
407 + "safer-buffer": ">= 2.1.2 < 3"
408 + }
409 + },
410 + "inherits": {
411 + "version": "2.0.3",
412 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
413 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
414 + },
415 + "ipaddr.js": {
416 + "version": "1.8.0",
417 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
418 + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
419 + },
420 + "is-buffer": {
421 + "version": "2.0.4",
422 + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
423 + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
424 + },
425 + "is-typedarray": {
426 + "version": "1.0.0",
427 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
428 + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
429 + },
430 + "isstream": {
431 + "version": "0.1.2",
432 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
433 + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
434 + },
435 + "jsbn": {
436 + "version": "0.1.1",
437 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
438 + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
439 + },
440 + "json-schema": {
441 + "version": "0.2.3",
442 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
443 + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
444 + },
445 + "json-schema-traverse": {
446 + "version": "0.4.1",
447 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
448 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
449 + },
450 + "json-stringify-safe": {
451 + "version": "5.0.1",
452 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
453 + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
454 + },
455 + "jsprim": {
456 + "version": "1.4.1",
457 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
458 + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
459 + "requires": {
460 + "assert-plus": "1.0.0",
461 + "extsprintf": "1.3.0",
462 + "json-schema": "0.2.3",
463 + "verror": "1.10.0"
464 + }
465 + },
466 + "media-typer": {
467 + "version": "0.3.0",
468 + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
469 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
470 + },
471 + "merge-descriptors": {
472 + "version": "1.0.1",
473 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
474 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
475 + },
476 + "methods": {
477 + "version": "1.1.2",
478 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
479 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
480 + },
481 + "mime": {
482 + "version": "1.4.1",
483 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
484 + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
485 + },
486 + "mime-db": {
487 + "version": "1.37.0",
488 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
489 + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
490 + },
491 + "mime-types": {
492 + "version": "2.1.21",
493 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
494 + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
495 + "requires": {
496 + "mime-db": "~1.37.0"
497 + }
498 + },
499 + "ms": {
500 + "version": "2.0.0",
501 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
502 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
503 + },
504 + "negotiator": {
505 + "version": "0.6.1",
506 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
507 + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
508 + },
509 + "oauth-sign": {
510 + "version": "0.9.0",
511 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
512 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
513 + },
514 + "on-finished": {
515 + "version": "2.3.0",
516 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
517 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
518 + "requires": {
519 + "ee-first": "1.1.1"
520 + }
521 + },
522 + "parseurl": {
523 + "version": "1.3.2",
524 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
525 + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
526 + },
527 + "path-to-regexp": {
528 + "version": "0.1.7",
529 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
530 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
531 + },
532 + "performance-now": {
533 + "version": "2.1.0",
534 + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
535 + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
536 + },
537 + "proxy-addr": {
538 + "version": "2.0.4",
539 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
540 + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
541 + "requires": {
542 + "forwarded": "~0.1.2",
543 + "ipaddr.js": "1.8.0"
544 + }
545 + },
546 + "psl": {
547 + "version": "1.4.0",
548 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
549 + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw=="
550 + },
551 + "punycode": {
552 + "version": "2.1.1",
553 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
554 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
555 + },
556 + "qs": {
557 + "version": "6.5.2",
558 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
559 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
560 + },
561 + "range-parser": {
562 + "version": "1.2.0",
563 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
564 + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
565 + },
566 + "raw-body": {
567 + "version": "2.3.3",
568 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
569 + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
570 + "requires": {
571 + "bytes": "3.0.0",
572 + "http-errors": "1.6.3",
573 + "iconv-lite": "0.4.23",
574 + "unpipe": "1.0.0"
575 + }
576 + },
577 + "request": {
578 + "version": "2.88.0",
579 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
580 + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
581 + "requires": {
582 + "aws-sign2": "~0.7.0",
583 + "aws4": "^1.8.0",
584 + "caseless": "~0.12.0",
585 + "combined-stream": "~1.0.6",
586 + "extend": "~3.0.2",
587 + "forever-agent": "~0.6.1",
588 + "form-data": "~2.3.2",
589 + "har-validator": "~5.1.0",
590 + "http-signature": "~1.2.0",
591 + "is-typedarray": "~1.0.0",
592 + "isstream": "~0.1.2",
593 + "json-stringify-safe": "~5.0.1",
594 + "mime-types": "~2.1.19",
595 + "oauth-sign": "~0.9.0",
596 + "performance-now": "^2.1.0",
597 + "qs": "~6.5.2",
598 + "safe-buffer": "^5.1.2",
599 + "tough-cookie": "~2.4.3",
600 + "tunnel-agent": "^0.6.0",
601 + "uuid": "^3.3.2"
602 + }
603 + },
604 + "safe-buffer": {
605 + "version": "5.1.2",
606 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
607 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
608 + },
609 + "safer-buffer": {
610 + "version": "2.1.2",
611 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
612 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
613 + },
614 + "send": {
615 + "version": "0.16.2",
616 + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
617 + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
618 + "requires": {
619 + "debug": "2.6.9",
620 + "depd": "~1.1.2",
621 + "destroy": "~1.0.4",
622 + "encodeurl": "~1.0.2",
623 + "escape-html": "~1.0.3",
624 + "etag": "~1.8.1",
625 + "fresh": "0.5.2",
626 + "http-errors": "~1.6.2",
627 + "mime": "1.4.1",
628 + "ms": "2.0.0",
629 + "on-finished": "~2.3.0",
630 + "range-parser": "~1.2.0",
631 + "statuses": "~1.4.0"
632 + }
633 + },
634 + "serve-static": {
635 + "version": "1.13.2",
636 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
637 + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
638 + "requires": {
639 + "encodeurl": "~1.0.2",
640 + "escape-html": "~1.0.3",
641 + "parseurl": "~1.3.2",
642 + "send": "0.16.2"
643 + }
644 + },
645 + "setprototypeof": {
646 + "version": "1.1.0",
647 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
648 + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
649 + },
650 + "sshpk": {
651 + "version": "1.16.1",
652 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
653 + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
654 + "requires": {
655 + "asn1": "~0.2.3",
656 + "assert-plus": "^1.0.0",
657 + "bcrypt-pbkdf": "^1.0.0",
658 + "dashdash": "^1.12.0",
659 + "ecc-jsbn": "~0.1.1",
660 + "getpass": "^0.1.1",
661 + "jsbn": "~0.1.0",
662 + "safer-buffer": "^2.0.2",
663 + "tweetnacl": "~0.14.0"
664 + }
665 + },
666 + "statuses": {
667 + "version": "1.4.0",
668 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
669 + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
670 + },
671 + "tough-cookie": {
672 + "version": "2.4.3",
673 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
674 + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
675 + "requires": {
676 + "psl": "^1.1.24",
677 + "punycode": "^1.4.1"
678 + },
679 + "dependencies": {
680 + "punycode": {
681 + "version": "1.4.1",
682 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
683 + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
684 + }
685 + }
686 + },
687 + "tunnel-agent": {
688 + "version": "0.6.0",
689 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
690 + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
691 + "requires": {
692 + "safe-buffer": "^5.0.1"
693 + }
694 + },
695 + "tweetnacl": {
696 + "version": "0.14.5",
697 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
698 + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
699 + },
700 + "type-is": {
701 + "version": "1.6.16",
702 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
703 + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
704 + "requires": {
705 + "media-typer": "0.3.0",
706 + "mime-types": "~2.1.18"
707 + }
708 + },
709 + "unpipe": {
710 + "version": "1.0.0",
711 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
712 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
713 + },
714 + "uri-js": {
715 + "version": "4.2.2",
716 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
717 + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
718 + "requires": {
719 + "punycode": "^2.1.0"
720 + }
721 + },
722 + "utils-merge": {
723 + "version": "1.0.1",
724 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
725 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
726 + },
727 + "uuid": {
728 + "version": "3.3.3",
729 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
730 + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
731 + },
732 + "vary": {
733 + "version": "1.1.2",
734 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
735 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
736 + },
737 + "verror": {
738 + "version": "1.10.0",
739 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
740 + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
741 + "requires": {
742 + "assert-plus": "^1.0.0",
743 + "core-util-is": "1.0.2",
744 + "extsprintf": "^1.2.0"
745 + }
746 + }
747 + }
748 +}
1 +{
2 + "name": "linebot",
3 + "version": "1.0.0",
4 + "description": "",
5 + "main": "app.js",
6 + "scripts": {
7 + "test": "echo \"Error: no test specified\" && exit 1",
8 + "start": "node server.js"
9 + },
10 + "author": "강수인",
11 + "license": "MIT",
12 + "dependencies": {
13 + "@line/bot-sdk": "^6.8.3",
14 + "express": "^4.16.4",
15 + "request": "^2.88.0"
16 + }
17 +}