박기범

Merge branch 'new_file'

...@@ -4,17 +4,24 @@ ...@@ -4,17 +4,24 @@
4 "lockfileVersion": 1, 4 "lockfileVersion": 1,
5 "requires": true, 5 "requires": true,
6 "dependencies": { 6 "dependencies": {
7 - "@types/babel-types": { 7 + "@babel/helper-validator-identifier": {
8 - "version": "7.0.7", 8 + "version": "7.10.1",
9 - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz", 9 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz",
10 - "integrity": "sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ==" 10 + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw=="
11 }, 11 },
12 - "@types/babylon": { 12 + "@babel/parser": {
13 - "version": "6.16.5", 13 + "version": "7.10.2",
14 - "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", 14 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz",
15 - "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", 15 + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ=="
16 + },
17 + "@babel/types": {
18 + "version": "7.10.2",
19 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz",
20 + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==",
16 "requires": { 21 "requires": {
17 - "@types/babel-types": "*" 22 + "@babel/helper-validator-identifier": "^7.10.1",
23 + "lodash": "^4.17.13",
24 + "to-fast-properties": "^2.0.0"
18 } 25 }
19 }, 26 },
20 "accepts": { 27 "accepts": {
...@@ -27,24 +34,9 @@ ...@@ -27,24 +34,9 @@
27 } 34 }
28 }, 35 },
29 "acorn": { 36 "acorn": {
30 - "version": "3.3.0", 37 + "version": "7.2.0",
31 - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 38 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz",
32 - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" 39 + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ=="
33 - },
34 - "acorn-globals": {
35 - "version": "3.1.0",
36 - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz",
37 - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=",
38 - "requires": {
39 - "acorn": "^4.0.4"
40 - },
41 - "dependencies": {
42 - "acorn": {
43 - "version": "4.0.13",
44 - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
45 - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c="
46 - }
47 - }
48 }, 40 },
49 "ajv": { 41 "ajv": {
50 "version": "6.12.2", 42 "version": "6.12.2",
...@@ -57,21 +49,6 @@ ...@@ -57,21 +49,6 @@
57 "uri-js": "^4.2.2" 49 "uri-js": "^4.2.2"
58 } 50 }
59 }, 51 },
60 - "align-text": {
61 - "version": "0.1.4",
62 - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
63 - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
64 - "requires": {
65 - "kind-of": "^3.0.2",
66 - "longest": "^1.0.1",
67 - "repeat-string": "^1.5.2"
68 - }
69 - },
70 - "amdefine": {
71 - "version": "1.0.1",
72 - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
73 - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
74 - },
75 "ansi-styles": { 52 "ansi-styles": {
76 "version": "3.2.1", 53 "version": "3.2.1",
77 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 54 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
...@@ -98,6 +75,11 @@ ...@@ -98,6 +75,11 @@
98 "safer-buffer": "~2.1.0" 75 "safer-buffer": "~2.1.0"
99 } 76 }
100 }, 77 },
78 + "assert-never": {
79 + "version": "1.2.1",
80 + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz",
81 + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw=="
82 + },
101 "assert-plus": { 83 "assert-plus": {
102 "version": "1.0.0", 84 "version": "1.0.0",
103 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 85 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
...@@ -139,31 +121,14 @@ ...@@ -139,31 +121,14 @@
139 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", 121 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz",
140 "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" 122 "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA=="
141 }, 123 },
142 - "babel-runtime": { 124 + "babel-walk": {
143 - "version": "6.26.0", 125 + "version": "3.0.0-canary-5",
144 - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 126 + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
145 - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 127 + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==",
146 - "requires": {
147 - "core-js": "^2.4.0",
148 - "regenerator-runtime": "^0.11.0"
149 - }
150 - },
151 - "babel-types": {
152 - "version": "6.26.0",
153 - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
154 - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
155 "requires": { 128 "requires": {
156 - "babel-runtime": "^6.26.0", 129 + "@babel/types": "^7.9.6"
157 - "esutils": "^2.0.2",
158 - "lodash": "^4.17.4",
159 - "to-fast-properties": "^1.0.3"
160 } 130 }
161 }, 131 },
162 - "babylon": {
163 - "version": "6.18.0",
164 - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
165 - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
166 - },
167 "balanced-match": { 132 "balanced-match": {
168 "version": "1.0.0", 133 "version": "1.0.0",
169 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 134 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
...@@ -236,25 +201,11 @@ ...@@ -236,25 +201,11 @@
236 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 201 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
237 "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 202 "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
238 }, 203 },
239 - "camelcase": {
240 - "version": "1.2.1",
241 - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
242 - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
243 - },
244 "caseless": { 204 "caseless": {
245 "version": "0.12.0", 205 "version": "0.12.0",
246 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 206 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
247 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 207 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
248 }, 208 },
249 - "center-align": {
250 - "version": "0.1.3",
251 - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
252 - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
253 - "requires": {
254 - "align-text": "^0.1.3",
255 - "lazy-cache": "^1.0.3"
256 - }
257 - },
258 "chalk": { 209 "chalk": {
259 "version": "2.4.2", 210 "version": "2.4.2",
260 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 211 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
...@@ -273,25 +224,6 @@ ...@@ -273,25 +224,6 @@
273 "is-regex": "^1.0.3" 224 "is-regex": "^1.0.3"
274 } 225 }
275 }, 226 },
276 - "clean-css": {
277 - "version": "3.4.28",
278 - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
279 - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
280 - "requires": {
281 - "commander": "2.8.x",
282 - "source-map": "0.4.x"
283 - }
284 - },
285 - "cliui": {
286 - "version": "2.1.0",
287 - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
288 - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
289 - "requires": {
290 - "center-align": "^0.1.1",
291 - "right-align": "^0.1.1",
292 - "wordwrap": "0.0.2"
293 - }
294 - },
295 "color-convert": { 227 "color-convert": {
296 "version": "1.9.3", 228 "version": "1.9.3",
297 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 229 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
...@@ -313,28 +245,18 @@ ...@@ -313,28 +245,18 @@
313 "delayed-stream": "~1.0.0" 245 "delayed-stream": "~1.0.0"
314 } 246 }
315 }, 247 },
316 - "commander": {
317 - "version": "2.8.1",
318 - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
319 - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
320 - "requires": {
321 - "graceful-readlink": ">= 1.0.0"
322 - }
323 - },
324 "concat-map": { 248 "concat-map": {
325 "version": "0.0.1", 249 "version": "0.0.1",
326 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 250 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
327 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 251 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
328 }, 252 },
329 "constantinople": { 253 "constantinople": {
330 - "version": "3.1.2", 254 + "version": "4.0.1",
331 - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", 255 + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
332 - "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", 256 + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==",
333 "requires": { 257 "requires": {
334 - "@types/babel-types": "^7.0.0", 258 + "@babel/parser": "^7.6.0",
335 - "@types/babylon": "^6.16.2", 259 + "@babel/types": "^7.6.1"
336 - "babel-types": "^6.26.0",
337 - "babylon": "^6.18.0"
338 } 260 }
339 }, 261 },
340 "content-disposition": { 262 "content-disposition": {
...@@ -366,11 +288,6 @@ ...@@ -366,11 +288,6 @@
366 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 288 "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
367 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 289 "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
368 }, 290 },
369 - "core-js": {
370 - "version": "2.6.11",
371 - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
372 - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg=="
373 - },
374 "core-util-is": { 291 "core-util-is": {
375 "version": "1.0.2", 292 "version": "1.0.2",
376 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 293 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
...@@ -397,11 +314,6 @@ ...@@ -397,11 +314,6 @@
397 "ms": "2.0.0" 314 "ms": "2.0.0"
398 } 315 }
399 }, 316 },
400 - "decamelize": {
401 - "version": "1.2.0",
402 - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
403 - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
404 - },
405 "delayed-stream": { 317 "delayed-stream": {
406 "version": "1.0.0", 318 "version": "1.0.0",
407 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 319 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
...@@ -459,11 +371,6 @@ ...@@ -459,11 +371,6 @@
459 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 371 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
460 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 372 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
461 }, 373 },
462 - "esutils": {
463 - "version": "2.0.3",
464 - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
465 - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
466 - },
467 "etag": { 374 "etag": {
468 "version": "1.8.1", 375 "version": "1.8.1",
469 "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 376 "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
...@@ -630,11 +537,6 @@ ...@@ -630,11 +537,6 @@
630 "assert-plus": "^1.0.0" 537 "assert-plus": "^1.0.0"
631 } 538 }
632 }, 539 },
633 - "graceful-readlink": {
634 - "version": "1.0.1",
635 - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
636 - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
637 - },
638 "har-schema": { 540 "har-schema": {
639 "version": "2.0.0", 541 "version": "2.0.0",
640 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 542 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
...@@ -706,25 +608,13 @@ ...@@ -706,25 +608,13 @@
706 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 608 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
707 "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 609 "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
708 }, 610 },
709 - "is-buffer": {
710 - "version": "1.1.6",
711 - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
712 - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
713 - },
714 "is-expression": { 611 "is-expression": {
715 - "version": "3.0.0", 612 + "version": "4.0.0",
716 - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", 613 + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz",
717 - "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", 614 + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==",
718 "requires": { 615 "requires": {
719 - "acorn": "~4.0.2", 616 + "acorn": "^7.1.1",
720 - "object-assign": "^4.0.1" 617 + "object-assign": "^4.1.1"
721 - },
722 - "dependencies": {
723 - "acorn": {
724 - "version": "4.0.13",
725 - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
726 - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c="
727 - }
728 } 618 }
729 }, 619 },
730 "is-promise": { 620 "is-promise": {
...@@ -816,29 +706,11 @@ ...@@ -816,29 +706,11 @@
816 "promise": "^7.0.1" 706 "promise": "^7.0.1"
817 } 707 }
818 }, 708 },
819 - "kind-of": {
820 - "version": "3.2.2",
821 - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
822 - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
823 - "requires": {
824 - "is-buffer": "^1.1.5"
825 - }
826 - },
827 - "lazy-cache": {
828 - "version": "1.0.4",
829 - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
830 - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
831 - },
832 "lodash": { 709 "lodash": {
833 "version": "4.17.15", 710 "version": "4.17.15",
834 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 711 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
835 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" 712 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
836 }, 713 },
837 - "longest": {
838 - "version": "1.0.1",
839 - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
840 - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
841 - },
842 "media-typer": { 714 "media-typer": {
843 "version": "0.3.0", 715 "version": "0.3.0",
844 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 716 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
...@@ -1008,118 +880,116 @@ ...@@ -1008,118 +880,116 @@
1008 "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" 880 "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
1009 }, 881 },
1010 "pug": { 882 "pug": {
1011 - "version": "2.0.0-beta11", 883 + "version": "3.0.0",
1012 - "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.0-beta11.tgz", 884 + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.0.tgz",
1013 - "integrity": "sha1-Favmr1AEx+LPRhPksnRlyVRrXwE=", 885 + "integrity": "sha512-inmsJyFBSHZaiGLaguoFgJGViX0If6AcfcElimvwj9perqjDpUpw79UIEDZbWFmoGVidh08aoE+e8tVkjVJPCw==",
1014 "requires": { 886 "requires": {
1015 - "pug-code-gen": "^1.1.1", 887 + "pug-code-gen": "^3.0.0",
1016 - "pug-filters": "^2.1.1", 888 + "pug-filters": "^4.0.0",
1017 - "pug-lexer": "^3.0.0", 889 + "pug-lexer": "^5.0.0",
1018 - "pug-linker": "^2.0.2", 890 + "pug-linker": "^4.0.0",
1019 - "pug-load": "^2.0.5", 891 + "pug-load": "^3.0.0",
1020 - "pug-parser": "^2.0.2", 892 + "pug-parser": "^6.0.0",
1021 - "pug-runtime": "^2.0.3", 893 + "pug-runtime": "^3.0.0",
1022 - "pug-strip-comments": "^1.0.2" 894 + "pug-strip-comments": "^2.0.0"
1023 } 895 }
1024 }, 896 },
1025 "pug-attrs": { 897 "pug-attrs": {
1026 - "version": "2.0.4", 898 + "version": "3.0.0",
1027 - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", 899 + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz",
1028 - "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", 900 + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==",
1029 "requires": { 901 "requires": {
1030 - "constantinople": "^3.0.1", 902 + "constantinople": "^4.0.1",
1031 - "js-stringify": "^1.0.1", 903 + "js-stringify": "^1.0.2",
1032 - "pug-runtime": "^2.0.5" 904 + "pug-runtime": "^3.0.0"
1033 } 905 }
1034 }, 906 },
1035 "pug-code-gen": { 907 "pug-code-gen": {
1036 - "version": "1.1.1", 908 + "version": "3.0.1",
1037 - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-1.1.1.tgz", 909 + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.1.tgz",
1038 - "integrity": "sha1-HPcnRO8qA56uajNAyqoRBYcSWOg=", 910 + "integrity": "sha512-xJIGvmXTQlkJllq6hqxxjRWcay2F9CU69TuAuiVZgHK0afOhG5txrQOcZyaPHBvSWCU/QQOqEp5XCH94rRZpBQ==",
1039 "requires": { 911 "requires": {
1040 - "constantinople": "^3.0.1", 912 + "constantinople": "^4.0.1",
1041 "doctypes": "^1.1.0", 913 "doctypes": "^1.1.0",
1042 - "js-stringify": "^1.0.1", 914 + "js-stringify": "^1.0.2",
1043 - "pug-attrs": "^2.0.2", 915 + "pug-attrs": "^3.0.0",
1044 - "pug-error": "^1.3.2", 916 + "pug-error": "^2.0.0",
1045 - "pug-runtime": "^2.0.3", 917 + "pug-runtime": "^3.0.0",
1046 - "void-elements": "^2.0.1", 918 + "void-elements": "^3.1.0",
1047 - "with": "^5.0.0" 919 + "with": "^7.0.0"
1048 } 920 }
1049 }, 921 },
1050 "pug-error": { 922 "pug-error": {
1051 - "version": "1.3.3", 923 + "version": "2.0.0",
1052 - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", 924 + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz",
1053 - "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==" 925 + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ=="
1054 }, 926 },
1055 "pug-filters": { 927 "pug-filters": {
1056 - "version": "2.1.5", 928 + "version": "4.0.0",
1057 - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-2.1.5.tgz", 929 + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz",
1058 - "integrity": "sha512-xkw71KtrC4sxleKiq+cUlQzsiLn8pM5+vCgkChW2E6oNOzaqTSIBKIQ5cl4oheuDzvJYCTSYzRaVinMUrV4YLQ==", 930 + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==",
1059 "requires": { 931 "requires": {
1060 - "clean-css": "^3.3.0", 932 + "constantinople": "^4.0.1",
1061 - "constantinople": "^3.0.1",
1062 "jstransformer": "1.0.0", 933 "jstransformer": "1.0.0",
1063 - "pug-error": "^1.3.2", 934 + "pug-error": "^2.0.0",
1064 - "pug-walk": "^1.1.5", 935 + "pug-walk": "^2.0.0",
1065 - "resolve": "^1.1.6", 936 + "resolve": "^1.15.1"
1066 - "uglify-js": "^2.6.1"
1067 } 937 }
1068 }, 938 },
1069 "pug-lexer": { 939 "pug-lexer": {
1070 - "version": "3.1.0", 940 + "version": "5.0.0",
1071 - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-3.1.0.tgz", 941 + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.0.tgz",
1072 - "integrity": "sha1-/QhzdtSmdbT1n4/vQiiDQ06VgaI=", 942 + "integrity": "sha512-52xMk8nNpuyQ/M2wjZBN5gXQLIylaGkAoTk5Y1pBhVqaopaoj8Z0iVzpbFZAqitL4RHNVDZRnJDsqEYe99Ti0A==",
1073 "requires": { 943 "requires": {
1074 - "character-parser": "^2.1.1", 944 + "character-parser": "^2.2.0",
1075 - "is-expression": "^3.0.0", 945 + "is-expression": "^4.0.0",
1076 - "pug-error": "^1.3.2" 946 + "pug-error": "^2.0.0"
1077 } 947 }
1078 }, 948 },
1079 "pug-linker": { 949 "pug-linker": {
1080 - "version": "2.0.3", 950 + "version": "4.0.0",
1081 - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-2.0.3.tgz", 951 + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz",
1082 - "integrity": "sha1-szH/olc33eacEntWwQ/xf652bco=", 952 + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==",
1083 "requires": { 953 "requires": {
1084 - "pug-error": "^1.3.2", 954 + "pug-error": "^2.0.0",
1085 - "pug-walk": "^1.1.2" 955 + "pug-walk": "^2.0.0"
1086 } 956 }
1087 }, 957 },
1088 "pug-load": { 958 "pug-load": {
1089 - "version": "2.0.12", 959 + "version": "3.0.0",
1090 - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", 960 + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz",
1091 - "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", 961 + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==",
1092 "requires": { 962 "requires": {
1093 - "object-assign": "^4.1.0", 963 + "object-assign": "^4.1.1",
1094 - "pug-walk": "^1.1.8" 964 + "pug-walk": "^2.0.0"
1095 } 965 }
1096 }, 966 },
1097 "pug-parser": { 967 "pug-parser": {
1098 - "version": "2.0.2", 968 + "version": "6.0.0",
1099 - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-2.0.2.tgz", 969 + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz",
1100 - "integrity": "sha1-U6aAz9BQOdywwn0CkJS8SnkmibA=", 970 + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==",
1101 "requires": { 971 "requires": {
1102 - "pug-error": "^1.3.2", 972 + "pug-error": "^2.0.0",
1103 - "token-stream": "0.0.1" 973 + "token-stream": "1.0.0"
1104 } 974 }
1105 }, 975 },
1106 "pug-runtime": { 976 "pug-runtime": {
1107 - "version": "2.0.5", 977 + "version": "3.0.0",
1108 - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", 978 + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.0.tgz",
1109 - "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==" 979 + "integrity": "sha512-GoEPcmQNnaTsePEdVA05bDpY+Op5VLHKayg08AQiqJBWU/yIaywEYv7TetC5dEQS3fzBBoyb2InDcZEg3mPTIA=="
1110 }, 980 },
1111 "pug-strip-comments": { 981 "pug-strip-comments": {
1112 - "version": "1.0.4", 982 + "version": "2.0.0",
1113 - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", 983 + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz",
1114 - "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", 984 + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==",
1115 "requires": { 985 "requires": {
1116 - "pug-error": "^1.3.3" 986 + "pug-error": "^2.0.0"
1117 } 987 }
1118 }, 988 },
1119 "pug-walk": { 989 "pug-walk": {
1120 - "version": "1.1.8", 990 + "version": "2.0.0",
1121 - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", 991 + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
1122 - "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==" 992 + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ=="
1123 }, 993 },
1124 "punycode": { 994 "punycode": {
1125 "version": "1.3.2", 995 "version": "1.3.2",
...@@ -1171,16 +1041,6 @@ ...@@ -1171,16 +1041,6 @@
1171 "util-deprecate": "~1.0.1" 1041 "util-deprecate": "~1.0.1"
1172 } 1042 }
1173 }, 1043 },
1174 - "regenerator-runtime": {
1175 - "version": "0.11.1",
1176 - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
1177 - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
1178 - },
1179 - "repeat-string": {
1180 - "version": "1.6.1",
1181 - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
1182 - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
1183 - },
1184 "request": { 1044 "request": {
1185 "version": "2.88.2", 1045 "version": "2.88.2",
1186 "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 1046 "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
...@@ -1216,14 +1076,6 @@ ...@@ -1216,14 +1076,6 @@
1216 "path-parse": "^1.0.6" 1076 "path-parse": "^1.0.6"
1217 } 1077 }
1218 }, 1078 },
1219 - "right-align": {
1220 - "version": "0.1.3",
1221 - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
1222 - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
1223 - "requires": {
1224 - "align-text": "^0.1.1"
1225 - }
1226 - },
1227 "safe-buffer": { 1079 "safe-buffer": {
1228 "version": "5.1.2", 1080 "version": "5.1.2",
1229 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1081 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
...@@ -1275,14 +1127,6 @@ ...@@ -1275,14 +1127,6 @@
1275 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 1127 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
1276 "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 1128 "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
1277 }, 1129 },
1278 - "source-map": {
1279 - "version": "0.4.4",
1280 - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
1281 - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
1282 - "requires": {
1283 - "amdefine": ">=0.0.4"
1284 - }
1285 - },
1286 "sqlstring": { 1130 "sqlstring": {
1287 "version": "2.3.1", 1131 "version": "2.3.1",
1288 "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", 1132 "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
...@@ -1326,14 +1170,14 @@ ...@@ -1326,14 +1170,14 @@
1326 } 1170 }
1327 }, 1171 },
1328 "to-fast-properties": { 1172 "to-fast-properties": {
1329 - "version": "1.0.3", 1173 + "version": "2.0.0",
1330 - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 1174 + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1331 - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" 1175 + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
1332 }, 1176 },
1333 "token-stream": { 1177 "token-stream": {
1334 - "version": "0.0.1", 1178 + "version": "1.0.0",
1335 - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", 1179 + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
1336 - "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" 1180 + "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ="
1337 }, 1181 },
1338 "tough-cookie": { 1182 "tough-cookie": {
1339 "version": "2.5.0", 1183 "version": "2.5.0",
...@@ -1373,29 +1217,6 @@ ...@@ -1373,29 +1217,6 @@
1373 "mime-types": "~2.1.24" 1217 "mime-types": "~2.1.24"
1374 } 1218 }
1375 }, 1219 },
1376 - "uglify-js": {
1377 - "version": "2.8.29",
1378 - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
1379 - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
1380 - "requires": {
1381 - "source-map": "~0.5.1",
1382 - "uglify-to-browserify": "~1.0.0",
1383 - "yargs": "~3.10.0"
1384 - },
1385 - "dependencies": {
1386 - "source-map": {
1387 - "version": "0.5.7",
1388 - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1389 - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
1390 - }
1391 - }
1392 - },
1393 - "uglify-to-browserify": {
1394 - "version": "1.0.2",
1395 - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
1396 - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
1397 - "optional": true
1398 - },
1399 "uid-safe": { 1220 "uid-safe": {
1400 "version": "2.1.5", 1221 "version": "2.1.5",
1401 "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", 1222 "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
...@@ -1464,29 +1285,21 @@ ...@@ -1464,29 +1285,21 @@
1464 } 1285 }
1465 }, 1286 },
1466 "void-elements": { 1287 "void-elements": {
1467 - "version": "2.0.1", 1288 + "version": "3.1.0",
1468 - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", 1289 + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
1469 - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" 1290 + "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk="
1470 - },
1471 - "window-size": {
1472 - "version": "0.1.0",
1473 - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
1474 - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
1475 }, 1291 },
1476 "with": { 1292 "with": {
1477 - "version": "5.1.1", 1293 + "version": "7.0.2",
1478 - "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", 1294 + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz",
1479 - "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", 1295 + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==",
1480 "requires": { 1296 "requires": {
1481 - "acorn": "^3.1.0", 1297 + "@babel/parser": "^7.9.6",
1482 - "acorn-globals": "^3.0.0" 1298 + "@babel/types": "^7.9.6",
1299 + "assert-never": "^1.2.1",
1300 + "babel-walk": "3.0.0-canary-5"
1483 } 1301 }
1484 }, 1302 },
1485 - "wordwrap": {
1486 - "version": "0.0.2",
1487 - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
1488 - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
1489 - },
1490 "xml2js": { 1303 "xml2js": {
1491 "version": "0.4.19", 1304 "version": "0.4.19",
1492 "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", 1305 "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
...@@ -1500,17 +1313,6 @@ ...@@ -1500,17 +1313,6 @@
1500 "version": "9.0.7", 1313 "version": "9.0.7",
1501 "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", 1314 "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
1502 "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" 1315 "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
1503 - },
1504 - "yargs": {
1505 - "version": "3.10.0",
1506 - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
1507 - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
1508 - "requires": {
1509 - "camelcase": "^1.0.2",
1510 - "cliui": "^2.1.0",
1511 - "decamelize": "^1.0.0",
1512 - "window-size": "0.1.0"
1513 - }
1514 } 1316 }
1515 } 1317 }
1516 } 1318 }
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
19 "morgan": "~1.9.1", 19 "morgan": "~1.9.1",
20 "mysql": "^2.18.1", 20 "mysql": "^2.18.1",
21 "passport": "^0.4.1", 21 "passport": "^0.4.1",
22 - "pug": "2.0.0-beta11", 22 + "pug": "^3.0.0",
23 "request": "^2.88.2" 23 "request": "^2.88.2"
24 } 24 }
25 } 25 }
......
...@@ -8,37 +8,32 @@ var S3 = require('../modules/s3/s3'); ...@@ -8,37 +8,32 @@ var S3 = require('../modules/s3/s3');
8 8
9 // /file/delete/:name 9 // /file/delete/:name
10 router.get('/:name', function (req, res) { 10 router.get('/:name', function (req, res) {
11 - var user_id = req.session.user_id; 11 + var file_name = req.params.name;
12 + var user_id = req.query.id;
13 + var curPath = req.query.cur;
12 14
13 - var sourceFile = req.params.name;
14 var targetPath = 'trashcan'; 15 var targetPath = 'trashcan';
15 - 16 + var sourceFile = curPath.substring(1) + file_name;
16 - var paths = sourceFile.split('/');
17 - var index = sourceFile.length - (paths[paths.length - 1].length + 1);
18 - var file_name = paths[paths.length - 1];
19 - var location = sourceFile.substring(6 + user_id.length, index);
20 17
21 var sql1 = 'DELETE FROM files WHERE file_name = (?) AND location=(?) AND user_Id = (?)'; 18 var sql1 = 'DELETE FROM files WHERE file_name = (?) AND location=(?) AND user_Id = (?)';
22 var sql2 = 'INSERT INTO trashcan (trash_name, location, user_Id) VALUES (?, ?, ?)'; 19 var sql2 = 'INSERT INTO trashcan (trash_name, location, user_Id) VALUES (?, ?, ?)';
23 20
24 - 21 + connection.query(sql1, [file_name, curPath, user_id], function (err) {
25 - connection.query(sql1, [file_name, location, user_id], function (err) {
26 if (err) { 22 if (err) {
27 console.log('delete db error'); 23 console.log('delete db error');
28 - throw err; 24 + res.send({erorr: 'db delete error'});
29 } 25 }
30 else { 26 else {
31 - connection.query(sql2, [file_name, location, user_id], function (err) { 27 + connection.query(sql2, [file_name, '/trashcan'+curPath, user_id], function (err) {
32 if (err) { 28 if (err) {
33 console.log('insert in trashcan db error'); 29 console.log('insert in trashcan db error');
34 - throw err; 30 + res.send({error: 'db insert error'});
35 } 31 }
36 else { 32 else {
37 // /drive/user_id/sourceFile --> /drive/user_id/trashcan/sourceFile 33 // /drive/user_id/sourceFile --> /drive/user_id/trashcan/sourceFile
38 - S3.moveFile(S3.BUCKET_NAME, user_id, sourceFile, targetPath, function (result) { 34 + S3.moveFile2(S3.BUCKET_NAME, user_id, sourceFile, targetPath, function (result) {
39 if (result) { 35 if (result) {
40 - console.log("file move to trashcan success"); 36 + res.send("move to trashcan success");
41 - res.send("Upload Success");
42 } 37 }
43 }) 38 })
44 } 39 }
......
...@@ -8,23 +8,68 @@ AWS.config.loadFromPath(__dirname + "/../modules/awsconfig.json"); ...@@ -8,23 +8,68 @@ AWS.config.loadFromPath(__dirname + "/../modules/awsconfig.json");
8 var S3 = require('../modules/s3/s3'); 8 var S3 = require('../modules/s3/s3');
9 9
10 10
11 -// /file/download/:name 11 +
12 router.get('/:name', function (req, res) { 12 router.get('/:name', function (req, res) {
13 var file_name = req.params.name; 13 var file_name = req.params.name;
14 - var user_id = req.session.user_id; 14 + var curPath = req.query.cur; // /folder1/folder2/
15 + var user_id = req.query.id;
16 +
17 + var targetFile = curPath.substring(1) + file_name; // folder1/folder2/test.txt
18 +
19 +
20 + S3.downloadFile3(S3.BUCKET_NAME, user_id, targetFile, function (result, downloadDir) {
21 + if (result) {
22 + res.send({ src: downloadDir })
23 + }else{
24 + res.send({ err: 'download error'})
25 + }
26 + })
27 +});
28 +
29 +/*
30 +router.get('/:name', function (req, res, next) {
31 + var file_name = req.params.name; // test.txt
32 + var user_id = req.query.id;
33 + var curPath = req.query.cur; // /folder1/folder2/
34 +
35 + var targetFile = (curPath + file_name).substring(1); // folder1/folder2/test.txt
15 36
16 - var sourceFile = file_name; 37 + var s3 = new AWS.S3();
17 - var tempDownloadDir = __dirname + '/../modules/s3/download/' + user_id + '/' + file_name; 38 + var params = {
39 + Bucket: S3.BUCKET_NAME,
40 + Key: 'drive/' + user_id + '/' + targetFile,
41 + };
18 42
19 - S3.downloadFile(S3.BUCKET_NAME, user_id, sourceFile, function (result, data) { 43 + res.attachment(file_name);
20 - !fs.existsSync(tempDownloadDir + '/../') && fs.mkdirSync(tempDownloadDir + '/../'); 44 + var fileStream = s3.getObject(params).createReadStream();
21 - fs.writeFileSync(tempDownloadDir, data); 45 + fileStream.pipe(res);
22 - res.download(tempDownloadDir, function (err) { 46 +});
23 - fs.unlink(tempDownloadDir, function (err) { 47 +*/
24 - console.log("Download Success"); 48 +
49 +/*
50 +// /file/download/:name
51 +router.get('/:name', function (req, res) {
52 + var file_name = req.params.name; // test.txt
53 + var user_id = req.query.id;
54 + var curPath = req.query.cur; // /folder1/folder2/
55 +
56 + var targetFile = (curPath + file_name).substring(1); // folder1/folder2/test.txt
57 +
58 + S3.downloadFile2(S3.BUCKET_NAME, user_id, targetFile, function (result, downloadDir) {
59 + if (result){
60 + res.download(downloadDir, function (err) {
61 + if (err){
62 + console.log(err);
63 + }else{
64 + console.log('download success');
65 + }
25 }); 66 });
26 - }); 67 + }else{
68 + res.send({error: 'download error'});
69 + }
27 }); 70 });
28 }); 71 });
72 +*/
73 +
29 74
30 module.exports = router; 75 module.exports = router;
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -5,36 +5,46 @@ var AWS = require('aws-sdk'); ...@@ -5,36 +5,46 @@ var AWS = require('aws-sdk');
5 AWS.config.loadFromPath(__dirname + "/../modules/awsconfig.json"); 5 AWS.config.loadFromPath(__dirname + "/../modules/awsconfig.json");
6 var S3 = require('../modules/s3/s3'); 6 var S3 = require('../modules/s3/s3');
7 7
8 +var fs = require('fs');
8 9
10 +
11 +// /file
9 router.get('/', function (req, res) { 12 router.get('/', function (req, res) {
10 - var user_id = req.session.user_id; 13 + var user_id = req.query.id;
14 + var curPath = req.query.cur; // /folder1/folder2/
11 15
12 - var sql = 'SELECT * FROM files WHERE user_id = (?) ORDER BY date DESC'; 16 + var sql = 'SELECT * FROM files WHERE user_id=(?) AND location=(?) ORDER BY date DESC';
13 - connection.query(sql, user_id, function (err, result) { 17 + connection.query(sql, [user_id, curPath], function (err, result) {
14 - if (result.length == 0){ 18 + if (err){
15 - res.send({error: 'Exist Nothing'}); 19 + res.send({error: 'select error'});
16 }else{ 20 }else{
21 +
17 res.status(200).send({files: result}); 22 res.status(200).send({files: result});
18 } 23 }
19 }) 24 })
20 }); 25 });
21 26
22 -// /file/:name 27 +
28 +
23 router.get('/:name', function (req, res) { 29 router.get('/:name', function (req, res) {
24 var file_name = req.params.name; 30 var file_name = req.params.name;
25 - var user_id = req.session.user_id; 31 + var curPath = req.query.cur; // /folder1/folder2/
32 + var user_id = req.query.id;
33 +
34 + var targetFile = curPath.substring(1) + file_name; // folder1/folder2/test.txt
35 + var extension = targetFile.split('.')[1].toLowerCase();
26 36
27 - var s3 = new AWS.S3();
28 37
29 - var sourceFile = 'drive/' + user_id + '/' + file_name; 38 + S3.downloadFile3(S3.BUCKET_NAME, user_id, targetFile, function(result, downloadDir){
30 - var params = { Bucket: S3.BUCKET_NAME, Key: sourceFile }; 39 + if (result){
31 - var stream = s3.getObject(params).createReadStream(); 40 + if (extension == 'jpg' || extension == 'jpeg' || extension == 'png') {
32 - stream.pipe(res, function (err) { 41 + res.status(200).send({ type: 'image', src: downloadDir})
33 - if (err) { 42 + }else{
34 - throw err; 43 + res.status(200).send({type: 'text', src: downloadDir})
44 + }
35 } 45 }
36 }) 46 })
37 -}); 47 +});
38 48
39 49
40 module.exports = router; 50 module.exports = router;
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -11,80 +11,79 @@ var S3 = require('../modules/s3/s3'); ...@@ -11,80 +11,79 @@ var S3 = require('../modules/s3/s3');
11 11
12 // /file/upload 12 // /file/upload
13 router.post('/', function (req, res) { 13 router.post('/', function (req, res) {
14 - var user_id = req.session.user_id;
15 -
16 - var sourceFiles = [];
17 - var errFiles = [];
18 - var targetPath = '';
19 - var bodies = [];
20 -
21 -
22 var form = new formidable.IncomingForm(); 14 var form = new formidable.IncomingForm();
23 form.multiples = true; 15 form.multiples = true;
24 form.parse(req, function (err, fields, files) { 16 form.parse(req, function (err, fields, files) {
25 - if(!files.file[0]){ 17 + console.log(files);
26 - sourceFiles.push(files.file.name); 18 +
27 - bodies.push(files.file.path); 19 + /* form-data로 받아야 함 */
20 + var user_id = fields.user_id;
21 + var curPath = fields.cur // /folder1/folder2/
22 + console.log(user_id);
23 + console.log(curPath);
24 +
25 + var sourceFiles = [];
26 + var errFiles = [];
27 + var targetPath; // 'folder1/folder2'
28 + var bodies = [];
29 + var errMessage = 'upload error';
30 +
31 + if (curPath == '/') {
32 + targetPath = '';
33 + } else {
34 + targetPath = curPath.substring(1, curPath.length-1);
35 + }
36 +
37 + if(!files.file[0]){ // 파일 하나일 때
38 + var checkFileName = files.file.name;
39 + checkFileName = checkFileName.split('(').join(',').split(')').join(',').split(',');
40 + if (checkFileName.length > 1) {
41 + errFiles.push(files.file.name);
42 + errMessage = 'check your file name(\'(\', \')\' x!)'
43 + }else{
44 + sourceFiles.push(files.file.name);
45 + bodies.push(files.file.path);
46 + }
28 }else{ 47 }else{
29 - for (var file of files.file) { 48 + for (var file of files.file) { // 파일 여러개일 때
30 - sourceFiles.push(file.name); 49 + var checkFileName = file.name;
31 - bodies.push(file.path); 50 + checkFileName = checkFileName.split('(').join(',').split(')').join(',').split(',');
51 + if (checkFileName.length > 1){
52 + errFiles.push(file.name);
53 + } else {
54 + sourceFiles.push(file.name);
55 + bodies.push(file.path);
56 + }
32 } 57 }
33 } 58 }
34 59
35 S3.uploadFiles(0, errFiles, S3.BUCKET_NAME, user_id, sourceFiles, targetPath, bodies, function (result, errFiles) { 60 S3.uploadFiles(0, errFiles, S3.BUCKET_NAME, user_id, sourceFiles, targetPath, bodies, function (result, errFiles) {
36 - var newSourceFiles = []; 61 + var noErrSourceFiles = [];
37 - if (!result) { // 에러 파일이 있는 경우 62 + for (var sourceFile of sourceFiles) {
38 - for (var sourceFile of sourceFiles) { 63 + if (!(sourceFile in errFiles)) {
39 - if (!(sourceFile in errFiles)) { 64 + noErrSourceFiles.push(sourceFile);
40 - newSourceFiles.push(sourceFile);
41 - }
42 } 65 }
43 } 66 }
44 - for (var sourceFile of sourceFiles) { 67 + for (var sourceFile of noErrSourceFiles) {
45 var sql = 'INSERT INTO files (file_name, user_id, location) VALUES (?, ?, ?)'; 68 var sql = 'INSERT INTO files (file_name, user_id, location) VALUES (?, ?, ?)';
46 - connection.query(sql, [file_name, user_id, targetPath], function (err, result) { 69 + connection.query(sql, [sourceFile, user_id, curPath], function (err, result) {
47 if (err) { 70 if (err) {
48 - console.log('insert file {', sourceFile, '} in db failed'); 71 + console.log('insert error');
72 + res.send({error: 'insert error'});
49 } 73 }
50 }) 74 })
51 } 75 }
52 - res.send({Errfiles: errFiles}); 76 + if (errFiles.length){
77 + res.send({err: errMessage,
78 + errFiles: errFiles})
79 + } else {
80 + res.send({message: 'Upload Success',
81 + finalFiles: sourceFiles});
82 + }
53 }) 83 })
54 }) 84 })
55 }) 85 })
56 86
57 -/*
58 -// /file/upload
59 -router.post('/', function (req, res) {
60 - //var user_id = req.session.user_id;
61 - var user_id = 'shlee';
62 -
63 - var form = new formidable.IncomingForm();
64 - form.parse(req, function (err, fields, files) {
65 - var file_name = files.file.name;
66 - var sourceFile = file_name;
67 - var targetPath = '';
68 -
69 - var sql = 'INSERT INTO files (file_name, user_id) VALUES (?)';
70 - connection.query(sql, [[file_name, user_id]], function (err) {
71 - if (err) {
72 - console.log("Upload db error");
73 - throw err;
74 - } else {
75 - S3.uploadFile(S3.BUCKET_NAME, user_id, sourceFile, targetPath, files.file.path, function (result) {
76 - if (result) {
77 - console.log("Upload Success");
78 - res.send(result);
79 - } else {
80 - console.log("Upload Fail: Check FIle Duplication");
81 - }
82 - })
83 - }
84 - });
85 - })
86 -});
87 -*/
88 87
89 88
90 module.exports = router; 89 module.exports = router;
...\ No newline at end of file ...\ No newline at end of file
......
1 { 1 {
2 - "accessKeyId": "ASIAZQ5XTMMFRBJO2LG5", 2 + "accessKeyId": "ASIAXZL2SWFEYG2GUYVJ",
3 - "secretAccessKey": "ltsYvzKAoQ5UnNWEk13Zf8n4wJdkQkemsJ7GdsbS", 3 + "secretAccessKey": "ceYvfLs25iiBDfigO7PbP67kJoKswJdfduqROrJt",
4 - "sessionToken": "FwoGZXIvYXdzEI///////////wEaDLleFCvWDhdhFpXCvCLDAX/Hka6vXTZKxdyEBUh7ZSxPYLH184u1Tpo2qWHYFziUVKWJSCm5wqPNv0QWoAp8sL5NB0W5kty8hoeKv16SYB9Z+yzT1qtfuKTmrro2jGSo7AnxDSBla6UQHAv82yVetiGwu+IKhm6tHUvdNSlkIV0Qi9rNrDc9eynhFN/emFI/6NsocbQ47mmW6BZx0Z4/hHKW9TL6Uec/E87Z+oxVRFsVOGyNtow980bQgZFYJMbh3AN6poTlofP1q/qn2nUWwAdsDCjfhr/2BTItlcDfO5PEH5Gwffzv69JMTVBIemfIpS/Ybx6F6i7GbI2fZKGtGfRSecobbj4m", 4 + "sessionToken": "FwoGZXIvYXdzEDMaDGvezwF9kQrAJ+uhfSLDASWFKBk7UNbRzZVEM1eoGJ3E+UI9d4xSpqEDqRYjsOTn5wYIGM3mUCZ8S6/XCnGP5yFz+qv9mBLDf311iP9ajY091OhQ8c2nB6l+JHuRKAz6FhGLrjHtD1AecHtjHOu5dXODU2+9ctvGj7V60KYqjToah5Tvv84EVac/41Les3rtrqcXS/bbmVwv5kDz9K1FJStln4sXZ/foueGHZAkAJQ6LAtIQWg4/reFUcWAi8E0bUjMckmymDQhnVNWcSbgQ+htBYiiPg+P2BTItOqWuZojM5lw32rTv7+PuOaeyHjx3+Vcd4bo3orSJr57P2ZPfmglZNKY7W5aw",
5 "region": "us-east-1" 5 "region": "us-east-1"
6 -}
...\ No newline at end of file ...\ No newline at end of file
6 +}
......
1 +asdf
...\ No newline at end of file ...\ No newline at end of file
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
17 var AWS = require('aws-sdk'); 17 var AWS = require('aws-sdk');
18 AWS.config.update({ region: 'ap-northeast-2' }); 18 AWS.config.update({ region: 'ap-northeast-2' });
19 19
20 -var BUCKET_NAME = 'dkhuloud'; 20 +var BUCKET_NAME = 'khuloud';
21 21
22 var s3 = new AWS.S3(); 22 var s3 = new AWS.S3();
23 var fs = require('fs'); 23 var fs = require('fs');
...@@ -52,6 +52,8 @@ var S3 = { ...@@ -52,6 +52,8 @@ var S3 = {
52 }, 52 },
53 53
54 copyFile2: function (bucketName, userId, sourceFile, targetFile, callback) { 54 copyFile2: function (bucketName, userId, sourceFile, targetFile, callback) {
55 + // sourceFile => folder1/folder2/test.txt
56 + // targetFile => trashcan/folder1/folder2/test.txt
55 var copyParams = { 57 var copyParams = {
56 Bucket: bucketName, 58 Bucket: bucketName,
57 CopySource: bucketName + '/drive/' + userId + '/' + sourceFile, 59 CopySource: bucketName + '/drive/' + userId + '/' + sourceFile,
...@@ -72,6 +74,7 @@ var S3 = { ...@@ -72,6 +74,7 @@ var S3 = {
72 }, 74 },
73 75
74 deleteFile: function (bucketName, userId, targetFile, callback) { 76 deleteFile: function (bucketName, userId, targetFile, callback) {
77 + // targetFile => folder1/folder2/test.txt
75 var deleteParams = { 78 var deleteParams = {
76 Bucket: bucketName, 79 Bucket: bucketName,
77 Key: 'drive/' + userId + '/' + targetFile 80 Key: 'drive/' + userId + '/' + targetFile
...@@ -95,7 +98,7 @@ var S3 = { ...@@ -95,7 +98,7 @@ var S3 = {
95 Bucket: bucketName, 98 Bucket: bucketName,
96 Key: 'drive/' + userId + '/' + targetFile 99 Key: 'drive/' + userId + '/' + targetFile
97 }; 100 };
98 - 101 + console.log('drive/' + userId + '/' + targetFile);
99 s3.getObject(downloadParams, function (err, data) { 102 s3.getObject(downloadParams, function (err, data) {
100 if (err) { 103 if (err) {
101 console.log("Download File Error", err); 104 console.log("Download File Error", err);
...@@ -103,12 +106,55 @@ var S3 = { ...@@ -103,12 +106,55 @@ var S3 = {
103 } else { 106 } else {
104 if (data) { 107 if (data) {
105 console.log("Get File Success"); 108 console.log("Get File Success");
106 - callback(1, data.Body); 109 + callback(true, data.body.toString());
107 } 110 }
108 } 111 }
109 }) 112 })
110 }, 113 },
111 114
115 + // /routes/modules/s3/download에 저장
116 + downloadFile2: function(bucketName, userId, targetFile, callback){
117 + tempDownloadDir = __dirname + '/download/' + userId + '/' + targetFile;
118 + S3.downloadFile(bucketName, userId, targetFile, function(result, data){
119 + if (result) {
120 + makeFolder(tempDownloadDir, function(result){
121 + if (result) {
122 + fs.writeFileSync(tempDownloadDir, data);
123 + callback(true, tempDownloadDir);
124 + }
125 + })
126 + }else{
127 + console.log('Download File Error');
128 + callback(false);
129 + }
130 + })
131 + },
132 +
133 + // 최종
134 + downloadFile3: function(bucketName, userId, targetFile, callback){
135 + // targetFile 예1 => test.txt
136 + // targetFile 예2 => folder1/folder2/test.txt
137 + var tempDownloadDir = __dirname + '/download/' + userId + '/' + targetFile;
138 + makeFolder(tempDownloadDir, function(result){
139 + if (result){
140 + var file = fs.createWriteStream(tempDownloadDir);
141 + var params = {
142 + Bucket: bucketName,
143 + Key: 'drive/' + userId + '/' + targetFile
144 + };
145 + try {
146 + s3.getObject(params).createReadStream().pipe(file);
147 + callback(true, tempDownloadDir);
148 + }catch(err){
149 + console.log('no such file');
150 + callback(false);
151 + }
152 + }else{
153 + callback(false);
154 + }
155 + })
156 + },
157 +
112 getFileList: function (bucketName, userId, targetPath, callback) { 158 getFileList: function (bucketName, userId, targetPath, callback) {
113 var prefix; 159 var prefix;
114 160
...@@ -174,6 +220,20 @@ var S3 = { ...@@ -174,6 +220,20 @@ var S3 = {
174 }) 220 })
175 }, 221 },
176 222
223 + // 중복된 파일 버전 만들기(test.txt -> text(1).txt)
224 + makeVersion: function (bucketName, userId, sourceFile, lvNum, callback) {
225 + var sourceFile;
226 + var splited = sourceFile.split('(').join(',').split(')').join(',').split(',');
227 + if (splited.length != 3) {
228 + sourceFile = sourceFile.split('.')[0] + '(' + lvNum.toString() + ').' + sourceFile.split('.')[1];
229 + } else {
230 + sourceFile = sourceFile.split('(')[0] + '(' + lvNum.toString() + ')' + sourceFile.split(')')[1];
231 + }
232 + console.log('makeVersion ', sourceFile);
233 +
234 + callback(true, sourceFile);
235 + },
236 +
177 // sourceFile이 단순히 filename과 같은 경우 237 // sourceFile이 단순히 filename과 같은 경우
178 moveFile: function (bucketName, userId, sourceFile, targetPath, callback) { 238 moveFile: function (bucketName, userId, sourceFile, targetPath, callback) {
179 S3.copyFile(bucketName, userId, sourceFile, targetPath, function (res) { 239 S3.copyFile(bucketName, userId, sourceFile, targetPath, function (res) {
...@@ -194,25 +254,10 @@ var S3 = { ...@@ -194,25 +254,10 @@ var S3 = {
194 }) 254 })
195 }, 255 },
196 256
197 - makeVersion: function(bucketName, userId, sourceFile, lvNum, callback){
198 - var sourceFile;
199 - var splited = sourceFile.split('(').join(',').split(')').join(',').split(',');
200 - if (splited.length != 3){
201 - sourceFile = sourceFile.split('.')[0] + '(' + lvNum.toString() + ')' + sourceFile.split('.')[1];
202 - }else{
203 - sourceFile = sourceFile.split('(')[0] + '(' + lvNum.toString() + ')' + sourceFile.split(')')[1];
204 - }
205 - console.log('makeVersion ', sourceFile);
206 - callback(true, sourceFile);
207 - },
208 -
209 // sourceFile에 임의의 경로가 포함된 경우 257 // sourceFile에 임의의 경로가 포함된 경우
210 moveFile2: function (bucketName, userId, sourceFile, targetPath, callback) { 258 moveFile2: function (bucketName, userId, sourceFile, targetPath, callback) {
211 - var paths = sourceFile.split('/'); 259 + // sourceFile => folder1/folder2/test.txt
212 - var filename = paths[paths.length - 1]; 260 + var targetFile = targetPath + '/' + sourceFile;
213 - console.log('paths = ' + paths);
214 - console.log('filename = ' + filename);
215 - var targetFile = targetPath + filename;
216 261
217 S3.copyFile2(bucketName, userId, sourceFile, targetFile, function (res) { 262 S3.copyFile2(bucketName, userId, sourceFile, targetFile, function (res) {
218 if (!res) { 263 if (!res) {
...@@ -235,10 +280,11 @@ var S3 = { ...@@ -235,10 +280,11 @@ var S3 = {
235 uploadFile: function (bucketName, userId, sourceFile, targetPath, body, callback) { 280 uploadFile: function (bucketName, userId, sourceFile, targetPath, body, callback) {
236 var pathbody = fs.createReadStream(body); 281 var pathbody = fs.createReadStream(body);
237 282
238 - if (targetPath != '') { 283 + if (targetPath!='' && targetPath[targetPath.length-1]!='/') {
239 targetPath = targetPath + '/'; 284 targetPath = targetPath + '/';
240 } 285 }
241 var targetFile = targetPath + sourceFile; 286 var targetFile = targetPath + sourceFile;
287 + console.log('targetFile', targetFile);
242 288
243 var uploadParams = { 289 var uploadParams = {
244 Bucket: bucketName, 290 Bucket: bucketName,
...@@ -299,4 +345,23 @@ var S3 = { ...@@ -299,4 +345,23 @@ var S3 = {
299 }, 345 },
300 } 346 }
301 347
302 -module.exports = S3;
...\ No newline at end of file ...\ No newline at end of file
348 +var makeFolder = function(dir, callback){
349 + var paths = dir.substring(__dirname.length+1); // download/userId/folder1/folder2/test.txt
350 + paths = paths.split('/');
351 +
352 + var folders = __dirname;
353 + for(var i=0; i<paths.length-1; i++){
354 + folders += '/'+paths[i];
355 + if(!fs.existsSync(folders)){
356 + fs.mkdirSync(folders)
357 + }
358 + }
359 +
360 + if (fs.existsSync(folders)){
361 + callback(true);
362 + }else{
363 + callback(false);
364 + }
365 +}
366 +
367 +module.exports = S3;
......
...@@ -5775,9 +5775,9 @@ ...@@ -5775,9 +5775,9 @@
5775 } 5775 }
5776 }, 5776 },
5777 "http-proxy": { 5777 "http-proxy": {
5778 - "version": "1.18.0", 5778 + "version": "1.18.1",
5779 - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", 5779 + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
5780 - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", 5780 + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
5781 "dev": true, 5781 "dev": true,
5782 "requires": { 5782 "requires": {
5783 "eventemitter3": "^4.0.0", 5783 "eventemitter3": "^4.0.0",
......
...@@ -35,6 +35,52 @@ function moveFolder(folderData) { ...@@ -35,6 +35,52 @@ function moveFolder(folderData) {
35 return axios.post('/api/folder/move', folderData); 35 return axios.post('/api/folder/move', folderData);
36 } 36 }
37 37
38 +function file(curData){
39 + return axios.get('/api/file', {
40 + params: {
41 + id: curData.id,
42 + cur: curData.cur
43 + }
44 + });
45 +}
46 +
47 +
48 +function uploadFile(fileData){
49 + return axios.post('/api/file/upload', fileData, {
50 + headers :{
51 + 'Content-Type' : 'multipart/form-data'
52 + }
53 + });
54 +}
55 +
56 +function detailFile(fileData){
57 + return axios.get(`/api/file/${fileData.name}`, {
58 + params:{
59 + id: fileData.id,
60 + cur: fileData.cur
61 + }
62 + })
63 +}
64 +function deleteFile(fileData){
65 + return axios.get(`/api/file/delete/${fileData.fileName}`, {
66 + params:{
67 + //현재 접속한 사람의 id와 삭제할 파일의 이름, 현재 폴더위치를 파라미터로 넘긴다.
68 + id: fileData.user_id,
69 + cur: fileData.cur
70 + }
71 + });
72 +}
73 +function downloadFile(fileData){
74 + return axios.get(`api/file/download/${fileData.fileName}`, {
75 + params:{
76 + //현재 접속한 사람의 id와 다운로드를 위해 선택한 파일의 이름을 파라미터로 넘긴다.
77 + id: fileData.id,
78 + cur: fileData.cur
79 + }
80 + });
81 +}
82 +
38 83
39 84
40 -export { registerUser, loginUser, folder, makeFolder, deleteFolder, moveFolder }; 85 +export { registerUser, loginUser, folder, makeFolder, deleteFolder, moveFolder,
86 + file, uploadFile, deleteFile, downloadFile };
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
29 <v-list-item-title v-text="item.folder_name"></v-list-item-title> 29 <v-list-item-title v-text="item.folder_name"></v-list-item-title>
30 </v-list-item-content> 30 </v-list-item-content>
31 31
32 - 32 +
33 33
34 <v-menu 34 <v-menu
35 v-model="showMenu" 35 v-model="showMenu"
...@@ -94,18 +94,22 @@ ...@@ -94,18 +94,22 @@
94 <v-icon> mdi-file</v-icon> 94 <v-icon> mdi-file</v-icon>
95 </v-list-item-avatar> 95 </v-list-item-avatar>
96 <v-list-item-content> 96 <v-list-item-content>
97 - <v-list-item-title v-text="item"></v-list-item-title> 97 + <v-list-item-title v-text="item.file_name"></v-list-item-title>
98 </v-list-item-content> 98 </v-list-item-content>
99 <v-list-item-action> 99 <v-list-item-action>
100 - <v-btn icon> 100 + <v-btn icon @click="download_file(item.file_name)">
101 - <v-icon color="grey lighten-1">mdi-information</v-icon> 101 + <v-icon color="grey lighten-1">mdi-download</v-icon>
102 </v-btn> 102 </v-btn>
103 - <v-btn icon> 103 + <v-btn icon @click="delete_file(item.file_name)">
104 - <v-icon color="grey lighten-1">mdi-delted</v-icon> 104 + <v-icon color="grey lighten-1">mdi-delete</v-icon>
105 </v-btn> 105 </v-btn>
106 </v-list-item-action> 106 </v-list-item-action>
107 </v-list-item> 107 </v-list-item>
108 </v-list> 108 </v-list>
109 + <input id = "file-selector" ref='uploadedfile' type="file"
110 + v-on:change="handleFileUpload()">
111 + <br>
112 + <!--
109 <v-file-input 113 <v-file-input
110 v-model="files" 114 v-model="files"
111 color="deep-purple accent-4" 115 color="deep-purple accent-4"
...@@ -134,7 +138,10 @@ ...@@ -134,7 +138,10 @@
134 +{{ files.length - 2 }} File(s) 138 +{{ files.length - 2 }} File(s)
135 </span> 139 </span>
136 </template> 140 </template>
141 +
137 </v-file-input> 142 </v-file-input>
143 +-->
144 + <v-btn color="blue" @click = "upload_file">upload</v-btn>
138 <v-btn 145 <v-btn
139 bottom 146 bottom
140 color="blue" 147 color="blue"
...@@ -177,11 +184,12 @@ ...@@ -177,11 +184,12 @@
177 </div> 184 </div>
178 </template> 185 </template>
179 <script> 186 <script>
180 -import { folder, makeFolder, deleteFolder, moveFolder } from '../api/index'; 187 +import { folder, makeFolder, deleteFolder, moveFolder, file, uploadFile, deleteFile, downloadFile } from '../api/index';
181 import Axios from 'axios'; 188 import Axios from 'axios';
182 export default { 189 export default {
183 data() { 190 data() {
184 return { 191 return {
192 + uploadedfile:null,
185 foldername:'', 193 foldername:'',
186 curfName:'', 194 curfName:'',
187 folders: [], 195 folders: [],
...@@ -189,12 +197,18 @@ import Axios from 'axios'; ...@@ -189,12 +197,18 @@ import Axios from 'axios';
189 search:'', 197 search:'',
190 id: '', 198 id: '',
191 dialog:false, 199 dialog:false,
192 - search: '',
193 howMenu: false, 200 howMenu: false,
194 showMenu: false, 201 showMenu: false,
195 x: 0, 202 x: 0,
196 y: 0, 203 y: 0,
197 - dialog2:false 204 + dialog2:false,
205 + detail : {
206 + dataname: null,
207 + date: null,
208 + owner_id:null,
209 + datasize:null,
210 + datatype:null
211 + }
198 } 212 }
199 }, 213 },
200 async created(){ 214 async created(){
...@@ -203,18 +217,28 @@ import Axios from 'axios'; ...@@ -203,18 +217,28 @@ import Axios from 'axios';
203 id : this.$store.state.id, 217 id : this.$store.state.id,
204 cur: '/' 218 cur: '/'
205 } 219 }
220 + console.log(curData);
206 const response = await folder(curData); 221 const response = await folder(curData);
207 - console.log(response.data); 222 + const file_response = await file(curData);
208 this.$store.commit('setFolder', response.data.folders); 223 this.$store.commit('setFolder', response.data.folders);
209 this.$store.commit('setCur', response.data.cur); 224 this.$store.commit('setCur', response.data.cur);
210 this.$store.commit('setParent', response.data.parentPath); 225 this.$store.commit('setParent', response.data.parentPath);
211 this.folders = this.$store.getters.folderL; 226 this.folders = this.$store.getters.folderL;
227 + this.$store.commit('setFile', file_response.data.files);
228 + this.folders = this.$store.getters.folderL;
229 + console.log(this.$store.getters.fileL);
230 + this.files = this.$store.getters.fileL;
231 +
212 } catch (error) { 232 } catch (error) {
213 console.log("에러"); 233 console.log("에러");
214 - console.log(error.response.data); 234 + console.log(error);
215 } 235 }
216 }, 236 },
217 methods: { 237 methods: {
238 + handleFileUpload(){
239 + this.uploadedfile= this.$refs.uploadedfile.files[0]
240 + console.log(this.uploadedfile)
241 + },
218 initFolderName(){ 242 initFolderName(){
219 this.foldername = ''; 243 this.foldername = '';
220 }, 244 },
...@@ -316,6 +340,80 @@ import Axios from 'axios'; ...@@ -316,6 +340,80 @@ import Axios from 'axios';
316 this.dialog2 = false; 340 this.dialog2 = false;
317 } 341 }
318 }, 342 },
343 + async upload_file(){
344 + try{
345 + const formData = new FormData();
346 + formData.append('file', this.uploadedfile);
347 + formData.append('user_id', this.$store.state.id);
348 + formData.append('cur', this.$store.state.cur);
349 + const currentData={
350 + id: this.$store.state.id,
351 + cur: this.$store.state.cur
352 + }
353 + console.log(currentData)
354 + const response = await uploadFile(formData);
355 + const filelist = await file(currentData);
356 + console.log(filelist.data.files);
357 + this.$store.commit('setFile', filelist.data.files);
358 + console.log(this.$store.getters.fileL);
359 + this.files = this.$store.getters.fileL;;
360 +
361 + }catch(error){
362 + console.log("에러");
363 + console.log(error);
364 + }
365 + },
366 + async delete_file(itemName){
367 + try{
368 + var itemlist = this.$store.getters.fileL;
369 + console.log(itemlist)
370 + console.log(itemName)
371 + const currentData={
372 + fileName : null,
373 + user_id: null,
374 + cur: this.$store.state.cur
375 + }
376 +
377 + for(var i=0; i<itemlist.length; i++){
378 + console.log(itemlist[i].file_name)
379 + if(itemlist[i].file_name == itemName){
380 + currentData.fileName = itemlist[i].file_name;
381 + currentData.user_id = itemlist[i].user_id;
382 + }
383 + }
384 + const filelistData={
385 + id: currentData.user_id,
386 + cur: currentData.cur
387 + }
388 + console.log(currentData)
389 + const response = await deleteFile(currentData);
390 + setTimeout(function(){}, 500);
391 + const filelist = await file(filelistData);
392 + console.log(filelist.data.files);
393 + this.$store.commit('setFile', filelist.data.files);
394 + console.log(this.$store.getters.fileL);
395 + this.files = this.$store.getters.fileL;;
396 + }catch(error){
397 + console.log("에러");
398 + console.log(error);
399 + }
400 + },
401 + async download_file(namedata){
402 + try{
403 + const currentData={
404 + fileName : namedata,
405 + id: this.$store.state.id,
406 + cur: this.$store.state.cur
407 + }
408 + const result = await downloadFile(currentData);
409 + console.log(result)
410 +
411 + }catch(error){
412 + console.log("에러");
413 + console.log(error);
414 + }
415 + }
416 + },
319 show (folderN, e) { 417 show (folderN, e) {
320 e.preventDefault() 418 e.preventDefault()
321 this.curfName = folderN; 419 this.curfName = folderN;
...@@ -326,6 +424,6 @@ import Axios from 'axios'; ...@@ -326,6 +424,6 @@ import Axios from 'axios';
326 this.showMenu = true 424 this.showMenu = true
327 }) 425 })
328 } 426 }
329 - } 427 +
330 } 428 }
331 -</script>
...\ No newline at end of file ...\ No newline at end of file
429 +</script>
......