Showing
45 changed files
with
3518 additions
and
19 deletions
package-lock.json
0 → 100644
1 | +{ | ||
2 | + "requires": true, | ||
3 | + "lockfileVersion": 1, | ||
4 | + "dependencies": { | ||
5 | + "@babel/code-frame": { | ||
6 | + "version": "7.16.7", | ||
7 | + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", | ||
8 | + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", | ||
9 | + "requires": { | ||
10 | + "@babel/highlight": "^7.16.7" | ||
11 | + } | ||
12 | + }, | ||
13 | + "@babel/helper-validator-identifier": { | ||
14 | + "version": "7.16.7", | ||
15 | + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", | ||
16 | + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" | ||
17 | + }, | ||
18 | + "@babel/highlight": { | ||
19 | + "version": "7.17.9", | ||
20 | + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", | ||
21 | + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", | ||
22 | + "requires": { | ||
23 | + "@babel/helper-validator-identifier": "^7.16.7", | ||
24 | + "chalk": "^2.0.0", | ||
25 | + "js-tokens": "^4.0.0" | ||
26 | + }, | ||
27 | + "dependencies": { | ||
28 | + "ansi-styles": { | ||
29 | + "version": "3.2.1", | ||
30 | + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", | ||
31 | + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", | ||
32 | + "requires": { | ||
33 | + "color-convert": "^1.9.0" | ||
34 | + } | ||
35 | + }, | ||
36 | + "chalk": { | ||
37 | + "version": "2.4.2", | ||
38 | + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", | ||
39 | + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", | ||
40 | + "requires": { | ||
41 | + "ansi-styles": "^3.2.1", | ||
42 | + "escape-string-regexp": "^1.0.5", | ||
43 | + "supports-color": "^5.3.0" | ||
44 | + } | ||
45 | + }, | ||
46 | + "color-convert": { | ||
47 | + "version": "1.9.3", | ||
48 | + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", | ||
49 | + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", | ||
50 | + "requires": { | ||
51 | + "color-name": "1.1.3" | ||
52 | + } | ||
53 | + }, | ||
54 | + "color-name": { | ||
55 | + "version": "1.1.3", | ||
56 | + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", | ||
57 | + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" | ||
58 | + }, | ||
59 | + "has-flag": { | ||
60 | + "version": "3.0.0", | ||
61 | + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | ||
62 | + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" | ||
63 | + }, | ||
64 | + "supports-color": { | ||
65 | + "version": "5.5.0", | ||
66 | + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | ||
67 | + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", | ||
68 | + "requires": { | ||
69 | + "has-flag": "^3.0.0" | ||
70 | + } | ||
71 | + } | ||
72 | + } | ||
73 | + }, | ||
74 | + "@gar/promisify": { | ||
75 | + "version": "1.1.3", | ||
76 | + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", | ||
77 | + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" | ||
78 | + }, | ||
79 | + "@npmcli/fs": { | ||
80 | + "version": "1.1.1", | ||
81 | + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", | ||
82 | + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", | ||
83 | + "requires": { | ||
84 | + "@gar/promisify": "^1.0.1", | ||
85 | + "semver": "^7.3.5" | ||
86 | + } | ||
87 | + }, | ||
88 | + "@npmcli/move-file": { | ||
89 | + "version": "1.1.2", | ||
90 | + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", | ||
91 | + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", | ||
92 | + "requires": { | ||
93 | + "mkdirp": "^1.0.4", | ||
94 | + "rimraf": "^3.0.2" | ||
95 | + } | ||
96 | + }, | ||
97 | + "@tootallnate/once": { | ||
98 | + "version": "1.1.2", | ||
99 | + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", | ||
100 | + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" | ||
101 | + }, | ||
102 | + "@types/minimist": { | ||
103 | + "version": "1.2.2", | ||
104 | + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", | ||
105 | + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" | ||
106 | + }, | ||
107 | + "@types/normalize-package-data": { | ||
108 | + "version": "2.4.1", | ||
109 | + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", | ||
110 | + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" | ||
111 | + }, | ||
112 | + "abbrev": { | ||
113 | + "version": "1.1.1", | ||
114 | + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", | ||
115 | + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" | ||
116 | + }, | ||
117 | + "agent-base": { | ||
118 | + "version": "6.0.2", | ||
119 | + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", | ||
120 | + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", | ||
121 | + "requires": { | ||
122 | + "debug": "4" | ||
123 | + } | ||
124 | + }, | ||
125 | + "agentkeepalive": { | ||
126 | + "version": "4.2.1", | ||
127 | + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", | ||
128 | + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", | ||
129 | + "requires": { | ||
130 | + "debug": "^4.1.0", | ||
131 | + "depd": "^1.1.2", | ||
132 | + "humanize-ms": "^1.2.1" | ||
133 | + } | ||
134 | + }, | ||
135 | + "aggregate-error": { | ||
136 | + "version": "3.1.0", | ||
137 | + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", | ||
138 | + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", | ||
139 | + "requires": { | ||
140 | + "clean-stack": "^2.0.0", | ||
141 | + "indent-string": "^4.0.0" | ||
142 | + } | ||
143 | + }, | ||
144 | + "ajv": { | ||
145 | + "version": "6.12.6", | ||
146 | + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", | ||
147 | + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", | ||
148 | + "requires": { | ||
149 | + "fast-deep-equal": "^3.1.1", | ||
150 | + "fast-json-stable-stringify": "^2.0.0", | ||
151 | + "json-schema-traverse": "^0.4.1", | ||
152 | + "uri-js": "^4.2.2" | ||
153 | + } | ||
154 | + }, | ||
155 | + "ansi-regex": { | ||
156 | + "version": "5.0.1", | ||
157 | + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", | ||
158 | + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" | ||
159 | + }, | ||
160 | + "ansi-styles": { | ||
161 | + "version": "4.3.0", | ||
162 | + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", | ||
163 | + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", | ||
164 | + "requires": { | ||
165 | + "color-convert": "^2.0.1" | ||
166 | + } | ||
167 | + }, | ||
168 | + "aproba": { | ||
169 | + "version": "2.0.0", | ||
170 | + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", | ||
171 | + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" | ||
172 | + }, | ||
173 | + "are-we-there-yet": { | ||
174 | + "version": "3.0.0", | ||
175 | + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", | ||
176 | + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", | ||
177 | + "requires": { | ||
178 | + "delegates": "^1.0.0", | ||
179 | + "readable-stream": "^3.6.0" | ||
180 | + } | ||
181 | + }, | ||
182 | + "arrify": { | ||
183 | + "version": "1.0.1", | ||
184 | + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", | ||
185 | + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" | ||
186 | + }, | ||
187 | + "asn1": { | ||
188 | + "version": "0.2.6", | ||
189 | + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", | ||
190 | + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", | ||
191 | + "requires": { | ||
192 | + "safer-buffer": "~2.1.0" | ||
193 | + } | ||
194 | + }, | ||
195 | + "assert-plus": { | ||
196 | + "version": "1.0.0", | ||
197 | + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", | ||
198 | + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" | ||
199 | + }, | ||
200 | + "async-foreach": { | ||
201 | + "version": "0.1.3", | ||
202 | + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", | ||
203 | + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" | ||
204 | + }, | ||
205 | + "asynckit": { | ||
206 | + "version": "0.4.0", | ||
207 | + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", | ||
208 | + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" | ||
209 | + }, | ||
210 | + "aws-sign2": { | ||
211 | + "version": "0.7.0", | ||
212 | + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", | ||
213 | + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" | ||
214 | + }, | ||
215 | + "aws4": { | ||
216 | + "version": "1.11.0", | ||
217 | + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", | ||
218 | + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" | ||
219 | + }, | ||
220 | + "balanced-match": { | ||
221 | + "version": "1.0.2", | ||
222 | + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||
223 | + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" | ||
224 | + }, | ||
225 | + "bcrypt-pbkdf": { | ||
226 | + "version": "1.0.2", | ||
227 | + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", | ||
228 | + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", | ||
229 | + "requires": { | ||
230 | + "tweetnacl": "^0.14.3" | ||
231 | + } | ||
232 | + }, | ||
233 | + "brace-expansion": { | ||
234 | + "version": "1.1.11", | ||
235 | + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||
236 | + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | ||
237 | + "requires": { | ||
238 | + "balanced-match": "^1.0.0", | ||
239 | + "concat-map": "0.0.1" | ||
240 | + } | ||
241 | + }, | ||
242 | + "cacache": { | ||
243 | + "version": "15.3.0", | ||
244 | + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", | ||
245 | + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", | ||
246 | + "requires": { | ||
247 | + "@npmcli/fs": "^1.0.0", | ||
248 | + "@npmcli/move-file": "^1.0.1", | ||
249 | + "chownr": "^2.0.0", | ||
250 | + "fs-minipass": "^2.0.0", | ||
251 | + "glob": "^7.1.4", | ||
252 | + "infer-owner": "^1.0.4", | ||
253 | + "lru-cache": "^6.0.0", | ||
254 | + "minipass": "^3.1.1", | ||
255 | + "minipass-collect": "^1.0.2", | ||
256 | + "minipass-flush": "^1.0.5", | ||
257 | + "minipass-pipeline": "^1.2.2", | ||
258 | + "mkdirp": "^1.0.3", | ||
259 | + "p-map": "^4.0.0", | ||
260 | + "promise-inflight": "^1.0.1", | ||
261 | + "rimraf": "^3.0.2", | ||
262 | + "ssri": "^8.0.1", | ||
263 | + "tar": "^6.0.2", | ||
264 | + "unique-filename": "^1.1.1" | ||
265 | + } | ||
266 | + }, | ||
267 | + "camelcase": { | ||
268 | + "version": "5.3.1", | ||
269 | + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", | ||
270 | + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" | ||
271 | + }, | ||
272 | + "camelcase-keys": { | ||
273 | + "version": "6.2.2", | ||
274 | + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", | ||
275 | + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", | ||
276 | + "requires": { | ||
277 | + "camelcase": "^5.3.1", | ||
278 | + "map-obj": "^4.0.0", | ||
279 | + "quick-lru": "^4.0.1" | ||
280 | + } | ||
281 | + }, | ||
282 | + "caseless": { | ||
283 | + "version": "0.12.0", | ||
284 | + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", | ||
285 | + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" | ||
286 | + }, | ||
287 | + "chalk": { | ||
288 | + "version": "4.1.2", | ||
289 | + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", | ||
290 | + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", | ||
291 | + "requires": { | ||
292 | + "ansi-styles": "^4.1.0", | ||
293 | + "supports-color": "^7.1.0" | ||
294 | + } | ||
295 | + }, | ||
296 | + "chownr": { | ||
297 | + "version": "2.0.0", | ||
298 | + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", | ||
299 | + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" | ||
300 | + }, | ||
301 | + "clean-stack": { | ||
302 | + "version": "2.2.0", | ||
303 | + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", | ||
304 | + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" | ||
305 | + }, | ||
306 | + "cliui": { | ||
307 | + "version": "7.0.4", | ||
308 | + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", | ||
309 | + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", | ||
310 | + "requires": { | ||
311 | + "string-width": "^4.2.0", | ||
312 | + "strip-ansi": "^6.0.0", | ||
313 | + "wrap-ansi": "^7.0.0" | ||
314 | + } | ||
315 | + }, | ||
316 | + "color-convert": { | ||
317 | + "version": "2.0.1", | ||
318 | + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", | ||
319 | + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", | ||
320 | + "requires": { | ||
321 | + "color-name": "~1.1.4" | ||
322 | + } | ||
323 | + }, | ||
324 | + "color-name": { | ||
325 | + "version": "1.1.4", | ||
326 | + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", | ||
327 | + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" | ||
328 | + }, | ||
329 | + "color-support": { | ||
330 | + "version": "1.1.3", | ||
331 | + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", | ||
332 | + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" | ||
333 | + }, | ||
334 | + "combined-stream": { | ||
335 | + "version": "1.0.8", | ||
336 | + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", | ||
337 | + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", | ||
338 | + "requires": { | ||
339 | + "delayed-stream": "~1.0.0" | ||
340 | + } | ||
341 | + }, | ||
342 | + "concat-map": { | ||
343 | + "version": "0.0.1", | ||
344 | + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||
345 | + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" | ||
346 | + }, | ||
347 | + "console-control-strings": { | ||
348 | + "version": "1.1.0", | ||
349 | + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", | ||
350 | + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" | ||
351 | + }, | ||
352 | + "core-util-is": { | ||
353 | + "version": "1.0.2", | ||
354 | + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | ||
355 | + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" | ||
356 | + }, | ||
357 | + "cross-spawn": { | ||
358 | + "version": "7.0.3", | ||
359 | + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", | ||
360 | + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", | ||
361 | + "requires": { | ||
362 | + "path-key": "^3.1.0", | ||
363 | + "shebang-command": "^2.0.0", | ||
364 | + "which": "^2.0.1" | ||
365 | + } | ||
366 | + }, | ||
367 | + "dashdash": { | ||
368 | + "version": "1.14.1", | ||
369 | + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", | ||
370 | + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", | ||
371 | + "requires": { | ||
372 | + "assert-plus": "^1.0.0" | ||
373 | + } | ||
374 | + }, | ||
375 | + "debug": { | ||
376 | + "version": "4.3.4", | ||
377 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", | ||
378 | + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", | ||
379 | + "requires": { | ||
380 | + "ms": "2.1.2" | ||
381 | + } | ||
382 | + }, | ||
383 | + "decamelize": { | ||
384 | + "version": "1.2.0", | ||
385 | + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", | ||
386 | + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" | ||
387 | + }, | ||
388 | + "decamelize-keys": { | ||
389 | + "version": "1.1.0", | ||
390 | + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", | ||
391 | + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", | ||
392 | + "requires": { | ||
393 | + "decamelize": "^1.1.0", | ||
394 | + "map-obj": "^1.0.0" | ||
395 | + }, | ||
396 | + "dependencies": { | ||
397 | + "map-obj": { | ||
398 | + "version": "1.0.1", | ||
399 | + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", | ||
400 | + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" | ||
401 | + } | ||
402 | + } | ||
403 | + }, | ||
404 | + "delayed-stream": { | ||
405 | + "version": "1.0.0", | ||
406 | + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | ||
407 | + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" | ||
408 | + }, | ||
409 | + "delegates": { | ||
410 | + "version": "1.0.0", | ||
411 | + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", | ||
412 | + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" | ||
413 | + }, | ||
414 | + "depd": { | ||
415 | + "version": "1.1.2", | ||
416 | + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", | ||
417 | + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" | ||
418 | + }, | ||
419 | + "ecc-jsbn": { | ||
420 | + "version": "0.1.2", | ||
421 | + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", | ||
422 | + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", | ||
423 | + "requires": { | ||
424 | + "jsbn": "~0.1.0", | ||
425 | + "safer-buffer": "^2.1.0" | ||
426 | + } | ||
427 | + }, | ||
428 | + "emoji-regex": { | ||
429 | + "version": "8.0.0", | ||
430 | + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", | ||
431 | + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" | ||
432 | + }, | ||
433 | + "encoding": { | ||
434 | + "version": "0.1.13", | ||
435 | + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", | ||
436 | + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", | ||
437 | + "optional": true, | ||
438 | + "requires": { | ||
439 | + "iconv-lite": "^0.6.2" | ||
440 | + } | ||
441 | + }, | ||
442 | + "env-paths": { | ||
443 | + "version": "2.2.1", | ||
444 | + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", | ||
445 | + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" | ||
446 | + }, | ||
447 | + "err-code": { | ||
448 | + "version": "2.0.3", | ||
449 | + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", | ||
450 | + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" | ||
451 | + }, | ||
452 | + "error-ex": { | ||
453 | + "version": "1.3.2", | ||
454 | + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", | ||
455 | + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", | ||
456 | + "requires": { | ||
457 | + "is-arrayish": "^0.2.1" | ||
458 | + } | ||
459 | + }, | ||
460 | + "escalade": { | ||
461 | + "version": "3.1.1", | ||
462 | + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", | ||
463 | + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" | ||
464 | + }, | ||
465 | + "escape-string-regexp": { | ||
466 | + "version": "1.0.5", | ||
467 | + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", | ||
468 | + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" | ||
469 | + }, | ||
470 | + "extend": { | ||
471 | + "version": "3.0.2", | ||
472 | + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", | ||
473 | + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" | ||
474 | + }, | ||
475 | + "extsprintf": { | ||
476 | + "version": "1.3.0", | ||
477 | + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", | ||
478 | + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" | ||
479 | + }, | ||
480 | + "fast-deep-equal": { | ||
481 | + "version": "3.1.3", | ||
482 | + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", | ||
483 | + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" | ||
484 | + }, | ||
485 | + "fast-json-stable-stringify": { | ||
486 | + "version": "2.1.0", | ||
487 | + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", | ||
488 | + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" | ||
489 | + }, | ||
490 | + "find-up": { | ||
491 | + "version": "4.1.0", | ||
492 | + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", | ||
493 | + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", | ||
494 | + "requires": { | ||
495 | + "locate-path": "^5.0.0", | ||
496 | + "path-exists": "^4.0.0" | ||
497 | + } | ||
498 | + }, | ||
499 | + "forever-agent": { | ||
500 | + "version": "0.6.1", | ||
501 | + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", | ||
502 | + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" | ||
503 | + }, | ||
504 | + "form-data": { | ||
505 | + "version": "2.3.3", | ||
506 | + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", | ||
507 | + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", | ||
508 | + "requires": { | ||
509 | + "asynckit": "^0.4.0", | ||
510 | + "combined-stream": "^1.0.6", | ||
511 | + "mime-types": "^2.1.12" | ||
512 | + } | ||
513 | + }, | ||
514 | + "fs-minipass": { | ||
515 | + "version": "2.1.0", | ||
516 | + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", | ||
517 | + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", | ||
518 | + "requires": { | ||
519 | + "minipass": "^3.0.0" | ||
520 | + } | ||
521 | + }, | ||
522 | + "fs.realpath": { | ||
523 | + "version": "1.0.0", | ||
524 | + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", | ||
525 | + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" | ||
526 | + }, | ||
527 | + "function-bind": { | ||
528 | + "version": "1.1.1", | ||
529 | + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", | ||
530 | + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" | ||
531 | + }, | ||
532 | + "gauge": { | ||
533 | + "version": "4.0.4", | ||
534 | + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", | ||
535 | + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", | ||
536 | + "requires": { | ||
537 | + "aproba": "^1.0.3 || ^2.0.0", | ||
538 | + "color-support": "^1.1.3", | ||
539 | + "console-control-strings": "^1.1.0", | ||
540 | + "has-unicode": "^2.0.1", | ||
541 | + "signal-exit": "^3.0.7", | ||
542 | + "string-width": "^4.2.3", | ||
543 | + "strip-ansi": "^6.0.1", | ||
544 | + "wide-align": "^1.1.5" | ||
545 | + } | ||
546 | + }, | ||
547 | + "gaze": { | ||
548 | + "version": "1.1.3", | ||
549 | + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", | ||
550 | + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", | ||
551 | + "requires": { | ||
552 | + "globule": "^1.0.0" | ||
553 | + } | ||
554 | + }, | ||
555 | + "get-caller-file": { | ||
556 | + "version": "2.0.5", | ||
557 | + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", | ||
558 | + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" | ||
559 | + }, | ||
560 | + "get-stdin": { | ||
561 | + "version": "4.0.1", | ||
562 | + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", | ||
563 | + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" | ||
564 | + }, | ||
565 | + "getpass": { | ||
566 | + "version": "0.1.7", | ||
567 | + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", | ||
568 | + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", | ||
569 | + "requires": { | ||
570 | + "assert-plus": "^1.0.0" | ||
571 | + } | ||
572 | + }, | ||
573 | + "glob": { | ||
574 | + "version": "7.2.3", | ||
575 | + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", | ||
576 | + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", | ||
577 | + "requires": { | ||
578 | + "fs.realpath": "^1.0.0", | ||
579 | + "inflight": "^1.0.4", | ||
580 | + "inherits": "2", | ||
581 | + "minimatch": "^3.1.1", | ||
582 | + "once": "^1.3.0", | ||
583 | + "path-is-absolute": "^1.0.0" | ||
584 | + }, | ||
585 | + "dependencies": { | ||
586 | + "minimatch": { | ||
587 | + "version": "3.1.2", | ||
588 | + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", | ||
589 | + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", | ||
590 | + "requires": { | ||
591 | + "brace-expansion": "^1.1.7" | ||
592 | + } | ||
593 | + } | ||
594 | + } | ||
595 | + }, | ||
596 | + "globule": { | ||
597 | + "version": "1.3.3", | ||
598 | + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz", | ||
599 | + "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", | ||
600 | + "requires": { | ||
601 | + "glob": "~7.1.1", | ||
602 | + "lodash": "~4.17.10", | ||
603 | + "minimatch": "~3.0.2" | ||
604 | + }, | ||
605 | + "dependencies": { | ||
606 | + "glob": { | ||
607 | + "version": "7.1.7", | ||
608 | + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", | ||
609 | + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", | ||
610 | + "requires": { | ||
611 | + "fs.realpath": "^1.0.0", | ||
612 | + "inflight": "^1.0.4", | ||
613 | + "inherits": "2", | ||
614 | + "minimatch": "^3.0.4", | ||
615 | + "once": "^1.3.0", | ||
616 | + "path-is-absolute": "^1.0.0" | ||
617 | + } | ||
618 | + } | ||
619 | + } | ||
620 | + }, | ||
621 | + "graceful-fs": { | ||
622 | + "version": "4.2.10", | ||
623 | + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", | ||
624 | + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" | ||
625 | + }, | ||
626 | + "har-schema": { | ||
627 | + "version": "2.0.0", | ||
628 | + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", | ||
629 | + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" | ||
630 | + }, | ||
631 | + "har-validator": { | ||
632 | + "version": "5.1.5", | ||
633 | + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", | ||
634 | + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", | ||
635 | + "requires": { | ||
636 | + "ajv": "^6.12.3", | ||
637 | + "har-schema": "^2.0.0" | ||
638 | + } | ||
639 | + }, | ||
640 | + "hard-rejection": { | ||
641 | + "version": "2.1.0", | ||
642 | + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", | ||
643 | + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" | ||
644 | + }, | ||
645 | + "has": { | ||
646 | + "version": "1.0.3", | ||
647 | + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", | ||
648 | + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", | ||
649 | + "requires": { | ||
650 | + "function-bind": "^1.1.1" | ||
651 | + } | ||
652 | + }, | ||
653 | + "has-flag": { | ||
654 | + "version": "4.0.0", | ||
655 | + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", | ||
656 | + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" | ||
657 | + }, | ||
658 | + "has-unicode": { | ||
659 | + "version": "2.0.1", | ||
660 | + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", | ||
661 | + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" | ||
662 | + }, | ||
663 | + "hosted-git-info": { | ||
664 | + "version": "4.1.0", | ||
665 | + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", | ||
666 | + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", | ||
667 | + "requires": { | ||
668 | + "lru-cache": "^6.0.0" | ||
669 | + } | ||
670 | + }, | ||
671 | + "http-cache-semantics": { | ||
672 | + "version": "4.1.0", | ||
673 | + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", | ||
674 | + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" | ||
675 | + }, | ||
676 | + "http-proxy-agent": { | ||
677 | + "version": "4.0.1", | ||
678 | + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", | ||
679 | + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", | ||
680 | + "requires": { | ||
681 | + "@tootallnate/once": "1", | ||
682 | + "agent-base": "6", | ||
683 | + "debug": "4" | ||
684 | + } | ||
685 | + }, | ||
686 | + "http-signature": { | ||
687 | + "version": "1.2.0", | ||
688 | + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", | ||
689 | + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", | ||
690 | + "requires": { | ||
691 | + "assert-plus": "^1.0.0", | ||
692 | + "jsprim": "^1.2.2", | ||
693 | + "sshpk": "^1.7.0" | ||
694 | + } | ||
695 | + }, | ||
696 | + "https-proxy-agent": { | ||
697 | + "version": "5.0.1", | ||
698 | + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", | ||
699 | + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", | ||
700 | + "requires": { | ||
701 | + "agent-base": "6", | ||
702 | + "debug": "4" | ||
703 | + } | ||
704 | + }, | ||
705 | + "humanize-ms": { | ||
706 | + "version": "1.2.1", | ||
707 | + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", | ||
708 | + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", | ||
709 | + "requires": { | ||
710 | + "ms": "^2.0.0" | ||
711 | + } | ||
712 | + }, | ||
713 | + "iconv-lite": { | ||
714 | + "version": "0.6.3", | ||
715 | + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", | ||
716 | + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", | ||
717 | + "optional": true, | ||
718 | + "requires": { | ||
719 | + "safer-buffer": ">= 2.1.2 < 3.0.0" | ||
720 | + } | ||
721 | + }, | ||
722 | + "imurmurhash": { | ||
723 | + "version": "0.1.4", | ||
724 | + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", | ||
725 | + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" | ||
726 | + }, | ||
727 | + "indent-string": { | ||
728 | + "version": "4.0.0", | ||
729 | + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", | ||
730 | + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" | ||
731 | + }, | ||
732 | + "infer-owner": { | ||
733 | + "version": "1.0.4", | ||
734 | + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", | ||
735 | + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" | ||
736 | + }, | ||
737 | + "inflight": { | ||
738 | + "version": "1.0.6", | ||
739 | + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | ||
740 | + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", | ||
741 | + "requires": { | ||
742 | + "once": "^1.3.0", | ||
743 | + "wrappy": "1" | ||
744 | + } | ||
745 | + }, | ||
746 | + "inherits": { | ||
747 | + "version": "2.0.4", | ||
748 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||
749 | + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" | ||
750 | + }, | ||
751 | + "ip": { | ||
752 | + "version": "1.1.8", | ||
753 | + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", | ||
754 | + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" | ||
755 | + }, | ||
756 | + "is-arrayish": { | ||
757 | + "version": "0.2.1", | ||
758 | + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", | ||
759 | + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" | ||
760 | + }, | ||
761 | + "is-core-module": { | ||
762 | + "version": "2.9.0", | ||
763 | + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", | ||
764 | + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", | ||
765 | + "requires": { | ||
766 | + "has": "^1.0.3" | ||
767 | + } | ||
768 | + }, | ||
769 | + "is-fullwidth-code-point": { | ||
770 | + "version": "3.0.0", | ||
771 | + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", | ||
772 | + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" | ||
773 | + }, | ||
774 | + "is-lambda": { | ||
775 | + "version": "1.0.1", | ||
776 | + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", | ||
777 | + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=" | ||
778 | + }, | ||
779 | + "is-plain-obj": { | ||
780 | + "version": "1.1.0", | ||
781 | + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", | ||
782 | + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" | ||
783 | + }, | ||
784 | + "is-typedarray": { | ||
785 | + "version": "1.0.0", | ||
786 | + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", | ||
787 | + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" | ||
788 | + }, | ||
789 | + "isarray": { | ||
790 | + "version": "1.0.0", | ||
791 | + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | ||
792 | + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||
793 | + }, | ||
794 | + "isexe": { | ||
795 | + "version": "2.0.0", | ||
796 | + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", | ||
797 | + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" | ||
798 | + }, | ||
799 | + "isstream": { | ||
800 | + "version": "0.1.2", | ||
801 | + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", | ||
802 | + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" | ||
803 | + }, | ||
804 | + "js-base64": { | ||
805 | + "version": "2.6.4", | ||
806 | + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", | ||
807 | + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" | ||
808 | + }, | ||
809 | + "js-tokens": { | ||
810 | + "version": "4.0.0", | ||
811 | + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", | ||
812 | + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" | ||
813 | + }, | ||
814 | + "jsbn": { | ||
815 | + "version": "0.1.1", | ||
816 | + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", | ||
817 | + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" | ||
818 | + }, | ||
819 | + "json-parse-even-better-errors": { | ||
820 | + "version": "2.3.1", | ||
821 | + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", | ||
822 | + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" | ||
823 | + }, | ||
824 | + "json-schema": { | ||
825 | + "version": "0.4.0", | ||
826 | + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", | ||
827 | + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" | ||
828 | + }, | ||
829 | + "json-schema-traverse": { | ||
830 | + "version": "0.4.1", | ||
831 | + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", | ||
832 | + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" | ||
833 | + }, | ||
834 | + "json-stringify-safe": { | ||
835 | + "version": "5.0.1", | ||
836 | + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", | ||
837 | + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" | ||
838 | + }, | ||
839 | + "jsprim": { | ||
840 | + "version": "1.4.2", | ||
841 | + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", | ||
842 | + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", | ||
843 | + "requires": { | ||
844 | + "assert-plus": "1.0.0", | ||
845 | + "extsprintf": "1.3.0", | ||
846 | + "json-schema": "0.4.0", | ||
847 | + "verror": "1.10.0" | ||
848 | + } | ||
849 | + }, | ||
850 | + "kind-of": { | ||
851 | + "version": "6.0.3", | ||
852 | + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", | ||
853 | + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" | ||
854 | + }, | ||
855 | + "lines-and-columns": { | ||
856 | + "version": "1.2.4", | ||
857 | + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", | ||
858 | + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" | ||
859 | + }, | ||
860 | + "locate-path": { | ||
861 | + "version": "5.0.0", | ||
862 | + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", | ||
863 | + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", | ||
864 | + "requires": { | ||
865 | + "p-locate": "^4.1.0" | ||
866 | + } | ||
867 | + }, | ||
868 | + "lodash": { | ||
869 | + "version": "4.17.21", | ||
870 | + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", | ||
871 | + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" | ||
872 | + }, | ||
873 | + "lru-cache": { | ||
874 | + "version": "6.0.0", | ||
875 | + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", | ||
876 | + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", | ||
877 | + "requires": { | ||
878 | + "yallist": "^4.0.0" | ||
879 | + } | ||
880 | + }, | ||
881 | + "make-fetch-happen": { | ||
882 | + "version": "9.1.0", | ||
883 | + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", | ||
884 | + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", | ||
885 | + "requires": { | ||
886 | + "agentkeepalive": "^4.1.3", | ||
887 | + "cacache": "^15.2.0", | ||
888 | + "http-cache-semantics": "^4.1.0", | ||
889 | + "http-proxy-agent": "^4.0.1", | ||
890 | + "https-proxy-agent": "^5.0.0", | ||
891 | + "is-lambda": "^1.0.1", | ||
892 | + "lru-cache": "^6.0.0", | ||
893 | + "minipass": "^3.1.3", | ||
894 | + "minipass-collect": "^1.0.2", | ||
895 | + "minipass-fetch": "^1.3.2", | ||
896 | + "minipass-flush": "^1.0.5", | ||
897 | + "minipass-pipeline": "^1.2.4", | ||
898 | + "negotiator": "^0.6.2", | ||
899 | + "promise-retry": "^2.0.1", | ||
900 | + "socks-proxy-agent": "^6.0.0", | ||
901 | + "ssri": "^8.0.0" | ||
902 | + } | ||
903 | + }, | ||
904 | + "map-obj": { | ||
905 | + "version": "4.3.0", | ||
906 | + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", | ||
907 | + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" | ||
908 | + }, | ||
909 | + "meow": { | ||
910 | + "version": "9.0.0", | ||
911 | + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", | ||
912 | + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", | ||
913 | + "requires": { | ||
914 | + "@types/minimist": "^1.2.0", | ||
915 | + "camelcase-keys": "^6.2.2", | ||
916 | + "decamelize": "^1.2.0", | ||
917 | + "decamelize-keys": "^1.1.0", | ||
918 | + "hard-rejection": "^2.1.0", | ||
919 | + "minimist-options": "4.1.0", | ||
920 | + "normalize-package-data": "^3.0.0", | ||
921 | + "read-pkg-up": "^7.0.1", | ||
922 | + "redent": "^3.0.0", | ||
923 | + "trim-newlines": "^3.0.0", | ||
924 | + "type-fest": "^0.18.0", | ||
925 | + "yargs-parser": "^20.2.3" | ||
926 | + } | ||
927 | + }, | ||
928 | + "mime-db": { | ||
929 | + "version": "1.52.0", | ||
930 | + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", | ||
931 | + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" | ||
932 | + }, | ||
933 | + "mime-types": { | ||
934 | + "version": "2.1.35", | ||
935 | + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", | ||
936 | + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", | ||
937 | + "requires": { | ||
938 | + "mime-db": "1.52.0" | ||
939 | + } | ||
940 | + }, | ||
941 | + "min-indent": { | ||
942 | + "version": "1.0.1", | ||
943 | + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", | ||
944 | + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" | ||
945 | + }, | ||
946 | + "minimatch": { | ||
947 | + "version": "3.0.8", | ||
948 | + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", | ||
949 | + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", | ||
950 | + "requires": { | ||
951 | + "brace-expansion": "^1.1.7" | ||
952 | + } | ||
953 | + }, | ||
954 | + "minimist-options": { | ||
955 | + "version": "4.1.0", | ||
956 | + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", | ||
957 | + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", | ||
958 | + "requires": { | ||
959 | + "arrify": "^1.0.1", | ||
960 | + "is-plain-obj": "^1.1.0", | ||
961 | + "kind-of": "^6.0.3" | ||
962 | + } | ||
963 | + }, | ||
964 | + "minipass": { | ||
965 | + "version": "3.1.6", | ||
966 | + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", | ||
967 | + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", | ||
968 | + "requires": { | ||
969 | + "yallist": "^4.0.0" | ||
970 | + } | ||
971 | + }, | ||
972 | + "minipass-collect": { | ||
973 | + "version": "1.0.2", | ||
974 | + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", | ||
975 | + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", | ||
976 | + "requires": { | ||
977 | + "minipass": "^3.0.0" | ||
978 | + } | ||
979 | + }, | ||
980 | + "minipass-fetch": { | ||
981 | + "version": "1.4.1", | ||
982 | + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", | ||
983 | + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", | ||
984 | + "requires": { | ||
985 | + "encoding": "^0.1.12", | ||
986 | + "minipass": "^3.1.0", | ||
987 | + "minipass-sized": "^1.0.3", | ||
988 | + "minizlib": "^2.0.0" | ||
989 | + } | ||
990 | + }, | ||
991 | + "minipass-flush": { | ||
992 | + "version": "1.0.5", | ||
993 | + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", | ||
994 | + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", | ||
995 | + "requires": { | ||
996 | + "minipass": "^3.0.0" | ||
997 | + } | ||
998 | + }, | ||
999 | + "minipass-pipeline": { | ||
1000 | + "version": "1.2.4", | ||
1001 | + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", | ||
1002 | + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", | ||
1003 | + "requires": { | ||
1004 | + "minipass": "^3.0.0" | ||
1005 | + } | ||
1006 | + }, | ||
1007 | + "minipass-sized": { | ||
1008 | + "version": "1.0.3", | ||
1009 | + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", | ||
1010 | + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", | ||
1011 | + "requires": { | ||
1012 | + "minipass": "^3.0.0" | ||
1013 | + } | ||
1014 | + }, | ||
1015 | + "minizlib": { | ||
1016 | + "version": "2.1.2", | ||
1017 | + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", | ||
1018 | + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", | ||
1019 | + "requires": { | ||
1020 | + "minipass": "^3.0.0", | ||
1021 | + "yallist": "^4.0.0" | ||
1022 | + } | ||
1023 | + }, | ||
1024 | + "mkdirp": { | ||
1025 | + "version": "1.0.4", | ||
1026 | + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", | ||
1027 | + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" | ||
1028 | + }, | ||
1029 | + "ms": { | ||
1030 | + "version": "2.1.2", | ||
1031 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||
1032 | + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" | ||
1033 | + }, | ||
1034 | + "nan": { | ||
1035 | + "version": "2.15.0", | ||
1036 | + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", | ||
1037 | + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" | ||
1038 | + }, | ||
1039 | + "negotiator": { | ||
1040 | + "version": "0.6.3", | ||
1041 | + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", | ||
1042 | + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" | ||
1043 | + }, | ||
1044 | + "node-gyp": { | ||
1045 | + "version": "8.4.1", | ||
1046 | + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", | ||
1047 | + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", | ||
1048 | + "requires": { | ||
1049 | + "env-paths": "^2.2.0", | ||
1050 | + "glob": "^7.1.4", | ||
1051 | + "graceful-fs": "^4.2.6", | ||
1052 | + "make-fetch-happen": "^9.1.0", | ||
1053 | + "nopt": "^5.0.0", | ||
1054 | + "npmlog": "^6.0.0", | ||
1055 | + "rimraf": "^3.0.2", | ||
1056 | + "semver": "^7.3.5", | ||
1057 | + "tar": "^6.1.2", | ||
1058 | + "which": "^2.0.2" | ||
1059 | + }, | ||
1060 | + "dependencies": { | ||
1061 | + "npmlog": { | ||
1062 | + "version": "6.0.2", | ||
1063 | + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", | ||
1064 | + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", | ||
1065 | + "requires": { | ||
1066 | + "are-we-there-yet": "^3.0.0", | ||
1067 | + "console-control-strings": "^1.1.0", | ||
1068 | + "gauge": "^4.0.3", | ||
1069 | + "set-blocking": "^2.0.0" | ||
1070 | + } | ||
1071 | + } | ||
1072 | + } | ||
1073 | + }, | ||
1074 | + "node-sass": { | ||
1075 | + "version": "7.0.1", | ||
1076 | + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.1.tgz", | ||
1077 | + "integrity": "sha512-uMy+Xt29NlqKCFdFRZyXKOTqGt+QaKHexv9STj2WeLottnlqZEEWx6Bj0MXNthmFRRdM/YwyNo/8Tr46TOM0jQ==", | ||
1078 | + "requires": { | ||
1079 | + "async-foreach": "^0.1.3", | ||
1080 | + "chalk": "^4.1.2", | ||
1081 | + "cross-spawn": "^7.0.3", | ||
1082 | + "gaze": "^1.0.0", | ||
1083 | + "get-stdin": "^4.0.1", | ||
1084 | + "glob": "^7.0.3", | ||
1085 | + "lodash": "^4.17.15", | ||
1086 | + "meow": "^9.0.0", | ||
1087 | + "nan": "^2.13.2", | ||
1088 | + "node-gyp": "^8.4.1", | ||
1089 | + "npmlog": "^5.0.0", | ||
1090 | + "request": "^2.88.0", | ||
1091 | + "sass-graph": "4.0.0", | ||
1092 | + "stdout-stream": "^1.4.0", | ||
1093 | + "true-case-path": "^1.0.2" | ||
1094 | + } | ||
1095 | + }, | ||
1096 | + "nopt": { | ||
1097 | + "version": "5.0.0", | ||
1098 | + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", | ||
1099 | + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", | ||
1100 | + "requires": { | ||
1101 | + "abbrev": "1" | ||
1102 | + } | ||
1103 | + }, | ||
1104 | + "normalize-package-data": { | ||
1105 | + "version": "3.0.3", | ||
1106 | + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", | ||
1107 | + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", | ||
1108 | + "requires": { | ||
1109 | + "hosted-git-info": "^4.0.1", | ||
1110 | + "is-core-module": "^2.5.0", | ||
1111 | + "semver": "^7.3.4", | ||
1112 | + "validate-npm-package-license": "^3.0.1" | ||
1113 | + } | ||
1114 | + }, | ||
1115 | + "npmlog": { | ||
1116 | + "version": "5.0.1", | ||
1117 | + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", | ||
1118 | + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", | ||
1119 | + "requires": { | ||
1120 | + "are-we-there-yet": "^2.0.0", | ||
1121 | + "console-control-strings": "^1.1.0", | ||
1122 | + "gauge": "^3.0.0", | ||
1123 | + "set-blocking": "^2.0.0" | ||
1124 | + }, | ||
1125 | + "dependencies": { | ||
1126 | + "are-we-there-yet": { | ||
1127 | + "version": "2.0.0", | ||
1128 | + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", | ||
1129 | + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", | ||
1130 | + "requires": { | ||
1131 | + "delegates": "^1.0.0", | ||
1132 | + "readable-stream": "^3.6.0" | ||
1133 | + } | ||
1134 | + }, | ||
1135 | + "gauge": { | ||
1136 | + "version": "3.0.2", | ||
1137 | + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", | ||
1138 | + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", | ||
1139 | + "requires": { | ||
1140 | + "aproba": "^1.0.3 || ^2.0.0", | ||
1141 | + "color-support": "^1.1.2", | ||
1142 | + "console-control-strings": "^1.0.0", | ||
1143 | + "has-unicode": "^2.0.1", | ||
1144 | + "object-assign": "^4.1.1", | ||
1145 | + "signal-exit": "^3.0.0", | ||
1146 | + "string-width": "^4.2.3", | ||
1147 | + "strip-ansi": "^6.0.1", | ||
1148 | + "wide-align": "^1.1.2" | ||
1149 | + } | ||
1150 | + } | ||
1151 | + } | ||
1152 | + }, | ||
1153 | + "oauth-sign": { | ||
1154 | + "version": "0.9.0", | ||
1155 | + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", | ||
1156 | + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" | ||
1157 | + }, | ||
1158 | + "object-assign": { | ||
1159 | + "version": "4.1.1", | ||
1160 | + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", | ||
1161 | + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" | ||
1162 | + }, | ||
1163 | + "once": { | ||
1164 | + "version": "1.4.0", | ||
1165 | + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | ||
1166 | + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", | ||
1167 | + "requires": { | ||
1168 | + "wrappy": "1" | ||
1169 | + } | ||
1170 | + }, | ||
1171 | + "p-limit": { | ||
1172 | + "version": "2.3.0", | ||
1173 | + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", | ||
1174 | + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", | ||
1175 | + "requires": { | ||
1176 | + "p-try": "^2.0.0" | ||
1177 | + } | ||
1178 | + }, | ||
1179 | + "p-locate": { | ||
1180 | + "version": "4.1.0", | ||
1181 | + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", | ||
1182 | + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", | ||
1183 | + "requires": { | ||
1184 | + "p-limit": "^2.2.0" | ||
1185 | + } | ||
1186 | + }, | ||
1187 | + "p-map": { | ||
1188 | + "version": "4.0.0", | ||
1189 | + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", | ||
1190 | + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", | ||
1191 | + "requires": { | ||
1192 | + "aggregate-error": "^3.0.0" | ||
1193 | + } | ||
1194 | + }, | ||
1195 | + "p-try": { | ||
1196 | + "version": "2.2.0", | ||
1197 | + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", | ||
1198 | + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" | ||
1199 | + }, | ||
1200 | + "parse-json": { | ||
1201 | + "version": "5.2.0", | ||
1202 | + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", | ||
1203 | + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", | ||
1204 | + "requires": { | ||
1205 | + "@babel/code-frame": "^7.0.0", | ||
1206 | + "error-ex": "^1.3.1", | ||
1207 | + "json-parse-even-better-errors": "^2.3.0", | ||
1208 | + "lines-and-columns": "^1.1.6" | ||
1209 | + } | ||
1210 | + }, | ||
1211 | + "path-exists": { | ||
1212 | + "version": "4.0.0", | ||
1213 | + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", | ||
1214 | + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" | ||
1215 | + }, | ||
1216 | + "path-is-absolute": { | ||
1217 | + "version": "1.0.1", | ||
1218 | + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", | ||
1219 | + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" | ||
1220 | + }, | ||
1221 | + "path-key": { | ||
1222 | + "version": "3.1.1", | ||
1223 | + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", | ||
1224 | + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" | ||
1225 | + }, | ||
1226 | + "path-parse": { | ||
1227 | + "version": "1.0.7", | ||
1228 | + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", | ||
1229 | + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" | ||
1230 | + }, | ||
1231 | + "performance-now": { | ||
1232 | + "version": "2.1.0", | ||
1233 | + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", | ||
1234 | + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" | ||
1235 | + }, | ||
1236 | + "process-nextick-args": { | ||
1237 | + "version": "2.0.1", | ||
1238 | + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", | ||
1239 | + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" | ||
1240 | + }, | ||
1241 | + "promise-inflight": { | ||
1242 | + "version": "1.0.1", | ||
1243 | + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", | ||
1244 | + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" | ||
1245 | + }, | ||
1246 | + "promise-retry": { | ||
1247 | + "version": "2.0.1", | ||
1248 | + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", | ||
1249 | + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", | ||
1250 | + "requires": { | ||
1251 | + "err-code": "^2.0.2", | ||
1252 | + "retry": "^0.12.0" | ||
1253 | + } | ||
1254 | + }, | ||
1255 | + "psl": { | ||
1256 | + "version": "1.8.0", | ||
1257 | + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", | ||
1258 | + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" | ||
1259 | + }, | ||
1260 | + "punycode": { | ||
1261 | + "version": "2.1.1", | ||
1262 | + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", | ||
1263 | + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" | ||
1264 | + }, | ||
1265 | + "qs": { | ||
1266 | + "version": "6.5.3", | ||
1267 | + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", | ||
1268 | + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" | ||
1269 | + }, | ||
1270 | + "quick-lru": { | ||
1271 | + "version": "4.0.1", | ||
1272 | + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", | ||
1273 | + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" | ||
1274 | + }, | ||
1275 | + "read-pkg": { | ||
1276 | + "version": "5.2.0", | ||
1277 | + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", | ||
1278 | + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", | ||
1279 | + "requires": { | ||
1280 | + "@types/normalize-package-data": "^2.4.0", | ||
1281 | + "normalize-package-data": "^2.5.0", | ||
1282 | + "parse-json": "^5.0.0", | ||
1283 | + "type-fest": "^0.6.0" | ||
1284 | + }, | ||
1285 | + "dependencies": { | ||
1286 | + "hosted-git-info": { | ||
1287 | + "version": "2.8.9", | ||
1288 | + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", | ||
1289 | + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" | ||
1290 | + }, | ||
1291 | + "normalize-package-data": { | ||
1292 | + "version": "2.5.0", | ||
1293 | + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", | ||
1294 | + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", | ||
1295 | + "requires": { | ||
1296 | + "hosted-git-info": "^2.1.4", | ||
1297 | + "resolve": "^1.10.0", | ||
1298 | + "semver": "2 || 3 || 4 || 5", | ||
1299 | + "validate-npm-package-license": "^3.0.1" | ||
1300 | + } | ||
1301 | + }, | ||
1302 | + "semver": { | ||
1303 | + "version": "5.7.1", | ||
1304 | + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", | ||
1305 | + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" | ||
1306 | + }, | ||
1307 | + "type-fest": { | ||
1308 | + "version": "0.6.0", | ||
1309 | + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", | ||
1310 | + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" | ||
1311 | + } | ||
1312 | + } | ||
1313 | + }, | ||
1314 | + "read-pkg-up": { | ||
1315 | + "version": "7.0.1", | ||
1316 | + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", | ||
1317 | + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", | ||
1318 | + "requires": { | ||
1319 | + "find-up": "^4.1.0", | ||
1320 | + "read-pkg": "^5.2.0", | ||
1321 | + "type-fest": "^0.8.1" | ||
1322 | + }, | ||
1323 | + "dependencies": { | ||
1324 | + "type-fest": { | ||
1325 | + "version": "0.8.1", | ||
1326 | + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", | ||
1327 | + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" | ||
1328 | + } | ||
1329 | + } | ||
1330 | + }, | ||
1331 | + "readable-stream": { | ||
1332 | + "version": "3.6.0", | ||
1333 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", | ||
1334 | + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", | ||
1335 | + "requires": { | ||
1336 | + "inherits": "^2.0.3", | ||
1337 | + "string_decoder": "^1.1.1", | ||
1338 | + "util-deprecate": "^1.0.1" | ||
1339 | + } | ||
1340 | + }, | ||
1341 | + "redent": { | ||
1342 | + "version": "3.0.0", | ||
1343 | + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", | ||
1344 | + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", | ||
1345 | + "requires": { | ||
1346 | + "indent-string": "^4.0.0", | ||
1347 | + "strip-indent": "^3.0.0" | ||
1348 | + } | ||
1349 | + }, | ||
1350 | + "request": { | ||
1351 | + "version": "2.88.2", | ||
1352 | + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", | ||
1353 | + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", | ||
1354 | + "requires": { | ||
1355 | + "aws-sign2": "~0.7.0", | ||
1356 | + "aws4": "^1.8.0", | ||
1357 | + "caseless": "~0.12.0", | ||
1358 | + "combined-stream": "~1.0.6", | ||
1359 | + "extend": "~3.0.2", | ||
1360 | + "forever-agent": "~0.6.1", | ||
1361 | + "form-data": "~2.3.2", | ||
1362 | + "har-validator": "~5.1.3", | ||
1363 | + "http-signature": "~1.2.0", | ||
1364 | + "is-typedarray": "~1.0.0", | ||
1365 | + "isstream": "~0.1.2", | ||
1366 | + "json-stringify-safe": "~5.0.1", | ||
1367 | + "mime-types": "~2.1.19", | ||
1368 | + "oauth-sign": "~0.9.0", | ||
1369 | + "performance-now": "^2.1.0", | ||
1370 | + "qs": "~6.5.2", | ||
1371 | + "safe-buffer": "^5.1.2", | ||
1372 | + "tough-cookie": "~2.5.0", | ||
1373 | + "tunnel-agent": "^0.6.0", | ||
1374 | + "uuid": "^3.3.2" | ||
1375 | + } | ||
1376 | + }, | ||
1377 | + "require-directory": { | ||
1378 | + "version": "2.1.1", | ||
1379 | + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", | ||
1380 | + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" | ||
1381 | + }, | ||
1382 | + "resolve": { | ||
1383 | + "version": "1.22.0", | ||
1384 | + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", | ||
1385 | + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", | ||
1386 | + "requires": { | ||
1387 | + "is-core-module": "^2.8.1", | ||
1388 | + "path-parse": "^1.0.7", | ||
1389 | + "supports-preserve-symlinks-flag": "^1.0.0" | ||
1390 | + } | ||
1391 | + }, | ||
1392 | + "retry": { | ||
1393 | + "version": "0.12.0", | ||
1394 | + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", | ||
1395 | + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" | ||
1396 | + }, | ||
1397 | + "rimraf": { | ||
1398 | + "version": "3.0.2", | ||
1399 | + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", | ||
1400 | + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", | ||
1401 | + "requires": { | ||
1402 | + "glob": "^7.1.3" | ||
1403 | + } | ||
1404 | + }, | ||
1405 | + "safe-buffer": { | ||
1406 | + "version": "5.2.1", | ||
1407 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | ||
1408 | + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" | ||
1409 | + }, | ||
1410 | + "safer-buffer": { | ||
1411 | + "version": "2.1.2", | ||
1412 | + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", | ||
1413 | + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | ||
1414 | + }, | ||
1415 | + "sass-graph": { | ||
1416 | + "version": "4.0.0", | ||
1417 | + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.0.tgz", | ||
1418 | + "integrity": "sha512-WSO/MfXqKH7/TS8RdkCX3lVkPFQzCgbqdGsmSKq6tlPU+GpGEsa/5aW18JqItnqh+lPtcjifqdZ/VmiILkKckQ==", | ||
1419 | + "requires": { | ||
1420 | + "glob": "^7.0.0", | ||
1421 | + "lodash": "^4.17.11", | ||
1422 | + "scss-tokenizer": "^0.3.0", | ||
1423 | + "yargs": "^17.2.1" | ||
1424 | + } | ||
1425 | + }, | ||
1426 | + "scss-tokenizer": { | ||
1427 | + "version": "0.3.0", | ||
1428 | + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.3.0.tgz", | ||
1429 | + "integrity": "sha512-14Zl9GcbBvOT9057ZKjpz5yPOyUWG2ojd9D5io28wHRYsOrs7U95Q+KNL87+32p8rc+LvDpbu/i9ZYjM9Q+FsQ==", | ||
1430 | + "requires": { | ||
1431 | + "js-base64": "^2.4.3", | ||
1432 | + "source-map": "^0.7.1" | ||
1433 | + } | ||
1434 | + }, | ||
1435 | + "semver": { | ||
1436 | + "version": "7.3.7", | ||
1437 | + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", | ||
1438 | + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", | ||
1439 | + "requires": { | ||
1440 | + "lru-cache": "^6.0.0" | ||
1441 | + } | ||
1442 | + }, | ||
1443 | + "set-blocking": { | ||
1444 | + "version": "2.0.0", | ||
1445 | + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", | ||
1446 | + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" | ||
1447 | + }, | ||
1448 | + "shebang-command": { | ||
1449 | + "version": "2.0.0", | ||
1450 | + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", | ||
1451 | + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", | ||
1452 | + "requires": { | ||
1453 | + "shebang-regex": "^3.0.0" | ||
1454 | + } | ||
1455 | + }, | ||
1456 | + "shebang-regex": { | ||
1457 | + "version": "3.0.0", | ||
1458 | + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", | ||
1459 | + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" | ||
1460 | + }, | ||
1461 | + "signal-exit": { | ||
1462 | + "version": "3.0.7", | ||
1463 | + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", | ||
1464 | + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" | ||
1465 | + }, | ||
1466 | + "smart-buffer": { | ||
1467 | + "version": "4.2.0", | ||
1468 | + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", | ||
1469 | + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" | ||
1470 | + }, | ||
1471 | + "socks": { | ||
1472 | + "version": "2.6.2", | ||
1473 | + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", | ||
1474 | + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", | ||
1475 | + "requires": { | ||
1476 | + "ip": "^1.1.5", | ||
1477 | + "smart-buffer": "^4.2.0" | ||
1478 | + } | ||
1479 | + }, | ||
1480 | + "socks-proxy-agent": { | ||
1481 | + "version": "6.2.0", | ||
1482 | + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", | ||
1483 | + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", | ||
1484 | + "requires": { | ||
1485 | + "agent-base": "^6.0.2", | ||
1486 | + "debug": "^4.3.3", | ||
1487 | + "socks": "^2.6.2" | ||
1488 | + } | ||
1489 | + }, | ||
1490 | + "source-map": { | ||
1491 | + "version": "0.7.3", | ||
1492 | + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", | ||
1493 | + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" | ||
1494 | + }, | ||
1495 | + "spdx-correct": { | ||
1496 | + "version": "3.1.1", | ||
1497 | + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", | ||
1498 | + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", | ||
1499 | + "requires": { | ||
1500 | + "spdx-expression-parse": "^3.0.0", | ||
1501 | + "spdx-license-ids": "^3.0.0" | ||
1502 | + } | ||
1503 | + }, | ||
1504 | + "spdx-exceptions": { | ||
1505 | + "version": "2.3.0", | ||
1506 | + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", | ||
1507 | + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" | ||
1508 | + }, | ||
1509 | + "spdx-expression-parse": { | ||
1510 | + "version": "3.0.1", | ||
1511 | + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", | ||
1512 | + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", | ||
1513 | + "requires": { | ||
1514 | + "spdx-exceptions": "^2.1.0", | ||
1515 | + "spdx-license-ids": "^3.0.0" | ||
1516 | + } | ||
1517 | + }, | ||
1518 | + "spdx-license-ids": { | ||
1519 | + "version": "3.0.11", | ||
1520 | + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", | ||
1521 | + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" | ||
1522 | + }, | ||
1523 | + "sshpk": { | ||
1524 | + "version": "1.17.0", | ||
1525 | + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", | ||
1526 | + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", | ||
1527 | + "requires": { | ||
1528 | + "asn1": "~0.2.3", | ||
1529 | + "assert-plus": "^1.0.0", | ||
1530 | + "bcrypt-pbkdf": "^1.0.0", | ||
1531 | + "dashdash": "^1.12.0", | ||
1532 | + "ecc-jsbn": "~0.1.1", | ||
1533 | + "getpass": "^0.1.1", | ||
1534 | + "jsbn": "~0.1.0", | ||
1535 | + "safer-buffer": "^2.0.2", | ||
1536 | + "tweetnacl": "~0.14.0" | ||
1537 | + } | ||
1538 | + }, | ||
1539 | + "ssri": { | ||
1540 | + "version": "8.0.1", | ||
1541 | + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", | ||
1542 | + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", | ||
1543 | + "requires": { | ||
1544 | + "minipass": "^3.1.1" | ||
1545 | + } | ||
1546 | + }, | ||
1547 | + "stdout-stream": { | ||
1548 | + "version": "1.4.1", | ||
1549 | + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", | ||
1550 | + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", | ||
1551 | + "requires": { | ||
1552 | + "readable-stream": "^2.0.1" | ||
1553 | + }, | ||
1554 | + "dependencies": { | ||
1555 | + "readable-stream": { | ||
1556 | + "version": "2.3.7", | ||
1557 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", | ||
1558 | + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", | ||
1559 | + "requires": { | ||
1560 | + "core-util-is": "~1.0.0", | ||
1561 | + "inherits": "~2.0.3", | ||
1562 | + "isarray": "~1.0.0", | ||
1563 | + "process-nextick-args": "~2.0.0", | ||
1564 | + "safe-buffer": "~5.1.1", | ||
1565 | + "string_decoder": "~1.1.1", | ||
1566 | + "util-deprecate": "~1.0.1" | ||
1567 | + } | ||
1568 | + }, | ||
1569 | + "safe-buffer": { | ||
1570 | + "version": "5.1.2", | ||
1571 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
1572 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
1573 | + }, | ||
1574 | + "string_decoder": { | ||
1575 | + "version": "1.1.1", | ||
1576 | + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
1577 | + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
1578 | + "requires": { | ||
1579 | + "safe-buffer": "~5.1.0" | ||
1580 | + } | ||
1581 | + } | ||
1582 | + } | ||
1583 | + }, | ||
1584 | + "string-width": { | ||
1585 | + "version": "4.2.3", | ||
1586 | + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", | ||
1587 | + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", | ||
1588 | + "requires": { | ||
1589 | + "emoji-regex": "^8.0.0", | ||
1590 | + "is-fullwidth-code-point": "^3.0.0", | ||
1591 | + "strip-ansi": "^6.0.1" | ||
1592 | + } | ||
1593 | + }, | ||
1594 | + "string_decoder": { | ||
1595 | + "version": "1.3.0", | ||
1596 | + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", | ||
1597 | + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", | ||
1598 | + "requires": { | ||
1599 | + "safe-buffer": "~5.2.0" | ||
1600 | + } | ||
1601 | + }, | ||
1602 | + "strip-ansi": { | ||
1603 | + "version": "6.0.1", | ||
1604 | + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", | ||
1605 | + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", | ||
1606 | + "requires": { | ||
1607 | + "ansi-regex": "^5.0.1" | ||
1608 | + } | ||
1609 | + }, | ||
1610 | + "strip-indent": { | ||
1611 | + "version": "3.0.0", | ||
1612 | + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", | ||
1613 | + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", | ||
1614 | + "requires": { | ||
1615 | + "min-indent": "^1.0.0" | ||
1616 | + } | ||
1617 | + }, | ||
1618 | + "supports-color": { | ||
1619 | + "version": "7.2.0", | ||
1620 | + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", | ||
1621 | + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", | ||
1622 | + "requires": { | ||
1623 | + "has-flag": "^4.0.0" | ||
1624 | + } | ||
1625 | + }, | ||
1626 | + "supports-preserve-symlinks-flag": { | ||
1627 | + "version": "1.0.0", | ||
1628 | + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", | ||
1629 | + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" | ||
1630 | + }, | ||
1631 | + "tar": { | ||
1632 | + "version": "6.1.11", | ||
1633 | + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", | ||
1634 | + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", | ||
1635 | + "requires": { | ||
1636 | + "chownr": "^2.0.0", | ||
1637 | + "fs-minipass": "^2.0.0", | ||
1638 | + "minipass": "^3.0.0", | ||
1639 | + "minizlib": "^2.1.1", | ||
1640 | + "mkdirp": "^1.0.3", | ||
1641 | + "yallist": "^4.0.0" | ||
1642 | + } | ||
1643 | + }, | ||
1644 | + "tough-cookie": { | ||
1645 | + "version": "2.5.0", | ||
1646 | + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", | ||
1647 | + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", | ||
1648 | + "requires": { | ||
1649 | + "psl": "^1.1.28", | ||
1650 | + "punycode": "^2.1.1" | ||
1651 | + } | ||
1652 | + }, | ||
1653 | + "trim-newlines": { | ||
1654 | + "version": "3.0.1", | ||
1655 | + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", | ||
1656 | + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" | ||
1657 | + }, | ||
1658 | + "true-case-path": { | ||
1659 | + "version": "1.0.3", | ||
1660 | + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", | ||
1661 | + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", | ||
1662 | + "requires": { | ||
1663 | + "glob": "^7.1.2" | ||
1664 | + } | ||
1665 | + }, | ||
1666 | + "tunnel-agent": { | ||
1667 | + "version": "0.6.0", | ||
1668 | + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", | ||
1669 | + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", | ||
1670 | + "requires": { | ||
1671 | + "safe-buffer": "^5.0.1" | ||
1672 | + } | ||
1673 | + }, | ||
1674 | + "tweetnacl": { | ||
1675 | + "version": "0.14.5", | ||
1676 | + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", | ||
1677 | + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" | ||
1678 | + }, | ||
1679 | + "type-fest": { | ||
1680 | + "version": "0.18.1", | ||
1681 | + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", | ||
1682 | + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" | ||
1683 | + }, | ||
1684 | + "unique-filename": { | ||
1685 | + "version": "1.1.1", | ||
1686 | + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", | ||
1687 | + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", | ||
1688 | + "requires": { | ||
1689 | + "unique-slug": "^2.0.0" | ||
1690 | + } | ||
1691 | + }, | ||
1692 | + "unique-slug": { | ||
1693 | + "version": "2.0.2", | ||
1694 | + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", | ||
1695 | + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", | ||
1696 | + "requires": { | ||
1697 | + "imurmurhash": "^0.1.4" | ||
1698 | + } | ||
1699 | + }, | ||
1700 | + "uri-js": { | ||
1701 | + "version": "4.4.1", | ||
1702 | + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", | ||
1703 | + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", | ||
1704 | + "requires": { | ||
1705 | + "punycode": "^2.1.0" | ||
1706 | + } | ||
1707 | + }, | ||
1708 | + "util-deprecate": { | ||
1709 | + "version": "1.0.2", | ||
1710 | + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||
1711 | + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" | ||
1712 | + }, | ||
1713 | + "uuid": { | ||
1714 | + "version": "3.4.0", | ||
1715 | + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", | ||
1716 | + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" | ||
1717 | + }, | ||
1718 | + "validate-npm-package-license": { | ||
1719 | + "version": "3.0.4", | ||
1720 | + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", | ||
1721 | + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", | ||
1722 | + "requires": { | ||
1723 | + "spdx-correct": "^3.0.0", | ||
1724 | + "spdx-expression-parse": "^3.0.0" | ||
1725 | + } | ||
1726 | + }, | ||
1727 | + "verror": { | ||
1728 | + "version": "1.10.0", | ||
1729 | + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", | ||
1730 | + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", | ||
1731 | + "requires": { | ||
1732 | + "assert-plus": "^1.0.0", | ||
1733 | + "core-util-is": "1.0.2", | ||
1734 | + "extsprintf": "^1.2.0" | ||
1735 | + } | ||
1736 | + }, | ||
1737 | + "which": { | ||
1738 | + "version": "2.0.2", | ||
1739 | + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", | ||
1740 | + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", | ||
1741 | + "requires": { | ||
1742 | + "isexe": "^2.0.0" | ||
1743 | + } | ||
1744 | + }, | ||
1745 | + "wide-align": { | ||
1746 | + "version": "1.1.5", | ||
1747 | + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", | ||
1748 | + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", | ||
1749 | + "requires": { | ||
1750 | + "string-width": "^1.0.2 || 2 || 3 || 4" | ||
1751 | + } | ||
1752 | + }, | ||
1753 | + "wrap-ansi": { | ||
1754 | + "version": "7.0.0", | ||
1755 | + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", | ||
1756 | + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", | ||
1757 | + "requires": { | ||
1758 | + "ansi-styles": "^4.0.0", | ||
1759 | + "string-width": "^4.1.0", | ||
1760 | + "strip-ansi": "^6.0.0" | ||
1761 | + } | ||
1762 | + }, | ||
1763 | + "wrappy": { | ||
1764 | + "version": "1.0.2", | ||
1765 | + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | ||
1766 | + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" | ||
1767 | + }, | ||
1768 | + "y18n": { | ||
1769 | + "version": "5.0.8", | ||
1770 | + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", | ||
1771 | + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" | ||
1772 | + }, | ||
1773 | + "yallist": { | ||
1774 | + "version": "4.0.0", | ||
1775 | + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", | ||
1776 | + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" | ||
1777 | + }, | ||
1778 | + "yargs": { | ||
1779 | + "version": "17.5.0", | ||
1780 | + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.0.tgz", | ||
1781 | + "integrity": "sha512-3sLxVhbAB5OC8qvVRebCLWuouhwh/rswsiDYx3WGxajUk/l4G20SKfrKKFeNIHboUFt2JFgv2yfn+5cgOr/t5A==", | ||
1782 | + "requires": { | ||
1783 | + "cliui": "^7.0.2", | ||
1784 | + "escalade": "^3.1.1", | ||
1785 | + "get-caller-file": "^2.0.5", | ||
1786 | + "require-directory": "^2.1.1", | ||
1787 | + "string-width": "^4.2.3", | ||
1788 | + "y18n": "^5.0.5", | ||
1789 | + "yargs-parser": "^21.0.0" | ||
1790 | + }, | ||
1791 | + "dependencies": { | ||
1792 | + "yargs-parser": { | ||
1793 | + "version": "21.0.1", | ||
1794 | + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", | ||
1795 | + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==" | ||
1796 | + } | ||
1797 | + } | ||
1798 | + }, | ||
1799 | + "yargs-parser": { | ||
1800 | + "version": "20.2.9", | ||
1801 | + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", | ||
1802 | + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" | ||
1803 | + } | ||
1804 | + } | ||
1805 | +} |
weather_briefing/bash.exe.stackdump
0 → 100644
1 | +Stack trace: | ||
2 | +Frame Function Args | ||
3 | +000005FF340 0018006286E (001802901B2, 0018026DE3E, 0000000005E, 000005FAEA0) | ||
4 | +000005FF340 0018004846A (00000000000, 00000000000, 7FFE00000000, 00000001000) | ||
5 | +000005FF340 001800484A2 (00000000000, 0000000005A, 0000000005E, 00000000000) | ||
6 | +000005FF340 001800D3E58 (00000000000, 00100000000, 0018026D9F2, 000005FBFEC) | ||
7 | +000005FF340 0018012C857 (00000000000, 00180223E20, 00180223E10, 000005FDDE0) | ||
8 | +000005FF340 001800488B4 (0018030F940, 000005FDDE0, 00000000000, 00000000000) | ||
9 | +000005FF340 0018004A01F (0007FFE0384, 00000000000, 00000000000, 00000000000) | ||
10 | +000005FF340 001800D4E98 (00000000000, 00000000000, 00000000000, 00000000000) | ||
11 | +000005FF5E0 7FFE062E9A1D (00180040000, 00000000001, 00000000000, 000005FF528) | ||
12 | +000005FF5E0 7FFE0633C1E7 (7FFE0630DB00, 000007F3901, 7FFE00000001, 00000000001) | ||
13 | +000005FF5E0 7FFE0633BF7A (000007F3900, 000005FF5E0, 000007F4270, 00000070000) | ||
14 | +000005FF5E0 7FFE0633C000 (00000000010, 00000000000, 7FFE06401A90, 000005FF678) | ||
15 | +00000000000 7FFE063A3C2A (00000000000, 00000000000, 00000000001, 00000000000) | ||
16 | +00000000000 7FFE06344CDB (7FFE062D0000, 00000000000, 00000347000, 00000000000) | ||
17 | +00000000000 7FFE06344B63 (00000000000, 00000000000, 00000000000, 00000000000) | ||
18 | +00000000000 7FFE06344B0E (00000000000, 00000000000, 00000000000, 00000000000) | ||
19 | +End of stack trace |
This diff could not be displayed because it is too large.
... | @@ -6,6 +6,7 @@ | ... | @@ -6,6 +6,7 @@ |
6 | "@testing-library/jest-dom": "^5.16.4", | 6 | "@testing-library/jest-dom": "^5.16.4", |
7 | "@testing-library/react": "^13.2.0", | 7 | "@testing-library/react": "^13.2.0", |
8 | "@testing-library/user-event": "^13.5.0", | 8 | "@testing-library/user-event": "^13.5.0", |
9 | + "axios": "^0.27.2", | ||
9 | "cors": "^2.8.5", | 10 | "cors": "^2.8.5", |
10 | "express": "^4.18.1", | 11 | "express": "^4.18.1", |
11 | "http-proxy-middleware": "^2.0.6", | 12 | "http-proxy-middleware": "^2.0.6", |
... | @@ -13,7 +14,12 @@ | ... | @@ -13,7 +14,12 @@ |
13 | "nodemon": "^2.0.16", | 14 | "nodemon": "^2.0.16", |
14 | "react": "^18.1.0", | 15 | "react": "^18.1.0", |
15 | "react-dom": "^18.1.0", | 16 | "react-dom": "^18.1.0", |
17 | + "react-redux": "^8.0.2", | ||
18 | + "react-router-dom": "^6.3.0", | ||
16 | "react-scripts": "5.0.1", | 19 | "react-scripts": "5.0.1", |
20 | + "redux": "^4.1.2", | ||
21 | + "redux-promise-middleware": "^6.1.2", | ||
22 | + "redux-thunk": "^2.4.1", | ||
17 | "web-vitals": "^2.1.4" | 23 | "web-vitals": "^2.1.4" |
18 | }, | 24 | }, |
19 | "scripts": { | 25 | "scripts": { |
... | @@ -39,5 +45,8 @@ | ... | @@ -39,5 +45,8 @@ |
39 | "last 1 firefox version", | 45 | "last 1 firefox version", |
40 | "last 1 safari version" | 46 | "last 1 safari version" |
41 | ] | 47 | ] |
48 | + }, | ||
49 | + "devDependencies": { | ||
50 | + "redux-devtools-extension": "^2.13.9" | ||
42 | } | 51 | } |
43 | } | 52 | } | ... | ... |
weather_briefing/public/img/가디건.jpg
0 → 100644
15.1 KB
weather_briefing/public/img/가죽자켓.jpg
0 → 100644
19.4 KB
weather_briefing/public/img/기모옷.jpg
0 → 100644
4.94 KB
weather_briefing/public/img/니트.jpg
0 → 100644
1.4 KB
weather_briefing/public/img/롱스커트.jpg
0 → 100644
31 KB
weather_briefing/public/img/린넨셔츠.jpg
0 → 100644
37.4 KB
weather_briefing/public/img/맨투맨.jpg
0 → 100644
844 KB
weather_briefing/public/img/면바지.jpg
0 → 100644
7.47 KB
weather_briefing/public/img/민소매.jpg
0 → 100644
24.8 KB
weather_briefing/public/img/반바지.jpg
0 → 100644
14.3 KB
weather_briefing/public/img/반팔.jpg
0 → 100644
19.4 KB
weather_briefing/public/img/블라우스.jpg
0 → 100644
27.4 KB
weather_briefing/public/img/스타킹.jpg
0 → 100644
25.5 KB
weather_briefing/public/img/슬랙스.jpg
0 → 100644
6.17 KB
weather_briefing/public/img/울코트.jpg
0 → 100644
5.12 KB
weather_briefing/public/img/자켓.jpg
0 → 100644
22 KB
weather_briefing/public/img/조거팬츠.jpg
0 → 100644
3.82 KB
weather_briefing/public/img/청바지.jpg
0 → 100644
39.2 KB
weather_briefing/public/img/청자켓.jpg
0 → 100644
40.8 KB
weather_briefing/public/img/치마.jpg
0 → 100644
10.2 KB
weather_briefing/public/img/트렌치코트.jpg
0 → 100644
61.7 KB
weather_briefing/public/img/패딩.jpg
0 → 100644
5.42 KB
weather_briefing/public/img/핫팬츠.jpg
0 → 100644
14.9 KB
weather_briefing/public/img/후드티.jpg
0 → 100644
44.1 KB
1 | -import logo from './logo.svg'; | ||
2 | import './App.css'; | 1 | import './App.css'; |
2 | +import RegisterPage from './component/views/RegisterPage/RegisterPage'; | ||
3 | +import LoginPage from './component/views/LoginPage/LoginPage'; | ||
4 | +import MainPage from './component/views/MainPage/MainPage'; | ||
5 | +import RecommandPage from './component/views/RecommandPage/RecommandPage'; | ||
6 | +import { Route, Routes } from 'react-router-dom'; | ||
7 | +import WeatherPage from './component/views/WeatherPage/WeatherPage'; | ||
3 | 8 | ||
4 | function App() { | 9 | function App() { |
5 | return ( | 10 | return ( |
6 | - <div className="App"> | 11 | + <div> |
7 | - <header className="App-header"> | 12 | + <Routes> |
8 | - <img src={logo} className="App-logo" alt="logo" /> | 13 | + <Route exact path = "/login" element = {<LoginPage/>}/> |
9 | - <p> | 14 | + <Route exact path = "/" element = {<RegisterPage/>}/> |
10 | - Edit <code>src/App.js</code> and save to reload. | 15 | + <Route exact path = "/main" element = {<MainPage/>}/> |
11 | - </p> | 16 | + <Route exact path = "/weather" element = {<WeatherPage/>}/> |
12 | - <a | 17 | + <Route exact path = "/recommand" element = {<RecommandPage/>}/> |
13 | - className="App-link" | 18 | + </Routes> |
14 | - href="https://reactjs.org" | ||
15 | - target="_blank" | ||
16 | - rel="noopener noreferrer" | ||
17 | - > | ||
18 | - Learn React | ||
19 | - </a> | ||
20 | - </header> | ||
21 | </div> | 19 | </div> |
22 | ); | 20 | ); |
23 | } | 21 | } | ... | ... |
1 | +import React, { useCallback, useEffect, useState } from "react"; | ||
2 | +import { useDispatch, useSelector } from "react-redux"; | ||
3 | +import { useNavigate } from "react-router-dom"; | ||
4 | +import { login } from "../../../modules/user"; | ||
5 | +import { address } from "../../../modules/weather"; | ||
6 | +import "../style/LoginPage.scss" | ||
7 | + | ||
8 | +function LoginPage(props) { | ||
9 | + const dispatch = useDispatch(); | ||
10 | + const navigate = useNavigate(); | ||
11 | + | ||
12 | + const loginResult = useSelector((state) => state.user.loginData); | ||
13 | + | ||
14 | + const [Id, setId] = useState(""); | ||
15 | + const [Password, setPassword] = useState(""); | ||
16 | + | ||
17 | + const [checkLogin, setCheckLogin] = useState(false); | ||
18 | + const [checkIdError, setCheckIdError] = useState(false); | ||
19 | + const [checkPasswordError, setCheckPasswordError] = useState(false); | ||
20 | + const [checkLoginError, setCheckLoginError] = useState(false); | ||
21 | + | ||
22 | + const idRegex = /^(?=.*[a-zA-Z])(?=.*[0-9]).{6,14}$/; | ||
23 | + const passwordRegex = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-?])(?=.*[0-9]).{8,25}$/; | ||
24 | + | ||
25 | + useEffect(() => { | ||
26 | + if (checkLogin === true) { | ||
27 | + loginResult.then((result) => { | ||
28 | + if (result.loginSuccess === true) { | ||
29 | + alert('로그인에 성공하였습니다.'); | ||
30 | + navigate('/main'); | ||
31 | + } | ||
32 | + else { | ||
33 | + alert('로그인에 실패하였습니다.'); | ||
34 | + } | ||
35 | + }) | ||
36 | + } | ||
37 | + }, [loginResult]) | ||
38 | + | ||
39 | + const onIdHandler = useCallback((event) => { | ||
40 | + setId(event.currentTarget.value); | ||
41 | + | ||
42 | + // 아이디 유효성 검사 | ||
43 | + if (!idRegex.test(event.currentTarget.value)) { | ||
44 | + setCheckIdError(true); | ||
45 | + } | ||
46 | + else { | ||
47 | + setCheckIdError(false); | ||
48 | + } | ||
49 | + | ||
50 | + }, [checkIdError]); | ||
51 | + | ||
52 | + const onPasswordHandler = useCallback((event) => { | ||
53 | + setPassword(event.currentTarget.value); | ||
54 | + | ||
55 | + // 비밀번호 유효성 검사 | ||
56 | + if (!passwordRegex.test(event.currentTarget.value)) { | ||
57 | + setCheckPasswordError(true); | ||
58 | + } | ||
59 | + else { | ||
60 | + setCheckPasswordError(false); | ||
61 | + } | ||
62 | + }, [checkPasswordError]); | ||
63 | + | ||
64 | + const onSubmitHandler = useCallback((event) => { | ||
65 | + event.preventDefault(); | ||
66 | + | ||
67 | + if (checkIdError || Id === "") { | ||
68 | + setCheckLoginError(true); | ||
69 | + } | ||
70 | + else if (checkPasswordError || Password === "") { | ||
71 | + setCheckLoginError(true); | ||
72 | + } | ||
73 | + else { | ||
74 | + setCheckLoginError(false); | ||
75 | + } | ||
76 | + | ||
77 | + // login | ||
78 | + if (!checkLoginError) { | ||
79 | + const UserData = { | ||
80 | + id: Id, | ||
81 | + password: Password | ||
82 | + }; | ||
83 | + | ||
84 | + dispatch(login(UserData)); | ||
85 | + dispatch(address()); | ||
86 | + setCheckLogin(true); | ||
87 | + | ||
88 | + } | ||
89 | + | ||
90 | + }, [checkIdError, checkPasswordError, Password, dispatch, loginResult]); | ||
91 | + | ||
92 | + return ( | ||
93 | + <div id = "body"> | ||
94 | + <div className="login-box"> | ||
95 | + <h2>로그인</h2> | ||
96 | + <div className="input-area"> | ||
97 | + <input | ||
98 | + placeholder="아이디" | ||
99 | + type="text" | ||
100 | + value={Id} | ||
101 | + onChange={onIdHandler} | ||
102 | + /> | ||
103 | + </div> | ||
104 | + <div className="check-variable"> | ||
105 | + {checkIdError && <div style={{color : 'red'}}>아이디는 6자리 이상 14자리 이하 소문자와 숫자로 입력해주세요.</div>} | ||
106 | + </div> | ||
107 | + <div className="input-area"> | ||
108 | + <input | ||
109 | + placeholder="비밀번호" | ||
110 | + type="text" | ||
111 | + value={Password} | ||
112 | + onChange={onPasswordHandler} | ||
113 | + /> | ||
114 | + </div> | ||
115 | + <div className="check-variable"> | ||
116 | + {checkPasswordError && <div style={{color : 'red'}}>알파벳과 숫자, 특수문자를 포함하여 8자리 이상 입력해주세요.</div>} | ||
117 | + </div> | ||
118 | + <div className="btn-area" onClick={onSubmitHandler}> | ||
119 | + <button | ||
120 | + className="login-btn" | ||
121 | + > | ||
122 | + 로그인 | ||
123 | + </button> | ||
124 | + </div> | ||
125 | + <div className="check-variable"> | ||
126 | + {checkLoginError && <div style={{color : 'red'}}>정보를 제대로 입력해주세요.</div>} | ||
127 | + </div> | ||
128 | + </div> | ||
129 | + </div> | ||
130 | + ); | ||
131 | + | ||
132 | +} | ||
133 | + | ||
134 | +export default LoginPage; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +import React, { useCallback, useEffect, useState } from "react"; | ||
2 | +import { useDispatch, useSelector } from "react-redux"; | ||
3 | +import { useNavigate } from "react-router-dom"; | ||
4 | +import { logout } from "../../../modules/user"; | ||
5 | +import { todayInformation, tommorrowInformation } from "../../../modules/weather"; | ||
6 | +import "../style/MainPage.scss" | ||
7 | + | ||
8 | +function MainPage(props) { | ||
9 | + | ||
10 | + const dispatch = useDispatch(); | ||
11 | + const navigate = useNavigate(); | ||
12 | + | ||
13 | + const addressResult = useSelector((state) => state.weather.address); | ||
14 | + const user = useSelector((state) => state.user.loginData); | ||
15 | + | ||
16 | + //이름, 성별, 시구동주소 | ||
17 | + const [Name, setName] = useState(""); | ||
18 | + const [Sex, setSex] = useState(""); | ||
19 | + const [CityAdd, setCityAdd] = useState(""); | ||
20 | + const [GuAdd, setGuAdd] = useState(""); | ||
21 | + const [DongAdd, setDongAdd] = useState(""); | ||
22 | + | ||
23 | + // const [checkNameError, setCheckNameError] = useState(false); | ||
24 | + // const [checkSexError, setCheckSexError] = useState(true); | ||
25 | + const [checkCityAddError, setCheckCityAddError] = useState(true); | ||
26 | + const [checkGuAddError, setCheckGuAddError] = useState(true); | ||
27 | + const [checkDongAddError, setCheckDongAddError] = useState(true); | ||
28 | + const [checkSubmitError, setCheckSubmitError] = useState(false); | ||
29 | + | ||
30 | + const CityAddSelectList = ["시/도 선택", "강원도", "경기도", "경상북도", "경상남도", "광주광역시", "대구광역시", "대전광역시", "부산광역시", "서울특별시", "울산광역시", "인천광역시", "전라북도", "전라남도", "제주특별자치도", "충청북도", "충청남도"]; | ||
31 | + | ||
32 | + const [GuAddSelectList, setGuAddselectList] = useState(["시/군/구 선택"]); | ||
33 | + const [DongAddSelectList, setDongAddselectList] = useState(["읍/면/동 선택"]); | ||
34 | + | ||
35 | + const [Time, setTime] = useState("00:00:00"); | ||
36 | + | ||
37 | + const currentTime = () => { | ||
38 | + const date = new Date(); | ||
39 | + const hours = String(date.getHours()).padStart(2, "0"); | ||
40 | + const minutes = String(date.getMinutes()).padStart(2, "0"); | ||
41 | + const seconds = String(date.getSeconds()).padStart(2, "0"); | ||
42 | + setTime(hours+" : "+minutes+" : "+seconds); | ||
43 | + } | ||
44 | + | ||
45 | + const startTimer = () => { | ||
46 | + setInterval(currentTime, 1000) | ||
47 | + } | ||
48 | + | ||
49 | + startTimer() | ||
50 | + | ||
51 | + useEffect(() => { | ||
52 | + user.then((result) => { | ||
53 | + setName(result.logData.name); | ||
54 | + setSex(result.logData.gender); | ||
55 | + }) | ||
56 | + }, [user]) | ||
57 | + | ||
58 | + // 시/군/구 주소 | ||
59 | + useEffect(() => { | ||
60 | + const tempList = []; | ||
61 | + | ||
62 | + addressResult.then((result) => { | ||
63 | + | ||
64 | + for (let i = 0; i < result.length; i++) { | ||
65 | + if (result[i].address1 === CityAdd) { | ||
66 | + if (tempList[tempList.length - 1] !== result[i].address2){ | ||
67 | + tempList.push(result[i].address2); | ||
68 | + } | ||
69 | + } | ||
70 | + } | ||
71 | + tempList[0] = "시/군/구 선택"; | ||
72 | + setGuAddselectList(tempList); | ||
73 | + setDongAddselectList(["읍/면/동 선택"]); | ||
74 | + }); | ||
75 | + }, [CityAdd]); | ||
76 | + | ||
77 | + // 읍/면/동 주소 | ||
78 | + useEffect(() => { | ||
79 | + const tempList = []; | ||
80 | + | ||
81 | + addressResult.then((result) => { | ||
82 | + | ||
83 | + for (let i = 0; i < result.length; i++) { | ||
84 | + if (result[i].address2 === GuAdd) { | ||
85 | + if ((tempList[tempList.length - 1] !== result[i].address3) && tempList[0] !== result[i].address3){ | ||
86 | + tempList.push(result[i].address3); | ||
87 | + } | ||
88 | + } | ||
89 | + } | ||
90 | + tempList[0] = "읍/면/동 선택"; | ||
91 | + setDongAddselectList(tempList); | ||
92 | + }); | ||
93 | + }, [GuAdd]); | ||
94 | + | ||
95 | + const onCityAddhandler = useCallback((event) => { | ||
96 | + setCityAdd(event.currentTarget.value); | ||
97 | + | ||
98 | + if (event.currentTarget.value === "시/도 선택") { | ||
99 | + setCheckCityAddError(true); | ||
100 | + } | ||
101 | + else { | ||
102 | + setCheckCityAddError(false); | ||
103 | + } | ||
104 | + }, [checkCityAddError]); | ||
105 | + | ||
106 | + const onGuAddhandler = useCallback((event) => { | ||
107 | + setGuAdd(event.currentTarget.value); | ||
108 | + | ||
109 | + if (event.currentTarget.value === "시/군/구 선택") { | ||
110 | + setCheckGuAddError(true); | ||
111 | + } | ||
112 | + else { | ||
113 | + setCheckGuAddError(false); | ||
114 | + } | ||
115 | + | ||
116 | + }, [checkGuAddError]); | ||
117 | + | ||
118 | + const onDongAddhandler = useCallback((event) => { | ||
119 | + setDongAdd(event.currentTarget.value); | ||
120 | + | ||
121 | + if (event.currentTarget.value === "읍/면/동 선택") { | ||
122 | + setCheckDongAddError(true); | ||
123 | + } | ||
124 | + else { | ||
125 | + setCheckDongAddError(false); | ||
126 | + } | ||
127 | + }, [checkDongAddError]); | ||
128 | + | ||
129 | + const onClickTitle = useCallback((event) => { | ||
130 | + navigate('/main') | ||
131 | + }) | ||
132 | + | ||
133 | + const onClickLogout = useCallback((event) => { | ||
134 | + dispatch(logout()); | ||
135 | + navigate('/login'); | ||
136 | + }) | ||
137 | + | ||
138 | + const onClickRegister = useCallback((event) => { | ||
139 | + navigate('/'); | ||
140 | + }) | ||
141 | + | ||
142 | + const onSubmitHandler = useCallback((event) => { //제출 전 오류 확인 함수 | ||
143 | + event.preventDefault(); //체크박스 미리 클릭 방지 | ||
144 | + | ||
145 | + if (checkCityAddError || CityAdd === "") { | ||
146 | + setCheckSubmitError(true); | ||
147 | + } | ||
148 | + else if (checkGuAddError || GuAdd === "") { | ||
149 | + setCheckSubmitError(true); | ||
150 | + } | ||
151 | + else if (checkDongAddError || DongAdd === "") { | ||
152 | + setCheckSubmitError(true); | ||
153 | + } | ||
154 | + else { | ||
155 | + setCheckSubmitError(false); | ||
156 | + } | ||
157 | + | ||
158 | + | ||
159 | + if (!checkSubmitError) { | ||
160 | + | ||
161 | + addressResult.then((result) => { | ||
162 | + for (let i = 0; i<result.length; i++) { | ||
163 | + | ||
164 | + if (result[i].address1 === CityAdd && result[i].address2 === GuAdd && result[i].address3 === DongAdd) { | ||
165 | + | ||
166 | + const dotData = { | ||
167 | + address1 : CityAdd, | ||
168 | + address2 : GuAdd, | ||
169 | + address3 : DongAdd, | ||
170 | + dotX : result[i].dotX, | ||
171 | + dotY : result[i].dotY, | ||
172 | + } | ||
173 | + | ||
174 | + dispatch(todayInformation(dotData)); | ||
175 | + dispatch(tommorrowInformation(dotData)); | ||
176 | + | ||
177 | + navigate('/weather'); | ||
178 | + break; | ||
179 | + } | ||
180 | + } | ||
181 | + }) | ||
182 | + } | ||
183 | + | ||
184 | + }, [checkCityAddError, checkDongAddError, checkGuAddError, checkSubmitError, Name, Sex, CityAdd, GuAdd, DongAdd]); | ||
185 | + | ||
186 | + return ( | ||
187 | + <> | ||
188 | + <dir id = "header"> | ||
189 | + <dir className="header_title" onClick = {onClickTitle}> | ||
190 | + <h1>Weather_Briefing</h1> | ||
191 | + </dir> | ||
192 | + <dir className="header_choice_box"> | ||
193 | + <button type="button" onClick = {onClickLogout}>Logout</button> | ||
194 | + <button type="button" onClick = {onClickRegister}>Register</button> | ||
195 | + </dir> | ||
196 | + </dir> | ||
197 | + | ||
198 | + <div id = "body"> | ||
199 | + <div className="info-box"> | ||
200 | + <p className="info">정보를 입력해주세요.</p> | ||
201 | + <div className="main-input-area" readOnly> | ||
202 | + <li>이름</li> | ||
203 | + <input | ||
204 | + placeholder={Name} | ||
205 | + type="text" | ||
206 | + value={Name} | ||
207 | + /> | ||
208 | + </div> | ||
209 | + <hr/> | ||
210 | + <div className="main-input-area" readOnly> | ||
211 | + <li>성별</li> | ||
212 | + <p>남자</p> | ||
213 | + <input | ||
214 | + type="radio" //라디오 버튼 타입 | ||
215 | + value = "0" | ||
216 | + checked = {Sex === "0"} | ||
217 | + /> | ||
218 | + <p>여자</p> | ||
219 | + <input | ||
220 | + type="radio" | ||
221 | + value = "1" | ||
222 | + checked = {Sex === "1"} | ||
223 | + /> | ||
224 | + </div> | ||
225 | + <hr/> | ||
226 | + <div className="main-input-area"> | ||
227 | + <li>지역</li> | ||
228 | + <div className="CityAddSelect"> | ||
229 | + <select onChange={onCityAddhandler} value={CityAdd}> | ||
230 | + {CityAddSelectList.map((item) => ( | ||
231 | + <option value={item} key={item}> | ||
232 | + {item} | ||
233 | + </option> | ||
234 | + ))} | ||
235 | + </select> | ||
236 | + </div> | ||
237 | + <div className="GuAddSelect"> | ||
238 | + <select onChange={onGuAddhandler} value={GuAdd}> | ||
239 | + {GuAddSelectList.map((item) => ( | ||
240 | + <option value={item} key={item}> | ||
241 | + {item} | ||
242 | + </option> | ||
243 | + ))} | ||
244 | + </select> | ||
245 | + </div> | ||
246 | + <div className="DongAddSelect"> | ||
247 | + <select onChange={onDongAddhandler} value={DongAdd}> | ||
248 | + {DongAddSelectList.map((item) => ( | ||
249 | + <option value={item} key={CityAdd+GuAdd+item}> | ||
250 | + {item} | ||
251 | + </option> | ||
252 | + ))} | ||
253 | + </select> | ||
254 | + </div> | ||
255 | + </div> | ||
256 | + <hr/> | ||
257 | + <div className="main-btn-area" onClick={onSubmitHandler}> | ||
258 | + <button className="submit-btn"> | ||
259 | + 날씨 정보 | ||
260 | + </button> | ||
261 | + </div> | ||
262 | + <div className="main-check-variable"> | ||
263 | + {checkSubmitError && <div style={{color : 'red'}}>정보를 제대로 입력해주세요.</div>} | ||
264 | + </div> | ||
265 | + </div> | ||
266 | + </div> | ||
267 | + </> | ||
268 | + ); | ||
269 | +} | ||
270 | + | ||
271 | +export default MainPage; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +import React, { useCallback, useEffect, useState } from "react"; | ||
2 | +import { useDispatch, useSelector } from "react-redux"; | ||
3 | +import { useNavigate } from "react-router-dom"; | ||
4 | +import { logout } from "../../../modules/user"; | ||
5 | +import "../style/RecommandPage.scss" | ||
6 | + | ||
7 | +function RecommandPage(props) { | ||
8 | + | ||
9 | + const clothesResult = useSelector((state) => state.clothes.clothesRecommend); | ||
10 | + | ||
11 | + const [IsRain, setIsRain] = useState(""); | ||
12 | + const [TopPath, setTopPath] = useState(''); | ||
13 | + const [BottomPath, setBottomPath] = useState(''); | ||
14 | + | ||
15 | + const dispatch = useDispatch(); | ||
16 | + | ||
17 | + useEffect(() => { | ||
18 | + clothesResult.then((result) => { | ||
19 | + | ||
20 | + if (result.umbrella == 1) { | ||
21 | + setIsRain("비 예보가 있습니다. 우산을 꼭 챙겨주세요!"); | ||
22 | + } | ||
23 | + else { | ||
24 | + setIsRain("비 예보가 없습니다!"); | ||
25 | + } | ||
26 | + | ||
27 | + setTopPath(result.top); | ||
28 | + setBottomPath(result.bottom); | ||
29 | + }) | ||
30 | + }, [clothesResult]) | ||
31 | + | ||
32 | + const navigate = useNavigate(); | ||
33 | + | ||
34 | + const onClickLogout = useCallback((event) => { | ||
35 | + dispatch(logout()); | ||
36 | + navigate('/login'); | ||
37 | + }) | ||
38 | + | ||
39 | + const onClickRegister = useCallback((event) => { | ||
40 | + navigate('/'); | ||
41 | + }) | ||
42 | + | ||
43 | + const onClickTitle = useCallback((event) => { | ||
44 | + navigate('/main') | ||
45 | + }) | ||
46 | + | ||
47 | + return ( | ||
48 | + <> | ||
49 | + <dir id = "header"> | ||
50 | + <dir className="header_title" onClick = {onClickTitle}> | ||
51 | + <h1>Weather_Briefing</h1> | ||
52 | + </dir> | ||
53 | + <dir className="header_choice_box"> | ||
54 | + <button type="button" onClick={onClickLogout}>Logout</button> | ||
55 | + <button type="button" onClick={onClickRegister}>Register</button> | ||
56 | + </dir> | ||
57 | + </dir> | ||
58 | + | ||
59 | + <div id = "recommand_body"> | ||
60 | + <dir className="fashion_recommand"> | ||
61 | + <dir className="rainOrnot">{IsRain}</dir> | ||
62 | + <dir className="clothes"> | ||
63 | + <dir className="Top"> | ||
64 | + <h1>TOP</h1> | ||
65 | + <img src={TopPath} className='Top_Image' /> | ||
66 | + </dir> | ||
67 | + <dir className="Bottom"> | ||
68 | + <h1>BOTTOM</h1> | ||
69 | + <img src={BottomPath} className='Bottom_Image' /> | ||
70 | + </dir> | ||
71 | + </dir> | ||
72 | + </dir> | ||
73 | + </div> | ||
74 | + </> | ||
75 | + ); | ||
76 | +}; | ||
77 | + | ||
78 | +export default RecommandPage; | ||
79 | + |
1 | +import React, { useCallback, useEffect, useState } from "react"; | ||
2 | +import { register } from "../../../modules/user.js"; | ||
3 | +import "../style/RegisterPage.scss"; | ||
4 | +import { useDispatch, useSelector } from "react-redux"; | ||
5 | +import { useNavigate } from "react-router-dom"; | ||
6 | + | ||
7 | +function RegisterPage(props) { | ||
8 | + const dispatch = useDispatch(); | ||
9 | + const navigate = useNavigate(); | ||
10 | + | ||
11 | + const registerResult = useSelector((state) => state.user.registerSuccess); | ||
12 | + | ||
13 | + const [Name, setName] = useState(""); | ||
14 | + const [Sex, setSex] = useState(""); | ||
15 | + const [Id, setId] = useState(""); | ||
16 | + const [Password, setPassword] = useState(""); | ||
17 | + const [PasswordCheck, setPasswordCheck] = useState(""); | ||
18 | + const [PasswordError, setPasswordError] = useState(false); | ||
19 | + | ||
20 | + const [checkRegister, setCheckRegister] = useState(false); | ||
21 | + const [checkNameError, setCheckNameError] = useState(false); | ||
22 | + const [checkSexError, setCheckSexError] = useState(true); | ||
23 | + const [checkIdError, setCheckIdError] = useState(false); | ||
24 | + const [checkPasswordError, setCheckPasswordError] = useState(false); | ||
25 | + const [checkRegisterError, setCheckRegisterError] = useState(false); | ||
26 | + | ||
27 | + const idRegex = /^(?=.*[a-zA-Z])(?=.*[0-9]).{6,14}$/; | ||
28 | + const passwordRegex = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-?])(?=.*[0-9]).{8,25}$/; | ||
29 | + | ||
30 | + useEffect(() => { | ||
31 | + if (checkRegister === true) { | ||
32 | + registerResult.then((result) => { | ||
33 | + if (result.registerSuccess === '1') { | ||
34 | + alert('회원 가입에 성공하였습니다.'); | ||
35 | + navigate('/login'); | ||
36 | + } | ||
37 | + else if (result.registerSuccess === '0') { | ||
38 | + alert('중복된 아이디가 존재합니다.'); | ||
39 | + } | ||
40 | + else { | ||
41 | + alert('회원 가입에 실패하였습니다.'); | ||
42 | + } | ||
43 | + }) | ||
44 | + } | ||
45 | + }, [registerResult]) | ||
46 | + | ||
47 | + const onIdHandler = useCallback((event) => { | ||
48 | + setId(event.currentTarget.value); | ||
49 | + | ||
50 | + // 아이디 유효성 검사 | ||
51 | + if (!idRegex.test(event.currentTarget.value)) { | ||
52 | + setCheckIdError(true); | ||
53 | + } | ||
54 | + else { | ||
55 | + setCheckIdError(false); | ||
56 | + } | ||
57 | + | ||
58 | + }, [checkIdError]); | ||
59 | + | ||
60 | + const onNameHandler = useCallback((event) => { | ||
61 | + setName(event.currentTarget.value); | ||
62 | + | ||
63 | + // 이름 유효성 검사 | ||
64 | + if (event.currentTarget.value.length < 2) { | ||
65 | + setCheckNameError(true); | ||
66 | + } | ||
67 | + else { | ||
68 | + setCheckNameError(false); | ||
69 | + } | ||
70 | + }, [checkNameError]); | ||
71 | + | ||
72 | + const onSexHandler = useCallback((event) => { | ||
73 | + setSex(event.currentTarget.value); | ||
74 | + setCheckSexError(false); | ||
75 | + }, [checkSexError]); | ||
76 | + | ||
77 | + const onPasswordHandler = useCallback((event) => { | ||
78 | + setPassword(event.currentTarget.value); | ||
79 | + | ||
80 | + // 비밀번호 유효성 검사 | ||
81 | + if (!passwordRegex.test(event.currentTarget.value)) { | ||
82 | + setCheckPasswordError(true); | ||
83 | + } | ||
84 | + else { | ||
85 | + setCheckPasswordError(false); | ||
86 | + } | ||
87 | + }, [checkPasswordError]); | ||
88 | + | ||
89 | + const onClickLogIn = useCallback((event) => { | ||
90 | + navigate('../login'); | ||
91 | + }) | ||
92 | + | ||
93 | + const onPasswordCheckHandler = useCallback((event) => { | ||
94 | + //비밀번호를 입력할때마다 password 를 검증하는 함수 | ||
95 | + setPasswordError(event.currentTarget.value !== Password); | ||
96 | + setPasswordCheck(event.currentTarget.value); | ||
97 | + }, [PasswordError]); | ||
98 | + | ||
99 | + const onSubmitHandler = useCallback((event) => { | ||
100 | + event.preventDefault(); | ||
101 | + | ||
102 | + if (checkIdError || Id === "") { | ||
103 | + setCheckRegisterError(true); | ||
104 | + } | ||
105 | + else if (checkNameError || Name === "") { | ||
106 | + setCheckRegisterError(true); | ||
107 | + } | ||
108 | + else if (checkSexError || Sex === "") { | ||
109 | + setCheckRegisterError(true); | ||
110 | + } | ||
111 | + else if (checkPasswordError || Password === "") { | ||
112 | + setCheckRegisterError(true); | ||
113 | + } | ||
114 | + else if (Password !== PasswordCheck) { | ||
115 | + setCheckRegisterError(true); | ||
116 | + } | ||
117 | + else { | ||
118 | + setCheckRegisterError(false); | ||
119 | + } | ||
120 | + | ||
121 | + if (!checkRegisterError) { | ||
122 | + const UserData = { | ||
123 | + name: Name, | ||
124 | + id: Id, | ||
125 | + password: Password, | ||
126 | + gender: Sex, | ||
127 | + }; | ||
128 | + | ||
129 | + // 액션생성함수 | ||
130 | + dispatch(register(UserData)); | ||
131 | + setCheckRegister(true); | ||
132 | + | ||
133 | + }; | ||
134 | + | ||
135 | + }, [checkIdError, checkNameError, checkPasswordError, checkRegisterError, checkSexError, Password, PasswordCheck, Sex, dispatch, registerResult, checkRegister]); | ||
136 | + | ||
137 | + return ( | ||
138 | + <> | ||
139 | + <div id="body"> | ||
140 | + <div className="register-box"> | ||
141 | + <h2>회원가입</h2> | ||
142 | + <div className="input-area"> | ||
143 | + <input | ||
144 | + placeholder="이름" | ||
145 | + type="text" | ||
146 | + value={Name} | ||
147 | + onChange={onNameHandler} | ||
148 | + /> | ||
149 | + </div> | ||
150 | + <div className="check-variable"> | ||
151 | + {checkNameError && <div style={{ color: 'red' }}>이름을 두글자 이상 입력해 주세요.</div>} | ||
152 | + </div> | ||
153 | + <div className="input-area"> | ||
154 | + <input | ||
155 | + placeholder="아이디" | ||
156 | + type="text" | ||
157 | + value={Id} | ||
158 | + onChange={onIdHandler} | ||
159 | + /> | ||
160 | + </div> | ||
161 | + <div className="check-variable"> | ||
162 | + {checkIdError && <div style={{ color: 'red' }}>아이디는 6자리 이상 14자리 이하 소문자와 숫자로 입력해주세요.</div>} | ||
163 | + </div> | ||
164 | + <div className="input-area"> | ||
165 | + <input | ||
166 | + placeholder="비밀번호" | ||
167 | + type="text" | ||
168 | + value={Password} | ||
169 | + onChange={onPasswordHandler} | ||
170 | + /> | ||
171 | + </div> | ||
172 | + <div className="check-variable"> | ||
173 | + {checkPasswordError && <div style={{ color: 'red' }}>알파벳과 숫자, 특수문자를 포함하여 8자리 이상 입력해주세요.</div>} | ||
174 | + </div> | ||
175 | + <div className="input-area"> | ||
176 | + <input | ||
177 | + placeholder="비밀번호 재입력" | ||
178 | + type="text" | ||
179 | + value={PasswordCheck} | ||
180 | + onChange={onPasswordCheckHandler} | ||
181 | + /> | ||
182 | + </div> | ||
183 | + <div className="check-variable"> | ||
184 | + {PasswordError && <div style={{ color: 'red' }}>비밀번호가 일치하지 않습니다.</div>} | ||
185 | + </div> | ||
186 | + <div className="input-area"> | ||
187 | + <input | ||
188 | + type="radio" | ||
189 | + value="0" | ||
190 | + checked={Sex === "0"} | ||
191 | + onChange={onSexHandler} | ||
192 | + />남 | ||
193 | + <input | ||
194 | + type="radio" | ||
195 | + value="1" | ||
196 | + checked={Sex === "1"} | ||
197 | + onChange={onSexHandler} | ||
198 | + />여 | ||
199 | + </div> | ||
200 | + <div className="btn-area" onClick={onSubmitHandler}> | ||
201 | + <button | ||
202 | + className="register-btn" | ||
203 | + > | ||
204 | + 가입하기 | ||
205 | + </button> | ||
206 | + </div> | ||
207 | + </div> | ||
208 | + {checkRegisterError && <div style={{ color: 'red' }}>정보를 제대로 입력해주세요.</div>} | ||
209 | + </div> | ||
210 | + </> | ||
211 | + ); | ||
212 | + | ||
213 | +} | ||
214 | + | ||
215 | +export default RegisterPage; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +import React, { useCallback, useEffect, useState } from "react"; | ||
2 | +import { useDispatch, useSelector } from "react-redux"; | ||
3 | +import { useNavigate } from "react-router-dom"; | ||
4 | +import { recommend } from "../../../modules/clothes"; | ||
5 | +import { logout } from "../../../modules/user"; | ||
6 | +import "../style/WeatherPage.scss" | ||
7 | + | ||
8 | +function WeatherPage(props) { | ||
9 | + const dispatch = useDispatch(); | ||
10 | + const navigate = useNavigate(); | ||
11 | + const user = useSelector((state) => state.user.loginData); | ||
12 | + const todayWeatherResult = useSelector((state) => state.weather.todayInformation); | ||
13 | + const tommorrowWeatherResult = useSelector((state) => state.weather.tommorrowInformation); | ||
14 | + const today = new Date(); | ||
15 | + const detailWeather = []; | ||
16 | + let currentHour; | ||
17 | + | ||
18 | + const today_year = today.getFullYear(); | ||
19 | + const today_month = today.getMonth(); | ||
20 | + const today_date = today.getDate(); | ||
21 | + const [todayHighTemperature, setTodayHighTemperature] = useState(-100); | ||
22 | + const [todayLowTemperature, setTodayLowTemperature] = useState(100); | ||
23 | + const [todayWeatherSymbol, setTodayWeatherSymbol] = useState('☀️'); | ||
24 | + const [nowWeatherSymbol, setNowWeatherSymbol] = useState(''); | ||
25 | + const [nowTemperature, setNowTemperature] = useState(""); | ||
26 | + const [tommorrowHighTemperature, setTommorrowHighTemperature] = useState(-100); | ||
27 | + const [tommorrowLowTemperature, setTommorrowLowTemperature] = useState(100); | ||
28 | + const [tommorrowWeatherSymbol, setTommorrowWeatherSymbol] = useState(''); | ||
29 | + | ||
30 | + const [cityAdd, setCityAdd] = useState(''); | ||
31 | + const [guAdd, setGuAdd] = useState(''); | ||
32 | + const [dongAdd, setDongAdd] = useState(''); | ||
33 | + const [Time, setTime] = useState("00:00:00"); | ||
34 | + | ||
35 | + let todayWeatherLevel = 0; | ||
36 | + let userGender; | ||
37 | + | ||
38 | + const currentTime = () => { | ||
39 | + const date = new Date(); | ||
40 | + const hours = String(date.getHours()).padStart(2, "0"); | ||
41 | + const minutes = String(date.getMinutes()).padStart(2, "0"); | ||
42 | + const seconds = String(date.getSeconds()).padStart(2, "0"); | ||
43 | + setTime(hours+" : "+minutes+" : "+seconds); | ||
44 | + } | ||
45 | + | ||
46 | + const startTimer = () => { | ||
47 | + setInterval(currentTime, 1000) | ||
48 | + } | ||
49 | + | ||
50 | + startTimer() | ||
51 | + | ||
52 | + useEffect(() => { | ||
53 | + todayWeatherResult.then((result) => { | ||
54 | + let highTemperature = -100; | ||
55 | + let lowTemperature = 100; | ||
56 | + let symbol = ''; | ||
57 | + | ||
58 | + currentHour = Time[0] + Time[1]; | ||
59 | + | ||
60 | + // 주소 설정 | ||
61 | + setCityAdd(result[24].address1); | ||
62 | + setGuAdd(result[24].address2); | ||
63 | + setDongAdd(result[24].address3); | ||
64 | + | ||
65 | + for (let i = 0; i<24; i++) { | ||
66 | + if (i === 13) { | ||
67 | + if (result[i].weather === 0) { | ||
68 | + todayWeatherLevel = 0; | ||
69 | + } | ||
70 | + else if (result[i].weather === 1) { | ||
71 | + todayWeatherLevel = 1; | ||
72 | + } | ||
73 | + else if (result[i].weather === 2) { | ||
74 | + todayWeatherLevel = 2; | ||
75 | + } | ||
76 | + else if (result[i].weather === 3) { | ||
77 | + todayWeatherLevel = 3; | ||
78 | + } | ||
79 | + else if (result[i].weather === 4) { | ||
80 | + todayWeatherLevel = 4; | ||
81 | + } | ||
82 | + | ||
83 | + } | ||
84 | + // 세부 시간 정보 | ||
85 | + if (i > Number(currentHour)) { | ||
86 | + if (result[i].rainPer >= 50) { | ||
87 | + symbol = '🌧️'; | ||
88 | + setTodayWeatherSymbol('🌧️'); | ||
89 | + } | ||
90 | + else if (i > 18 || i < 6) { | ||
91 | + symbol = '🌙'; | ||
92 | + } | ||
93 | + else { | ||
94 | + symbol = '☀️'; | ||
95 | + } | ||
96 | + const tempData = { | ||
97 | + time : result[i].time, | ||
98 | + temperature : result[i].temperature, | ||
99 | + symbol : symbol, | ||
100 | + } | ||
101 | + detailWeather.push(tempData); | ||
102 | + } | ||
103 | + // 현재 시간 정보 다루는 부분 | ||
104 | + if (i === Number(currentHour)) { | ||
105 | + if (result[i].rainPer >= 50) { | ||
106 | + setNowWeatherSymbol('🌧️'); | ||
107 | + } | ||
108 | + else if (i >= 18 || i < 6) { | ||
109 | + setNowWeatherSymbol('🌙'); | ||
110 | + } | ||
111 | + else { | ||
112 | + setNowWeatherSymbol('☀️'); | ||
113 | + } | ||
114 | + | ||
115 | + setNowTemperature(result[i].temperature); | ||
116 | + } | ||
117 | + // 하루 온도 정보 다루는 부분 | ||
118 | + if (result[i].temperature < lowTemperature) { | ||
119 | + lowTemperature = result[i].temperature; | ||
120 | + } | ||
121 | + if (result[i].temperature > highTemperature) { | ||
122 | + highTemperature = result[i].temperature; | ||
123 | + } | ||
124 | + } | ||
125 | + | ||
126 | + setTodayHighTemperature(highTemperature); | ||
127 | + setTodayLowTemperature(lowTemperature); | ||
128 | + }) | ||
129 | + }, [todayWeatherResult, Time]) | ||
130 | + | ||
131 | + // 내일의 날씨 | ||
132 | + useEffect(() => { | ||
133 | + tommorrowWeatherResult.then((result) => { | ||
134 | + | ||
135 | + let highTemperature = -100; | ||
136 | + let lowTemperature = 100; | ||
137 | + let symbol = '☀️'; | ||
138 | + | ||
139 | + for (let i = 0; i < 24; i++) { | ||
140 | + // symbol 설정 | ||
141 | + if (result[i].rainPer >= 50) { | ||
142 | + symbol = '🌧️'; | ||
143 | + } | ||
144 | + // 내일 온도 정보 다루는 부분 | ||
145 | + if (result[i].temperature < lowTemperature) { | ||
146 | + lowTemperature = result[i].temperature; | ||
147 | + } | ||
148 | + if (result[i].temperature > highTemperature) { | ||
149 | + highTemperature = result[i].temperature; | ||
150 | + } | ||
151 | + setTommorrowHighTemperature(highTemperature); | ||
152 | + setTommorrowLowTemperature(lowTemperature); | ||
153 | + setTommorrowWeatherSymbol(symbol); | ||
154 | + } | ||
155 | + }) | ||
156 | + }, [tommorrowWeatherResult]) | ||
157 | + | ||
158 | + // 유저 성별 정보 | ||
159 | + useEffect(() => { | ||
160 | + | ||
161 | + user.then((result) => { | ||
162 | + | ||
163 | + if (result.logData.gender === '0') { | ||
164 | + userGender = 0; | ||
165 | + } | ||
166 | + else { | ||
167 | + userGender = 1; | ||
168 | + } | ||
169 | + | ||
170 | + }); | ||
171 | + }, [user]) | ||
172 | + | ||
173 | + const onClickLogout = useCallback((event) => { | ||
174 | + dispatch(logout()); | ||
175 | + navigate('/login'); | ||
176 | + }) | ||
177 | + | ||
178 | + const onClickRegister = useCallback((event) => { | ||
179 | + navigate('/'); | ||
180 | + }) | ||
181 | + | ||
182 | + const onClickTitle = useCallback((event) => { | ||
183 | + navigate('/main') | ||
184 | + }) | ||
185 | + | ||
186 | + const onSubmitHandler = useCallback((event) => { | ||
187 | + event.preventDefault(); //체크박스 미리 클릭 방지 | ||
188 | + | ||
189 | + let isRain = 0; | ||
190 | + | ||
191 | + if (todayWeatherSymbol === '🌧️') { | ||
192 | + isRain = 1; | ||
193 | + } | ||
194 | + | ||
195 | + const sendData = { | ||
196 | + gender : userGender, | ||
197 | + weather : todayWeatherLevel, | ||
198 | + rain : isRain | ||
199 | + } | ||
200 | + | ||
201 | + dispatch(recommend(sendData)); | ||
202 | + navigate('/recommand'); | ||
203 | + | ||
204 | + }, [todayWeatherResult, user]); | ||
205 | + | ||
206 | + return ( | ||
207 | + <> | ||
208 | + <dir id = "header"> | ||
209 | + <dir className="header_title" onClick = {onClickTitle}> | ||
210 | + <h1>Weather_Briefing</h1> | ||
211 | + </dir> | ||
212 | + <dir className="header_choice_box"> | ||
213 | + <button type="button" onClick = {onClickLogout}>Logout</button> | ||
214 | + <button type="button" onClick = {onClickRegister}>Register</button> | ||
215 | + </dir> | ||
216 | + </dir> | ||
217 | + <div id = "body"> | ||
218 | + <div className="address"> | ||
219 | + <p>{cityAdd} {guAdd} {dongAdd}</p> | ||
220 | + </div> | ||
221 | + <div className="today_weather"> | ||
222 | + <div className="days"> | ||
223 | + <h1>오늘의 날씨</h1> | ||
224 | + <h2 id="day">{today_year}년 {today_month + 1}월 {today_date}일</h2> | ||
225 | + </div> | ||
226 | + <div className="today_now_weather_info"> | ||
227 | + <h2>현재 온도</h2> | ||
228 | + <h1 id="present_do">{nowWeatherSymbol} {nowTemperature}도</h1> | ||
229 | + </div> | ||
230 | + <div className="today_weather_info"> | ||
231 | + <h2>전체 날씨</h2> | ||
232 | + <div className="today_whole_weather"> | ||
233 | + <h1>{todayWeatherSymbol}</h1> | ||
234 | + <div className="today_whole_weather_temperature"> | ||
235 | + <p>최고: {todayHighTemperature}도</p> | ||
236 | + <p>최저: {todayLowTemperature}도</p> | ||
237 | + </div> | ||
238 | + </div> | ||
239 | + </div> | ||
240 | + </div> | ||
241 | + <div className="tommorrow_weather"> | ||
242 | + <div className="days"> | ||
243 | + <h1>내일의 날씨</h1> | ||
244 | + <h2 id="day">{today_year}년 {today_month + 1}월 {today_date+1}일</h2> | ||
245 | + </div> | ||
246 | + <div className="tommorrow_weather_info"> | ||
247 | + <h2>날씨 정보</h2> | ||
248 | + <div className="tommorrow_whole_weather"> | ||
249 | + <h1>{tommorrowWeatherSymbol}</h1> | ||
250 | + <div className="tommorrow_temperator"> | ||
251 | + <p>최고: {tommorrowHighTemperature}도</p> | ||
252 | + <p>최저: {tommorrowLowTemperature}도</p> | ||
253 | + </div> | ||
254 | + </div> | ||
255 | + | ||
256 | + </div> | ||
257 | + </div> | ||
258 | + <div className="weather-btn-area" onClick={onSubmitHandler}> | ||
259 | + <button className="submit-btn"> | ||
260 | + 옷 추천 | ||
261 | + </button> | ||
262 | + </div> | ||
263 | + </div> | ||
264 | + </> | ||
265 | + ); | ||
266 | +} | ||
267 | +export default WeatherPage; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +* { | ||
2 | + margin: 0; | ||
3 | + padding: 0; | ||
4 | + box-sizing: border-box; | ||
5 | + background-color: rgb(245, 235, 223); | ||
6 | +} | ||
7 | +#body { | ||
8 | + display: flex; | ||
9 | + justify-content: center; | ||
10 | + align-items: center; | ||
11 | + border-top: 2px solid; | ||
12 | + border-bottom: 2px solid; | ||
13 | + | ||
14 | + .login-box { | ||
15 | + border: 2px solid; | ||
16 | + width: 35%; | ||
17 | + height: 60%; | ||
18 | + margin-top: 30px; | ||
19 | + margin-bottom: 30px; | ||
20 | + h2 { | ||
21 | + text-align: center; | ||
22 | + margin-top: 20px; | ||
23 | + margin-bottom: 20px; | ||
24 | + } | ||
25 | + } | ||
26 | + .input-area { | ||
27 | + display: flex; | ||
28 | + justify-content: center; | ||
29 | + align-items: center; | ||
30 | + margin-bottom: 5px; | ||
31 | + | ||
32 | + input { | ||
33 | + padding: 10px 0.1rem; | ||
34 | + background-color: rgb(255, 255, 255); | ||
35 | + } | ||
36 | + } | ||
37 | + .check-variable { | ||
38 | + display: flex; | ||
39 | + justify-content: center; | ||
40 | + align-items: center; | ||
41 | + margin-bottom: 5px; | ||
42 | + } | ||
43 | + .btn-area { | ||
44 | + display: flex; | ||
45 | + justify-content: center; | ||
46 | + margin-top: 30px; | ||
47 | + margin-bottom: 35px; | ||
48 | + | ||
49 | + button { | ||
50 | + width: 120px; | ||
51 | + height: 40px; | ||
52 | + font-size: large; | ||
53 | + font-weight: bold; | ||
54 | + background-color:rgb(255, 253, 238); | ||
55 | + cursor: pointer; | ||
56 | + } | ||
57 | + } | ||
58 | +} |
1 | +* { | ||
2 | + margin: 0; | ||
3 | + padding: 0; | ||
4 | + box-sizing: border-box; | ||
5 | + background-color: rgb(245, 235, 223); | ||
6 | + } | ||
7 | + #header { | ||
8 | + display: flex; | ||
9 | + position: fixed; | ||
10 | + justify-content: center; | ||
11 | + align-items: center; | ||
12 | + height: 15%; | ||
13 | + width: 100%; | ||
14 | + border-top: 2px solid; | ||
15 | + border-bottom: 2px solid; | ||
16 | + | ||
17 | + .header_clock { | ||
18 | + justify-content: left; | ||
19 | + align-items: left; | ||
20 | + width: 10%; | ||
21 | + height: 10%; | ||
22 | + h1{ | ||
23 | + color:rgb(0, 0, 0); | ||
24 | + font-size: 15px; | ||
25 | + } | ||
26 | + } | ||
27 | + | ||
28 | + .header_title { | ||
29 | + display: flex; | ||
30 | + justify-content: center; | ||
31 | + align-items: center; | ||
32 | + margin-left: 300px; | ||
33 | + margin-right: 300px; | ||
34 | + h1 { | ||
35 | + font-size: 50px; | ||
36 | + font-family: 'Times New Roman', Times, serif; | ||
37 | + color: rgb(0, 0, 0); | ||
38 | + } | ||
39 | + } | ||
40 | + .header_choice_box { | ||
41 | + display: flex; | ||
42 | + justify-content: right; | ||
43 | + align-items: right; | ||
44 | + margin-right: 10x; | ||
45 | + } | ||
46 | + button { | ||
47 | + width: 70px; | ||
48 | + height: 25px; | ||
49 | + font-size: 15px; | ||
50 | + font-weight: bold; | ||
51 | + cursor: pointer; | ||
52 | + } | ||
53 | + } | ||
54 | + | ||
55 | + #body { | ||
56 | + display: flex; | ||
57 | + justify-content: center; | ||
58 | + align-items: center; | ||
59 | + border-top: 2px solid; | ||
60 | + border-bottom: 2px solid; | ||
61 | + | ||
62 | + .info-box { | ||
63 | + border: 2px solid; | ||
64 | + width: 55%; | ||
65 | + height: 100%; | ||
66 | + margin-top: 150px; | ||
67 | + margin-bottom: 30px; | ||
68 | + } | ||
69 | + hr { | ||
70 | + display: flex; | ||
71 | + justify-content: center; | ||
72 | + align-items: center; | ||
73 | + margin-top: 20px; | ||
74 | + margin-left: 100px; | ||
75 | + margin-right: 100px; | ||
76 | + } | ||
77 | + .info{ | ||
78 | + display:flex; | ||
79 | + font-size: 30px; | ||
80 | + border: 2px solid rgb(225, 208, 134); | ||
81 | + background-color: rgb(242, 235, 130); | ||
82 | + color:rgb(255, 255, 255); | ||
83 | + justify-content: center; | ||
84 | + align-items: center; | ||
85 | + margin-top: 50px; | ||
86 | + margin-bottom: 50px; | ||
87 | + margin-left: 30%; | ||
88 | + margin-right: 30%; | ||
89 | + } | ||
90 | + .main-input-area { | ||
91 | + display: flex; | ||
92 | + justify-content: left; | ||
93 | + align-items: left; | ||
94 | + margin-top: 20px; | ||
95 | + margin-bottom: 15px; | ||
96 | + li{ | ||
97 | + display:flex; | ||
98 | + font-size: 15px; | ||
99 | + color: gray; | ||
100 | + margin-left: 15%; | ||
101 | + margin-right: 10%; | ||
102 | + } | ||
103 | + p{ | ||
104 | + display:flex; | ||
105 | + font-size: 15px; | ||
106 | + border: 2px dotted gray; | ||
107 | + margin-bottom: 5px; | ||
108 | + margin-left: 5%; | ||
109 | + } | ||
110 | + input { | ||
111 | + padding: 10px 2rem; | ||
112 | + background-color: rgb(255, 255, 255); | ||
113 | + margin-left: 50px; | ||
114 | + } | ||
115 | + | ||
116 | + select { | ||
117 | + padding: 10px 1.5rem; | ||
118 | + margin-right: 5px; | ||
119 | + background-color: rgb(255, 255, 255); | ||
120 | + } | ||
121 | + } | ||
122 | + .main-check-variable { | ||
123 | + display: flex; | ||
124 | + justify-content: center; | ||
125 | + align-items: center; | ||
126 | + margin-bottom: 5px; | ||
127 | + } | ||
128 | + .main-btn-area { | ||
129 | + display: flex; | ||
130 | + justify-content: center; | ||
131 | + margin-top: 60px; | ||
132 | + margin-bottom: 10px; | ||
133 | + | ||
134 | + button { | ||
135 | + width: 150px; | ||
136 | + height: 60px; | ||
137 | + font-size: 15px; | ||
138 | + font-weight: bold; | ||
139 | + background-color:rgb(255, 253, 238); | ||
140 | + cursor: pointer; | ||
141 | + } | ||
142 | + } | ||
143 | + } | ||
144 | + | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +* { | ||
2 | + margin: 0; | ||
3 | + padding: 0; | ||
4 | + box-sizing: border-box; | ||
5 | + background-color: rgb(245, 235, 223); | ||
6 | + } | ||
7 | + img { | ||
8 | + width: 300px; | ||
9 | + height: 300px; | ||
10 | + object-fit: cover; | ||
11 | + } | ||
12 | + | ||
13 | + #header { | ||
14 | + display: flex; | ||
15 | + position: fixed; | ||
16 | + justify-content: center; | ||
17 | + align-items: center; | ||
18 | + height: 15%; | ||
19 | + width: 100%; | ||
20 | + border-top: 2px solid; | ||
21 | + border-bottom: 2px solid; | ||
22 | + | ||
23 | + .header_title { | ||
24 | + display: flex; | ||
25 | + justify-content: center; | ||
26 | + align-items: center; | ||
27 | + margin-left: 300px; | ||
28 | + margin-right: 300px; | ||
29 | + h1 { | ||
30 | + font-size: 50px; | ||
31 | + font-family: 'Times New Roman', Times, serif; | ||
32 | + color: rgb(0, 0, 0); | ||
33 | + } | ||
34 | + } | ||
35 | + .header_choice_box { | ||
36 | + display: flex; | ||
37 | + justify-content: right; | ||
38 | + align-items: right; | ||
39 | + margin-right: 10x; | ||
40 | + } | ||
41 | + button { | ||
42 | + width: 70px; | ||
43 | + height: 25px; | ||
44 | + font-size: 15px; | ||
45 | + font-weight: bold; | ||
46 | + cursor: pointer; | ||
47 | + } | ||
48 | + } | ||
49 | + | ||
50 | + #recommand_body { | ||
51 | + display: flex; | ||
52 | + justify-content: center; | ||
53 | + align-items: center; | ||
54 | + border-top: 2px solid; | ||
55 | + border-bottom: 2px solid; | ||
56 | + | ||
57 | + .fashion_recommand { | ||
58 | + border: 2px solid; | ||
59 | + width: 50%; | ||
60 | + height: 200%; | ||
61 | + margin-top: 150px; | ||
62 | + margin-bottom: 30px; | ||
63 | + | ||
64 | + .rainOrnot { | ||
65 | + display: flex; | ||
66 | + justify-content: center; | ||
67 | + align-items: center; | ||
68 | + margin-top: 20px; | ||
69 | + margin-left: 100px; | ||
70 | + margin-right: 100px; | ||
71 | + font-size :30px; | ||
72 | + font-weight: bold; | ||
73 | + } | ||
74 | + .clothes{ | ||
75 | + display:flex; | ||
76 | + justify-content: space-between; | ||
77 | + align-items: space-between; | ||
78 | + | ||
79 | + .Top{ | ||
80 | + display:flex; | ||
81 | + flex-wrap: wrap; | ||
82 | + flex-direction: column; | ||
83 | + font-size: 30px; | ||
84 | + border: 2px solid; | ||
85 | + color:rgb(0, 0, 0); | ||
86 | + justify-content: center; | ||
87 | + align-items: center; | ||
88 | + margin-top: 50px; | ||
89 | + margin-bottom: 50px; | ||
90 | + margin-left: 5%; | ||
91 | + margin-right: 1%; | ||
92 | + } | ||
93 | + | ||
94 | + .Bottom{ | ||
95 | + display:flex; | ||
96 | + flex-wrap: wrap; | ||
97 | + flex-direction: column; | ||
98 | + font-size: 30px; | ||
99 | + border: 2px solid; | ||
100 | + color:rgb(0, 0, 0); | ||
101 | + justify-content: center; | ||
102 | + align-items: center; | ||
103 | + margin-top: 50px; | ||
104 | + margin-bottom: 50px; | ||
105 | + margin-left: 1%; | ||
106 | + margin-right: 5%; | ||
107 | + } | ||
108 | + | ||
109 | + .Head{ | ||
110 | + display:flex; | ||
111 | + flex-wrap: wrap; | ||
112 | + flex-direction: column; | ||
113 | + font-size: 30px; | ||
114 | + border: 2px solid; | ||
115 | + color:rgb(0, 0, 0); | ||
116 | + justify-content: center; | ||
117 | + align-items: center; | ||
118 | + margin-top: 50px; | ||
119 | + margin-bottom: 50px; | ||
120 | + margin-left: 1%; | ||
121 | + margin-right: 1%; | ||
122 | + } | ||
123 | + .Shoes{ | ||
124 | + display:flex; | ||
125 | + flex-wrap: wrap; | ||
126 | + flex-direction: column; | ||
127 | + font-size: 30px; | ||
128 | + border: 2px solid; | ||
129 | + color:rgb(0, 0, 0); | ||
130 | + justify-content: center; | ||
131 | + align-items: center; | ||
132 | + margin-top: 50px; | ||
133 | + margin-bottom: 50px; | ||
134 | + margin-left: 1%; | ||
135 | + margin-right: 1%; | ||
136 | + } | ||
137 | + } | ||
138 | + } | ||
139 | +} | ||
140 | + | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +* { | ||
2 | + margin: 0; | ||
3 | + padding: 0; | ||
4 | + box-sizing: border-box; | ||
5 | + background-color: rgb(245, 235, 223); | ||
6 | +} | ||
7 | + | ||
8 | +#body { | ||
9 | + display: flex; | ||
10 | + justify-content: center; | ||
11 | + align-items: center; | ||
12 | + border-top: 2px solid; | ||
13 | + border-bottom: 2px solid; | ||
14 | + | ||
15 | + .register-box { | ||
16 | + border: 2px solid; | ||
17 | + width: 35%; | ||
18 | + height: 60%; | ||
19 | + margin-top: 30px; | ||
20 | + margin-bottom: 30px; | ||
21 | + h2 { | ||
22 | + text-align: center; | ||
23 | + margin-top: 20px; | ||
24 | + margin-bottom: 20px; | ||
25 | + } | ||
26 | + } | ||
27 | + .input-area { | ||
28 | + display: flex; | ||
29 | + justify-content: center; | ||
30 | + align-items: center; | ||
31 | + margin-bottom: 5px; | ||
32 | + | ||
33 | + input { | ||
34 | + padding: 10px 0.1rem; | ||
35 | + background-color: rgb(255, 255, 255); | ||
36 | + } | ||
37 | + } | ||
38 | + .check-variable { | ||
39 | + display: flex; | ||
40 | + justify-content: center; | ||
41 | + align-items: center; | ||
42 | + margin-bottom: 5px; | ||
43 | + } | ||
44 | + .btn-area { | ||
45 | + display: flex; | ||
46 | + justify-content: center; | ||
47 | + margin-top: 30px; | ||
48 | + margin-bottom: 35px; | ||
49 | + | ||
50 | + button { | ||
51 | + width: 120px; | ||
52 | + height: 40px; | ||
53 | + font-size: large; | ||
54 | + font-weight: bold; | ||
55 | + background-color:rgb(255, 253, 238); | ||
56 | + cursor: pointer; | ||
57 | + } | ||
58 | + } | ||
59 | +} |
1 | +#header { | ||
2 | + display: flex; | ||
3 | + position: fixed; | ||
4 | + justify-content: center; | ||
5 | + align-items: center; | ||
6 | + height: 15%; | ||
7 | + width: 100%; | ||
8 | + border-top: 2px solid; | ||
9 | + border-bottom: 2px solid; | ||
10 | + | ||
11 | + .header_title { | ||
12 | + display: flex; | ||
13 | + justify-content: center; | ||
14 | + align-items: center; | ||
15 | + margin-left: 300px; | ||
16 | + margin-right: 300px; | ||
17 | + cursor:pointer; | ||
18 | + h1 { | ||
19 | + font-size: 50px; | ||
20 | + font-family: 'Times New Roman', Times, serif; | ||
21 | + color: rgb(0, 0, 0); | ||
22 | + } | ||
23 | + } | ||
24 | + .header_choice_box { | ||
25 | + display: flex; | ||
26 | + justify-content: right; | ||
27 | + align-items: right; | ||
28 | + margin-right: 10x; | ||
29 | + } | ||
30 | + button { | ||
31 | + width: 70px; | ||
32 | + height: 25px; | ||
33 | + font-size: 15px; | ||
34 | + font-weight: bold; | ||
35 | + cursor: pointer; | ||
36 | + } | ||
37 | + } | ||
38 | +#body { | ||
39 | + display: flex; | ||
40 | + justify-content: center; | ||
41 | + align-items: center; | ||
42 | + flex-wrap: wrap; | ||
43 | + flex-direction: column; | ||
44 | + border-top: 2px solid; | ||
45 | + border-bottom: 2px solid; | ||
46 | + .address { | ||
47 | + display: flex; | ||
48 | + justify-content: center; | ||
49 | + align-items: center; | ||
50 | + margin-top: 150px; | ||
51 | + font-size: 30px; | ||
52 | + } | ||
53 | + .today_weather { | ||
54 | + display: flex; | ||
55 | + justify-content: center; | ||
56 | + align-items: center; | ||
57 | + border: 2px solid; | ||
58 | + width: 50%; | ||
59 | + margin-top: 30px; | ||
60 | + margin-bottom: 10px; | ||
61 | + .today_now_weather_info { | ||
62 | + display: flex; | ||
63 | + justify-content: center; | ||
64 | + align-items: center; | ||
65 | + flex-direction: column; | ||
66 | + margin-right: 30px; | ||
67 | + } | ||
68 | + .days { | ||
69 | + display: flex; | ||
70 | + justify-content: center; | ||
71 | + align-items: center; | ||
72 | + flex-wrap: wrap; | ||
73 | + flex-direction: column; | ||
74 | + margin-top: 25px; | ||
75 | + margin-bottom: 25px; | ||
76 | + margin-left: 15px; | ||
77 | + margin-right: 200px; | ||
78 | + } | ||
79 | + .today_whole_weather{ | ||
80 | + display: flex; | ||
81 | + flex-direction: row; | ||
82 | + } | ||
83 | + } | ||
84 | + | ||
85 | + .tommorrow_weather { | ||
86 | + display: flex; | ||
87 | + justify-content: center; | ||
88 | + align-items: center; | ||
89 | + border: 2px solid; | ||
90 | + width: 50%; | ||
91 | + margin-top: 20px; | ||
92 | + margin-bottom: 20px; | ||
93 | + .days { | ||
94 | + display: flex; | ||
95 | + justify-content: center; | ||
96 | + align-items: center; | ||
97 | + flex-wrap: wrap; | ||
98 | + flex-direction: column; | ||
99 | + margin-top: 25px; | ||
100 | + margin-bottom: 25px; | ||
101 | + margin-left: 15px; | ||
102 | + margin-right: 200px; | ||
103 | + } | ||
104 | + .tommorrow_weather_info { | ||
105 | + display: flex; | ||
106 | + justify-content: center; | ||
107 | + align-items: center; | ||
108 | + flex-direction: column; | ||
109 | + margin-right: 30px; | ||
110 | + .tommorrow_whole_weather{ | ||
111 | + display: flex; | ||
112 | + flex-direction: row; | ||
113 | + } | ||
114 | + } | ||
115 | + } | ||
116 | + .weather-btn-area { | ||
117 | + display: flex; | ||
118 | + justify-content: center; | ||
119 | + margin-top: 20px; | ||
120 | + margin-bottom: 10px; | ||
121 | + | ||
122 | + button { | ||
123 | + width: 150px; | ||
124 | + height: 60px; | ||
125 | + font-size: 15px; | ||
126 | + font-weight: bold; | ||
127 | + background-color:rgb(255, 253, 238); | ||
128 | + cursor: pointer; | ||
129 | + } | ||
130 | + } | ||
131 | + } | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -2,13 +2,23 @@ import React from 'react'; | ... | @@ -2,13 +2,23 @@ import React from 'react'; |
2 | import ReactDOM from 'react-dom/client'; | 2 | import ReactDOM from 'react-dom/client'; |
3 | import './index.css'; | 3 | import './index.css'; |
4 | import App from './App'; | 4 | import App from './App'; |
5 | +import { Provider } from 'react-redux'; | ||
6 | +import { applyMiddleware, createStore } from 'redux'; | ||
5 | import reportWebVitals from './reportWebVitals'; | 7 | import reportWebVitals from './reportWebVitals'; |
8 | +import { BrowserRouter } from 'react-router-dom'; | ||
9 | +import rootReducer from './modules/Index'; | ||
10 | +import { composeWithDevTools } from 'redux-devtools-extension'; | ||
11 | +import ReduxThunk from 'redux-thunk'; | ||
12 | + | ||
13 | +const store = createStore(rootReducer, composeWithDevTools(applyMiddleware(ReduxThunk))); | ||
6 | 14 | ||
7 | const root = ReactDOM.createRoot(document.getElementById('root')); | 15 | const root = ReactDOM.createRoot(document.getElementById('root')); |
8 | root.render( | 16 | root.render( |
9 | - <React.StrictMode> | 17 | + <Provider store={store}> |
10 | - <App /> | 18 | + <BrowserRouter> |
11 | - </React.StrictMode> | 19 | + <App /> |
20 | + </BrowserRouter> | ||
21 | + </Provider>, | ||
12 | ); | 22 | ); |
13 | 23 | ||
14 | // If you want to start measuring performance in your app, pass a function | 24 | // If you want to start measuring performance in your app, pass a function | ... | ... |
weather_briefing/src/modules/Index.js
0 → 100644
1 | +import { combineReducers } from "redux"; | ||
2 | +import user from "./user.js"; | ||
3 | +import weather from "./weather"; | ||
4 | +import clothes from "./clothes"; | ||
5 | + | ||
6 | +const rootReducer = combineReducers({ | ||
7 | + user, | ||
8 | + weather, | ||
9 | + clothes, | ||
10 | +}) | ||
11 | + | ||
12 | +export default rootReducer; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
weather_briefing/src/modules/clothes.js
0 → 100644
1 | +import axios from "axios"; | ||
2 | + | ||
3 | +const CLOTHES_RECOMMEND = 'weather/RECOMMEND'; | ||
4 | + | ||
5 | +export function recommend(dataToSubmit) { | ||
6 | + const req = axios.post('http://localhost:4000/api/clothes', dataToSubmit) | ||
7 | + .then(res => res.data); | ||
8 | + | ||
9 | + return { | ||
10 | + type: CLOTHES_RECOMMEND, | ||
11 | + payload: req, | ||
12 | + } | ||
13 | +} | ||
14 | + | ||
15 | +export default function (state = {}, action) { | ||
16 | + switch (action.type) { | ||
17 | + case CLOTHES_RECOMMEND: | ||
18 | + return { ...state, clothesRecommend: action.payload }; | ||
19 | + break; | ||
20 | + default: | ||
21 | + return state; | ||
22 | + } | ||
23 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
weather_briefing/src/modules/user.js
0 → 100644
1 | +import axios from 'axios'; | ||
2 | + | ||
3 | +const USER_REGISTER = 'user/REGISTER'; | ||
4 | +const USER_LOGIN = 'user/LOGIN'; | ||
5 | +const USER_LOGOUT = 'user/LOGOUT'; | ||
6 | + | ||
7 | +export function register (dataToSubmit) { | ||
8 | + | ||
9 | + const req = axios.post('http://localhost:4000/api/register', dataToSubmit) | ||
10 | + .then(res => res.data); | ||
11 | + | ||
12 | + return { | ||
13 | + type: USER_REGISTER, | ||
14 | + payload: req, | ||
15 | + } | ||
16 | +}; | ||
17 | + | ||
18 | +export function login(dataToSubmit) { | ||
19 | + const req = axios.post('http://localhost:4000/api/login', dataToSubmit) | ||
20 | + .then(res => res.data); | ||
21 | + | ||
22 | + return { | ||
23 | + type: USER_LOGIN, | ||
24 | + payload: req, | ||
25 | + } | ||
26 | +}; | ||
27 | + | ||
28 | +export function logout(dataToSubmit) { | ||
29 | + const req = axios.post('http://localhost:4000/api/logout', dataToSubmit) | ||
30 | + .then(res => res.data); | ||
31 | + | ||
32 | + return { | ||
33 | + type: USER_LOGOUT, | ||
34 | + } | ||
35 | + } | ||
36 | + | ||
37 | +export default function (state = {}, action) { | ||
38 | + switch (action.type) { | ||
39 | + case USER_REGISTER: | ||
40 | + return { ...state, registerSuccess: action.payload }; | ||
41 | + break; | ||
42 | + case USER_LOGIN: | ||
43 | + return { ...state, loginData: action.payload }; | ||
44 | + break; | ||
45 | + case USER_LOGOUT: | ||
46 | + return { ...state, loginData: action.payload }; | ||
47 | + break; | ||
48 | + default: | ||
49 | + return state; | ||
50 | + } | ||
51 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
weather_briefing/src/modules/weather.js
0 → 100644
1 | +import axios from "axios"; | ||
2 | + | ||
3 | +const WEATHER_ADDRESS = 'weather/ADDRESS'; | ||
4 | +const WEATHER_COORDINATE = 'weather/COORDINATE'; | ||
5 | +const WEATHER_TODAY_INFORMATION = 'weather/TODAY_INFORMATION'; | ||
6 | +const WEATHER_TOMMORROW_INFORMATION = 'weather/TOMMORROW_INFORMATION'; | ||
7 | + | ||
8 | +export function address() { | ||
9 | + const req = axios.post('http://localhost:4000/api/address') | ||
10 | + .then(res => res.data); | ||
11 | + | ||
12 | + return { | ||
13 | + type: WEATHER_ADDRESS, | ||
14 | + payload: req, | ||
15 | + } | ||
16 | +} | ||
17 | + | ||
18 | +export function coordinate(dataToSubmit) { | ||
19 | + | ||
20 | + const req = axios.post('http://localhost:4000/api/cordinate', dataToSubmit) | ||
21 | + .then(res => res.data); | ||
22 | + | ||
23 | + return { | ||
24 | + type: WEATHER_COORDINATE, | ||
25 | + payload: req, | ||
26 | + } | ||
27 | +}; | ||
28 | + | ||
29 | +export function todayInformation(dataToSubmit) { | ||
30 | + const req = axios.post('http://localhost:4000/api/weather', dataToSubmit) | ||
31 | + .then(res => res.data); | ||
32 | + return { | ||
33 | + type: WEATHER_TODAY_INFORMATION, | ||
34 | + payload: req, | ||
35 | + } | ||
36 | +}; | ||
37 | + | ||
38 | +export function tommorrowInformation(dataToSubmit) { | ||
39 | + const req = axios.post('http://localhost:4000/api/tommorrow', dataToSubmit) | ||
40 | + .then(res => res.data); | ||
41 | + return { | ||
42 | + type: WEATHER_TOMMORROW_INFORMATION, | ||
43 | + payload: req, | ||
44 | + } | ||
45 | +}; | ||
46 | + | ||
47 | +export default function (state = {}, action) { | ||
48 | + switch (action.type) { | ||
49 | + case WEATHER_ADDRESS: | ||
50 | + return { ...state, address: action.payload }; | ||
51 | + break; | ||
52 | + case WEATHER_COORDINATE: | ||
53 | + return { ...state, dot: action.payload }; | ||
54 | + break; | ||
55 | + case WEATHER_TODAY_INFORMATION: | ||
56 | + return { ...state, todayInformation: action.payload }; | ||
57 | + break; | ||
58 | + case WEATHER_TOMMORROW_INFORMATION: | ||
59 | + return { ...state, tommorrowInformation: action.payload }; | ||
60 | + break; | ||
61 | + default: | ||
62 | + return state; | ||
63 | + } | ||
64 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
weather_briefing/src/setupProxy.js
0 → 100644
1 | +const { createProxyMiddleware } = require("http-proxy-middleware"); | ||
2 | + | ||
3 | +module.exports = function(app) { | ||
4 | + app.use( | ||
5 | + createProxyMiddleware('/api', { | ||
6 | + target: 'http://localhost:4000', //접속하려는 서버의 루트 URL | ||
7 | + changeOrigin: true | ||
8 | + }) | ||
9 | + ); | ||
10 | +}; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment