Merge branch 'feature/line_bot' into 'main'
Line bot 기본 기능 구현 See merge request !16
Showing
5 changed files
with
661 additions
and
6 deletions
server/apis/setFlexMessage.js
0 → 100644
1 | +function priceToString(price) { | ||
2 | + return price.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); | ||
3 | +} | ||
4 | + | ||
5 | +function setFlexMessage(platform, name, price, thumbnailUrl, itemUrl) { | ||
6 | + let koreanPlatformName = ""; | ||
7 | + if (platform === "daangn") { | ||
8 | + koreanPlatformName = "당근"; | ||
9 | + } else if (platform === "joongna") { | ||
10 | + koreanPlatformName = "중고나라"; | ||
11 | + } else if (platform === "bunjang") { | ||
12 | + koreanPlatformName = "번개나라"; | ||
13 | + } else { | ||
14 | + koreanPlatformName = "Unknown"; | ||
15 | + } | ||
16 | + | ||
17 | + let flexMessage = { | ||
18 | + type: "bubble", | ||
19 | + hero: { | ||
20 | + type: "image", | ||
21 | + url: thumbnailUrl, | ||
22 | + size: "full", | ||
23 | + aspectRatio: "20:13", | ||
24 | + aspectMode: "cover", | ||
25 | + action: { | ||
26 | + type: "uri", | ||
27 | + uri: itemUrl, | ||
28 | + }, | ||
29 | + }, | ||
30 | + body: { | ||
31 | + type: "box", | ||
32 | + layout: "vertical", | ||
33 | + contents: [ | ||
34 | + { | ||
35 | + type: "text", | ||
36 | + text: name, | ||
37 | + weight: "bold", | ||
38 | + size: "xl", | ||
39 | + }, | ||
40 | + // { | ||
41 | + // type: "box", | ||
42 | + // layout: "baseline", | ||
43 | + // margin: "md", | ||
44 | + // contents: [ | ||
45 | + // { | ||
46 | + // type: "icon", | ||
47 | + // size: "sm", | ||
48 | + // url: "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png", | ||
49 | + // }, | ||
50 | + // { | ||
51 | + // type: "icon", | ||
52 | + // size: "sm", | ||
53 | + // url: "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png", | ||
54 | + // }, | ||
55 | + // { | ||
56 | + // type: "icon", | ||
57 | + // size: "sm", | ||
58 | + // url: "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png", | ||
59 | + // }, | ||
60 | + // { | ||
61 | + // type: "icon", | ||
62 | + // size: "sm", | ||
63 | + // url: "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gold_star_28.png", | ||
64 | + // }, | ||
65 | + // { | ||
66 | + // type: "icon", | ||
67 | + // size: "sm", | ||
68 | + // url: "https://scdn.line-apps.com/n/channel_devcenter/img/fx/review_gray_star_28.png", | ||
69 | + // }, | ||
70 | + // { | ||
71 | + // type: "text", | ||
72 | + // text: "4.0", | ||
73 | + // size: "sm", | ||
74 | + // color: "#999999", | ||
75 | + // margin: "md", | ||
76 | + // flex: 0, | ||
77 | + // }, | ||
78 | + // ], | ||
79 | + // }, | ||
80 | + { | ||
81 | + type: "box", | ||
82 | + layout: "vertical", | ||
83 | + margin: "lg", | ||
84 | + spacing: "sm", | ||
85 | + contents: [ | ||
86 | + { | ||
87 | + type: "box", | ||
88 | + layout: "baseline", | ||
89 | + spacing: "sm", | ||
90 | + contents: [ | ||
91 | + { | ||
92 | + type: "text", | ||
93 | + text: "플랫폼", | ||
94 | + color: "#aaaaaa", | ||
95 | + size: "sm", | ||
96 | + flex: 1, | ||
97 | + }, | ||
98 | + { | ||
99 | + type: "text", | ||
100 | + text: koreanPlatformName, | ||
101 | + wrap: true, | ||
102 | + color: "#666666", | ||
103 | + size: "sm", | ||
104 | + flex: 5, | ||
105 | + }, | ||
106 | + ], | ||
107 | + }, | ||
108 | + { | ||
109 | + type: "box", | ||
110 | + layout: "baseline", | ||
111 | + spacing: "sm", | ||
112 | + contents: [ | ||
113 | + { | ||
114 | + type: "text", | ||
115 | + text: "가격", | ||
116 | + color: "#aaaaaa", | ||
117 | + size: "sm", | ||
118 | + flex: 1, | ||
119 | + }, | ||
120 | + { | ||
121 | + type: "text", | ||
122 | + text: priceToString(price * 1) + "원", | ||
123 | + wrap: true, | ||
124 | + color: "#666666", | ||
125 | + size: "sm", | ||
126 | + flex: 5, | ||
127 | + }, | ||
128 | + ], | ||
129 | + }, | ||
130 | + ], | ||
131 | + }, | ||
132 | + ], | ||
133 | + }, | ||
134 | + footer: { | ||
135 | + type: "box", | ||
136 | + layout: "vertical", | ||
137 | + spacing: "sm", | ||
138 | + contents: [ | ||
139 | + { | ||
140 | + type: "button", | ||
141 | + style: "link", | ||
142 | + height: "sm", | ||
143 | + action: { | ||
144 | + type: "uri", | ||
145 | + label: "매물 확인", | ||
146 | + uri: itemUrl, | ||
147 | + }, | ||
148 | + }, | ||
149 | + { | ||
150 | + type: "box", | ||
151 | + layout: "vertical", | ||
152 | + contents: [], | ||
153 | + margin: "sm", | ||
154 | + }, | ||
155 | + ], | ||
156 | + flex: 0, | ||
157 | + }, | ||
158 | + }; | ||
159 | + return flexMessage; | ||
160 | + //return JSON.stringify(flexMessage); | ||
161 | +} | ||
162 | + | ||
163 | +module.exports = setFlexMessage; |
1 | -var express = require("express"); | 1 | +const express = require("express"); |
2 | -var app = express(); | 2 | +const line = require("@line/bot-sdk"); |
3 | +const setFlexMessage = require("./apis/setFlexMessage"); | ||
4 | +const fs = require("fs"); | ||
3 | 5 | ||
4 | -app.get("/", function (req, res) { | 6 | +require("dotenv").config(); |
5 | - res.send("<h1>hello express!</h1>"); | 7 | +const config = { |
8 | + channelAccessToken: process.env.channelAccessToken, | ||
9 | + channelSecret: process.env.channelSecret, | ||
10 | +}; | ||
11 | + | ||
12 | +const app = express(); | ||
13 | +app.post("/webhook", line.middleware(config), (req, res) => { | ||
14 | + Promise.all(req.body.events.map(handleEvent)).then((result) => | ||
15 | + res.json(result) | ||
16 | + ); | ||
6 | }); | 17 | }); |
7 | 18 | ||
8 | -app.listen(3000); | 19 | +const client = new line.Client(config); |
20 | + | ||
21 | +let waitNewMamulList = []; // 매물 키워드 입력 기다리는 목록 | ||
22 | + | ||
23 | +function handleEvent(event) { | ||
24 | + if (event.type !== "message" || event.message.type !== "text") { | ||
25 | + console.log(event); | ||
26 | + if (event.type == "postback") { | ||
27 | + if (event.postback.data == "new") { | ||
28 | + var found = waitNewMamulList.indexOf(event.source.userId); | ||
29 | + if (found == -1) { | ||
30 | + waitNewMamulList.push(event.source.userId); | ||
31 | + console.log(waitNewMamulList); | ||
32 | + return Promise.resolve( | ||
33 | + client.replyMessage(event.replyToken, { | ||
34 | + type: "text", | ||
35 | + text: "등록할 매물 키워드를 알려주세요!", | ||
36 | + }) | ||
37 | + ); | ||
38 | + } else { | ||
39 | + return Promise.resolve( | ||
40 | + client.replyMessage(event.replyToken, { | ||
41 | + type: "text", | ||
42 | + text: "등록할 매물 키워드를 알려주세요!", | ||
43 | + }) | ||
44 | + ); | ||
45 | + } | ||
46 | + } else if (event.postback.data == "check") { | ||
47 | + return Promise.resolve( | ||
48 | + client.replyMessage(event.replyToken, { | ||
49 | + type: "flex", | ||
50 | + altText: "등록된 매물", | ||
51 | + contents: setFlexMessage( | ||
52 | + "daangn", | ||
53 | + "RTX 3080", | ||
54 | + "1000000", | ||
55 | + "https://dnvefa72aowie.cloudfront.net/origin/article/202205/94cdd237258671d5806a70f64ab2b3c7dcd790da0384b394ef5809fe10c08ced.webp?q=95&s=1440x1440&t=inside", | ||
56 | + "https://www.daangn.com/articles/403755360" | ||
57 | + ), | ||
58 | + }) | ||
59 | + ); | ||
60 | + } | ||
61 | + } | ||
62 | + return Promise.resolve(null); | ||
63 | + } else { | ||
64 | + console.log(event); | ||
65 | + var found = waitNewMamulList.indexOf(event.source.userId); | ||
66 | + if (found == -1) { | ||
67 | + return Promise.resolve( | ||
68 | + client.replyMessage(event.replyToken, { | ||
69 | + type: "text", | ||
70 | + text: "왼쪽 하단 메뉴버튼(☰)을 클릭해 상호작용 해주세요!", | ||
71 | + }) | ||
72 | + ); | ||
73 | + } else { | ||
74 | + // TODO: 서버에 키워드 등록하는 api | ||
75 | + waitNewMamulList.splice(found, 1); | ||
76 | + console.log(waitNewMamulList[found]); | ||
77 | + return Promise.resolve( | ||
78 | + client.replyMessage(event.replyToken, { | ||
79 | + type: "text", | ||
80 | + text: "매물이 등록되었습니다!\n등록된 매물: " + event.message.text, | ||
81 | + }) | ||
82 | + ); | ||
83 | + } | ||
84 | + } | ||
85 | +} | ||
86 | + | ||
87 | +const port = 1231; | ||
88 | +app.listen(port); | ||
89 | +console.log(`listening...\nport : ${port}`); | ||
90 | + | ||
91 | +/*Push Message*/ | ||
92 | +// client.pushMessage(event.source.userId, { | ||
93 | +// type: "flex", | ||
94 | +// altText: "새로운 매물이 왔어요!", | ||
95 | +// contents: setFlexMessage( | ||
96 | +// "daangn", | ||
97 | +// "RTX 3080", | ||
98 | +// "1000000", | ||
99 | +// "https://dnvefa72aowie.cloudfront.net/origin/article/202205/94cdd237258671d5806a70f64ab2b3c7dcd790da0384b394ef5809fe10c08ced.webp?q=95&s=1440x1440&t=inside", | ||
100 | +// "https://www.daangn.com/articles/403755360" | ||
101 | +// ), | ||
102 | +// }) | ||
103 | + | ||
104 | +/*리치메뉴 설정*/ | ||
105 | +// let richMenu = { | ||
106 | +// size: { | ||
107 | +// width: 2500, | ||
108 | +// height: 843, | ||
109 | +// }, | ||
110 | +// selected: false, | ||
111 | +// name: "Nice richmenu", | ||
112 | +// chatBarText: "Tap to open", | ||
113 | +// areas: [ | ||
114 | +// { | ||
115 | +// bounds: { | ||
116 | +// x: 0, | ||
117 | +// y: 0, | ||
118 | +// width: 1250, | ||
119 | +// height: 843, | ||
120 | +// }, | ||
121 | +// action: { | ||
122 | +// type: "postback", | ||
123 | +// label: "new", | ||
124 | +// data: "new", | ||
125 | +// displayText: "키워드 등록", | ||
126 | +// inputOption: "openKeyboard", | ||
127 | +// fillInText: "", | ||
128 | +// }, | ||
129 | +// }, | ||
130 | +// { | ||
131 | +// bounds: { | ||
132 | +// x: 1250, | ||
133 | +// y: 0, | ||
134 | +// width: 1250, | ||
135 | +// height: 843, | ||
136 | +// }, | ||
137 | +// action: { | ||
138 | +// type: "postback", | ||
139 | +// label: "check", | ||
140 | +// data: "check", | ||
141 | +// displayText: "최신 매물 확인", | ||
142 | +// inputOption: "openKeyboard", | ||
143 | +// fillInText: "", | ||
144 | +// }, | ||
145 | +// }, | ||
146 | +// ], | ||
147 | +// }; | ||
148 | +//// 등록 | ||
149 | +// client.createRichMenu(richMenu).then((richMenuId) => console.log(richMenuId)); | ||
150 | +// client.setRichMenuImage( | ||
151 | +// "richmenu-183eff606f059b8244f0a625b54bddf1", | ||
152 | +// fs.createReadStream("./static/img/richMenu.jpg") | ||
153 | +// ); | ||
154 | +// client.setDefaultRichMenu("richmenu-183eff606f059b8244f0a625b54bddf1"); | ... | ... |
... | @@ -7,12 +7,30 @@ | ... | @@ -7,12 +7,30 @@ |
7 | "": { | 7 | "": { |
8 | "name": "secondhand-noti-bot", | 8 | "name": "secondhand-noti-bot", |
9 | "version": "1.0.0", | 9 | "version": "1.0.0", |
10 | - "license": "ISC", | 10 | + "license": "MIT", |
11 | "dependencies": { | 11 | "dependencies": { |
12 | + "@line/bot-sdk": "^7.5.0", | ||
13 | + "dotenv": "^16.0.1", | ||
12 | "express": "^4.18.1", | 14 | "express": "^4.18.1", |
13 | "nodemon": "^2.0.16" | 15 | "nodemon": "^2.0.16" |
14 | } | 16 | } |
15 | }, | 17 | }, |
18 | + "node_modules/@line/bot-sdk": { | ||
19 | + "version": "7.5.0", | ||
20 | + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-7.5.0.tgz", | ||
21 | + "integrity": "sha512-1PQW/tlg13olH93Ue+X4LwD4JvTK7JR5k59z2xM/rNNKWINbCigBgvwB0lwqnpQmehN7EvxolkN2aEPoSQ+JGw==", | ||
22 | + "dependencies": { | ||
23 | + "@types/body-parser": "^1.19.2", | ||
24 | + "@types/node": "^14.18.12", | ||
25 | + "axios": "^0.21.1", | ||
26 | + "body-parser": "^1.20.0", | ||
27 | + "file-type": "^15.0.0", | ||
28 | + "form-data": "^3.0.0" | ||
29 | + }, | ||
30 | + "engines": { | ||
31 | + "node": ">=10" | ||
32 | + } | ||
33 | + }, | ||
16 | "node_modules/@sindresorhus/is": { | 34 | "node_modules/@sindresorhus/is": { |
17 | "version": "0.14.0", | 35 | "version": "0.14.0", |
18 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", | 36 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", |
... | @@ -32,6 +50,33 @@ | ... | @@ -32,6 +50,33 @@ |
32 | "node": ">=6" | 50 | "node": ">=6" |
33 | } | 51 | } |
34 | }, | 52 | }, |
53 | + "node_modules/@tokenizer/token": { | ||
54 | + "version": "0.3.0", | ||
55 | + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", | ||
56 | + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" | ||
57 | + }, | ||
58 | + "node_modules/@types/body-parser": { | ||
59 | + "version": "1.19.2", | ||
60 | + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", | ||
61 | + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", | ||
62 | + "dependencies": { | ||
63 | + "@types/connect": "*", | ||
64 | + "@types/node": "*" | ||
65 | + } | ||
66 | + }, | ||
67 | + "node_modules/@types/connect": { | ||
68 | + "version": "3.4.35", | ||
69 | + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", | ||
70 | + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", | ||
71 | + "dependencies": { | ||
72 | + "@types/node": "*" | ||
73 | + } | ||
74 | + }, | ||
75 | + "node_modules/@types/node": { | ||
76 | + "version": "14.18.18", | ||
77 | + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", | ||
78 | + "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" | ||
79 | + }, | ||
35 | "node_modules/abbrev": { | 80 | "node_modules/abbrev": { |
36 | "version": "1.1.1", | 81 | "version": "1.1.1", |
37 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", | 82 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", |
... | @@ -96,6 +141,19 @@ | ... | @@ -96,6 +141,19 @@ |
96 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | 141 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |
97 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" | 142 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" |
98 | }, | 143 | }, |
144 | + "node_modules/asynckit": { | ||
145 | + "version": "0.4.0", | ||
146 | + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", | ||
147 | + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" | ||
148 | + }, | ||
149 | + "node_modules/axios": { | ||
150 | + "version": "0.21.4", | ||
151 | + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", | ||
152 | + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", | ||
153 | + "dependencies": { | ||
154 | + "follow-redirects": "^1.14.0" | ||
155 | + } | ||
156 | + }, | ||
99 | "node_modules/balanced-match": { | 157 | "node_modules/balanced-match": { |
100 | "version": "1.0.2", | 158 | "version": "1.0.2", |
101 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | 159 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |
... | @@ -343,6 +401,17 @@ | ... | @@ -343,6 +401,17 @@ |
343 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", | 401 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", |
344 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" | 402 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" |
345 | }, | 403 | }, |
404 | + "node_modules/combined-stream": { | ||
405 | + "version": "1.0.8", | ||
406 | + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", | ||
407 | + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", | ||
408 | + "dependencies": { | ||
409 | + "delayed-stream": "~1.0.0" | ||
410 | + }, | ||
411 | + "engines": { | ||
412 | + "node": ">= 0.8" | ||
413 | + } | ||
414 | + }, | ||
346 | "node_modules/concat-map": { | 415 | "node_modules/concat-map": { |
347 | "version": "0.0.1", | 416 | "version": "0.0.1", |
348 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | 417 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |
... | @@ -436,6 +505,14 @@ | ... | @@ -436,6 +505,14 @@ |
436 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", | 505 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", |
437 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" | 506 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" |
438 | }, | 507 | }, |
508 | + "node_modules/delayed-stream": { | ||
509 | + "version": "1.0.0", | ||
510 | + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | ||
511 | + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", | ||
512 | + "engines": { | ||
513 | + "node": ">=0.4.0" | ||
514 | + } | ||
515 | + }, | ||
439 | "node_modules/depd": { | 516 | "node_modules/depd": { |
440 | "version": "2.0.0", | 517 | "version": "2.0.0", |
441 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", | 518 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", |
... | @@ -464,6 +541,14 @@ | ... | @@ -464,6 +541,14 @@ |
464 | "node": ">=8" | 541 | "node": ">=8" |
465 | } | 542 | } |
466 | }, | 543 | }, |
544 | + "node_modules/dotenv": { | ||
545 | + "version": "16.0.1", | ||
546 | + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", | ||
547 | + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", | ||
548 | + "engines": { | ||
549 | + "node": ">=12" | ||
550 | + } | ||
551 | + }, | ||
467 | "node_modules/duplexer3": { | 552 | "node_modules/duplexer3": { |
468 | "version": "0.1.4", | 553 | "version": "0.1.4", |
469 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", | 554 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", |
... | @@ -557,6 +642,23 @@ | ... | @@ -557,6 +642,23 @@ |
557 | "node": ">= 0.10.0" | 642 | "node": ">= 0.10.0" |
558 | } | 643 | } |
559 | }, | 644 | }, |
645 | + "node_modules/file-type": { | ||
646 | + "version": "15.0.1", | ||
647 | + "resolved": "https://registry.npmjs.org/file-type/-/file-type-15.0.1.tgz", | ||
648 | + "integrity": "sha512-0LieQlSA3bWUdErNrxzxfI4rhsvNAVPBO06R8pTc1hp9SE6nhqlVyvhcaXoMmtXkBTPnQenbMPLW9X76hH76oQ==", | ||
649 | + "dependencies": { | ||
650 | + "readable-web-to-node-stream": "^2.0.0", | ||
651 | + "strtok3": "^6.0.3", | ||
652 | + "token-types": "^2.0.0", | ||
653 | + "typedarray-to-buffer": "^3.1.5" | ||
654 | + }, | ||
655 | + "engines": { | ||
656 | + "node": ">=8" | ||
657 | + }, | ||
658 | + "funding": { | ||
659 | + "url": "https://github.com/sindresorhus/file-type?sponsor=1" | ||
660 | + } | ||
661 | + }, | ||
560 | "node_modules/fill-range": { | 662 | "node_modules/fill-range": { |
561 | "version": "7.0.1", | 663 | "version": "7.0.1", |
562 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", | 664 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", |
... | @@ -585,6 +687,38 @@ | ... | @@ -585,6 +687,38 @@ |
585 | "node": ">= 0.8" | 687 | "node": ">= 0.8" |
586 | } | 688 | } |
587 | }, | 689 | }, |
690 | + "node_modules/follow-redirects": { | ||
691 | + "version": "1.15.0", | ||
692 | + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", | ||
693 | + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==", | ||
694 | + "funding": [ | ||
695 | + { | ||
696 | + "type": "individual", | ||
697 | + "url": "https://github.com/sponsors/RubenVerborgh" | ||
698 | + } | ||
699 | + ], | ||
700 | + "engines": { | ||
701 | + "node": ">=4.0" | ||
702 | + }, | ||
703 | + "peerDependenciesMeta": { | ||
704 | + "debug": { | ||
705 | + "optional": true | ||
706 | + } | ||
707 | + } | ||
708 | + }, | ||
709 | + "node_modules/form-data": { | ||
710 | + "version": "3.0.1", | ||
711 | + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", | ||
712 | + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", | ||
713 | + "dependencies": { | ||
714 | + "asynckit": "^0.4.0", | ||
715 | + "combined-stream": "^1.0.8", | ||
716 | + "mime-types": "^2.1.12" | ||
717 | + }, | ||
718 | + "engines": { | ||
719 | + "node": ">= 6" | ||
720 | + } | ||
721 | + }, | ||
588 | "node_modules/forwarded": { | 722 | "node_modules/forwarded": { |
589 | "version": "0.2.0", | 723 | "version": "0.2.0", |
590 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", | 724 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", |
... | @@ -763,6 +897,25 @@ | ... | @@ -763,6 +897,25 @@ |
763 | "node": ">=0.10.0" | 897 | "node": ">=0.10.0" |
764 | } | 898 | } |
765 | }, | 899 | }, |
900 | + "node_modules/ieee754": { | ||
901 | + "version": "1.2.1", | ||
902 | + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", | ||
903 | + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", | ||
904 | + "funding": [ | ||
905 | + { | ||
906 | + "type": "github", | ||
907 | + "url": "https://github.com/sponsors/feross" | ||
908 | + }, | ||
909 | + { | ||
910 | + "type": "patreon", | ||
911 | + "url": "https://www.patreon.com/feross" | ||
912 | + }, | ||
913 | + { | ||
914 | + "type": "consulting", | ||
915 | + "url": "https://feross.org/support" | ||
916 | + } | ||
917 | + ] | ||
918 | + }, | ||
766 | "node_modules/ignore-by-default": { | 919 | "node_modules/ignore-by-default": { |
767 | "version": "1.0.1", | 920 | "version": "1.0.1", |
768 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", | 921 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", |
... | @@ -1208,6 +1361,18 @@ | ... | @@ -1208,6 +1361,18 @@ |
1208 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", | 1361 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", |
1209 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" | 1362 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" |
1210 | }, | 1363 | }, |
1364 | + "node_modules/peek-readable": { | ||
1365 | + "version": "4.1.0", | ||
1366 | + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", | ||
1367 | + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", | ||
1368 | + "engines": { | ||
1369 | + "node": ">=8" | ||
1370 | + }, | ||
1371 | + "funding": { | ||
1372 | + "type": "github", | ||
1373 | + "url": "https://github.com/sponsors/Borewit" | ||
1374 | + } | ||
1375 | + }, | ||
1211 | "node_modules/picomatch": { | 1376 | "node_modules/picomatch": { |
1212 | "version": "2.3.1", | 1377 | "version": "2.3.1", |
1213 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", | 1378 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", |
... | @@ -1319,6 +1484,11 @@ | ... | @@ -1319,6 +1484,11 @@ |
1319 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", | 1484 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", |
1320 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" | 1485 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" |
1321 | }, | 1486 | }, |
1487 | + "node_modules/readable-web-to-node-stream": { | ||
1488 | + "version": "2.0.0", | ||
1489 | + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-2.0.0.tgz", | ||
1490 | + "integrity": "sha512-+oZJurc4hXpaaqsN68GoZGQAQIA3qr09Or4fqEsargABnbe5Aau8hFn6ISVleT3cpY/0n/8drn7huyyEvTbghA==" | ||
1491 | + }, | ||
1322 | "node_modules/readdirp": { | 1492 | "node_modules/readdirp": { |
1323 | "version": "3.6.0", | 1493 | "version": "3.6.0", |
1324 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", | 1494 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", |
... | @@ -1516,6 +1686,22 @@ | ... | @@ -1516,6 +1686,22 @@ |
1516 | "node": ">=0.10.0" | 1686 | "node": ">=0.10.0" |
1517 | } | 1687 | } |
1518 | }, | 1688 | }, |
1689 | + "node_modules/strtok3": { | ||
1690 | + "version": "6.3.0", | ||
1691 | + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", | ||
1692 | + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", | ||
1693 | + "dependencies": { | ||
1694 | + "@tokenizer/token": "^0.3.0", | ||
1695 | + "peek-readable": "^4.1.0" | ||
1696 | + }, | ||
1697 | + "engines": { | ||
1698 | + "node": ">=10" | ||
1699 | + }, | ||
1700 | + "funding": { | ||
1701 | + "type": "github", | ||
1702 | + "url": "https://github.com/sponsors/Borewit" | ||
1703 | + } | ||
1704 | + }, | ||
1519 | "node_modules/supports-color": { | 1705 | "node_modules/supports-color": { |
1520 | "version": "5.5.0", | 1706 | "version": "5.5.0", |
1521 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | 1707 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", |
... | @@ -1554,6 +1740,27 @@ | ... | @@ -1554,6 +1740,27 @@ |
1554 | "node": ">=0.6" | 1740 | "node": ">=0.6" |
1555 | } | 1741 | } |
1556 | }, | 1742 | }, |
1743 | + "node_modules/token-types": { | ||
1744 | + "version": "2.1.1", | ||
1745 | + "resolved": "https://registry.npmjs.org/token-types/-/token-types-2.1.1.tgz", | ||
1746 | + "integrity": "sha512-wnQcqlreS6VjthyHO3Y/kpK/emflxDBNhlNUPfh7wE39KnuDdOituXomIbyI79vBtF0Ninpkh72mcuRHo+RG3Q==", | ||
1747 | + "dependencies": { | ||
1748 | + "@tokenizer/token": "^0.1.1", | ||
1749 | + "ieee754": "^1.2.1" | ||
1750 | + }, | ||
1751 | + "engines": { | ||
1752 | + "node": ">=0.1.98" | ||
1753 | + }, | ||
1754 | + "funding": { | ||
1755 | + "type": "github", | ||
1756 | + "url": "https://github.com/sponsors/Borewit" | ||
1757 | + } | ||
1758 | + }, | ||
1759 | + "node_modules/token-types/node_modules/@tokenizer/token": { | ||
1760 | + "version": "0.1.1", | ||
1761 | + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.1.1.tgz", | ||
1762 | + "integrity": "sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==" | ||
1763 | + }, | ||
1557 | "node_modules/touch": { | 1764 | "node_modules/touch": { |
1558 | "version": "3.1.0", | 1765 | "version": "3.1.0", |
1559 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", | 1766 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", |
... | @@ -1746,6 +1953,19 @@ | ... | @@ -1746,6 +1953,19 @@ |
1746 | } | 1953 | } |
1747 | }, | 1954 | }, |
1748 | "dependencies": { | 1955 | "dependencies": { |
1956 | + "@line/bot-sdk": { | ||
1957 | + "version": "7.5.0", | ||
1958 | + "resolved": "https://registry.npmjs.org/@line/bot-sdk/-/bot-sdk-7.5.0.tgz", | ||
1959 | + "integrity": "sha512-1PQW/tlg13olH93Ue+X4LwD4JvTK7JR5k59z2xM/rNNKWINbCigBgvwB0lwqnpQmehN7EvxolkN2aEPoSQ+JGw==", | ||
1960 | + "requires": { | ||
1961 | + "@types/body-parser": "^1.19.2", | ||
1962 | + "@types/node": "^14.18.12", | ||
1963 | + "axios": "^0.21.1", | ||
1964 | + "body-parser": "^1.20.0", | ||
1965 | + "file-type": "^15.0.0", | ||
1966 | + "form-data": "^3.0.0" | ||
1967 | + } | ||
1968 | + }, | ||
1749 | "@sindresorhus/is": { | 1969 | "@sindresorhus/is": { |
1750 | "version": "0.14.0", | 1970 | "version": "0.14.0", |
1751 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", | 1971 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", |
... | @@ -1759,6 +1979,33 @@ | ... | @@ -1759,6 +1979,33 @@ |
1759 | "defer-to-connect": "^1.0.1" | 1979 | "defer-to-connect": "^1.0.1" |
1760 | } | 1980 | } |
1761 | }, | 1981 | }, |
1982 | + "@tokenizer/token": { | ||
1983 | + "version": "0.3.0", | ||
1984 | + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", | ||
1985 | + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" | ||
1986 | + }, | ||
1987 | + "@types/body-parser": { | ||
1988 | + "version": "1.19.2", | ||
1989 | + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", | ||
1990 | + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", | ||
1991 | + "requires": { | ||
1992 | + "@types/connect": "*", | ||
1993 | + "@types/node": "*" | ||
1994 | + } | ||
1995 | + }, | ||
1996 | + "@types/connect": { | ||
1997 | + "version": "3.4.35", | ||
1998 | + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", | ||
1999 | + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", | ||
2000 | + "requires": { | ||
2001 | + "@types/node": "*" | ||
2002 | + } | ||
2003 | + }, | ||
2004 | + "@types/node": { | ||
2005 | + "version": "14.18.18", | ||
2006 | + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.18.tgz", | ||
2007 | + "integrity": "sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig==" | ||
2008 | + }, | ||
1762 | "abbrev": { | 2009 | "abbrev": { |
1763 | "version": "1.1.1", | 2010 | "version": "1.1.1", |
1764 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", | 2011 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", |
... | @@ -1808,6 +2055,19 @@ | ... | @@ -1808,6 +2055,19 @@ |
1808 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | 2055 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |
1809 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" | 2056 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" |
1810 | }, | 2057 | }, |
2058 | + "asynckit": { | ||
2059 | + "version": "0.4.0", | ||
2060 | + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", | ||
2061 | + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" | ||
2062 | + }, | ||
2063 | + "axios": { | ||
2064 | + "version": "0.21.4", | ||
2065 | + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", | ||
2066 | + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", | ||
2067 | + "requires": { | ||
2068 | + "follow-redirects": "^1.14.0" | ||
2069 | + } | ||
2070 | + }, | ||
1811 | "balanced-match": { | 2071 | "balanced-match": { |
1812 | "version": "1.0.2", | 2072 | "version": "1.0.2", |
1813 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | 2073 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |
... | @@ -1987,6 +2247,14 @@ | ... | @@ -1987,6 +2247,14 @@ |
1987 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", | 2247 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", |
1988 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" | 2248 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" |
1989 | }, | 2249 | }, |
2250 | + "combined-stream": { | ||
2251 | + "version": "1.0.8", | ||
2252 | + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", | ||
2253 | + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", | ||
2254 | + "requires": { | ||
2255 | + "delayed-stream": "~1.0.0" | ||
2256 | + } | ||
2257 | + }, | ||
1990 | "concat-map": { | 2258 | "concat-map": { |
1991 | "version": "0.0.1", | 2259 | "version": "0.0.1", |
1992 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | 2260 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |
... | @@ -2059,6 +2327,11 @@ | ... | @@ -2059,6 +2327,11 @@ |
2059 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", | 2327 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", |
2060 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" | 2328 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" |
2061 | }, | 2329 | }, |
2330 | + "delayed-stream": { | ||
2331 | + "version": "1.0.0", | ||
2332 | + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | ||
2333 | + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" | ||
2334 | + }, | ||
2062 | "depd": { | 2335 | "depd": { |
2063 | "version": "2.0.0", | 2336 | "version": "2.0.0", |
2064 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", | 2337 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", |
... | @@ -2077,6 +2350,11 @@ | ... | @@ -2077,6 +2350,11 @@ |
2077 | "is-obj": "^2.0.0" | 2350 | "is-obj": "^2.0.0" |
2078 | } | 2351 | } |
2079 | }, | 2352 | }, |
2353 | + "dotenv": { | ||
2354 | + "version": "16.0.1", | ||
2355 | + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", | ||
2356 | + "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==" | ||
2357 | + }, | ||
2080 | "duplexer3": { | 2358 | "duplexer3": { |
2081 | "version": "0.1.4", | 2359 | "version": "0.1.4", |
2082 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", | 2360 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", |
... | @@ -2158,6 +2436,17 @@ | ... | @@ -2158,6 +2436,17 @@ |
2158 | "vary": "~1.1.2" | 2436 | "vary": "~1.1.2" |
2159 | } | 2437 | } |
2160 | }, | 2438 | }, |
2439 | + "file-type": { | ||
2440 | + "version": "15.0.1", | ||
2441 | + "resolved": "https://registry.npmjs.org/file-type/-/file-type-15.0.1.tgz", | ||
2442 | + "integrity": "sha512-0LieQlSA3bWUdErNrxzxfI4rhsvNAVPBO06R8pTc1hp9SE6nhqlVyvhcaXoMmtXkBTPnQenbMPLW9X76hH76oQ==", | ||
2443 | + "requires": { | ||
2444 | + "readable-web-to-node-stream": "^2.0.0", | ||
2445 | + "strtok3": "^6.0.3", | ||
2446 | + "token-types": "^2.0.0", | ||
2447 | + "typedarray-to-buffer": "^3.1.5" | ||
2448 | + } | ||
2449 | + }, | ||
2161 | "fill-range": { | 2450 | "fill-range": { |
2162 | "version": "7.0.1", | 2451 | "version": "7.0.1", |
2163 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", | 2452 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", |
... | @@ -2180,6 +2469,21 @@ | ... | @@ -2180,6 +2469,21 @@ |
2180 | "unpipe": "~1.0.0" | 2469 | "unpipe": "~1.0.0" |
2181 | } | 2470 | } |
2182 | }, | 2471 | }, |
2472 | + "follow-redirects": { | ||
2473 | + "version": "1.15.0", | ||
2474 | + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz", | ||
2475 | + "integrity": "sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==" | ||
2476 | + }, | ||
2477 | + "form-data": { | ||
2478 | + "version": "3.0.1", | ||
2479 | + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", | ||
2480 | + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", | ||
2481 | + "requires": { | ||
2482 | + "asynckit": "^0.4.0", | ||
2483 | + "combined-stream": "^1.0.8", | ||
2484 | + "mime-types": "^2.1.12" | ||
2485 | + } | ||
2486 | + }, | ||
2183 | "forwarded": { | 2487 | "forwarded": { |
2184 | "version": "0.2.0", | 2488 | "version": "0.2.0", |
2185 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", | 2489 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", |
... | @@ -2306,6 +2610,11 @@ | ... | @@ -2306,6 +2610,11 @@ |
2306 | "safer-buffer": ">= 2.1.2 < 3" | 2610 | "safer-buffer": ">= 2.1.2 < 3" |
2307 | } | 2611 | } |
2308 | }, | 2612 | }, |
2613 | + "ieee754": { | ||
2614 | + "version": "1.2.1", | ||
2615 | + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", | ||
2616 | + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" | ||
2617 | + }, | ||
2309 | "ignore-by-default": { | 2618 | "ignore-by-default": { |
2310 | "version": "1.0.1", | 2619 | "version": "1.0.1", |
2311 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", | 2620 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", |
... | @@ -2623,6 +2932,11 @@ | ... | @@ -2623,6 +2932,11 @@ |
2623 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", | 2932 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", |
2624 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" | 2933 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" |
2625 | }, | 2934 | }, |
2935 | + "peek-readable": { | ||
2936 | + "version": "4.1.0", | ||
2937 | + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", | ||
2938 | + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" | ||
2939 | + }, | ||
2626 | "picomatch": { | 2940 | "picomatch": { |
2627 | "version": "2.3.1", | 2941 | "version": "2.3.1", |
2628 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", | 2942 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", |
... | @@ -2706,6 +3020,11 @@ | ... | @@ -2706,6 +3020,11 @@ |
2706 | } | 3020 | } |
2707 | } | 3021 | } |
2708 | }, | 3022 | }, |
3023 | + "readable-web-to-node-stream": { | ||
3024 | + "version": "2.0.0", | ||
3025 | + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-2.0.0.tgz", | ||
3026 | + "integrity": "sha512-+oZJurc4hXpaaqsN68GoZGQAQIA3qr09Or4fqEsargABnbe5Aau8hFn6ISVleT3cpY/0n/8drn7huyyEvTbghA==" | ||
3027 | + }, | ||
2709 | "readdirp": { | 3028 | "readdirp": { |
2710 | "version": "3.6.0", | 3029 | "version": "3.6.0", |
2711 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", | 3030 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", |
... | @@ -2854,6 +3173,15 @@ | ... | @@ -2854,6 +3173,15 @@ |
2854 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", | 3173 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", |
2855 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" | 3174 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" |
2856 | }, | 3175 | }, |
3176 | + "strtok3": { | ||
3177 | + "version": "6.3.0", | ||
3178 | + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", | ||
3179 | + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", | ||
3180 | + "requires": { | ||
3181 | + "@tokenizer/token": "^0.3.0", | ||
3182 | + "peek-readable": "^4.1.0" | ||
3183 | + } | ||
3184 | + }, | ||
2857 | "supports-color": { | 3185 | "supports-color": { |
2858 | "version": "5.5.0", | 3186 | "version": "5.5.0", |
2859 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | 3187 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", |
... | @@ -2880,6 +3208,22 @@ | ... | @@ -2880,6 +3208,22 @@ |
2880 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", | 3208 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", |
2881 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" | 3209 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" |
2882 | }, | 3210 | }, |
3211 | + "token-types": { | ||
3212 | + "version": "2.1.1", | ||
3213 | + "resolved": "https://registry.npmjs.org/token-types/-/token-types-2.1.1.tgz", | ||
3214 | + "integrity": "sha512-wnQcqlreS6VjthyHO3Y/kpK/emflxDBNhlNUPfh7wE39KnuDdOituXomIbyI79vBtF0Ninpkh72mcuRHo+RG3Q==", | ||
3215 | + "requires": { | ||
3216 | + "@tokenizer/token": "^0.1.1", | ||
3217 | + "ieee754": "^1.2.1" | ||
3218 | + }, | ||
3219 | + "dependencies": { | ||
3220 | + "@tokenizer/token": { | ||
3221 | + "version": "0.1.1", | ||
3222 | + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.1.1.tgz", | ||
3223 | + "integrity": "sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==" | ||
3224 | + } | ||
3225 | + } | ||
3226 | + }, | ||
2883 | "touch": { | 3227 | "touch": { |
2884 | "version": "3.1.0", | 3228 | "version": "3.1.0", |
2885 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", | 3229 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", | ... | ... |
... | @@ -15,6 +15,8 @@ | ... | @@ -15,6 +15,8 @@ |
15 | "author": "", | 15 | "author": "", |
16 | "license": "MIT", | 16 | "license": "MIT", |
17 | "dependencies": { | 17 | "dependencies": { |
18 | + "@line/bot-sdk": "^7.5.0", | ||
19 | + "dotenv": "^16.0.1", | ||
18 | "express": "^4.18.1", | 20 | "express": "^4.18.1", |
19 | "nodemon": "^2.0.16" | 21 | "nodemon": "^2.0.16" |
20 | } | 22 | } | ... | ... |
server/static/img/richMenu.jpg
0 → 100644
114 KB
-
Please register or login to post a comment