Showing
14 changed files
with
2012 additions
and
376 deletions
.DS_Store
0 → 100644
No preview for this file type
1.png
0 → 100644

68.2 KB
1 | -## 트위터 내 계정 분석 사이트 | 1 | +### http://khuhub.khu.ac.kr/2018110654/term-project 의 프로젝트를 깃허브로 이동하였습니다. |
2 | + | ||
3 | +# 트위터 내 계정 분석 사이트 | ||
2 | <img src="images/main.png"> | 4 | <img src="images/main.png"> |
3 | 5 | ||
4 | -http://www.twitter-analyze.ml | 6 | + |
7 | +http://www.twitter-analyze.ml:3000/ | ||
5 | 서버가 켜져있다면 위의 url으로 접속할 수도 있습니다. | 8 | 서버가 켜져있다면 위의 url으로 접속할 수도 있습니다. |
9 | + | ||
6 | 10 | ||
7 | ## 프로젝트 소개 | 11 | ## 프로젝트 소개 |
8 | 검색한 트위터 계정의 **타임라인을 분석하는 사이트**입니다.</br> | 12 | 검색한 트위터 계정의 **타임라인을 분석하는 사이트**입니다.</br> |
... | @@ -25,14 +29,12 @@ http://www.twitter-analyze.ml | ... | @@ -25,14 +29,12 @@ http://www.twitter-analyze.ml |
25 | ## 빌드방법 | 29 | ## 빌드방법 |
26 | 30 | ||
27 | > <https://developer.twitter.com/en></br> | 31 | > <https://developer.twitter.com/en></br> |
28 | - | ||
29 | _위 링크에서 twiiter api key를 발급받고 코드에 발급받은 key를 삽입해주세요 | 32 | _위 링크에서 twiiter api key를 발급받고 코드에 발급받은 key를 삽입해주세요 |
30 | 33 | ||
31 | > npm install | 34 | > npm install |
32 | > npm install twitter | 35 | > npm install twitter |
33 | 36 | ||
34 | _terminal에서 위의 명령어를 작성해주세요_ | 37 | _terminal에서 위의 명령어를 작성해주세요_ |
35 | - | ||
36 | 38 | ||
37 | 39 | ||
38 | > npm install twitter | 40 | > npm install twitter |
... | @@ -43,7 +45,6 @@ _terminal에서 위의 명령어를 작성해주세요_ | ... | @@ -43,7 +45,6 @@ _terminal에서 위의 명령어를 작성해주세요_ |
43 | _위의 명령어가 작동하지 않는다면 이 명령어로 시도하세요_ | 45 | _위의 명령어가 작동하지 않는다면 이 명령어로 시도하세요_ |
44 | 46 | ||
45 | ## 사용방법 | 47 | ## 사용방법 |
46 | - | ||
47 | 1. 타임라인 검색 기능 | 48 | 1. 타임라인 검색 기능 |
48 | - 메인페이지에 있는 검색창에 보고싶은 계정의 아이디(ex)@twitterKorea)를 검색해 타임라인을 볼 수 있습니다. | 49 | - 메인페이지에 있는 검색창에 보고싶은 계정의 아이디(ex)@twitterKorea)를 검색해 타임라인을 볼 수 있습니다. |
49 | <img src="images/timeline.png"> | 50 | <img src="images/timeline.png"> |
... | @@ -53,7 +54,7 @@ _위의 명령어가 작동하지 않는다면 이 명령어로 시도하세요_ | ... | @@ -53,7 +54,7 @@ _위의 명령어가 작동하지 않는다면 이 명령어로 시도하세요_ |
53 | <img src="images/search.png"> | 54 | <img src="images/search.png"> |
54 | 55 | ||
55 | - 이 때 내가 리트윗한 게시물도 포함해 검색합니다 | 56 | - 이 때 내가 리트윗한 게시물도 포함해 검색합니다 |
56 | - <img src="images/retweet search.png"> | 57 | + <img src="images/retweet%20search.png"> |
57 | 58 | ||
58 | 3. 인기글 보여주기 기능 | 59 | 3. 인기글 보여주기 기능 |
59 | - 현재 해당계정에서 인기있는 글들을 모아 보여줍니다. | 60 | - 현재 해당계정에서 인기있는 글들을 모아 보여줍니다. | ... | ... |
package-lock.json
0 → 100644
1 | +{ | ||
2 | + "name": "express-tutorial", | ||
3 | + "version": "1.0.0", | ||
4 | + "lockfileVersion": 2, | ||
5 | + "requires": true, | ||
6 | + "packages": { | ||
7 | + "": { | ||
8 | + "name": "express-tutorial", | ||
9 | + "version": "1.0.0", | ||
10 | + "dependencies": { | ||
11 | + "ejs": "~2.4.1", | ||
12 | + "express": "~4.13.1", | ||
13 | + "twitter": "^1.7.1" | ||
14 | + } | ||
15 | + }, | ||
16 | + "node_modules/accepts": { | ||
17 | + "version": "1.2.13", | ||
18 | + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", | ||
19 | + "integrity": "sha512-R190A3EzrS4huFOVZajhXCYZt5p5yrkaQOB4nsWzfth0cYaDcSN5J86l58FJ1dt7igp37fB/QhnuFkGAJmr+eg==", | ||
20 | + "dependencies": { | ||
21 | + "mime-types": "~2.1.6", | ||
22 | + "negotiator": "0.5.3" | ||
23 | + }, | ||
24 | + "engines": { | ||
25 | + "node": ">= 0.6" | ||
26 | + } | ||
27 | + }, | ||
28 | + "node_modules/ajv": { | ||
29 | + "version": "6.12.6", | ||
30 | + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", | ||
31 | + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", | ||
32 | + "dependencies": { | ||
33 | + "fast-deep-equal": "^3.1.1", | ||
34 | + "fast-json-stable-stringify": "^2.0.0", | ||
35 | + "json-schema-traverse": "^0.4.1", | ||
36 | + "uri-js": "^4.2.2" | ||
37 | + }, | ||
38 | + "funding": { | ||
39 | + "type": "github", | ||
40 | + "url": "https://github.com/sponsors/epoberezkin" | ||
41 | + } | ||
42 | + }, | ||
43 | + "node_modules/array-flatten": { | ||
44 | + "version": "1.1.1", | ||
45 | + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | ||
46 | + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" | ||
47 | + }, | ||
48 | + "node_modules/asn1": { | ||
49 | + "version": "0.2.6", | ||
50 | + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", | ||
51 | + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", | ||
52 | + "dependencies": { | ||
53 | + "safer-buffer": "~2.1.0" | ||
54 | + } | ||
55 | + }, | ||
56 | + "node_modules/assert-plus": { | ||
57 | + "version": "1.0.0", | ||
58 | + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", | ||
59 | + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", | ||
60 | + "engines": { | ||
61 | + "node": ">=0.8" | ||
62 | + } | ||
63 | + }, | ||
64 | + "node_modules/asynckit": { | ||
65 | + "version": "0.4.0", | ||
66 | + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", | ||
67 | + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" | ||
68 | + }, | ||
69 | + "node_modules/aws-sign2": { | ||
70 | + "version": "0.7.0", | ||
71 | + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", | ||
72 | + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", | ||
73 | + "engines": { | ||
74 | + "node": "*" | ||
75 | + } | ||
76 | + }, | ||
77 | + "node_modules/aws4": { | ||
78 | + "version": "1.11.0", | ||
79 | + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", | ||
80 | + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" | ||
81 | + }, | ||
82 | + "node_modules/bcrypt-pbkdf": { | ||
83 | + "version": "1.0.2", | ||
84 | + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", | ||
85 | + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", | ||
86 | + "dependencies": { | ||
87 | + "tweetnacl": "^0.14.3" | ||
88 | + } | ||
89 | + }, | ||
90 | + "node_modules/caseless": { | ||
91 | + "version": "0.12.0", | ||
92 | + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", | ||
93 | + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" | ||
94 | + }, | ||
95 | + "node_modules/combined-stream": { | ||
96 | + "version": "1.0.8", | ||
97 | + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", | ||
98 | + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", | ||
99 | + "dependencies": { | ||
100 | + "delayed-stream": "~1.0.0" | ||
101 | + }, | ||
102 | + "engines": { | ||
103 | + "node": ">= 0.8" | ||
104 | + } | ||
105 | + }, | ||
106 | + "node_modules/content-disposition": { | ||
107 | + "version": "0.5.1", | ||
108 | + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.1.tgz", | ||
109 | + "integrity": "sha512-LXP3Ekizrynh01Muic+1XMkR46z/d2wAO/TBnwCgdTmpFJrtwkzrCxQCsC7QnNqlShJgrQyygcX2I8oJ0wnzkw==", | ||
110 | + "engines": { | ||
111 | + "node": ">= 0.6" | ||
112 | + } | ||
113 | + }, | ||
114 | + "node_modules/content-type": { | ||
115 | + "version": "1.0.4", | ||
116 | + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", | ||
117 | + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", | ||
118 | + "engines": { | ||
119 | + "node": ">= 0.6" | ||
120 | + } | ||
121 | + }, | ||
122 | + "node_modules/cookie": { | ||
123 | + "version": "0.1.5", | ||
124 | + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.5.tgz", | ||
125 | + "integrity": "sha512-/lhu+NGBI5pOLXILS07DrPXYX0QDD/ejVhbwoCUcLPBqMEK9b++f9rUhAlhLkcTz9mV6QSeD+w3cHJ96rMZaFQ==", | ||
126 | + "engines": { | ||
127 | + "node": ">= 0.6" | ||
128 | + } | ||
129 | + }, | ||
130 | + "node_modules/cookie-signature": { | ||
131 | + "version": "1.0.6", | ||
132 | + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | ||
133 | + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" | ||
134 | + }, | ||
135 | + "node_modules/core-util-is": { | ||
136 | + "version": "1.0.2", | ||
137 | + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | ||
138 | + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" | ||
139 | + }, | ||
140 | + "node_modules/dashdash": { | ||
141 | + "version": "1.14.1", | ||
142 | + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", | ||
143 | + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", | ||
144 | + "dependencies": { | ||
145 | + "assert-plus": "^1.0.0" | ||
146 | + }, | ||
147 | + "engines": { | ||
148 | + "node": ">=0.10" | ||
149 | + } | ||
150 | + }, | ||
151 | + "node_modules/debug": { | ||
152 | + "version": "2.2.0", | ||
153 | + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", | ||
154 | + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", | ||
155 | + "dependencies": { | ||
156 | + "ms": "0.7.1" | ||
157 | + } | ||
158 | + }, | ||
159 | + "node_modules/deep-extend": { | ||
160 | + "version": "0.5.1", | ||
161 | + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", | ||
162 | + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", | ||
163 | + "engines": { | ||
164 | + "iojs": ">=1.0.0", | ||
165 | + "node": ">=0.10.0" | ||
166 | + } | ||
167 | + }, | ||
168 | + "node_modules/delayed-stream": { | ||
169 | + "version": "1.0.0", | ||
170 | + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | ||
171 | + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", | ||
172 | + "engines": { | ||
173 | + "node": ">=0.4.0" | ||
174 | + } | ||
175 | + }, | ||
176 | + "node_modules/depd": { | ||
177 | + "version": "1.1.2", | ||
178 | + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", | ||
179 | + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", | ||
180 | + "engines": { | ||
181 | + "node": ">= 0.6" | ||
182 | + } | ||
183 | + }, | ||
184 | + "node_modules/destroy": { | ||
185 | + "version": "1.0.4", | ||
186 | + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | ||
187 | + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" | ||
188 | + }, | ||
189 | + "node_modules/ecc-jsbn": { | ||
190 | + "version": "0.1.2", | ||
191 | + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", | ||
192 | + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", | ||
193 | + "dependencies": { | ||
194 | + "jsbn": "~0.1.0", | ||
195 | + "safer-buffer": "^2.1.0" | ||
196 | + } | ||
197 | + }, | ||
198 | + "node_modules/ee-first": { | ||
199 | + "version": "1.1.1", | ||
200 | + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", | ||
201 | + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" | ||
202 | + }, | ||
203 | + "node_modules/ejs": { | ||
204 | + "version": "2.4.2", | ||
205 | + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.4.2.tgz", | ||
206 | + "integrity": "sha512-mA6xJvRRuXoVRjERxqOtoxwQ4s5sqMLtIpRnFJBlTp6dzAxCowBr75YsPK+/SSHLNohSD0V5bCem19lyAn8qRQ==", | ||
207 | + "deprecated": "Critical security bugs fixed in 2.5.5", | ||
208 | + "engines": { | ||
209 | + "node": ">=0.10.0" | ||
210 | + } | ||
211 | + }, | ||
212 | + "node_modules/escape-html": { | ||
213 | + "version": "1.0.3", | ||
214 | + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", | ||
215 | + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" | ||
216 | + }, | ||
217 | + "node_modules/etag": { | ||
218 | + "version": "1.7.0", | ||
219 | + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", | ||
220 | + "integrity": "sha512-Mbv5pNpLNPrm1b4rzZlZlfTRpdDr31oiD43N362sIyvSWVNu5Du33EcJGzvEV4YdYLuENB1HzND907cQkFmXNw==", | ||
221 | + "engines": { | ||
222 | + "node": ">= 0.6" | ||
223 | + } | ||
224 | + }, | ||
225 | + "node_modules/express": { | ||
226 | + "version": "4.13.4", | ||
227 | + "resolved": "https://registry.npmjs.org/express/-/express-4.13.4.tgz", | ||
228 | + "integrity": "sha512-pNykF2h4VgBMH8gJfwwBh4kqaIyV/DcFIX6UpC751GF7du2kA1pkxJ2/SmggVGbYCa4mBRcWh0yiTfK8Dp/Rdg==", | ||
229 | + "dependencies": { | ||
230 | + "accepts": "~1.2.12", | ||
231 | + "array-flatten": "1.1.1", | ||
232 | + "content-disposition": "0.5.1", | ||
233 | + "content-type": "~1.0.1", | ||
234 | + "cookie": "0.1.5", | ||
235 | + "cookie-signature": "1.0.6", | ||
236 | + "debug": "~2.2.0", | ||
237 | + "depd": "~1.1.0", | ||
238 | + "escape-html": "~1.0.3", | ||
239 | + "etag": "~1.7.0", | ||
240 | + "finalhandler": "0.4.1", | ||
241 | + "fresh": "0.3.0", | ||
242 | + "merge-descriptors": "1.0.1", | ||
243 | + "methods": "~1.1.2", | ||
244 | + "on-finished": "~2.3.0", | ||
245 | + "parseurl": "~1.3.1", | ||
246 | + "path-to-regexp": "0.1.7", | ||
247 | + "proxy-addr": "~1.0.10", | ||
248 | + "qs": "4.0.0", | ||
249 | + "range-parser": "~1.0.3", | ||
250 | + "send": "0.13.1", | ||
251 | + "serve-static": "~1.10.2", | ||
252 | + "type-is": "~1.6.6", | ||
253 | + "utils-merge": "1.0.0", | ||
254 | + "vary": "~1.0.1" | ||
255 | + }, | ||
256 | + "engines": { | ||
257 | + "node": ">= 0.10.0" | ||
258 | + } | ||
259 | + }, | ||
260 | + "node_modules/express/node_modules/qs": { | ||
261 | + "version": "4.0.0", | ||
262 | + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", | ||
263 | + "integrity": "sha512-8MPmJ83uBOPsQj5tQCv4g04/nTiY+d17yl9o3Bw73vC6XlEm2POIRRlOgWJ8i74bkGLII670cDJJZkgiZ2sIkg==" | ||
264 | + }, | ||
265 | + "node_modules/extend": { | ||
266 | + "version": "3.0.2", | ||
267 | + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", | ||
268 | + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" | ||
269 | + }, | ||
270 | + "node_modules/extsprintf": { | ||
271 | + "version": "1.3.0", | ||
272 | + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", | ||
273 | + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", | ||
274 | + "engines": [ | ||
275 | + "node >=0.6.0" | ||
276 | + ] | ||
277 | + }, | ||
278 | + "node_modules/fast-deep-equal": { | ||
279 | + "version": "3.1.3", | ||
280 | + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", | ||
281 | + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" | ||
282 | + }, | ||
283 | + "node_modules/fast-json-stable-stringify": { | ||
284 | + "version": "2.1.0", | ||
285 | + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", | ||
286 | + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" | ||
287 | + }, | ||
288 | + "node_modules/finalhandler": { | ||
289 | + "version": "0.4.1", | ||
290 | + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", | ||
291 | + "integrity": "sha512-+AkanbaabSCYrDcrU+TcA/8SEyMDAN7mjE6GC71GAlvYDXM4wzUsRqLLS2qPtWecIlkX5+MMZGd2RyxO3yBOfg==", | ||
292 | + "dependencies": { | ||
293 | + "debug": "~2.2.0", | ||
294 | + "escape-html": "~1.0.3", | ||
295 | + "on-finished": "~2.3.0", | ||
296 | + "unpipe": "~1.0.0" | ||
297 | + }, | ||
298 | + "engines": { | ||
299 | + "node": ">= 0.8" | ||
300 | + } | ||
301 | + }, | ||
302 | + "node_modules/forever-agent": { | ||
303 | + "version": "0.6.1", | ||
304 | + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", | ||
305 | + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", | ||
306 | + "engines": { | ||
307 | + "node": "*" | ||
308 | + } | ||
309 | + }, | ||
310 | + "node_modules/form-data": { | ||
311 | + "version": "2.3.3", | ||
312 | + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", | ||
313 | + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", | ||
314 | + "dependencies": { | ||
315 | + "asynckit": "^0.4.0", | ||
316 | + "combined-stream": "^1.0.6", | ||
317 | + "mime-types": "^2.1.12" | ||
318 | + }, | ||
319 | + "engines": { | ||
320 | + "node": ">= 0.12" | ||
321 | + } | ||
322 | + }, | ||
323 | + "node_modules/forwarded": { | ||
324 | + "version": "0.1.2", | ||
325 | + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", | ||
326 | + "integrity": "sha512-Ua9xNhH0b8pwE3yRbFfXJvfdWF0UHNCdeyb2sbi9Ul/M+r3PTdrz7Cv4SCfZRMjmzEM9PhraqfZFbGTIg3OMyA==", | ||
327 | + "engines": { | ||
328 | + "node": ">= 0.6" | ||
329 | + } | ||
330 | + }, | ||
331 | + "node_modules/fresh": { | ||
332 | + "version": "0.3.0", | ||
333 | + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", | ||
334 | + "integrity": "sha512-akx5WBKAwMSg36qoHTuMMVncHWctlaDGslJASDYAhoLrzDUDCjZlOngNa/iC6lPm9aA0qk8pN5KnpmbJHSIIQQ==", | ||
335 | + "engines": { | ||
336 | + "node": ">= 0.6" | ||
337 | + } | ||
338 | + }, | ||
339 | + "node_modules/getpass": { | ||
340 | + "version": "0.1.7", | ||
341 | + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", | ||
342 | + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", | ||
343 | + "dependencies": { | ||
344 | + "assert-plus": "^1.0.0" | ||
345 | + } | ||
346 | + }, | ||
347 | + "node_modules/har-schema": { | ||
348 | + "version": "2.0.0", | ||
349 | + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", | ||
350 | + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", | ||
351 | + "engines": { | ||
352 | + "node": ">=4" | ||
353 | + } | ||
354 | + }, | ||
355 | + "node_modules/har-validator": { | ||
356 | + "version": "5.1.5", | ||
357 | + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", | ||
358 | + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", | ||
359 | + "deprecated": "this library is no longer supported", | ||
360 | + "dependencies": { | ||
361 | + "ajv": "^6.12.3", | ||
362 | + "har-schema": "^2.0.0" | ||
363 | + }, | ||
364 | + "engines": { | ||
365 | + "node": ">=6" | ||
366 | + } | ||
367 | + }, | ||
368 | + "node_modules/http-errors": { | ||
369 | + "version": "1.3.1", | ||
370 | + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", | ||
371 | + "integrity": "sha512-gMygNskMurDCWfoCdyh1gOeDfSbkAHXqz94QoPj5IHIUjC/BG8/xv7FSEUr7waR5RcAya4j58bft9Wu/wHNeXA==", | ||
372 | + "dependencies": { | ||
373 | + "inherits": "~2.0.1", | ||
374 | + "statuses": "1" | ||
375 | + }, | ||
376 | + "engines": { | ||
377 | + "node": ">= 0.6" | ||
378 | + } | ||
379 | + }, | ||
380 | + "node_modules/http-signature": { | ||
381 | + "version": "1.2.0", | ||
382 | + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", | ||
383 | + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", | ||
384 | + "dependencies": { | ||
385 | + "assert-plus": "^1.0.0", | ||
386 | + "jsprim": "^1.2.2", | ||
387 | + "sshpk": "^1.7.0" | ||
388 | + }, | ||
389 | + "engines": { | ||
390 | + "node": ">=0.8", | ||
391 | + "npm": ">=1.3.7" | ||
392 | + } | ||
393 | + }, | ||
394 | + "node_modules/inherits": { | ||
395 | + "version": "2.0.4", | ||
396 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||
397 | + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||
398 | + }, | ||
399 | + "node_modules/ipaddr.js": { | ||
400 | + "version": "1.0.5", | ||
401 | + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", | ||
402 | + "integrity": "sha512-wBj+q+3uP78gMowwWgFLAYm/q4x5goyZmDsmuvyz+nd1u0D/ghgXXtc1OkgmTzSiWT101kiqGacwFk9eGQw6xQ==", | ||
403 | + "engines": { | ||
404 | + "node": ">= 0.10" | ||
405 | + } | ||
406 | + }, | ||
407 | + "node_modules/is-typedarray": { | ||
408 | + "version": "1.0.0", | ||
409 | + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", | ||
410 | + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" | ||
411 | + }, | ||
412 | + "node_modules/isstream": { | ||
413 | + "version": "0.1.2", | ||
414 | + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", | ||
415 | + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" | ||
416 | + }, | ||
417 | + "node_modules/jsbn": { | ||
418 | + "version": "0.1.1", | ||
419 | + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", | ||
420 | + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" | ||
421 | + }, | ||
422 | + "node_modules/json-schema": { | ||
423 | + "version": "0.4.0", | ||
424 | + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", | ||
425 | + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" | ||
426 | + }, | ||
427 | + "node_modules/json-schema-traverse": { | ||
428 | + "version": "0.4.1", | ||
429 | + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", | ||
430 | + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" | ||
431 | + }, | ||
432 | + "node_modules/json-stringify-safe": { | ||
433 | + "version": "5.0.1", | ||
434 | + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", | ||
435 | + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" | ||
436 | + }, | ||
437 | + "node_modules/jsprim": { | ||
438 | + "version": "1.4.2", | ||
439 | + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", | ||
440 | + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", | ||
441 | + "dependencies": { | ||
442 | + "assert-plus": "1.0.0", | ||
443 | + "extsprintf": "1.3.0", | ||
444 | + "json-schema": "0.4.0", | ||
445 | + "verror": "1.10.0" | ||
446 | + }, | ||
447 | + "engines": { | ||
448 | + "node": ">=0.6.0" | ||
449 | + } | ||
450 | + }, | ||
451 | + "node_modules/media-typer": { | ||
452 | + "version": "0.3.0", | ||
453 | + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | ||
454 | + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", | ||
455 | + "engines": { | ||
456 | + "node": ">= 0.6" | ||
457 | + } | ||
458 | + }, | ||
459 | + "node_modules/merge-descriptors": { | ||
460 | + "version": "1.0.1", | ||
461 | + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", | ||
462 | + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" | ||
463 | + }, | ||
464 | + "node_modules/methods": { | ||
465 | + "version": "1.1.2", | ||
466 | + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | ||
467 | + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", | ||
468 | + "engines": { | ||
469 | + "node": ">= 0.6" | ||
470 | + } | ||
471 | + }, | ||
472 | + "node_modules/mime": { | ||
473 | + "version": "1.3.4", | ||
474 | + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", | ||
475 | + "integrity": "sha512-sAaYXszED5ALBt665F0wMQCUXpGuZsGdopoqcHPdL39ZYdi7uHoZlhrfZfhv8WzivhBzr/oXwaj+yiK5wY8MXQ==", | ||
476 | + "bin": { | ||
477 | + "mime": "cli.js" | ||
478 | + } | ||
479 | + }, | ||
480 | + "node_modules/mime-db": { | ||
481 | + "version": "1.52.0", | ||
482 | + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", | ||
483 | + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", | ||
484 | + "engines": { | ||
485 | + "node": ">= 0.6" | ||
486 | + } | ||
487 | + }, | ||
488 | + "node_modules/mime-types": { | ||
489 | + "version": "2.1.35", | ||
490 | + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", | ||
491 | + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", | ||
492 | + "dependencies": { | ||
493 | + "mime-db": "1.52.0" | ||
494 | + }, | ||
495 | + "engines": { | ||
496 | + "node": ">= 0.6" | ||
497 | + } | ||
498 | + }, | ||
499 | + "node_modules/ms": { | ||
500 | + "version": "0.7.1", | ||
501 | + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", | ||
502 | + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==" | ||
503 | + }, | ||
504 | + "node_modules/negotiator": { | ||
505 | + "version": "0.5.3", | ||
506 | + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", | ||
507 | + "integrity": "sha512-oXmnazqehLNFohqgLxRyUdOQU9/UX0NpCpsnbjWUjM62ZM8oSOXYZpHc68XR130ftPNano0oQXGdREAplZRhaQ==", | ||
508 | + "engines": { | ||
509 | + "node": ">= 0.6" | ||
510 | + } | ||
511 | + }, | ||
512 | + "node_modules/oauth-sign": { | ||
513 | + "version": "0.9.0", | ||
514 | + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", | ||
515 | + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", | ||
516 | + "engines": { | ||
517 | + "node": "*" | ||
518 | + } | ||
519 | + }, | ||
520 | + "node_modules/on-finished": { | ||
521 | + "version": "2.3.0", | ||
522 | + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", | ||
523 | + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", | ||
524 | + "dependencies": { | ||
525 | + "ee-first": "1.1.1" | ||
526 | + }, | ||
527 | + "engines": { | ||
528 | + "node": ">= 0.8" | ||
529 | + } | ||
530 | + }, | ||
531 | + "node_modules/parseurl": { | ||
532 | + "version": "1.3.3", | ||
533 | + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | ||
534 | + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", | ||
535 | + "engines": { | ||
536 | + "node": ">= 0.8" | ||
537 | + } | ||
538 | + }, | ||
539 | + "node_modules/path-to-regexp": { | ||
540 | + "version": "0.1.7", | ||
541 | + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", | ||
542 | + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" | ||
543 | + }, | ||
544 | + "node_modules/performance-now": { | ||
545 | + "version": "2.1.0", | ||
546 | + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", | ||
547 | + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" | ||
548 | + }, | ||
549 | + "node_modules/proxy-addr": { | ||
550 | + "version": "1.0.10", | ||
551 | + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", | ||
552 | + "integrity": "sha512-iq6kR9KN32aFvXjDyC8nIrm203AHeIBPjL6dpaHgSdbpTO8KoPlD0xG92xwwtkCL9+yt1LE5VwpEk43TyP38Dg==", | ||
553 | + "dependencies": { | ||
554 | + "forwarded": "~0.1.0", | ||
555 | + "ipaddr.js": "1.0.5" | ||
556 | + }, | ||
557 | + "engines": { | ||
558 | + "node": ">= 0.6" | ||
559 | + } | ||
560 | + }, | ||
561 | + "node_modules/psl": { | ||
562 | + "version": "1.8.0", | ||
563 | + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", | ||
564 | + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" | ||
565 | + }, | ||
566 | + "node_modules/punycode": { | ||
567 | + "version": "2.1.1", | ||
568 | + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", | ||
569 | + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", | ||
570 | + "engines": { | ||
571 | + "node": ">=6" | ||
572 | + } | ||
573 | + }, | ||
574 | + "node_modules/qs": { | ||
575 | + "version": "6.5.3", | ||
576 | + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", | ||
577 | + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", | ||
578 | + "engines": { | ||
579 | + "node": ">=0.6" | ||
580 | + } | ||
581 | + }, | ||
582 | + "node_modules/range-parser": { | ||
583 | + "version": "1.0.3", | ||
584 | + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", | ||
585 | + "integrity": "sha512-nDsRrtIxVUO5opg/A8T2S3ebULVIfuh8ECbh4w3N4mWxIiT3QILDJDUQayPqm2e8Q8NUa0RSUkGCfe33AfjR3Q==", | ||
586 | + "engines": { | ||
587 | + "node": ">= 0.6" | ||
588 | + } | ||
589 | + }, | ||
590 | + "node_modules/request": { | ||
591 | + "version": "2.88.2", | ||
592 | + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", | ||
593 | + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", | ||
594 | + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", | ||
595 | + "dependencies": { | ||
596 | + "aws-sign2": "~0.7.0", | ||
597 | + "aws4": "^1.8.0", | ||
598 | + "caseless": "~0.12.0", | ||
599 | + "combined-stream": "~1.0.6", | ||
600 | + "extend": "~3.0.2", | ||
601 | + "forever-agent": "~0.6.1", | ||
602 | + "form-data": "~2.3.2", | ||
603 | + "har-validator": "~5.1.3", | ||
604 | + "http-signature": "~1.2.0", | ||
605 | + "is-typedarray": "~1.0.0", | ||
606 | + "isstream": "~0.1.2", | ||
607 | + "json-stringify-safe": "~5.0.1", | ||
608 | + "mime-types": "~2.1.19", | ||
609 | + "oauth-sign": "~0.9.0", | ||
610 | + "performance-now": "^2.1.0", | ||
611 | + "qs": "~6.5.2", | ||
612 | + "safe-buffer": "^5.1.2", | ||
613 | + "tough-cookie": "~2.5.0", | ||
614 | + "tunnel-agent": "^0.6.0", | ||
615 | + "uuid": "^3.3.2" | ||
616 | + }, | ||
617 | + "engines": { | ||
618 | + "node": ">= 6" | ||
619 | + } | ||
620 | + }, | ||
621 | + "node_modules/safe-buffer": { | ||
622 | + "version": "5.2.1", | ||
623 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | ||
624 | + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", | ||
625 | + "funding": [ | ||
626 | + { | ||
627 | + "type": "github", | ||
628 | + "url": "https://github.com/sponsors/feross" | ||
629 | + }, | ||
630 | + { | ||
631 | + "type": "patreon", | ||
632 | + "url": "https://www.patreon.com/feross" | ||
633 | + }, | ||
634 | + { | ||
635 | + "type": "consulting", | ||
636 | + "url": "https://feross.org/support" | ||
637 | + } | ||
638 | + ] | ||
639 | + }, | ||
640 | + "node_modules/safer-buffer": { | ||
641 | + "version": "2.1.2", | ||
642 | + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", | ||
643 | + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | ||
644 | + }, | ||
645 | + "node_modules/send": { | ||
646 | + "version": "0.13.1", | ||
647 | + "resolved": "https://registry.npmjs.org/send/-/send-0.13.1.tgz", | ||
648 | + "integrity": "sha512-tajY7yMvJena2iggWhCzaysOVj/CH4AzqV2lJHUHboVNWQkIFEBJdKtzryKg3fLa83lxq9n/WQV53w9JZCe72w==", | ||
649 | + "dependencies": { | ||
650 | + "debug": "~2.2.0", | ||
651 | + "depd": "~1.1.0", | ||
652 | + "destroy": "~1.0.4", | ||
653 | + "escape-html": "~1.0.3", | ||
654 | + "etag": "~1.7.0", | ||
655 | + "fresh": "0.3.0", | ||
656 | + "http-errors": "~1.3.1", | ||
657 | + "mime": "1.3.4", | ||
658 | + "ms": "0.7.1", | ||
659 | + "on-finished": "~2.3.0", | ||
660 | + "range-parser": "~1.0.3", | ||
661 | + "statuses": "~1.2.1" | ||
662 | + }, | ||
663 | + "engines": { | ||
664 | + "node": ">= 0.8.0" | ||
665 | + } | ||
666 | + }, | ||
667 | + "node_modules/serve-static": { | ||
668 | + "version": "1.10.3", | ||
669 | + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", | ||
670 | + "integrity": "sha512-ScsFovjz3Db+vGgpofR/U8p8UULEcGV9akqyo8TQ1mMnjcxemE7Y5Muo+dvy3tJLY/doY2v1H61eCBMYGmwfrA==", | ||
671 | + "dependencies": { | ||
672 | + "escape-html": "~1.0.3", | ||
673 | + "parseurl": "~1.3.1", | ||
674 | + "send": "0.13.2" | ||
675 | + }, | ||
676 | + "engines": { | ||
677 | + "node": ">= 0.8.0" | ||
678 | + } | ||
679 | + }, | ||
680 | + "node_modules/serve-static/node_modules/send": { | ||
681 | + "version": "0.13.2", | ||
682 | + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", | ||
683 | + "integrity": "sha512-cQ0rmXHrdO2Iof08igV2bG/yXWD106ANwBg6DkGQNT2Vsznbgq6T0oAIQboy1GoFsIuy51jCim26aA9tj3Z3Zg==", | ||
684 | + "dependencies": { | ||
685 | + "debug": "~2.2.0", | ||
686 | + "depd": "~1.1.0", | ||
687 | + "destroy": "~1.0.4", | ||
688 | + "escape-html": "~1.0.3", | ||
689 | + "etag": "~1.7.0", | ||
690 | + "fresh": "0.3.0", | ||
691 | + "http-errors": "~1.3.1", | ||
692 | + "mime": "1.3.4", | ||
693 | + "ms": "0.7.1", | ||
694 | + "on-finished": "~2.3.0", | ||
695 | + "range-parser": "~1.0.3", | ||
696 | + "statuses": "~1.2.1" | ||
697 | + }, | ||
698 | + "engines": { | ||
699 | + "node": ">= 0.8.0" | ||
700 | + } | ||
701 | + }, | ||
702 | + "node_modules/sshpk": { | ||
703 | + "version": "1.17.0", | ||
704 | + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", | ||
705 | + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", | ||
706 | + "dependencies": { | ||
707 | + "asn1": "~0.2.3", | ||
708 | + "assert-plus": "^1.0.0", | ||
709 | + "bcrypt-pbkdf": "^1.0.0", | ||
710 | + "dashdash": "^1.12.0", | ||
711 | + "ecc-jsbn": "~0.1.1", | ||
712 | + "getpass": "^0.1.1", | ||
713 | + "jsbn": "~0.1.0", | ||
714 | + "safer-buffer": "^2.0.2", | ||
715 | + "tweetnacl": "~0.14.0" | ||
716 | + }, | ||
717 | + "bin": { | ||
718 | + "sshpk-conv": "bin/sshpk-conv", | ||
719 | + "sshpk-sign": "bin/sshpk-sign", | ||
720 | + "sshpk-verify": "bin/sshpk-verify" | ||
721 | + }, | ||
722 | + "engines": { | ||
723 | + "node": ">=0.10.0" | ||
724 | + } | ||
725 | + }, | ||
726 | + "node_modules/statuses": { | ||
727 | + "version": "1.2.1", | ||
728 | + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", | ||
729 | + "integrity": "sha512-pVEuxHdSGrt8QmQ3LOZXLhSA6MP/iPqKzZeO6Squ7PNGkA/9MBsSfV0/L+bIxkoDmjF4tZcLpcVq/fkqoHvuKg==" | ||
730 | + }, | ||
731 | + "node_modules/tough-cookie": { | ||
732 | + "version": "2.5.0", | ||
733 | + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", | ||
734 | + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", | ||
735 | + "dependencies": { | ||
736 | + "psl": "^1.1.28", | ||
737 | + "punycode": "^2.1.1" | ||
738 | + }, | ||
739 | + "engines": { | ||
740 | + "node": ">=0.8" | ||
741 | + } | ||
742 | + }, | ||
743 | + "node_modules/tunnel-agent": { | ||
744 | + "version": "0.6.0", | ||
745 | + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", | ||
746 | + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", | ||
747 | + "dependencies": { | ||
748 | + "safe-buffer": "^5.0.1" | ||
749 | + }, | ||
750 | + "engines": { | ||
751 | + "node": "*" | ||
752 | + } | ||
753 | + }, | ||
754 | + "node_modules/tweetnacl": { | ||
755 | + "version": "0.14.5", | ||
756 | + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", | ||
757 | + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" | ||
758 | + }, | ||
759 | + "node_modules/twitter": { | ||
760 | + "version": "1.7.1", | ||
761 | + "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", | ||
762 | + "integrity": "sha512-Do7l/WzFnUZC14ABtZfDiOHKl6M9Ft5tE4YF0ev9XLm4yh7m8R98D82rzeDAMjbjMZk2R/tb6sgXXb3sPKoaVw==", | ||
763 | + "dependencies": { | ||
764 | + "deep-extend": "^0.5.0", | ||
765 | + "request": "^2.72.0" | ||
766 | + } | ||
767 | + }, | ||
768 | + "node_modules/type-is": { | ||
769 | + "version": "1.6.18", | ||
770 | + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | ||
771 | + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", | ||
772 | + "dependencies": { | ||
773 | + "media-typer": "0.3.0", | ||
774 | + "mime-types": "~2.1.24" | ||
775 | + }, | ||
776 | + "engines": { | ||
777 | + "node": ">= 0.6" | ||
778 | + } | ||
779 | + }, | ||
780 | + "node_modules/unpipe": { | ||
781 | + "version": "1.0.0", | ||
782 | + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | ||
783 | + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", | ||
784 | + "engines": { | ||
785 | + "node": ">= 0.8" | ||
786 | + } | ||
787 | + }, | ||
788 | + "node_modules/uri-js": { | ||
789 | + "version": "4.4.1", | ||
790 | + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", | ||
791 | + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", | ||
792 | + "dependencies": { | ||
793 | + "punycode": "^2.1.0" | ||
794 | + } | ||
795 | + }, | ||
796 | + "node_modules/utils-merge": { | ||
797 | + "version": "1.0.0", | ||
798 | + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", | ||
799 | + "integrity": "sha512-HwU9SLQEtyo+0uoKXd1nkLqigUWLB+QuNQR4OcmB73eWqksM5ovuqcycks2x043W8XVb75rG1HQ0h93TMXkzQQ==", | ||
800 | + "engines": { | ||
801 | + "node": ">= 0.4.0" | ||
802 | + } | ||
803 | + }, | ||
804 | + "node_modules/uuid": { | ||
805 | + "version": "3.4.0", | ||
806 | + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", | ||
807 | + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", | ||
808 | + "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.", | ||
809 | + "bin": { | ||
810 | + "uuid": "bin/uuid" | ||
811 | + } | ||
812 | + }, | ||
813 | + "node_modules/vary": { | ||
814 | + "version": "1.0.1", | ||
815 | + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", | ||
816 | + "integrity": "sha512-yNsH+tC0r8quK2tg/yqkXqqaYzeKTkSqQ+8T6xCoWgOi/bU/omMYz+6k+I91JJJDeltJzI7oridTOq6OYkY0Tw==", | ||
817 | + "engines": { | ||
818 | + "node": ">= 0.8" | ||
819 | + } | ||
820 | + }, | ||
821 | + "node_modules/verror": { | ||
822 | + "version": "1.10.0", | ||
823 | + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", | ||
824 | + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", | ||
825 | + "engines": [ | ||
826 | + "node >=0.6.0" | ||
827 | + ], | ||
828 | + "dependencies": { | ||
829 | + "assert-plus": "^1.0.0", | ||
830 | + "core-util-is": "1.0.2", | ||
831 | + "extsprintf": "^1.2.0" | ||
832 | + } | ||
833 | + } | ||
834 | + }, | ||
835 | + "dependencies": { | ||
836 | + "accepts": { | ||
837 | + "version": "1.2.13", | ||
838 | + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", | ||
839 | + "integrity": "sha512-R190A3EzrS4huFOVZajhXCYZt5p5yrkaQOB4nsWzfth0cYaDcSN5J86l58FJ1dt7igp37fB/QhnuFkGAJmr+eg==", | ||
840 | + "requires": { | ||
841 | + "mime-types": "~2.1.6", | ||
842 | + "negotiator": "0.5.3" | ||
843 | + } | ||
844 | + }, | ||
845 | + "ajv": { | ||
846 | + "version": "6.12.6", | ||
847 | + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", | ||
848 | + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", | ||
849 | + "requires": { | ||
850 | + "fast-deep-equal": "^3.1.1", | ||
851 | + "fast-json-stable-stringify": "^2.0.0", | ||
852 | + "json-schema-traverse": "^0.4.1", | ||
853 | + "uri-js": "^4.2.2" | ||
854 | + } | ||
855 | + }, | ||
856 | + "array-flatten": { | ||
857 | + "version": "1.1.1", | ||
858 | + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | ||
859 | + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" | ||
860 | + }, | ||
861 | + "asn1": { | ||
862 | + "version": "0.2.6", | ||
863 | + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", | ||
864 | + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", | ||
865 | + "requires": { | ||
866 | + "safer-buffer": "~2.1.0" | ||
867 | + } | ||
868 | + }, | ||
869 | + "assert-plus": { | ||
870 | + "version": "1.0.0", | ||
871 | + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", | ||
872 | + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" | ||
873 | + }, | ||
874 | + "asynckit": { | ||
875 | + "version": "0.4.0", | ||
876 | + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", | ||
877 | + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" | ||
878 | + }, | ||
879 | + "aws-sign2": { | ||
880 | + "version": "0.7.0", | ||
881 | + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", | ||
882 | + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" | ||
883 | + }, | ||
884 | + "aws4": { | ||
885 | + "version": "1.11.0", | ||
886 | + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", | ||
887 | + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" | ||
888 | + }, | ||
889 | + "bcrypt-pbkdf": { | ||
890 | + "version": "1.0.2", | ||
891 | + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", | ||
892 | + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", | ||
893 | + "requires": { | ||
894 | + "tweetnacl": "^0.14.3" | ||
895 | + } | ||
896 | + }, | ||
897 | + "caseless": { | ||
898 | + "version": "0.12.0", | ||
899 | + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", | ||
900 | + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" | ||
901 | + }, | ||
902 | + "combined-stream": { | ||
903 | + "version": "1.0.8", | ||
904 | + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", | ||
905 | + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", | ||
906 | + "requires": { | ||
907 | + "delayed-stream": "~1.0.0" | ||
908 | + } | ||
909 | + }, | ||
910 | + "content-disposition": { | ||
911 | + "version": "0.5.1", | ||
912 | + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.1.tgz", | ||
913 | + "integrity": "sha512-LXP3Ekizrynh01Muic+1XMkR46z/d2wAO/TBnwCgdTmpFJrtwkzrCxQCsC7QnNqlShJgrQyygcX2I8oJ0wnzkw==" | ||
914 | + }, | ||
915 | + "content-type": { | ||
916 | + "version": "1.0.4", | ||
917 | + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", | ||
918 | + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" | ||
919 | + }, | ||
920 | + "cookie": { | ||
921 | + "version": "0.1.5", | ||
922 | + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.5.tgz", | ||
923 | + "integrity": "sha512-/lhu+NGBI5pOLXILS07DrPXYX0QDD/ejVhbwoCUcLPBqMEK9b++f9rUhAlhLkcTz9mV6QSeD+w3cHJ96rMZaFQ==" | ||
924 | + }, | ||
925 | + "cookie-signature": { | ||
926 | + "version": "1.0.6", | ||
927 | + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | ||
928 | + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" | ||
929 | + }, | ||
930 | + "core-util-is": { | ||
931 | + "version": "1.0.2", | ||
932 | + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | ||
933 | + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" | ||
934 | + }, | ||
935 | + "dashdash": { | ||
936 | + "version": "1.14.1", | ||
937 | + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", | ||
938 | + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", | ||
939 | + "requires": { | ||
940 | + "assert-plus": "^1.0.0" | ||
941 | + } | ||
942 | + }, | ||
943 | + "debug": { | ||
944 | + "version": "2.2.0", | ||
945 | + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", | ||
946 | + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", | ||
947 | + "requires": { | ||
948 | + "ms": "0.7.1" | ||
949 | + } | ||
950 | + }, | ||
951 | + "deep-extend": { | ||
952 | + "version": "0.5.1", | ||
953 | + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", | ||
954 | + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==" | ||
955 | + }, | ||
956 | + "delayed-stream": { | ||
957 | + "version": "1.0.0", | ||
958 | + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | ||
959 | + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" | ||
960 | + }, | ||
961 | + "depd": { | ||
962 | + "version": "1.1.2", | ||
963 | + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", | ||
964 | + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" | ||
965 | + }, | ||
966 | + "destroy": { | ||
967 | + "version": "1.0.4", | ||
968 | + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | ||
969 | + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" | ||
970 | + }, | ||
971 | + "ecc-jsbn": { | ||
972 | + "version": "0.1.2", | ||
973 | + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", | ||
974 | + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", | ||
975 | + "requires": { | ||
976 | + "jsbn": "~0.1.0", | ||
977 | + "safer-buffer": "^2.1.0" | ||
978 | + } | ||
979 | + }, | ||
980 | + "ee-first": { | ||
981 | + "version": "1.1.1", | ||
982 | + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", | ||
983 | + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" | ||
984 | + }, | ||
985 | + "ejs": { | ||
986 | + "version": "2.4.2", | ||
987 | + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.4.2.tgz", | ||
988 | + "integrity": "sha512-mA6xJvRRuXoVRjERxqOtoxwQ4s5sqMLtIpRnFJBlTp6dzAxCowBr75YsPK+/SSHLNohSD0V5bCem19lyAn8qRQ==" | ||
989 | + }, | ||
990 | + "escape-html": { | ||
991 | + "version": "1.0.3", | ||
992 | + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", | ||
993 | + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" | ||
994 | + }, | ||
995 | + "etag": { | ||
996 | + "version": "1.7.0", | ||
997 | + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", | ||
998 | + "integrity": "sha512-Mbv5pNpLNPrm1b4rzZlZlfTRpdDr31oiD43N362sIyvSWVNu5Du33EcJGzvEV4YdYLuENB1HzND907cQkFmXNw==" | ||
999 | + }, | ||
1000 | + "express": { | ||
1001 | + "version": "4.13.4", | ||
1002 | + "resolved": "https://registry.npmjs.org/express/-/express-4.13.4.tgz", | ||
1003 | + "integrity": "sha512-pNykF2h4VgBMH8gJfwwBh4kqaIyV/DcFIX6UpC751GF7du2kA1pkxJ2/SmggVGbYCa4mBRcWh0yiTfK8Dp/Rdg==", | ||
1004 | + "requires": { | ||
1005 | + "accepts": "~1.2.12", | ||
1006 | + "array-flatten": "1.1.1", | ||
1007 | + "content-disposition": "0.5.1", | ||
1008 | + "content-type": "~1.0.1", | ||
1009 | + "cookie": "0.1.5", | ||
1010 | + "cookie-signature": "1.0.6", | ||
1011 | + "debug": "~2.2.0", | ||
1012 | + "depd": "~1.1.0", | ||
1013 | + "escape-html": "~1.0.3", | ||
1014 | + "etag": "~1.7.0", | ||
1015 | + "finalhandler": "0.4.1", | ||
1016 | + "fresh": "0.3.0", | ||
1017 | + "merge-descriptors": "1.0.1", | ||
1018 | + "methods": "~1.1.2", | ||
1019 | + "on-finished": "~2.3.0", | ||
1020 | + "parseurl": "~1.3.1", | ||
1021 | + "path-to-regexp": "0.1.7", | ||
1022 | + "proxy-addr": "~1.0.10", | ||
1023 | + "qs": "4.0.0", | ||
1024 | + "range-parser": "~1.0.3", | ||
1025 | + "send": "0.13.1", | ||
1026 | + "serve-static": "~1.10.2", | ||
1027 | + "type-is": "~1.6.6", | ||
1028 | + "utils-merge": "1.0.0", | ||
1029 | + "vary": "~1.0.1" | ||
1030 | + }, | ||
1031 | + "dependencies": { | ||
1032 | + "qs": { | ||
1033 | + "version": "4.0.0", | ||
1034 | + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", | ||
1035 | + "integrity": "sha512-8MPmJ83uBOPsQj5tQCv4g04/nTiY+d17yl9o3Bw73vC6XlEm2POIRRlOgWJ8i74bkGLII670cDJJZkgiZ2sIkg==" | ||
1036 | + } | ||
1037 | + } | ||
1038 | + }, | ||
1039 | + "extend": { | ||
1040 | + "version": "3.0.2", | ||
1041 | + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", | ||
1042 | + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" | ||
1043 | + }, | ||
1044 | + "extsprintf": { | ||
1045 | + "version": "1.3.0", | ||
1046 | + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", | ||
1047 | + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" | ||
1048 | + }, | ||
1049 | + "fast-deep-equal": { | ||
1050 | + "version": "3.1.3", | ||
1051 | + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", | ||
1052 | + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" | ||
1053 | + }, | ||
1054 | + "fast-json-stable-stringify": { | ||
1055 | + "version": "2.1.0", | ||
1056 | + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", | ||
1057 | + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" | ||
1058 | + }, | ||
1059 | + "finalhandler": { | ||
1060 | + "version": "0.4.1", | ||
1061 | + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", | ||
1062 | + "integrity": "sha512-+AkanbaabSCYrDcrU+TcA/8SEyMDAN7mjE6GC71GAlvYDXM4wzUsRqLLS2qPtWecIlkX5+MMZGd2RyxO3yBOfg==", | ||
1063 | + "requires": { | ||
1064 | + "debug": "~2.2.0", | ||
1065 | + "escape-html": "~1.0.3", | ||
1066 | + "on-finished": "~2.3.0", | ||
1067 | + "unpipe": "~1.0.0" | ||
1068 | + } | ||
1069 | + }, | ||
1070 | + "forever-agent": { | ||
1071 | + "version": "0.6.1", | ||
1072 | + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", | ||
1073 | + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" | ||
1074 | + }, | ||
1075 | + "form-data": { | ||
1076 | + "version": "2.3.3", | ||
1077 | + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", | ||
1078 | + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", | ||
1079 | + "requires": { | ||
1080 | + "asynckit": "^0.4.0", | ||
1081 | + "combined-stream": "^1.0.6", | ||
1082 | + "mime-types": "^2.1.12" | ||
1083 | + } | ||
1084 | + }, | ||
1085 | + "forwarded": { | ||
1086 | + "version": "0.1.2", | ||
1087 | + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", | ||
1088 | + "integrity": "sha512-Ua9xNhH0b8pwE3yRbFfXJvfdWF0UHNCdeyb2sbi9Ul/M+r3PTdrz7Cv4SCfZRMjmzEM9PhraqfZFbGTIg3OMyA==" | ||
1089 | + }, | ||
1090 | + "fresh": { | ||
1091 | + "version": "0.3.0", | ||
1092 | + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", | ||
1093 | + "integrity": "sha512-akx5WBKAwMSg36qoHTuMMVncHWctlaDGslJASDYAhoLrzDUDCjZlOngNa/iC6lPm9aA0qk8pN5KnpmbJHSIIQQ==" | ||
1094 | + }, | ||
1095 | + "getpass": { | ||
1096 | + "version": "0.1.7", | ||
1097 | + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", | ||
1098 | + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", | ||
1099 | + "requires": { | ||
1100 | + "assert-plus": "^1.0.0" | ||
1101 | + } | ||
1102 | + }, | ||
1103 | + "har-schema": { | ||
1104 | + "version": "2.0.0", | ||
1105 | + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", | ||
1106 | + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" | ||
1107 | + }, | ||
1108 | + "har-validator": { | ||
1109 | + "version": "5.1.5", | ||
1110 | + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", | ||
1111 | + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", | ||
1112 | + "requires": { | ||
1113 | + "ajv": "^6.12.3", | ||
1114 | + "har-schema": "^2.0.0" | ||
1115 | + } | ||
1116 | + }, | ||
1117 | + "http-errors": { | ||
1118 | + "version": "1.3.1", | ||
1119 | + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", | ||
1120 | + "integrity": "sha512-gMygNskMurDCWfoCdyh1gOeDfSbkAHXqz94QoPj5IHIUjC/BG8/xv7FSEUr7waR5RcAya4j58bft9Wu/wHNeXA==", | ||
1121 | + "requires": { | ||
1122 | + "inherits": "~2.0.1", | ||
1123 | + "statuses": "1" | ||
1124 | + } | ||
1125 | + }, | ||
1126 | + "http-signature": { | ||
1127 | + "version": "1.2.0", | ||
1128 | + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", | ||
1129 | + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", | ||
1130 | + "requires": { | ||
1131 | + "assert-plus": "^1.0.0", | ||
1132 | + "jsprim": "^1.2.2", | ||
1133 | + "sshpk": "^1.7.0" | ||
1134 | + } | ||
1135 | + }, | ||
1136 | + "inherits": { | ||
1137 | + "version": "2.0.4", | ||
1138 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||
1139 | + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||
1140 | + }, | ||
1141 | + "ipaddr.js": { | ||
1142 | + "version": "1.0.5", | ||
1143 | + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", | ||
1144 | + "integrity": "sha512-wBj+q+3uP78gMowwWgFLAYm/q4x5goyZmDsmuvyz+nd1u0D/ghgXXtc1OkgmTzSiWT101kiqGacwFk9eGQw6xQ==" | ||
1145 | + }, | ||
1146 | + "is-typedarray": { | ||
1147 | + "version": "1.0.0", | ||
1148 | + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", | ||
1149 | + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" | ||
1150 | + }, | ||
1151 | + "isstream": { | ||
1152 | + "version": "0.1.2", | ||
1153 | + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", | ||
1154 | + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" | ||
1155 | + }, | ||
1156 | + "jsbn": { | ||
1157 | + "version": "0.1.1", | ||
1158 | + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", | ||
1159 | + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" | ||
1160 | + }, | ||
1161 | + "json-schema": { | ||
1162 | + "version": "0.4.0", | ||
1163 | + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", | ||
1164 | + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" | ||
1165 | + }, | ||
1166 | + "json-schema-traverse": { | ||
1167 | + "version": "0.4.1", | ||
1168 | + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", | ||
1169 | + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" | ||
1170 | + }, | ||
1171 | + "json-stringify-safe": { | ||
1172 | + "version": "5.0.1", | ||
1173 | + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", | ||
1174 | + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" | ||
1175 | + }, | ||
1176 | + "jsprim": { | ||
1177 | + "version": "1.4.2", | ||
1178 | + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", | ||
1179 | + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", | ||
1180 | + "requires": { | ||
1181 | + "assert-plus": "1.0.0", | ||
1182 | + "extsprintf": "1.3.0", | ||
1183 | + "json-schema": "0.4.0", | ||
1184 | + "verror": "1.10.0" | ||
1185 | + } | ||
1186 | + }, | ||
1187 | + "media-typer": { | ||
1188 | + "version": "0.3.0", | ||
1189 | + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | ||
1190 | + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" | ||
1191 | + }, | ||
1192 | + "merge-descriptors": { | ||
1193 | + "version": "1.0.1", | ||
1194 | + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", | ||
1195 | + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" | ||
1196 | + }, | ||
1197 | + "methods": { | ||
1198 | + "version": "1.1.2", | ||
1199 | + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | ||
1200 | + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" | ||
1201 | + }, | ||
1202 | + "mime": { | ||
1203 | + "version": "1.3.4", | ||
1204 | + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", | ||
1205 | + "integrity": "sha512-sAaYXszED5ALBt665F0wMQCUXpGuZsGdopoqcHPdL39ZYdi7uHoZlhrfZfhv8WzivhBzr/oXwaj+yiK5wY8MXQ==" | ||
1206 | + }, | ||
1207 | + "mime-db": { | ||
1208 | + "version": "1.52.0", | ||
1209 | + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", | ||
1210 | + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" | ||
1211 | + }, | ||
1212 | + "mime-types": { | ||
1213 | + "version": "2.1.35", | ||
1214 | + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", | ||
1215 | + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", | ||
1216 | + "requires": { | ||
1217 | + "mime-db": "1.52.0" | ||
1218 | + } | ||
1219 | + }, | ||
1220 | + "ms": { | ||
1221 | + "version": "0.7.1", | ||
1222 | + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", | ||
1223 | + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==" | ||
1224 | + }, | ||
1225 | + "negotiator": { | ||
1226 | + "version": "0.5.3", | ||
1227 | + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", | ||
1228 | + "integrity": "sha512-oXmnazqehLNFohqgLxRyUdOQU9/UX0NpCpsnbjWUjM62ZM8oSOXYZpHc68XR130ftPNano0oQXGdREAplZRhaQ==" | ||
1229 | + }, | ||
1230 | + "oauth-sign": { | ||
1231 | + "version": "0.9.0", | ||
1232 | + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", | ||
1233 | + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" | ||
1234 | + }, | ||
1235 | + "on-finished": { | ||
1236 | + "version": "2.3.0", | ||
1237 | + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", | ||
1238 | + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", | ||
1239 | + "requires": { | ||
1240 | + "ee-first": "1.1.1" | ||
1241 | + } | ||
1242 | + }, | ||
1243 | + "parseurl": { | ||
1244 | + "version": "1.3.3", | ||
1245 | + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | ||
1246 | + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" | ||
1247 | + }, | ||
1248 | + "path-to-regexp": { | ||
1249 | + "version": "0.1.7", | ||
1250 | + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", | ||
1251 | + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" | ||
1252 | + }, | ||
1253 | + "performance-now": { | ||
1254 | + "version": "2.1.0", | ||
1255 | + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", | ||
1256 | + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" | ||
1257 | + }, | ||
1258 | + "proxy-addr": { | ||
1259 | + "version": "1.0.10", | ||
1260 | + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", | ||
1261 | + "integrity": "sha512-iq6kR9KN32aFvXjDyC8nIrm203AHeIBPjL6dpaHgSdbpTO8KoPlD0xG92xwwtkCL9+yt1LE5VwpEk43TyP38Dg==", | ||
1262 | + "requires": { | ||
1263 | + "forwarded": "~0.1.0", | ||
1264 | + "ipaddr.js": "1.0.5" | ||
1265 | + } | ||
1266 | + }, | ||
1267 | + "psl": { | ||
1268 | + "version": "1.8.0", | ||
1269 | + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", | ||
1270 | + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" | ||
1271 | + }, | ||
1272 | + "punycode": { | ||
1273 | + "version": "2.1.1", | ||
1274 | + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", | ||
1275 | + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" | ||
1276 | + }, | ||
1277 | + "qs": { | ||
1278 | + "version": "6.5.3", | ||
1279 | + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", | ||
1280 | + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" | ||
1281 | + }, | ||
1282 | + "range-parser": { | ||
1283 | + "version": "1.0.3", | ||
1284 | + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", | ||
1285 | + "integrity": "sha512-nDsRrtIxVUO5opg/A8T2S3ebULVIfuh8ECbh4w3N4mWxIiT3QILDJDUQayPqm2e8Q8NUa0RSUkGCfe33AfjR3Q==" | ||
1286 | + }, | ||
1287 | + "request": { | ||
1288 | + "version": "2.88.2", | ||
1289 | + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", | ||
1290 | + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", | ||
1291 | + "requires": { | ||
1292 | + "aws-sign2": "~0.7.0", | ||
1293 | + "aws4": "^1.8.0", | ||
1294 | + "caseless": "~0.12.0", | ||
1295 | + "combined-stream": "~1.0.6", | ||
1296 | + "extend": "~3.0.2", | ||
1297 | + "forever-agent": "~0.6.1", | ||
1298 | + "form-data": "~2.3.2", | ||
1299 | + "har-validator": "~5.1.3", | ||
1300 | + "http-signature": "~1.2.0", | ||
1301 | + "is-typedarray": "~1.0.0", | ||
1302 | + "isstream": "~0.1.2", | ||
1303 | + "json-stringify-safe": "~5.0.1", | ||
1304 | + "mime-types": "~2.1.19", | ||
1305 | + "oauth-sign": "~0.9.0", | ||
1306 | + "performance-now": "^2.1.0", | ||
1307 | + "qs": "~6.5.2", | ||
1308 | + "safe-buffer": "^5.1.2", | ||
1309 | + "tough-cookie": "~2.5.0", | ||
1310 | + "tunnel-agent": "^0.6.0", | ||
1311 | + "uuid": "^3.3.2" | ||
1312 | + } | ||
1313 | + }, | ||
1314 | + "safe-buffer": { | ||
1315 | + "version": "5.2.1", | ||
1316 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | ||
1317 | + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" | ||
1318 | + }, | ||
1319 | + "safer-buffer": { | ||
1320 | + "version": "2.1.2", | ||
1321 | + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", | ||
1322 | + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | ||
1323 | + }, | ||
1324 | + "send": { | ||
1325 | + "version": "0.13.1", | ||
1326 | + "resolved": "https://registry.npmjs.org/send/-/send-0.13.1.tgz", | ||
1327 | + "integrity": "sha512-tajY7yMvJena2iggWhCzaysOVj/CH4AzqV2lJHUHboVNWQkIFEBJdKtzryKg3fLa83lxq9n/WQV53w9JZCe72w==", | ||
1328 | + "requires": { | ||
1329 | + "debug": "~2.2.0", | ||
1330 | + "depd": "~1.1.0", | ||
1331 | + "destroy": "~1.0.4", | ||
1332 | + "escape-html": "~1.0.3", | ||
1333 | + "etag": "~1.7.0", | ||
1334 | + "fresh": "0.3.0", | ||
1335 | + "http-errors": "~1.3.1", | ||
1336 | + "mime": "1.3.4", | ||
1337 | + "ms": "0.7.1", | ||
1338 | + "on-finished": "~2.3.0", | ||
1339 | + "range-parser": "~1.0.3", | ||
1340 | + "statuses": "~1.2.1" | ||
1341 | + } | ||
1342 | + }, | ||
1343 | + "serve-static": { | ||
1344 | + "version": "1.10.3", | ||
1345 | + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", | ||
1346 | + "integrity": "sha512-ScsFovjz3Db+vGgpofR/U8p8UULEcGV9akqyo8TQ1mMnjcxemE7Y5Muo+dvy3tJLY/doY2v1H61eCBMYGmwfrA==", | ||
1347 | + "requires": { | ||
1348 | + "escape-html": "~1.0.3", | ||
1349 | + "parseurl": "~1.3.1", | ||
1350 | + "send": "0.13.2" | ||
1351 | + }, | ||
1352 | + "dependencies": { | ||
1353 | + "send": { | ||
1354 | + "version": "0.13.2", | ||
1355 | + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", | ||
1356 | + "integrity": "sha512-cQ0rmXHrdO2Iof08igV2bG/yXWD106ANwBg6DkGQNT2Vsznbgq6T0oAIQboy1GoFsIuy51jCim26aA9tj3Z3Zg==", | ||
1357 | + "requires": { | ||
1358 | + "debug": "~2.2.0", | ||
1359 | + "depd": "~1.1.0", | ||
1360 | + "destroy": "~1.0.4", | ||
1361 | + "escape-html": "~1.0.3", | ||
1362 | + "etag": "~1.7.0", | ||
1363 | + "fresh": "0.3.0", | ||
1364 | + "http-errors": "~1.3.1", | ||
1365 | + "mime": "1.3.4", | ||
1366 | + "ms": "0.7.1", | ||
1367 | + "on-finished": "~2.3.0", | ||
1368 | + "range-parser": "~1.0.3", | ||
1369 | + "statuses": "~1.2.1" | ||
1370 | + } | ||
1371 | + } | ||
1372 | + } | ||
1373 | + }, | ||
1374 | + "sshpk": { | ||
1375 | + "version": "1.17.0", | ||
1376 | + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", | ||
1377 | + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", | ||
1378 | + "requires": { | ||
1379 | + "asn1": "~0.2.3", | ||
1380 | + "assert-plus": "^1.0.0", | ||
1381 | + "bcrypt-pbkdf": "^1.0.0", | ||
1382 | + "dashdash": "^1.12.0", | ||
1383 | + "ecc-jsbn": "~0.1.1", | ||
1384 | + "getpass": "^0.1.1", | ||
1385 | + "jsbn": "~0.1.0", | ||
1386 | + "safer-buffer": "^2.0.2", | ||
1387 | + "tweetnacl": "~0.14.0" | ||
1388 | + } | ||
1389 | + }, | ||
1390 | + "statuses": { | ||
1391 | + "version": "1.2.1", | ||
1392 | + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", | ||
1393 | + "integrity": "sha512-pVEuxHdSGrt8QmQ3LOZXLhSA6MP/iPqKzZeO6Squ7PNGkA/9MBsSfV0/L+bIxkoDmjF4tZcLpcVq/fkqoHvuKg==" | ||
1394 | + }, | ||
1395 | + "tough-cookie": { | ||
1396 | + "version": "2.5.0", | ||
1397 | + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", | ||
1398 | + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", | ||
1399 | + "requires": { | ||
1400 | + "psl": "^1.1.28", | ||
1401 | + "punycode": "^2.1.1" | ||
1402 | + } | ||
1403 | + }, | ||
1404 | + "tunnel-agent": { | ||
1405 | + "version": "0.6.0", | ||
1406 | + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", | ||
1407 | + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", | ||
1408 | + "requires": { | ||
1409 | + "safe-buffer": "^5.0.1" | ||
1410 | + } | ||
1411 | + }, | ||
1412 | + "tweetnacl": { | ||
1413 | + "version": "0.14.5", | ||
1414 | + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", | ||
1415 | + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" | ||
1416 | + }, | ||
1417 | + "twitter": { | ||
1418 | + "version": "1.7.1", | ||
1419 | + "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", | ||
1420 | + "integrity": "sha512-Do7l/WzFnUZC14ABtZfDiOHKl6M9Ft5tE4YF0ev9XLm4yh7m8R98D82rzeDAMjbjMZk2R/tb6sgXXb3sPKoaVw==", | ||
1421 | + "requires": { | ||
1422 | + "deep-extend": "^0.5.0", | ||
1423 | + "request": "^2.72.0" | ||
1424 | + } | ||
1425 | + }, | ||
1426 | + "type-is": { | ||
1427 | + "version": "1.6.18", | ||
1428 | + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | ||
1429 | + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", | ||
1430 | + "requires": { | ||
1431 | + "media-typer": "0.3.0", | ||
1432 | + "mime-types": "~2.1.24" | ||
1433 | + } | ||
1434 | + }, | ||
1435 | + "unpipe": { | ||
1436 | + "version": "1.0.0", | ||
1437 | + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | ||
1438 | + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" | ||
1439 | + }, | ||
1440 | + "uri-js": { | ||
1441 | + "version": "4.4.1", | ||
1442 | + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", | ||
1443 | + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", | ||
1444 | + "requires": { | ||
1445 | + "punycode": "^2.1.0" | ||
1446 | + } | ||
1447 | + }, | ||
1448 | + "utils-merge": { | ||
1449 | + "version": "1.0.0", | ||
1450 | + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", | ||
1451 | + "integrity": "sha512-HwU9SLQEtyo+0uoKXd1nkLqigUWLB+QuNQR4OcmB73eWqksM5ovuqcycks2x043W8XVb75rG1HQ0h93TMXkzQQ==" | ||
1452 | + }, | ||
1453 | + "uuid": { | ||
1454 | + "version": "3.4.0", | ||
1455 | + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", | ||
1456 | + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" | ||
1457 | + }, | ||
1458 | + "vary": { | ||
1459 | + "version": "1.0.1", | ||
1460 | + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", | ||
1461 | + "integrity": "sha512-yNsH+tC0r8quK2tg/yqkXqqaYzeKTkSqQ+8T6xCoWgOi/bU/omMYz+6k+I91JJJDeltJzI7oridTOq6OYkY0Tw==" | ||
1462 | + }, | ||
1463 | + "verror": { | ||
1464 | + "version": "1.10.0", | ||
1465 | + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", | ||
1466 | + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", | ||
1467 | + "requires": { | ||
1468 | + "assert-plus": "^1.0.0", | ||
1469 | + "core-util-is": "1.0.2", | ||
1470 | + "extsprintf": "^1.2.0" | ||
1471 | + } | ||
1472 | + } | ||
1473 | + } | ||
1474 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
package.json
0 → 100644
1 | { | 1 | { |
2 | - "name": "express-tutorial", | ||
3 | - "version": "1.0.0", | ||
4 | - "dependencies": | ||
5 | - { | ||
6 | - "express": "~4.13.1", | ||
7 | - "ejs": "~2.4.1" | ||
8 | - } | ||
9 | - } | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
2 | + "name": "express-tutorial", | ||
3 | + "version": "1.0.0", | ||
4 | + "dependencies": { | ||
5 | + "express": "~4.13.1", | ||
6 | + "ejs": "~2.4.1", | ||
7 | + "twitter": "^1.7.1" | ||
8 | + } | ||
9 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
public/.DS_Store
0 → 100644
No preview for this file type
... | @@ -7,10 +7,10 @@ app.set('views', __dirname + '/views'); //서버가 읽을 수 있도록 HTML | ... | @@ -7,10 +7,10 @@ app.set('views', __dirname + '/views'); //서버가 읽을 수 있도록 HTML |
7 | app.set('view engine', 'ejs'); //서버가 HTML 렌더링을 할 때, EJS 엔진을 사용하도록 설정합니다. | 7 | app.set('view engine', 'ejs'); //서버가 HTML 렌더링을 할 때, EJS 엔진을 사용하도록 설정합니다. |
8 | app.engine('html', require('ejs').renderFile); | 8 | app.engine('html', require('ejs').renderFile); |
9 | 9 | ||
10 | -app.get('/timeline/:screen_name',tweetsController.getUserTweets); // '/timeline/:screen_name'형식의 url이 들어오면 뒤의 함수를 실행시킴 | 10 | +app.get('/timeline/:screen_name', tweetsController.getUserTweets); // '/timeline/:screen_name'형식의 url이 들어오면 뒤의 함수를 실행시킴 |
11 | -app.get('/timeline/:screen_name/:keyword',tweetsController.getUserTweetsForSearch); | 11 | +app.get('/timeline/:screen_name/:keyword', tweetsController.getUserTweetsForSearch); |
12 | -app.get('/popular/:screen_name',tweetsController.getUserRetweet);//'/hot/:screen_name'형식의 url이 들어오면 뒤의 함수를 실행시킴 | 12 | +app.get('/popular/:screen_name', tweetsController.getUserRetweet);//'/hot/:screen_name'형식의 url이 들어오면 뒤의 함수를 실행시킴 |
13 | -var server = app.listen(3000, function(){ //3000 포트 사용 | 13 | +var server = app.listen(3000, function () { //3000 포트 사용 |
14 | console.log("Express server has started on port 3000"); | 14 | console.log("Express server has started on port 3000"); |
15 | }) | 15 | }) |
16 | 16 | ... | ... |
1 | const Twitter = require('twitter'); | 1 | const Twitter = require('twitter'); |
2 | 2 | ||
3 | const client = new Twitter({ | 3 | const client = new Twitter({ |
4 | - consumer_key: 'key1', | 4 | + consumer_key: "consumer_key", |
5 | - consumer_secret: 'key2', | 5 | + consumer_secret: "consumer_secret", |
6 | - access_token_key: 'key3', | 6 | + access_token_key: "access_token_key", |
7 | - access_token_secret: 'key4' | 7 | + access_token_secret: "access_token_secret" |
8 | 8 | ||
9 | }); | 9 | }); |
10 | 10 | ||
11 | 11 | ||
12 | -exports.getUserTweets = async function(req, res){ //전체 타임라인 | 12 | +exports.getUserTweets = async function (req, res) { //전체 타임라인 |
13 | - try{ | 13 | + try { |
14 | - let data = client.get('statuses/user_timeline', req.params, function(error,tweets,response){ //트위터 api에서 유저의 타임라인을 가져옴 req.params에 유저 아이디가 들어있음 | 14 | + let data = client.get('statuses/user_timeline', req.params, function (error, tweets, response) { //트위터 api에서 유저의 타임라인을 가져옴 req.params에 유저 아이디가 들어있음 |
15 | - if(!error){ | 15 | + if (!error) { |
16 | - | 16 | + |
17 | console.log(tweets); //가져온 타임라인 내용 콘솔창에 출력 | 17 | console.log(tweets); //가져온 타임라인 내용 콘솔창에 출력 |
18 | - res.render('timeline.html',{ timeline: tweets}); //timeline.html 화면에 뿌려줌 그리고 tweets값을 저 페이지로 보냄 | 18 | + res.render('timeline.html', { timeline: tweets }); //timeline.html 화면에 뿌려줌 그리고 tweets값을 저 페이지로 보냄 |
19 | + } | ||
20 | + else { | ||
21 | + let msg = "" | ||
22 | + if (response.statusCode === 404) | ||
23 | + msg = "User not found." | ||
24 | + else { | ||
25 | + try { | ||
26 | + msg = error[0].message | ||
27 | + } | ||
28 | + catch { | ||
29 | + } | ||
30 | + } | ||
31 | + | ||
32 | + res.render('error.html', { statusCode: response.statusCode, msg: msg }); | ||
33 | + | ||
19 | } | 34 | } |
20 | }); //아이디를 토대로 타임라인 가져오기 | 35 | }); //아이디를 토대로 타임라인 가져오기 |
21 | - | ||
22 | 36 | ||
23 | - }catch(err){ //에러 발생하면 실행 | 37 | + |
38 | + } catch (err) { //에러 발생하면 실행 | ||
39 | + res.render('error.html', { statusCode: 500, msg: String(err) }); | ||
24 | console.log(err); | 40 | console.log(err); |
25 | res.sendStatus(500); | 41 | res.sendStatus(500); |
26 | } | 42 | } |
27 | } | 43 | } |
28 | 44 | ||
29 | -exports.getUserTweetsForSearch = async function(req, res){ //검색 | 45 | +exports.getUserTweetsForSearch = async function (req, res) { //검색 |
30 | - try{ | 46 | + try { |
31 | - let data = client.get('statuses/user_timeline', req.params, function(error,tweets,response){ //트위터 api에서 유저의 타임라인을 가져옴 req.params에 유저 아이디가 들어있음 | 47 | + let data = client.get('statuses/user_timeline', req.params, function (error, tweets, response) { //트위터 api에서 유저의 타임라인을 가져옴 req.params에 유저 아이디가 들어있음 |
32 | - if(!error){ | 48 | + if (!error) { |
33 | - res.render('search.html',{ timeline: tweets, keyword:req.params.keyword}); //timeline.html 화면에 뿌려줌 그리고 tweets값을 저 페이지로 보냄 | 49 | + res.render('search.html', { timeline: tweets, keyword: req.params.keyword }); //timeline.html 화면에 뿌려줌 그리고 tweets값을 저 페이지로 보냄 |
50 | + | ||
34 | console.log(req.params); | 51 | console.log(req.params); |
35 | } | 52 | } |
53 | + else { | ||
54 | + let msg = "" | ||
55 | + if (response.statusCode === 404) | ||
56 | + msg = "User not found." | ||
57 | + else { | ||
58 | + try { | ||
59 | + msg = error[0].message | ||
60 | + } | ||
61 | + catch { | ||
62 | + } | ||
63 | + } | ||
64 | + | ||
65 | + res.render('error.html', { statusCode: response.statusCode, msg: msg }); | ||
66 | + } | ||
36 | }); //아이디를 토대로 타임라인 가져오기 | 67 | }); //아이디를 토대로 타임라인 가져오기 |
37 | 68 | ||
38 | - }catch(err){ //에러 발생하면 실행 | 69 | + } catch (err) { //에러 발생하면 실행 |
39 | console.log(err); | 70 | console.log(err); |
71 | + res.render('error.html', { statusCode: 500, msg: String(err) }); | ||
72 | + | ||
40 | res.sendStatus(500); | 73 | res.sendStatus(500); |
41 | } | 74 | } |
42 | } | 75 | } |
43 | 76 | ||
44 | 77 | ||
45 | -exports.getUserRetweet = async function(req, res){ //인기있는 글 | 78 | +exports.getUserRetweet = async function (req, res) { //인기있는 글 |
46 | - try{ | 79 | + try { |
47 | - let retweetdata = client.get('statuses/user_timeline', req.params, function(error, tweets, response) {//리트윗 | 80 | + let retweetdata = client.get('statuses/user_timeline', req.params, function (error, tweets, response) {//리트윗 |
48 | - if(!error){ | 81 | + if (!error) { |
49 | - tweets.sort(function(a,b){ | 82 | + tweets.sort(function (a, b) { |
50 | - return b.retweet_count-a.retweet_count; | 83 | + return b.retweet_count - a.retweet_count; |
51 | - });//리트윗 data 내림차순로 정렬(?) | 84 | + });//리트윗 data 내림차순로 정렬(?) |
52 | - console.log(tweets); | 85 | + console.log(tweets); |
53 | - res.render('popular.html',{timeline: tweets}); | 86 | + res.render('popular.html', { timeline: tweets }); |
54 | - } | 87 | + } |
55 | - | 88 | + else { |
56 | - }); | 89 | + let msg = "" |
57 | - }catch(err){ | 90 | + if (response.statusCode === 404) |
91 | + msg = "User not found." | ||
92 | + else { | ||
93 | + try { | ||
94 | + msg = error[0].message | ||
95 | + } | ||
96 | + catch { | ||
97 | + } | ||
98 | + } | ||
99 | + | ||
100 | + res.render('error.html', { statusCode: response.statusCode, msg: msg }); | ||
101 | + } | ||
102 | + | ||
103 | + }); | ||
104 | + } catch (err) { | ||
58 | console.log(err); | 105 | console.log(err); |
106 | + res.render('error.html', { statusCode: 500, msg: String(err) }); | ||
59 | res.sendStatus(500); | 107 | res.sendStatus(500); |
60 | } | 108 | } |
61 | } | 109 | } | ... | ... |
views/error.html
0 → 100644
1 | +<html lang="en"> | ||
2 | + | ||
3 | + | ||
4 | +<head> | ||
5 | + <meta charset="UTF-8" /> | ||
6 | + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> | ||
7 | + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
8 | + <title>Error Page</title> | ||
9 | + <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"> | ||
10 | +</head> | ||
11 | + | ||
12 | + | ||
13 | +<body> | ||
14 | + <div class="d-flex align-items-center justify-content-center vh-100"> | ||
15 | + <div class="text-center"> | ||
16 | + <h1 class="display-1 fw-bold"> | ||
17 | + <%= statusCode %> | ||
18 | + </h1> | ||
19 | + <p class="fs-3"> <span class="text-danger">Opps!</span> Page not found.</p> | ||
20 | + <p class="lead"> | ||
21 | + <%= msg %> | ||
22 | + </p> | ||
23 | + <a href="/" class="btn btn-primary">Go Home</a> | ||
24 | + </div> | ||
25 | + </div> | ||
26 | +</body> | ||
27 | + | ||
28 | + | ||
29 | +</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | <html> | 1 | <html> |
2 | - <head> | 2 | + |
3 | - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | 3 | +<head> |
4 | - <meta name="viewport" content="width=device-width, initial-scale=1" /> | 4 | + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
5 | - <meta http-equiv="X-UA-Compatible" content="IE=edge" /> | 5 | + <meta name="viewport" content="width=device-width, initial-scale=1" /> |
6 | - <meta name="author" content="colorlib.com"> | 6 | + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
7 | - <link href="https://fonts.googleapis.com/css?family=Poppins" rel="stylesheet" /> | 7 | + <meta name="author" content="colorlib.com"> |
8 | - <link href="css/style.css" rel="stylesheet" /> | 8 | + <link href="https://fonts.googleapis.com/css?family=Poppins" rel="stylesheet" /> |
9 | - </head> | 9 | + <link href="css/style.css" rel="stylesheet" /> |
10 | - <body> | 10 | +</head> |
11 | - <div class="s130"> <!--아이디 검색창1 : 계정내 검색--> | 11 | + |
12 | - <form> | 12 | +<body> |
13 | - <div class="inner-form"> | 13 | + <div class="s130"> |
14 | - <div class="input-field first-wrap"> | 14 | + <!--아이디 검색창1 : 계정내 검색--> |
15 | - <div class="svg-wrapper"> | 15 | + <form> |
16 | - <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> | 16 | + <div class="inner-form"> |
17 | - <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path> | 17 | + <div class="input-field first-wrap"> |
18 | - </svg> | 18 | + <div class="svg-wrapper"> |
19 | - </div> | 19 | + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> |
20 | - <input id="search1" type="text" placeholder="아이디를 입력하세요" /> | 20 | + <path |
21 | - </div> | 21 | + d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"> |
22 | - <div class="input-field second-wrap"> | 22 | + </path> |
23 | - <button class="btn-search" type="button" onclick="movePage1()">계정 내 검색하기</button> | 23 | + </svg> |
24 | </div> | 24 | </div> |
25 | - <script type ="text/javascript"> | 25 | + <input id="search1" type="text" placeholder="아이디를 입력하세요" /> |
26 | - function movePage1(){ //계정 내 검색 페이지로 이동하기 위한 함수 | 26 | + </div> |
27 | - location.href ="/timeline/"+document.getElementById('search1').value //url을 이렇게 변경함 | 27 | + <div class="input-field second-wrap"> |
28 | - } | 28 | + <button class="btn-search" type="button" onclick="movePage1()">계정 내 검색하기</button> |
29 | - </script> | ||
30 | </div> | 29 | </div> |
30 | + <script type="text/javascript"> | ||
31 | + function movePage1() { //계정 내 검색 페이지로 이동하기 위한 함수 | ||
32 | + location.href = "/timeline/" + document.getElementById('search1').value //url을 이렇게 변경함 | ||
33 | + } | ||
34 | + </script> | ||
35 | + </div> | ||
31 | 36 | ||
32 | - <div class="inner-form"> <!--아이디 검색창2 : 인기글 검색--> | 37 | + <div class="inner-form"> |
33 | - <div class="input-field first-wrap"> | 38 | + <!--아이디 검색창2 : 인기글 검색--> |
34 | - <div class="svg-wrapper"> | 39 | + <div class="input-field first-wrap"> |
35 | - <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> | 40 | + <div class="svg-wrapper"> |
36 | - <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path> | 41 | + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> |
37 | - </svg> | 42 | + <path |
38 | - </div> | 43 | + d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"> |
39 | - <input id="search" type="text" placeholder="아이디를 입력하세요" /> | 44 | + </path> |
45 | + </svg> | ||
40 | </div> | 46 | </div> |
41 | - <div class="input-field second-wrap"> | 47 | + <input id="search" type="text" placeholder="아이디를 입력하세요" /> |
42 | - <button class="btn-search" type="button" onclick="movePage()">인기 게시물 검색하기</button> | 48 | + </div> |
43 | - </div> | 49 | + <div class="input-field second-wrap"> |
44 | - <script type ="text/javascript"> | 50 | + <button class="btn-search" type="button" onclick="movePage()">인기 게시물 검색하기</button> |
45 | - function movePage(){ //인기 게시물 페이지 이동을 위한 함수 | ||
46 | - location.href ="/popular/"+document.getElementById('search').value //url을 이렇게 변경함 | ||
47 | - } | ||
48 | - </script> | ||
49 | </div> | 51 | </div> |
50 | - <span class="info">ex)TwitterKorea </span> | 52 | + <script type="text/javascript"> |
53 | + function movePage() { //인기 게시물 페이지 이동을 위한 함수 | ||
54 | + location.href = "/popular/" + document.getElementById('search').value //url을 이렇게 변경함 | ||
55 | + } | ||
56 | + </script> | ||
57 | + </div> | ||
58 | + <span class="info">ex)TwitterKorea </span> | ||
59 | + | ||
60 | + </form> | ||
61 | + </div> | ||
62 | + <script src="js/extention/choices.js"></script> | ||
63 | +</body><!-- This templates was made by Colorlib (https://colorlib.com) --> | ||
51 | 64 | ||
52 | - </form> | 65 | +</html> |
53 | - </div> | ||
54 | - <script src="js/extention/choices.js"></script> | ||
55 | - </body><!-- This templates was made by Colorlib (https://colorlib.com) --> | ||
56 | -</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | - | ||
2 | <html> | 1 | <html> |
3 | - <head> | 2 | + |
4 | - <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> | 3 | +<head> |
5 | - <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script> | 4 | + <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> |
6 | - <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> | 5 | + <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script> |
7 | - <!------ Include the above in your HEAD tag ----------> | 6 | + <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> |
8 | - | 7 | + <!------ Include the above in your HEAD tag ----------> |
9 | - | 8 | + |
10 | - <style> | 9 | + |
11 | - #search input[type="text"] { | 10 | + <style> |
12 | - background: url(search-white.png) no-repeat 10px 6px #fcfcfc; | 11 | + #search input[type="text"] { |
13 | - border: 1px solid #d1d1d1; | 12 | + background: url(search-white.png) no-repeat 10px 6px #fcfcfc; |
14 | - font: bold 12px Arial,Helvetica,Sans-serif; | 13 | + border: 1px solid #d1d1d1; |
15 | - color: #bebebe; | 14 | + font: bold 12px Arial, Helvetica, Sans-serif; |
16 | - width: 150px; | 15 | + color: #bebebe; |
17 | - padding: 6px 15px 6px 35px; | 16 | + width: 150px; |
18 | - -webkit-border-radius: 20px; | 17 | + padding: 6px 15px 6px 35px; |
19 | - -moz-border-radius: 20px; | 18 | + -webkit-border-radius: 20px; |
20 | - border-radius: 20px; | 19 | + -moz-border-radius: 20px; |
21 | - text-shadow: 0 2px 3px rgba(0, 0, 0, 0.1); | 20 | + border-radius: 20px; |
22 | - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | 21 | + text-shadow: 0 2px 3px rgba(0, 0, 0, 0.1); |
23 | - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | 22 | + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; |
24 | - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | 23 | + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; |
25 | - -webkit-transition: all 0.7s ease 0s; | 24 | + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; |
26 | - -moz-transition: all 0.7s ease 0s; | 25 | + -webkit-transition: all 0.7s ease 0s; |
27 | - -o-transition: all 0.7s ease 0s; | 26 | + -moz-transition: all 0.7s ease 0s; |
28 | - transition: all 0.7s ease 0s; | 27 | + -o-transition: all 0.7s ease 0s; |
29 | - } | 28 | + transition: all 0.7s ease 0s; |
30 | - | 29 | + } |
31 | - #search input[type="text"]:focus { | 30 | + |
32 | - width: 200px; | 31 | + #search input[type="text"]:focus { |
33 | - } | 32 | + width: 200px; |
34 | - | 33 | + } |
35 | - #search input[type="text"]:focus { | 34 | + |
36 | - width: 200px; | 35 | + #search input[type="text"]:focus { |
37 | - } | 36 | + width: 200px; |
38 | - ul.timeline { | 37 | + } |
39 | - list-style-type: none; | 38 | + |
40 | - position: relative; | 39 | + ul.timeline { |
41 | - } | 40 | + list-style-type: none; |
42 | - ul.timeline:before { | 41 | + position: relative; |
43 | - content: ' '; | 42 | + } |
44 | - background: #d4d9df; | 43 | + |
45 | - display: inline-block; | 44 | + ul.timeline:before { |
46 | - position: absolute; | 45 | + content: ' '; |
47 | - left: 29px; | 46 | + background: #d4d9df; |
48 | - width: 2px; | 47 | + display: inline-block; |
49 | - height: 100%; | 48 | + position: absolute; |
50 | - z-index: 400; | 49 | + left: 29px; |
51 | - } | 50 | + width: 2px; |
52 | - ul.timeline > li { | 51 | + height: 100%; |
53 | - margin: 20px 0; | 52 | + z-index: 400; |
54 | - padding-left: 20px; | 53 | + } |
55 | - } | 54 | + |
56 | - ul.timeline > li:before { | 55 | + ul.timeline>li { |
57 | - content: ' '; | 56 | + margin: 20px 0; |
58 | - background: white; | 57 | + padding-left: 20px; |
59 | - display: inline-block; | 58 | + } |
60 | - position: absolute; | 59 | + |
61 | - border-radius: 50%; | 60 | + ul.timeline>li:before { |
62 | - border: 3px solid #22c0e8; | 61 | + content: ' '; |
63 | - left: 20px; | 62 | + background: white; |
64 | - width: 20px; | 63 | + display: inline-block; |
65 | - height: 20px; | 64 | + position: absolute; |
66 | - z-index: 400; | 65 | + border-radius: 50%; |
67 | - } | 66 | + border: 3px solid #22c0e8; |
68 | - </style> | 67 | + left: 20px; |
69 | - </head> | 68 | + width: 20px; |
69 | + height: 20px; | ||
70 | + z-index: 400; | ||
71 | + } | ||
72 | + </style> | ||
73 | +</head> | ||
70 | 74 | ||
71 | 75 | ||
72 | <body> | 76 | <body> |
... | @@ -76,27 +80,43 @@ | ... | @@ -76,27 +80,43 @@ |
76 | <div class="col-md-6 offset-md-3"> | 80 | <div class="col-md-6 offset-md-3"> |
77 | <h4 style="color:rgb(46, 7, 7); font-weight: bold;">HOT</h4> | 81 | <h4 style="color:rgb(46, 7, 7); font-weight: bold;">HOT</h4> |
78 | <ul class="Timeline"> | 82 | <ul class="Timeline"> |
79 | - <% for (var i=0; i<20; i++){ %> | 83 | + <% for (var i=0; i<timeline.length; i++){ %> |
80 | - <li> | 84 | + <li> |
81 | - <h5 style="color: gold; font-weight: bold;"><%= i + 1 %>위!</h5> | 85 | + <h5 style="color: gold; font-weight: bold;"> |
82 | - <% if(timeline[i].hasOwnProperty('retweeted_status')) { %> <!--내가 다른사람 글을 리트윗한거면 원글을 쓴 사람 닉네임 출력--> | 86 | + <%= i + 1 %>위! |
83 | - <a style ="font-weight: bold;" target="_blank" href=><%= timeline[i].retweeted_status.user.name %></a> | 87 | + </h5> |
84 | - <% } else { %> <!--아니면 내 닉네임--> | 88 | + <% if(timeline[i].hasOwnProperty('retweeted_status')) { %> |
85 | - <a style ="font-weight: bold;" target="_blank" href=><%= timeline[i].user.name %></a> | 89 | + <!--내가 다른사람 글을 리트윗한거면 원글을 쓴 사람 닉네임 출력--> |
86 | - <% } %> | 90 | + <a style="font-weight: bold;" target="_blank" href=> |
87 | - | 91 | + <%= timeline[i].retweeted_status.user.name %> |
88 | - <a href="#" class="float-right"><%= timeline[i].created_at %></a> | 92 | + </a> |
89 | - | 93 | + <% } else { %> |
90 | - <p><%=timeline[i].text%></p> | 94 | + <!--아니면 내 닉네임--> |
91 | - | 95 | + <a style="font-weight: bold;" target="_blank" href=> |
92 | - <% if(timeline[i].hasOwnProperty('extended_entities')) { %> <!--미디어가 존재하면 출력--> | 96 | + <%= timeline[i].user.name %> |
93 | - <img alt="Web Studio" class="img-fluid" width="300" height="300" src= <%= timeline[i].extended_entities.media[0].media_url_https %> /> | 97 | + </a> |
94 | - <% } %> | 98 | + <% } %> |
95 | - | 99 | + |
96 | - <p style="color: #22c0e8;">리트윗: <%= timeline[i].retweet_count %> 마음에 들어요: <%= timeline[i].favorite_count%></p> | 100 | + <a href="#" class="float-right"> |
97 | - </li> | 101 | + <%= timeline[i].created_at %> |
98 | - <% } %> | 102 | + </a> |
99 | - | 103 | + |
104 | + <p> | ||
105 | + <%=timeline[i].text%> | ||
106 | + </p> | ||
107 | + | ||
108 | + <% if(timeline[i].hasOwnProperty('extended_entities')) { %> | ||
109 | + <!--미디어가 존재하면 출력--> | ||
110 | + <img alt="Web Studio" class="img-fluid" width="300" height="300" | ||
111 | + src=<%=timeline[i].extended_entities.media[0].media_url_https %> /> | ||
112 | + <% } %> | ||
113 | + | ||
114 | + <p style="color: #22c0e8;">리트윗: <%= timeline[i].retweet_count %> 마음에 | ||
115 | + 들어요: <%= timeline[i].favorite_count%> | ||
116 | + </p> | ||
117 | + </li> | ||
118 | + <% } %> | ||
119 | + | ||
100 | </ul> | 120 | </ul> |
101 | </div> | 121 | </div> |
102 | </div> | 122 | </div> |
... | @@ -104,4 +124,5 @@ | ... | @@ -104,4 +124,5 @@ |
104 | 124 | ||
105 | 125 | ||
106 | </body> | 126 | </body> |
127 | + | ||
107 | </html> | 128 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | - | ||
2 | <html> | 1 | <html> |
3 | - <head> | ||
4 | - <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> | ||
5 | - <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script> | ||
6 | - <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> | ||
7 | - <!------ Include the above in your HEAD tag ----------> | ||
8 | - | ||
9 | - <div style="padding-left: 500px;"> | ||
10 | - <input id = "search1" name="q" type="text" size="40" placeholder="Search..." /> | ||
11 | - <button class="btn-search" type="button" onclick="movePage1()">검색</button> | ||
12 | - <script type ="text/javascript"> | ||
13 | - function movePage1(){ //페이지 이동을 위한 함수 search버튼을 누르면 실행됨 | ||
14 | - location.href =document.location.href +"/"+ document.getElementById('search1').value //url을 이렇게 변경함 | ||
15 | - } | ||
16 | - </script> | ||
17 | - </div> | ||
18 | - <style> | ||
19 | - #search input[type="text"] { | ||
20 | - background: url(search-white.png) no-repeat 10px 6px #fcfcfc; | ||
21 | - border: 1px solid #d1d1d1; | ||
22 | - font: bold 12px Arial,Helvetica,Sans-serif; | ||
23 | - color: #bebebe; | ||
24 | - width: 150px; | ||
25 | - padding: 6px 15px 6px 35px; | ||
26 | - -webkit-border-radius: 20px; | ||
27 | - -moz-border-radius: 20px; | ||
28 | - border-radius: 20px; | ||
29 | - text-shadow: 0 2px 3px rgba(0, 0, 0, 0.1); | ||
30 | - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
31 | - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
32 | - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
33 | - -webkit-transition: all 0.7s ease 0s; | ||
34 | - -moz-transition: all 0.7s ease 0s; | ||
35 | - -o-transition: all 0.7s ease 0s; | ||
36 | - transition: all 0.7s ease 0s; | ||
37 | - } | ||
38 | - | ||
39 | - #search input[type="text"]:focus { | ||
40 | - width: 200px; | ||
41 | - } | ||
42 | 2 | ||
43 | - #search input[type="text"]:focus { | 3 | +<head> |
44 | - width: 200px; | 4 | + <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> |
45 | - } | 5 | + <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script> |
46 | - ul.timeline { | 6 | + <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> |
47 | - list-style-type: none; | 7 | + <!------ Include the above in your HEAD tag ----------> |
48 | - position: relative; | 8 | + |
49 | - } | 9 | + <div style="padding-left: 500px;"> |
50 | - ul.timeline:before { | 10 | + <input id="search1" name="q" type="text" size="40" placeholder="Search..." /> |
51 | - content: ' '; | 11 | + <button class="btn-search" type="button" onclick="movePage1()">검색</button> |
52 | - background: #d4d9df; | 12 | + <script type="text/javascript"> |
53 | - display: inline-block; | 13 | + function movePage1() { //페이지 이동을 위한 함수 search버튼을 누르면 실행됨 |
54 | - position: absolute; | 14 | + location.href = document.location.href + "/" + document.getElementById('search1').value //url을 이렇게 변경함 |
55 | - left: 29px; | ||
56 | - width: 2px; | ||
57 | - height: 100%; | ||
58 | - z-index: 400; | ||
59 | - } | ||
60 | - ul.timeline > li { | ||
61 | - margin: 20px 0; | ||
62 | - padding-left: 20px; | ||
63 | - } | ||
64 | - ul.timeline > li:before { | ||
65 | - content: ' '; | ||
66 | - background: white; | ||
67 | - display: inline-block; | ||
68 | - position: absolute; | ||
69 | - border-radius: 50%; | ||
70 | - border: 3px solid #22c0e8; | ||
71 | - left: 20px; | ||
72 | - width: 20px; | ||
73 | - height: 20px; | ||
74 | - z-index: 400; | ||
75 | } | 15 | } |
76 | - </style> | 16 | + </script> |
77 | - </head> | 17 | + </div> |
18 | + <style> | ||
19 | + #search input[type="text"] { | ||
20 | + background: url(search-white.png) no-repeat 10px 6px #fcfcfc; | ||
21 | + border: 1px solid #d1d1d1; | ||
22 | + font: bold 12px Arial, Helvetica, Sans-serif; | ||
23 | + color: #bebebe; | ||
24 | + width: 150px; | ||
25 | + padding: 6px 15px 6px 35px; | ||
26 | + -webkit-border-radius: 20px; | ||
27 | + -moz-border-radius: 20px; | ||
28 | + border-radius: 20px; | ||
29 | + text-shadow: 0 2px 3px rgba(0, 0, 0, 0.1); | ||
30 | + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
31 | + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
32 | + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
33 | + -webkit-transition: all 0.7s ease 0s; | ||
34 | + -moz-transition: all 0.7s ease 0s; | ||
35 | + -o-transition: all 0.7s ease 0s; | ||
36 | + transition: all 0.7s ease 0s; | ||
37 | + } | ||
38 | + | ||
39 | + #search input[type="text"]:focus { | ||
40 | + width: 200px; | ||
41 | + } | ||
42 | + | ||
43 | + #search input[type="text"]:focus { | ||
44 | + width: 200px; | ||
45 | + } | ||
46 | + | ||
47 | + ul.timeline { | ||
48 | + list-style-type: none; | ||
49 | + position: relative; | ||
50 | + } | ||
51 | + | ||
52 | + ul.timeline:before { | ||
53 | + content: ' '; | ||
54 | + background: #d4d9df; | ||
55 | + display: inline-block; | ||
56 | + position: absolute; | ||
57 | + left: 29px; | ||
58 | + width: 2px; | ||
59 | + height: 100%; | ||
60 | + z-index: 400; | ||
61 | + } | ||
62 | + | ||
63 | + ul.timeline>li { | ||
64 | + margin: 20px 0; | ||
65 | + padding-left: 20px; | ||
66 | + } | ||
67 | + | ||
68 | + ul.timeline>li:before { | ||
69 | + content: ' '; | ||
70 | + background: white; | ||
71 | + display: inline-block; | ||
72 | + position: absolute; | ||
73 | + border-radius: 50%; | ||
74 | + border: 3px solid #22c0e8; | ||
75 | + left: 20px; | ||
76 | + width: 20px; | ||
77 | + height: 20px; | ||
78 | + z-index: 400; | ||
79 | + } | ||
80 | + </style> | ||
81 | +</head> | ||
82 | + | ||
78 | <body> | 83 | <body> |
79 | <!--검색된 타임라인 출력--> | 84 | <!--검색된 타임라인 출력--> |
80 | <div class="container mt-5 mb-5"> | 85 | <div class="container mt-5 mb-5"> |
... | @@ -82,37 +87,55 @@ | ... | @@ -82,37 +87,55 @@ |
82 | <div class="col-md-6 offset-md-3"> | 87 | <div class="col-md-6 offset-md-3"> |
83 | <!--<h4>timeline</h4>--> | 88 | <!--<h4>timeline</h4>--> |
84 | <ul class="Timeline"> | 89 | <ul class="Timeline"> |
85 | - <% for (var i=0; i<20; i++){ %> <!--받아온 타임라인 수 만큼 반복--> | 90 | + <% for (var i=0; i<timeline.length; i++){ %> |
86 | - <% if((timeline[i].text).indexOf(keyword) != -1) { %> <!--현재 글에 검색 키워드가 존재하면 그 글을 보여줌--> | 91 | + <!--받아온 타임라인 수 만큼 반복--> |
87 | - <li> | 92 | + <% if((timeline[i].text).indexOf(keyword) !=-1) { %> |
88 | - | 93 | + <!--현재 글에 검색 키워드가 존재하면 그 글을 보여줌--> |
89 | - <% if(timeline[i].hasOwnProperty('retweeted_status')) { %> <!--내가 다른사람 글을 리트윗한거면 원글을 쓴 사람 닉네임 출력--> | 94 | + <li> |
90 | - <a style ="font-weight: bold;" target="_blank" href=><%= timeline[i].retweeted_status.user.name %></a> | 95 | + |
91 | - <% } else { %> <!--아니면 내 닉네임--> | 96 | + <% if(timeline[i].hasOwnProperty('retweeted_status')) { %> |
92 | - <a style ="font-weight: bold;" target="_blank" href=><%= timeline[i].user.name %></a> | 97 | + <!--내가 다른사람 글을 리트윗한거면 원글을 쓴 사람 닉네임 출력--> |
93 | - <% } %> | 98 | + <a style="font-weight: bold;" target="_blank" href=> |
94 | - | 99 | + <%= timeline[i].retweeted_status.user.name %> |
95 | - <a href="#" class="float-right"><%= timeline[i].created_at %></a> | 100 | + </a> |
101 | + <% } else { %> | ||
102 | + <!--아니면 내 닉네임--> | ||
103 | + <a style="font-weight: bold;" target="_blank" href=> | ||
104 | + <%= timeline[i].user.name %> | ||
105 | + </a> | ||
106 | + <% } %> | ||
96 | 107 | ||
97 | - <p><%=timeline[i].text%></p> | 108 | + <a href="#" class="float-right"> |
109 | + <%= timeline[i].created_at %> | ||
110 | + </a> | ||
98 | 111 | ||
99 | - <% if(timeline[i].hasOwnProperty('extended_entities')) { %> <!--미디어가 존재하면 출력--> | 112 | + <p> |
100 | - <img alt="Web Studio" class="img-fluid" width="300" height="300" src= <%= timeline[i].extended_entities.media[0].media_url_https %> /> | 113 | + <%=timeline[i].text%> |
114 | + </p> | ||
115 | + | ||
116 | + <% if(timeline[i].hasOwnProperty('extended_entities')) { %> | ||
117 | + <!--미디어가 존재하면 출력--> | ||
118 | + <img alt="Web Studio" class="img-fluid" width="300" height="300" | ||
119 | + src=<%=timeline[i].extended_entities.media[0].media_url_https %> /> | ||
120 | + <% } %> | ||
121 | + | ||
122 | + <p style="color: #22c0e8;">리트윗: <%= timeline[i].retweet_count %> 마음에 | ||
123 | + 들어요: <%= timeline[i].favorite_count%> | ||
124 | + </p> | ||
125 | + | ||
126 | + </li> | ||
101 | <% } %> | 127 | <% } %> |
128 | + <% } %> | ||
102 | 129 | ||
103 | - <p style="color: #22c0e8;">리트윗: <%= timeline[i].retweet_count %> 마음에 들어요: <%= timeline[i].favorite_count%></p> | ||
104 | - | ||
105 | - </li> | ||
106 | - <% } %> | ||
107 | - <% } %> | ||
108 | - | ||
109 | </ul> | 130 | </ul> |
110 | </div> | 131 | </div> |
111 | </div> | 132 | </div> |
112 | </div> | 133 | </div> |
113 | - | 134 | + |
114 | - <div class="text-muted mt-5 mb-5 text-center small">by : <a class="text-muted" target="_blank" href="http://totoprayogo.com">totoprayogo.com</a></div> | 135 | + <div class="text-muted mt-5 mb-5 text-center small">by : <a class="text-muted" target="_blank" |
115 | - | 136 | + href="http://totoprayogo.com">totoprayogo.com</a></div> |
137 | + | ||
116 | 138 | ||
117 | </body> | 139 | </body> |
140 | + | ||
118 | </html> | 141 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | - | ||
2 | <html> | 1 | <html> |
3 | - <head> | ||
4 | - <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> | ||
5 | - <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script> | ||
6 | - <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> | ||
7 | - <!------ Include the above in your HEAD tag ----------> | ||
8 | - | ||
9 | - <div style="padding-left: 500px;"> | ||
10 | - <input id = "search1" name="q" type="text" size="40" placeholder="Search..." /> | ||
11 | - <button class="btn-search" type="button" onclick="movePage1()">검색</button> | ||
12 | - <script type ="text/javascript"> | ||
13 | - function movePage1(){ //페이지 이동을 위한 함수 search버튼을 누르면 실행됨 | ||
14 | - location.href =document.location.href +"/"+ document.getElementById('search1').value //url을 이렇게 변경함 | ||
15 | - } | ||
16 | - </script> | ||
17 | - </div> | ||
18 | - <style> | ||
19 | - #search input[type="text"] { | ||
20 | - background: url(search-white.png) no-repeat 10px 6px #fcfcfc; | ||
21 | - border: 1px solid #d1d1d1; | ||
22 | - font: bold 12px Arial,Helvetica,Sans-serif; | ||
23 | - color: #bebebe; | ||
24 | - width: 150px; | ||
25 | - padding: 6px 15px 6px 35px; | ||
26 | - -webkit-border-radius: 20px; | ||
27 | - -moz-border-radius: 20px; | ||
28 | - border-radius: 20px; | ||
29 | - text-shadow: 0 2px 3px rgba(0, 0, 0, 0.1); | ||
30 | - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
31 | - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
32 | - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
33 | - -webkit-transition: all 0.7s ease 0s; | ||
34 | - -moz-transition: all 0.7s ease 0s; | ||
35 | - -o-transition: all 0.7s ease 0s; | ||
36 | - transition: all 0.7s ease 0s; | ||
37 | - } | ||
38 | - | ||
39 | - #search input[type="text"]:focus { | ||
40 | - width: 200px; | ||
41 | - } | ||
42 | 2 | ||
43 | - #search input[type="text"]:focus { | 3 | +<head> |
44 | - width: 200px; | 4 | + <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> |
45 | - } | 5 | + <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script> |
46 | - ul.timeline { | 6 | + <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> |
47 | - list-style-type: none; | 7 | + <!------ Include the above in your HEAD tag ----------> |
48 | - position: relative; | 8 | + |
49 | - } | 9 | + <div style="padding-left: 500px;"> |
50 | - ul.timeline:before { | 10 | + <input id="search1" name="q" type="text" size="40" placeholder="Search..." /> |
51 | - content: ' '; | 11 | + <button class="btn-search" type="button" onclick="movePage1()">검색</button> |
52 | - background: #d4d9df; | 12 | + <script type="text/javascript"> |
53 | - display: inline-block; | 13 | + function movePage1() { //페이지 이동을 위한 함수 search버튼을 누르면 실행됨 |
54 | - position: absolute; | 14 | + location.href = document.location.href + "/" + document.getElementById('search1').value //url을 이렇게 변경함 |
55 | - left: 29px; | ||
56 | - width: 2px; | ||
57 | - height: 100%; | ||
58 | - z-index: 400; | ||
59 | - } | ||
60 | - ul.timeline > li { | ||
61 | - margin: 20px 0; | ||
62 | - padding-left: 20px; | ||
63 | - } | ||
64 | - ul.timeline > li:before { | ||
65 | - content: ' '; | ||
66 | - background: white; | ||
67 | - display: inline-block; | ||
68 | - position: absolute; | ||
69 | - border-radius: 50%; | ||
70 | - border: 3px solid #22c0e8; | ||
71 | - left: 20px; | ||
72 | - width: 20px; | ||
73 | - height: 20px; | ||
74 | - z-index: 400; | ||
75 | } | 15 | } |
76 | - </style> | 16 | + </script> |
77 | - </head> | 17 | + </div> |
18 | + <style> | ||
19 | + #search input[type="text"] { | ||
20 | + background: url(search-white.png) no-repeat 10px 6px #fcfcfc; | ||
21 | + border: 1px solid #d1d1d1; | ||
22 | + font: bold 12px Arial, Helvetica, Sans-serif; | ||
23 | + color: #bebebe; | ||
24 | + width: 150px; | ||
25 | + padding: 6px 15px 6px 35px; | ||
26 | + -webkit-border-radius: 20px; | ||
27 | + -moz-border-radius: 20px; | ||
28 | + border-radius: 20px; | ||
29 | + text-shadow: 0 2px 3px rgba(0, 0, 0, 0.1); | ||
30 | + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
31 | + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
32 | + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15) inset; | ||
33 | + -webkit-transition: all 0.7s ease 0s; | ||
34 | + -moz-transition: all 0.7s ease 0s; | ||
35 | + -o-transition: all 0.7s ease 0s; | ||
36 | + transition: all 0.7s ease 0s; | ||
37 | + } | ||
38 | + | ||
39 | + #search input[type="text"]:focus { | ||
40 | + width: 200px; | ||
41 | + } | ||
42 | + | ||
43 | + #search input[type="text"]:focus { | ||
44 | + width: 200px; | ||
45 | + } | ||
46 | + | ||
47 | + ul.timeline { | ||
48 | + list-style-type: none; | ||
49 | + position: relative; | ||
50 | + } | ||
51 | + | ||
52 | + ul.timeline:before { | ||
53 | + content: ' '; | ||
54 | + background: #d4d9df; | ||
55 | + display: inline-block; | ||
56 | + position: absolute; | ||
57 | + left: 29px; | ||
58 | + width: 2px; | ||
59 | + height: 100%; | ||
60 | + z-index: 400; | ||
61 | + } | ||
62 | + | ||
63 | + ul.timeline>li { | ||
64 | + margin: 20px 0; | ||
65 | + padding-left: 20px; | ||
66 | + } | ||
67 | + | ||
68 | + ul.timeline>li:before { | ||
69 | + content: ' '; | ||
70 | + background: white; | ||
71 | + display: inline-block; | ||
72 | + position: absolute; | ||
73 | + border-radius: 50%; | ||
74 | + border: 3px solid #22c0e8; | ||
75 | + left: 20px; | ||
76 | + width: 20px; | ||
77 | + height: 20px; | ||
78 | + z-index: 400; | ||
79 | + } | ||
80 | + </style> | ||
81 | +</head> | ||
78 | 82 | ||
79 | <body> | 83 | <body> |
80 | <div class="container mt-5 mb-5"> | 84 | <div class="container mt-5 mb-5"> |
... | @@ -82,34 +86,52 @@ | ... | @@ -82,34 +86,52 @@ |
82 | <div class="col-md-6 offset-md-3"> | 86 | <div class="col-md-6 offset-md-3"> |
83 | <!--<h4>timeline</h4>--> | 87 | <!--<h4>timeline</h4>--> |
84 | <ul class="Timeline"> | 88 | <ul class="Timeline"> |
85 | - <% for (var i=0; i<20; i++){ %> <!--가져온 타임라인들에 대해서--> | 89 | + <% for (var i=0; i<timeline.length; i++){ %> |
86 | - <li> | 90 | + <!--가져온 타임라인들에 대해서--> |
87 | - <% if(timeline[i].hasOwnProperty('retweeted_status')) { %> <!--내가 다른사람 글을 리트윗한거면 원글을 쓴 사람 닉네임 출력--> | 91 | + <li> |
88 | - <a style ="font-weight: bold;" target="_blank" href=><%= timeline[i].retweeted_status.user.name %></a> | 92 | + <% if(timeline[i].hasOwnProperty('retweeted_status')) { %> |
89 | - <% } else { %> <!--아니면 내 닉네임--> | 93 | + <!--내가 다른사람 글을 리트윗한거면 원글을 쓴 사람 닉네임 출력--> |
90 | - <a style ="font-weight: bold;" target="_blank" href=><%= timeline[i].user.name %></a> | 94 | + <a style="font-weight: bold;" target="_blank" href=> |
91 | - <% } %> | 95 | + <%= timeline[i].retweeted_status.user.name %> |
96 | + </a> | ||
97 | + <% } else { %> | ||
98 | + <!--아니면 내 닉네임--> | ||
99 | + <a style="font-weight: bold;" target="_blank" href=> | ||
100 | + <%= timeline[i].user.name %> | ||
101 | + </a> | ||
102 | + <% } %> | ||
92 | 103 | ||
93 | - <a href="#" class="float-right"><%= timeline[i].created_at %></a> <!--글이 써진 날짜--> | 104 | + <a href="#" class="float-right"> |
105 | + <%= timeline[i].created_at %> | ||
106 | + </a> | ||
107 | + <!--글이 써진 날짜--> | ||
94 | 108 | ||
95 | - <p><%=timeline[i].text%></p> <!--그 글 내용 출력--> | 109 | + <p> |
110 | + <%=timeline[i].text%> | ||
111 | + </p> | ||
112 | + <!--그 글 내용 출력--> | ||
96 | 113 | ||
97 | - <% if(timeline[i].hasOwnProperty('extended_entities')) { %> <!--미디어가 존재하면 출력--> | 114 | + <% if(timeline[i].hasOwnProperty('extended_entities')) { %> |
98 | - <img alt="Web Studio" class="img-fluid" width="300" height="300" src= <%= timeline[i].extended_entities.media[0].media_url_https %> /> | 115 | + <!--미디어가 존재하면 출력--> |
99 | - <% } %> | 116 | + <img alt="Web Studio" class="img-fluid" width="300" height="300" |
117 | + src=<%=timeline[i].extended_entities.media[0].media_url_https %> /> | ||
118 | + <% } %> | ||
100 | 119 | ||
101 | - <p style="color: #22c0e8;">리트윗: <%= timeline[i].retweet_count %> 마음에 들어요: <%= timeline[i].favorite_count%></p> | 120 | + <p style="color: #22c0e8;">리트윗: <%= timeline[i].retweet_count %> 마음에 |
102 | - | 121 | + 들어요: <%= timeline[i].favorite_count%> |
122 | + </p> | ||
123 | + | ||
124 | + | ||
125 | + </li> | ||
126 | + <% } %> | ||
103 | 127 | ||
104 | - </li> | ||
105 | - <% } %> | ||
106 | - | ||
107 | </ul> | 128 | </ul> |
108 | </div> | 129 | </div> |
109 | </div> | 130 | </div> |
110 | </div> | 131 | </div> |
111 | - | 132 | + |
112 | 133 | ||
113 | 134 | ||
114 | </body> | 135 | </body> |
136 | + | ||
115 | </html> | 137 | </html> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment