Showing
30 changed files
with
2012 additions
and
0 deletions
.gitignore
0 → 100644
README.md
0 → 100644
1 | +## 이 프로젝트는 박광훈 교수님의 주관하시는 주제인 유튜브 동영상 분류를 위한 자동 태깅 방법에 대한 연구에 관한 서비스를 개발하는 것입니다. | ||
2 | +### 프로젝트 참가 인원은 다음과 같습니다. | ||
3 | +*윤영빈(컴퓨터공학과, 2015104192) | ||
4 | +*윤준현(컴퓨터공학과, 2015104193) | ||
5 | +*이현규(컴퓨터공학과, 2015104209) | ||
6 | +*이태현(컴퓨터공학과, 2015104208) | ||
7 | +### 진행할 연구는 다음과 같습니다 | ||
8 | +*Video Classification | ||
9 | +*Auto Tagging | ||
10 | + | ||
11 | +### 만들고자하는 서비스 : 영상 분류를 통하여 자동으로 사용자에게 태그 추천해주는 서비스 개발 | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
web/backend/app.js
0 → 100644
1 | +var createError = require('http-errors'); | ||
2 | +var express = require('express'); | ||
3 | +var path = require('path'); | ||
4 | +var cookieParser = require('cookie-parser'); | ||
5 | +var logger = require('morgan'); | ||
6 | +var history = require('connect-history-api-fallback'); | ||
7 | +var cors = require('cors') | ||
8 | +var app = express(); | ||
9 | +var mongoDB = require('./lib/db_info') | ||
10 | + | ||
11 | +app.use(logger('dev')); | ||
12 | +app.use(express.json()); | ||
13 | +app.use(express.urlencoded({ extended: false })); | ||
14 | +app.use(cookieParser()); | ||
15 | + | ||
16 | +if (process.env.NODE_ENV !== 'production') | ||
17 | + app.use(cors()); | ||
18 | +app.use('/api', require('./routes/api')); | ||
19 | +app.use(history()); | ||
20 | +app.use(express.static(path.join(__dirname, '../frontend', 'dist'))); | ||
21 | +// catch 404 and forward to error handler | ||
22 | +app.use(function (req, res, next) { | ||
23 | + next(createError(404)); | ||
24 | +}); | ||
25 | + | ||
26 | +// error handler | ||
27 | +app.use(function (err, req, res, next) { | ||
28 | + // set locals, only providing error in development | ||
29 | + res.locals.message = err.message; | ||
30 | + res.locals.error = req.app.get('env') === 'development' ? err : {}; | ||
31 | + | ||
32 | + // render the error page | ||
33 | + res.status(err.status || 500); | ||
34 | + res.send({ msg: err.message }); | ||
35 | + console.error(err.message); | ||
36 | +}); | ||
37 | + | ||
38 | +module.exports = app; | ||
39 | + | ||
40 | +const mongoose = require('mongoose') | ||
41 | + | ||
42 | +mongoose.connect(mongoDB.db, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: true }, (err) => { | ||
43 | + if (err) return console.error(err) | ||
44 | + console.log('mongoose connected') | ||
45 | +}) | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
web/backend/bin/www
0 → 100755
1 | +#!/usr/bin/env node | ||
2 | + | ||
3 | +/** | ||
4 | + * Module dependencies. | ||
5 | + */ | ||
6 | + | ||
7 | +var app = require('../app'); | ||
8 | +var debug = require('debug')('backend:server'); | ||
9 | +var http = require('http'); | ||
10 | + | ||
11 | +/** | ||
12 | + * Get port from environment and store in Express. | ||
13 | + */ | ||
14 | + | ||
15 | +var port = normalizePort(process.env.PORT || '3000'); | ||
16 | +app.set('port', port); | ||
17 | + | ||
18 | +/** | ||
19 | + * Create HTTP server. | ||
20 | + */ | ||
21 | + | ||
22 | +var server = http.createServer(app); | ||
23 | + | ||
24 | +/** | ||
25 | + * Listen on provided port, on all network interfaces. | ||
26 | + */ | ||
27 | + | ||
28 | +server.listen(port); | ||
29 | +server.on('error', onError); | ||
30 | +server.on('listening', onListening); | ||
31 | + | ||
32 | +/** | ||
33 | + * Normalize a port into a number, string, or false. | ||
34 | + */ | ||
35 | + | ||
36 | +function normalizePort(val) { | ||
37 | + var port = parseInt(val, 10); | ||
38 | + | ||
39 | + if (isNaN(port)) { | ||
40 | + // named pipe | ||
41 | + return val; | ||
42 | + } | ||
43 | + | ||
44 | + if (port >= 0) { | ||
45 | + // port number | ||
46 | + return port; | ||
47 | + } | ||
48 | + | ||
49 | + return false; | ||
50 | +} | ||
51 | + | ||
52 | +/** | ||
53 | + * Event listener for HTTP server "error" event. | ||
54 | + */ | ||
55 | + | ||
56 | +function onError(error) { | ||
57 | + if (error.syscall !== 'listen') { | ||
58 | + throw error; | ||
59 | + } | ||
60 | + | ||
61 | + var bind = typeof port === 'string' | ||
62 | + ? 'Pipe ' + port | ||
63 | + : 'Port ' + port; | ||
64 | + | ||
65 | + // handle specific listen errors with friendly messages | ||
66 | + switch (error.code) { | ||
67 | + case 'EACCES': | ||
68 | + console.error(bind + ' requires elevated privileges'); | ||
69 | + process.exit(1); | ||
70 | + break; | ||
71 | + case 'EADDRINUSE': | ||
72 | + console.error(bind + ' is already in use'); | ||
73 | + process.exit(1); | ||
74 | + break; | ||
75 | + default: | ||
76 | + throw error; | ||
77 | + } | ||
78 | +} | ||
79 | + | ||
80 | +/** | ||
81 | + * Event listener for HTTP server "listening" event. | ||
82 | + */ | ||
83 | + | ||
84 | +function onListening() { | ||
85 | + var addr = server.address(); | ||
86 | + var bind = typeof addr === 'string' | ||
87 | + ? 'pipe ' + addr | ||
88 | + : 'port ' + addr.port; | ||
89 | + debug('Listening on ' + bind); | ||
90 | +} |
web/backend/lib/db_info.js
0 → 100644
web/backend/model/tagList.js
0 → 100644
web/backend/model/video.js
0 → 100644
1 | +const mongoose = require('mongoose') | ||
2 | +mongoose.set('useCreateIndex', true) | ||
3 | + | ||
4 | +const postSchema = new mongoose.Schema({ | ||
5 | + tag: [], | ||
6 | + videoUrl: { type: String, default: '',}, | ||
7 | + title: { type: String, default: '' }, | ||
8 | +}) | ||
9 | + | ||
10 | +const Post = mongoose.model('post', postSchema) | ||
11 | + | ||
12 | +module.exports = Post | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
web/backend/package.json
0 → 100644
1 | +{ | ||
2 | + "name": "backend", | ||
3 | + "version": "0.0.0", | ||
4 | + "private": true, | ||
5 | + "scripts": { | ||
6 | + "start": "node ./bin/www" | ||
7 | + }, | ||
8 | + "dependencies": { | ||
9 | + "connect-history-api-fallback": "^1.6.0", | ||
10 | + "cookie-parser": "^1.4.5", | ||
11 | + "cors": "^2.8.5", | ||
12 | + "debug": "~2.6.9", | ||
13 | + "express": "~4.16.1", | ||
14 | + "http-errors": "~1.6.3", | ||
15 | + "moment": "^2.24.0", | ||
16 | + "mongoose": "^5.9.6", | ||
17 | + "morgan": "~1.9.1", | ||
18 | + "multer": "^1.4.2", | ||
19 | + "pug": "2.0.0-beta11" | ||
20 | + } | ||
21 | +} |
web/backend/routes/api/home/index.js
0 → 100644
1 | +var express = require('express'); | ||
2 | +var createError = require('http-errors'); | ||
3 | +var router = express.Router(); | ||
4 | +const post = require('../../../model/video') | ||
5 | + | ||
6 | +router.get('/list', (req, res, next) => { | ||
7 | + let { tag, skip } = req.query | ||
8 | + let joinedTag = tag.join("|") | ||
9 | + let regexsearch = { tag: { $regex: joinedTag, $options: 'si' } } | ||
10 | + skip = parseInt(skip) | ||
11 | + post.find() | ||
12 | + .sort({'_id': -1}) | ||
13 | + .limit(12) | ||
14 | + .skip(skip) | ||
15 | + .then(rs => { | ||
16 | + console.log(rs) | ||
17 | + res.send({ success: true, d: rs, }) | ||
18 | + }) | ||
19 | + .catch(e => { | ||
20 | + console.log(e) | ||
21 | + res.send({ success: false, msg: e.message }) | ||
22 | + }) | ||
23 | +}) | ||
24 | + | ||
25 | +router.delete('/:_id', (req, res, next) => { | ||
26 | + const _id = req.params._id | ||
27 | + post.findOne({ _id }) | ||
28 | + .then(r => { | ||
29 | + console.log(r) | ||
30 | + return post.deleteOne({ _id }) | ||
31 | + }) | ||
32 | + .then(r => { | ||
33 | + res.send({ success: true, d: r}) | ||
34 | + }) | ||
35 | + .catch(e => { | ||
36 | + console.log(e) | ||
37 | + res.send({ success: false, msg: e.message }) | ||
38 | + }) | ||
39 | +}) | ||
40 | + | ||
41 | +router.all('*', function (req, res, next) { | ||
42 | + next(new Error ('Wrong Url!')); | ||
43 | +}); | ||
44 | + | ||
45 | +module.exports = router; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
web/backend/routes/api/index.js
0 → 100644
1 | +var createError = require('http-errors'); | ||
2 | +var express = require('express'); | ||
3 | +var router = express.Router(); | ||
4 | + | ||
5 | +router.use('/home', require('./home')) | ||
6 | +router.use('/upload', require('./upload')) | ||
7 | + | ||
8 | +router.all('*', function(req, res, next) { | ||
9 | + next(createError(404, 'This page is not exisit')) | ||
10 | +}) | ||
11 | + | ||
12 | +module.exports = router | ||
13 | + |
web/backend/routes/api/upload/index.js
0 → 100644
1 | +var express = require('express'); | ||
2 | +var createError = require('http-errors'); | ||
3 | +var router = express.Router(); | ||
4 | +const post = require('../../../model/video') | ||
5 | +const multer = require('multer') | ||
6 | +var moment = require('moment') | ||
7 | +var fs = require('fs') | ||
8 | +// event post | ||
9 | +router.post('/video', multer({dest: 'videos/'}).single('bin'), (req, res, next) => { | ||
10 | + console.log(req.file) | ||
11 | + | ||
12 | + fs.rename(`../../../videos/${req.file.filename}`, `../../../videos/${req.file.originalname}`, (r) => { | ||
13 | + console.log(r) | ||
14 | + }) | ||
15 | + var atc = { | ||
16 | + videoUrl : req.file.location, | ||
17 | + title : req.body.title, | ||
18 | + tag: req.body.tag | ||
19 | + } | ||
20 | + // post.create(atc) | ||
21 | + // .then( r => { | ||
22 | + // res.send({ success: true, d: r, token: req.token }) | ||
23 | + // }) | ||
24 | + // .catch((err) => { | ||
25 | + // console.log(err); | ||
26 | + // res.send({ success: false, msg: err.message }) | ||
27 | + // }); | ||
28 | +}) | ||
29 | +router.post('/post', (req,res,next) => { | ||
30 | + console.log(req.body) | ||
31 | + var atc = { | ||
32 | + title : req.body.title, | ||
33 | + tag: req.body.tag | ||
34 | + } | ||
35 | + post.create(atc) | ||
36 | + .then( r => { | ||
37 | + res.send({ success: true, d: r, token: req.token }) | ||
38 | + }) | ||
39 | + .catch((err) => { | ||
40 | + console.log(err); | ||
41 | + res.send({ success: false, msg: err.message }) | ||
42 | + }); | ||
43 | +}) | ||
44 | + | ||
45 | +router.all('*', function(req, res, next) { | ||
46 | + next(createError(404, 'This page is not exisit')) | ||
47 | +}) | ||
48 | + | ||
49 | +module.exports = router |
web/backend/yarn.lock
0 → 100644
1 | +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. | ||
2 | +# yarn lockfile v1 | ||
3 | + | ||
4 | + | ||
5 | +"@types/babel-types@*", "@types/babel-types@^7.0.0": | ||
6 | + version "7.0.7" | ||
7 | + resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.7.tgz#667eb1640e8039436028055737d2b9986ee336e3" | ||
8 | + integrity sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ== | ||
9 | + | ||
10 | +"@types/babylon@^6.16.2": | ||
11 | + version "6.16.5" | ||
12 | + resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz#1c5641db69eb8cdf378edd25b4be7754beeb48b4" | ||
13 | + integrity sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w== | ||
14 | + dependencies: | ||
15 | + "@types/babel-types" "*" | ||
16 | + | ||
17 | +accepts@~1.3.5: | ||
18 | + version "1.3.7" | ||
19 | + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" | ||
20 | + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== | ||
21 | + dependencies: | ||
22 | + mime-types "~2.1.24" | ||
23 | + negotiator "0.6.2" | ||
24 | + | ||
25 | +acorn-globals@^3.0.0: | ||
26 | + version "3.1.0" | ||
27 | + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" | ||
28 | + integrity sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8= | ||
29 | + dependencies: | ||
30 | + acorn "^4.0.4" | ||
31 | + | ||
32 | +acorn@^3.1.0: | ||
33 | + version "3.3.0" | ||
34 | + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" | ||
35 | + integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= | ||
36 | + | ||
37 | +acorn@^4.0.4, acorn@~4.0.2: | ||
38 | + version "4.0.13" | ||
39 | + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" | ||
40 | + integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= | ||
41 | + | ||
42 | +align-text@^0.1.1, align-text@^0.1.3: | ||
43 | + version "0.1.4" | ||
44 | + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" | ||
45 | + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= | ||
46 | + dependencies: | ||
47 | + kind-of "^3.0.2" | ||
48 | + longest "^1.0.1" | ||
49 | + repeat-string "^1.5.2" | ||
50 | + | ||
51 | +amdefine@>=0.0.4: | ||
52 | + version "1.0.1" | ||
53 | + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" | ||
54 | + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= | ||
55 | + | ||
56 | +append-field@^1.0.0: | ||
57 | + version "1.0.0" | ||
58 | + resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" | ||
59 | + integrity sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY= | ||
60 | + | ||
61 | +array-flatten@1.1.1: | ||
62 | + version "1.1.1" | ||
63 | + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" | ||
64 | + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= | ||
65 | + | ||
66 | +asap@~2.0.3: | ||
67 | + version "2.0.6" | ||
68 | + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" | ||
69 | + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= | ||
70 | + | ||
71 | +babel-runtime@^6.26.0: | ||
72 | + version "6.26.0" | ||
73 | + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" | ||
74 | + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= | ||
75 | + dependencies: | ||
76 | + core-js "^2.4.0" | ||
77 | + regenerator-runtime "^0.11.0" | ||
78 | + | ||
79 | +babel-types@^6.26.0: | ||
80 | + version "6.26.0" | ||
81 | + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" | ||
82 | + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= | ||
83 | + dependencies: | ||
84 | + babel-runtime "^6.26.0" | ||
85 | + esutils "^2.0.2" | ||
86 | + lodash "^4.17.4" | ||
87 | + to-fast-properties "^1.0.3" | ||
88 | + | ||
89 | +babylon@^6.18.0: | ||
90 | + version "6.18.0" | ||
91 | + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" | ||
92 | + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== | ||
93 | + | ||
94 | +basic-auth@~2.0.0: | ||
95 | + version "2.0.1" | ||
96 | + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" | ||
97 | + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== | ||
98 | + dependencies: | ||
99 | + safe-buffer "5.1.2" | ||
100 | + | ||
101 | +bl@^2.2.0: | ||
102 | + version "2.2.0" | ||
103 | + resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.0.tgz#e1a574cdf528e4053019bb800b041c0ac88da493" | ||
104 | + integrity sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA== | ||
105 | + dependencies: | ||
106 | + readable-stream "^2.3.5" | ||
107 | + safe-buffer "^5.1.1" | ||
108 | + | ||
109 | +bluebird@3.5.1: | ||
110 | + version "3.5.1" | ||
111 | + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" | ||
112 | + integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== | ||
113 | + | ||
114 | +body-parser@1.18.3: | ||
115 | + version "1.18.3" | ||
116 | + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" | ||
117 | + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= | ||
118 | + dependencies: | ||
119 | + bytes "3.0.0" | ||
120 | + content-type "~1.0.4" | ||
121 | + debug "2.6.9" | ||
122 | + depd "~1.1.2" | ||
123 | + http-errors "~1.6.3" | ||
124 | + iconv-lite "0.4.23" | ||
125 | + on-finished "~2.3.0" | ||
126 | + qs "6.5.2" | ||
127 | + raw-body "2.3.3" | ||
128 | + type-is "~1.6.16" | ||
129 | + | ||
130 | +bson@^1.1.1, bson@~1.1.1: | ||
131 | + version "1.1.4" | ||
132 | + resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.4.tgz#f76870d799f15b854dffb7ee32f0a874797f7e89" | ||
133 | + integrity sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q== | ||
134 | + | ||
135 | +buffer-from@^1.0.0: | ||
136 | + version "1.1.1" | ||
137 | + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" | ||
138 | + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== | ||
139 | + | ||
140 | +busboy@^0.2.11: | ||
141 | + version "0.2.14" | ||
142 | + resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453" | ||
143 | + integrity sha1-bCpiLvz0fFe7vh4qnDetNseSVFM= | ||
144 | + dependencies: | ||
145 | + dicer "0.2.5" | ||
146 | + readable-stream "1.1.x" | ||
147 | + | ||
148 | +bytes@3.0.0: | ||
149 | + version "3.0.0" | ||
150 | + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" | ||
151 | + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= | ||
152 | + | ||
153 | +camelcase@^1.0.2: | ||
154 | + version "1.2.1" | ||
155 | + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" | ||
156 | + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= | ||
157 | + | ||
158 | +center-align@^0.1.1: | ||
159 | + version "0.1.3" | ||
160 | + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" | ||
161 | + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= | ||
162 | + dependencies: | ||
163 | + align-text "^0.1.3" | ||
164 | + lazy-cache "^1.0.3" | ||
165 | + | ||
166 | +character-parser@^2.1.1: | ||
167 | + version "2.2.0" | ||
168 | + resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" | ||
169 | + integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A= | ||
170 | + dependencies: | ||
171 | + is-regex "^1.0.3" | ||
172 | + | ||
173 | +clean-css@^3.3.0: | ||
174 | + version "3.4.28" | ||
175 | + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.28.tgz#bf1945e82fc808f55695e6ddeaec01400efd03ff" | ||
176 | + integrity sha1-vxlF6C/ICPVWlebd6uwBQA79A/8= | ||
177 | + dependencies: | ||
178 | + commander "2.8.x" | ||
179 | + source-map "0.4.x" | ||
180 | + | ||
181 | +cliui@^2.1.0: | ||
182 | + version "2.1.0" | ||
183 | + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" | ||
184 | + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= | ||
185 | + dependencies: | ||
186 | + center-align "^0.1.1" | ||
187 | + right-align "^0.1.1" | ||
188 | + wordwrap "0.0.2" | ||
189 | + | ||
190 | +commander@2.8.x: | ||
191 | + version "2.8.1" | ||
192 | + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" | ||
193 | + integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= | ||
194 | + dependencies: | ||
195 | + graceful-readlink ">= 1.0.0" | ||
196 | + | ||
197 | +concat-stream@^1.5.2: | ||
198 | + version "1.6.2" | ||
199 | + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" | ||
200 | + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== | ||
201 | + dependencies: | ||
202 | + buffer-from "^1.0.0" | ||
203 | + inherits "^2.0.3" | ||
204 | + readable-stream "^2.2.2" | ||
205 | + typedarray "^0.0.6" | ||
206 | + | ||
207 | +connect-history-api-fallback@^1.6.0: | ||
208 | + version "1.6.0" | ||
209 | + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" | ||
210 | + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== | ||
211 | + | ||
212 | +constantinople@^3.0.1: | ||
213 | + version "3.1.2" | ||
214 | + resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz#d45ed724f57d3d10500017a7d3a889c1381ae647" | ||
215 | + integrity sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw== | ||
216 | + dependencies: | ||
217 | + "@types/babel-types" "^7.0.0" | ||
218 | + "@types/babylon" "^6.16.2" | ||
219 | + babel-types "^6.26.0" | ||
220 | + babylon "^6.18.0" | ||
221 | + | ||
222 | +content-disposition@0.5.2: | ||
223 | + version "0.5.2" | ||
224 | + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" | ||
225 | + integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= | ||
226 | + | ||
227 | +content-type@~1.0.4: | ||
228 | + version "1.0.4" | ||
229 | + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" | ||
230 | + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== | ||
231 | + | ||
232 | +cookie-parser@^1.4.5: | ||
233 | + version "1.4.5" | ||
234 | + resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" | ||
235 | + integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== | ||
236 | + dependencies: | ||
237 | + cookie "0.4.0" | ||
238 | + cookie-signature "1.0.6" | ||
239 | + | ||
240 | +cookie-signature@1.0.6: | ||
241 | + version "1.0.6" | ||
242 | + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" | ||
243 | + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= | ||
244 | + | ||
245 | +cookie@0.3.1: | ||
246 | + version "0.3.1" | ||
247 | + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" | ||
248 | + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= | ||
249 | + | ||
250 | +cookie@0.4.0: | ||
251 | + version "0.4.0" | ||
252 | + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" | ||
253 | + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== | ||
254 | + | ||
255 | +core-js@^2.4.0: | ||
256 | + version "2.6.11" | ||
257 | + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" | ||
258 | + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== | ||
259 | + | ||
260 | +core-util-is@~1.0.0: | ||
261 | + version "1.0.2" | ||
262 | + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" | ||
263 | + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= | ||
264 | + | ||
265 | +cors@^2.8.5: | ||
266 | + version "2.8.5" | ||
267 | + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" | ||
268 | + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== | ||
269 | + dependencies: | ||
270 | + object-assign "^4" | ||
271 | + vary "^1" | ||
272 | + | ||
273 | +debug@2.6.9, debug@~2.6.9: | ||
274 | + version "2.6.9" | ||
275 | + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" | ||
276 | + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== | ||
277 | + dependencies: | ||
278 | + ms "2.0.0" | ||
279 | + | ||
280 | +debug@3.1.0: | ||
281 | + version "3.1.0" | ||
282 | + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" | ||
283 | + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== | ||
284 | + dependencies: | ||
285 | + ms "2.0.0" | ||
286 | + | ||
287 | +decamelize@^1.0.0: | ||
288 | + version "1.2.0" | ||
289 | + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" | ||
290 | + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= | ||
291 | + | ||
292 | +denque@^1.4.1: | ||
293 | + version "1.4.1" | ||
294 | + resolved "https://registry.yarnpkg.com/denque/-/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf" | ||
295 | + integrity sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ== | ||
296 | + | ||
297 | +depd@~1.1.2: | ||
298 | + version "1.1.2" | ||
299 | + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" | ||
300 | + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= | ||
301 | + | ||
302 | +destroy@~1.0.4: | ||
303 | + version "1.0.4" | ||
304 | + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" | ||
305 | + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= | ||
306 | + | ||
307 | +dicer@0.2.5: | ||
308 | + version "0.2.5" | ||
309 | + resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f" | ||
310 | + integrity sha1-WZbAhrszIYyBLAkL3cCc0S+stw8= | ||
311 | + dependencies: | ||
312 | + readable-stream "1.1.x" | ||
313 | + streamsearch "0.1.2" | ||
314 | + | ||
315 | +doctypes@^1.1.0: | ||
316 | + version "1.1.0" | ||
317 | + resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" | ||
318 | + integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= | ||
319 | + | ||
320 | +ee-first@1.1.1: | ||
321 | + version "1.1.1" | ||
322 | + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" | ||
323 | + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= | ||
324 | + | ||
325 | +encodeurl@~1.0.2: | ||
326 | + version "1.0.2" | ||
327 | + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" | ||
328 | + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= | ||
329 | + | ||
330 | +escape-html@~1.0.3: | ||
331 | + version "1.0.3" | ||
332 | + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" | ||
333 | + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= | ||
334 | + | ||
335 | +esutils@^2.0.2: | ||
336 | + version "2.0.3" | ||
337 | + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" | ||
338 | + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== | ||
339 | + | ||
340 | +etag@~1.8.1: | ||
341 | + version "1.8.1" | ||
342 | + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" | ||
343 | + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= | ||
344 | + | ||
345 | +express@~4.16.1: | ||
346 | + version "4.16.4" | ||
347 | + resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" | ||
348 | + integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== | ||
349 | + dependencies: | ||
350 | + accepts "~1.3.5" | ||
351 | + array-flatten "1.1.1" | ||
352 | + body-parser "1.18.3" | ||
353 | + content-disposition "0.5.2" | ||
354 | + content-type "~1.0.4" | ||
355 | + cookie "0.3.1" | ||
356 | + cookie-signature "1.0.6" | ||
357 | + debug "2.6.9" | ||
358 | + depd "~1.1.2" | ||
359 | + encodeurl "~1.0.2" | ||
360 | + escape-html "~1.0.3" | ||
361 | + etag "~1.8.1" | ||
362 | + finalhandler "1.1.1" | ||
363 | + fresh "0.5.2" | ||
364 | + merge-descriptors "1.0.1" | ||
365 | + methods "~1.1.2" | ||
366 | + on-finished "~2.3.0" | ||
367 | + parseurl "~1.3.2" | ||
368 | + path-to-regexp "0.1.7" | ||
369 | + proxy-addr "~2.0.4" | ||
370 | + qs "6.5.2" | ||
371 | + range-parser "~1.2.0" | ||
372 | + safe-buffer "5.1.2" | ||
373 | + send "0.16.2" | ||
374 | + serve-static "1.13.2" | ||
375 | + setprototypeof "1.1.0" | ||
376 | + statuses "~1.4.0" | ||
377 | + type-is "~1.6.16" | ||
378 | + utils-merge "1.0.1" | ||
379 | + vary "~1.1.2" | ||
380 | + | ||
381 | +finalhandler@1.1.1: | ||
382 | + version "1.1.1" | ||
383 | + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" | ||
384 | + integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== | ||
385 | + dependencies: | ||
386 | + debug "2.6.9" | ||
387 | + encodeurl "~1.0.2" | ||
388 | + escape-html "~1.0.3" | ||
389 | + on-finished "~2.3.0" | ||
390 | + parseurl "~1.3.2" | ||
391 | + statuses "~1.4.0" | ||
392 | + unpipe "~1.0.0" | ||
393 | + | ||
394 | +forwarded@~0.1.2: | ||
395 | + version "0.1.2" | ||
396 | + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" | ||
397 | + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= | ||
398 | + | ||
399 | +fresh@0.5.2: | ||
400 | + version "0.5.2" | ||
401 | + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" | ||
402 | + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= | ||
403 | + | ||
404 | +function-bind@^1.1.1: | ||
405 | + version "1.1.1" | ||
406 | + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" | ||
407 | + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== | ||
408 | + | ||
409 | +"graceful-readlink@>= 1.0.0": | ||
410 | + version "1.0.1" | ||
411 | + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" | ||
412 | + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= | ||
413 | + | ||
414 | +has@^1.0.3: | ||
415 | + version "1.0.3" | ||
416 | + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" | ||
417 | + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== | ||
418 | + dependencies: | ||
419 | + function-bind "^1.1.1" | ||
420 | + | ||
421 | +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: | ||
422 | + version "1.6.3" | ||
423 | + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" | ||
424 | + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= | ||
425 | + dependencies: | ||
426 | + depd "~1.1.2" | ||
427 | + inherits "2.0.3" | ||
428 | + setprototypeof "1.1.0" | ||
429 | + statuses ">= 1.4.0 < 2" | ||
430 | + | ||
431 | +iconv-lite@0.4.23: | ||
432 | + version "0.4.23" | ||
433 | + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" | ||
434 | + integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== | ||
435 | + dependencies: | ||
436 | + safer-buffer ">= 2.1.2 < 3" | ||
437 | + | ||
438 | +inherits@2.0.3: | ||
439 | + version "2.0.3" | ||
440 | + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" | ||
441 | + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= | ||
442 | + | ||
443 | +inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: | ||
444 | + version "2.0.4" | ||
445 | + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" | ||
446 | + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== | ||
447 | + | ||
448 | +ipaddr.js@1.9.1: | ||
449 | + version "1.9.1" | ||
450 | + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" | ||
451 | + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== | ||
452 | + | ||
453 | +is-buffer@^1.1.5: | ||
454 | + version "1.1.6" | ||
455 | + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" | ||
456 | + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== | ||
457 | + | ||
458 | +is-expression@^3.0.0: | ||
459 | + version "3.0.0" | ||
460 | + resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f" | ||
461 | + integrity sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8= | ||
462 | + dependencies: | ||
463 | + acorn "~4.0.2" | ||
464 | + object-assign "^4.0.1" | ||
465 | + | ||
466 | +is-promise@^2.0.0: | ||
467 | + version "2.1.0" | ||
468 | + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" | ||
469 | + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= | ||
470 | + | ||
471 | +is-regex@^1.0.3: | ||
472 | + version "1.0.5" | ||
473 | + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" | ||
474 | + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== | ||
475 | + dependencies: | ||
476 | + has "^1.0.3" | ||
477 | + | ||
478 | +isarray@0.0.1: | ||
479 | + version "0.0.1" | ||
480 | + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" | ||
481 | + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= | ||
482 | + | ||
483 | +isarray@~1.0.0: | ||
484 | + version "1.0.0" | ||
485 | + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" | ||
486 | + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= | ||
487 | + | ||
488 | +js-stringify@^1.0.1: | ||
489 | + version "1.0.2" | ||
490 | + resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" | ||
491 | + integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= | ||
492 | + | ||
493 | +jstransformer@1.0.0: | ||
494 | + version "1.0.0" | ||
495 | + resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" | ||
496 | + integrity sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM= | ||
497 | + dependencies: | ||
498 | + is-promise "^2.0.0" | ||
499 | + promise "^7.0.1" | ||
500 | + | ||
501 | +kareem@2.3.1: | ||
502 | + version "2.3.1" | ||
503 | + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.1.tgz#def12d9c941017fabfb00f873af95e9c99e1be87" | ||
504 | + integrity sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw== | ||
505 | + | ||
506 | +kind-of@^3.0.2: | ||
507 | + version "3.2.2" | ||
508 | + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" | ||
509 | + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= | ||
510 | + dependencies: | ||
511 | + is-buffer "^1.1.5" | ||
512 | + | ||
513 | +lazy-cache@^1.0.3: | ||
514 | + version "1.0.4" | ||
515 | + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" | ||
516 | + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= | ||
517 | + | ||
518 | +lodash@^4.17.4: | ||
519 | + version "4.17.15" | ||
520 | + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" | ||
521 | + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== | ||
522 | + | ||
523 | +longest@^1.0.1: | ||
524 | + version "1.0.1" | ||
525 | + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" | ||
526 | + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= | ||
527 | + | ||
528 | +media-typer@0.3.0: | ||
529 | + version "0.3.0" | ||
530 | + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" | ||
531 | + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= | ||
532 | + | ||
533 | +memory-pager@^1.0.2: | ||
534 | + version "1.5.0" | ||
535 | + resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" | ||
536 | + integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== | ||
537 | + | ||
538 | +merge-descriptors@1.0.1: | ||
539 | + version "1.0.1" | ||
540 | + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" | ||
541 | + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= | ||
542 | + | ||
543 | +methods@~1.1.2: | ||
544 | + version "1.1.2" | ||
545 | + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" | ||
546 | + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= | ||
547 | + | ||
548 | +mime-db@1.43.0: | ||
549 | + version "1.43.0" | ||
550 | + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" | ||
551 | + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== | ||
552 | + | ||
553 | +mime-types@~2.1.24: | ||
554 | + version "2.1.26" | ||
555 | + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" | ||
556 | + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== | ||
557 | + dependencies: | ||
558 | + mime-db "1.43.0" | ||
559 | + | ||
560 | +mime@1.4.1: | ||
561 | + version "1.4.1" | ||
562 | + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" | ||
563 | + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== | ||
564 | + | ||
565 | +minimist@^1.2.5: | ||
566 | + version "1.2.5" | ||
567 | + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" | ||
568 | + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== | ||
569 | + | ||
570 | +mkdirp@^0.5.1: | ||
571 | + version "0.5.4" | ||
572 | + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" | ||
573 | + integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== | ||
574 | + dependencies: | ||
575 | + minimist "^1.2.5" | ||
576 | + | ||
577 | +moment@^2.24.0: | ||
578 | + version "2.24.0" | ||
579 | + resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" | ||
580 | + integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== | ||
581 | + | ||
582 | +mongodb@3.5.5: | ||
583 | + version "3.5.5" | ||
584 | + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.5.5.tgz#1334c3e5a384469ac7ef0dea69d59acc829a496a" | ||
585 | + integrity sha512-GCjDxR3UOltDq00Zcpzql6dQo1sVry60OXJY3TDmFc2SWFY6c8Gn1Ardidc5jDirvJrx2GC3knGOImKphbSL3A== | ||
586 | + dependencies: | ||
587 | + bl "^2.2.0" | ||
588 | + bson "^1.1.1" | ||
589 | + denque "^1.4.1" | ||
590 | + require_optional "^1.0.1" | ||
591 | + safe-buffer "^5.1.2" | ||
592 | + optionalDependencies: | ||
593 | + saslprep "^1.0.0" | ||
594 | + | ||
595 | +mongoose-legacy-pluralize@1.0.2: | ||
596 | + version "1.0.2" | ||
597 | + resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" | ||
598 | + integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== | ||
599 | + | ||
600 | +mongoose@^5.9.6: | ||
601 | + version "5.9.6" | ||
602 | + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.9.6.tgz#47e2e234638eede4caa52d961e3a7459b55530ef" | ||
603 | + integrity sha512-EfFGO2QUoenf/4eFeF5y2R8aBLKHtqwrMk1pVGgl3OyNWufP5XLLPIuihP006YqR1+6xM1YsBzGpgBjMZkINGA== | ||
604 | + dependencies: | ||
605 | + bson "~1.1.1" | ||
606 | + kareem "2.3.1" | ||
607 | + mongodb "3.5.5" | ||
608 | + mongoose-legacy-pluralize "1.0.2" | ||
609 | + mpath "0.6.0" | ||
610 | + mquery "3.2.2" | ||
611 | + ms "2.1.2" | ||
612 | + regexp-clone "1.0.0" | ||
613 | + safe-buffer "5.1.2" | ||
614 | + sift "7.0.1" | ||
615 | + sliced "1.0.1" | ||
616 | + | ||
617 | +morgan@~1.9.1: | ||
618 | + version "1.9.1" | ||
619 | + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59" | ||
620 | + integrity sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA== | ||
621 | + dependencies: | ||
622 | + basic-auth "~2.0.0" | ||
623 | + debug "2.6.9" | ||
624 | + depd "~1.1.2" | ||
625 | + on-finished "~2.3.0" | ||
626 | + on-headers "~1.0.1" | ||
627 | + | ||
628 | +mpath@0.6.0: | ||
629 | + version "0.6.0" | ||
630 | + resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.6.0.tgz#aa922029fca4f0f641f360e74c5c1b6a4c47078e" | ||
631 | + integrity sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw== | ||
632 | + | ||
633 | +mquery@3.2.2: | ||
634 | + version "3.2.2" | ||
635 | + resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.2.tgz#e1383a3951852ce23e37f619a9b350f1fb3664e7" | ||
636 | + integrity sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q== | ||
637 | + dependencies: | ||
638 | + bluebird "3.5.1" | ||
639 | + debug "3.1.0" | ||
640 | + regexp-clone "^1.0.0" | ||
641 | + safe-buffer "5.1.2" | ||
642 | + sliced "1.0.1" | ||
643 | + | ||
644 | +ms@2.0.0: | ||
645 | + version "2.0.0" | ||
646 | + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" | ||
647 | + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= | ||
648 | + | ||
649 | +ms@2.1.2: | ||
650 | + version "2.1.2" | ||
651 | + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" | ||
652 | + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== | ||
653 | + | ||
654 | +multer@^1.4.2: | ||
655 | + version "1.4.2" | ||
656 | + resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.2.tgz#2f1f4d12dbaeeba74cb37e623f234bf4d3d2057a" | ||
657 | + integrity sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg== | ||
658 | + dependencies: | ||
659 | + append-field "^1.0.0" | ||
660 | + busboy "^0.2.11" | ||
661 | + concat-stream "^1.5.2" | ||
662 | + mkdirp "^0.5.1" | ||
663 | + object-assign "^4.1.1" | ||
664 | + on-finished "^2.3.0" | ||
665 | + type-is "^1.6.4" | ||
666 | + xtend "^4.0.0" | ||
667 | + | ||
668 | +negotiator@0.6.2: | ||
669 | + version "0.6.2" | ||
670 | + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" | ||
671 | + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== | ||
672 | + | ||
673 | +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: | ||
674 | + version "4.1.1" | ||
675 | + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" | ||
676 | + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= | ||
677 | + | ||
678 | +on-finished@^2.3.0, on-finished@~2.3.0: | ||
679 | + version "2.3.0" | ||
680 | + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" | ||
681 | + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= | ||
682 | + dependencies: | ||
683 | + ee-first "1.1.1" | ||
684 | + | ||
685 | +on-headers@~1.0.1: | ||
686 | + version "1.0.2" | ||
687 | + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" | ||
688 | + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== | ||
689 | + | ||
690 | +parseurl@~1.3.2: | ||
691 | + version "1.3.3" | ||
692 | + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" | ||
693 | + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== | ||
694 | + | ||
695 | +path-parse@^1.0.6: | ||
696 | + version "1.0.6" | ||
697 | + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" | ||
698 | + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== | ||
699 | + | ||
700 | +path-to-regexp@0.1.7: | ||
701 | + version "0.1.7" | ||
702 | + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" | ||
703 | + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= | ||
704 | + | ||
705 | +process-nextick-args@~2.0.0: | ||
706 | + version "2.0.1" | ||
707 | + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" | ||
708 | + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== | ||
709 | + | ||
710 | +promise@^7.0.1: | ||
711 | + version "7.3.1" | ||
712 | + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" | ||
713 | + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== | ||
714 | + dependencies: | ||
715 | + asap "~2.0.3" | ||
716 | + | ||
717 | +proxy-addr@~2.0.4: | ||
718 | + version "2.0.6" | ||
719 | + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" | ||
720 | + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== | ||
721 | + dependencies: | ||
722 | + forwarded "~0.1.2" | ||
723 | + ipaddr.js "1.9.1" | ||
724 | + | ||
725 | +pug-attrs@^2.0.2: | ||
726 | + version "2.0.4" | ||
727 | + resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz#b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336" | ||
728 | + integrity sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ== | ||
729 | + dependencies: | ||
730 | + constantinople "^3.0.1" | ||
731 | + js-stringify "^1.0.1" | ||
732 | + pug-runtime "^2.0.5" | ||
733 | + | ||
734 | +pug-code-gen@^1.1.1: | ||
735 | + version "1.1.1" | ||
736 | + resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-1.1.1.tgz#1cf72744ef2a039eae6a3340caaa1105871258e8" | ||
737 | + integrity sha1-HPcnRO8qA56uajNAyqoRBYcSWOg= | ||
738 | + dependencies: | ||
739 | + constantinople "^3.0.1" | ||
740 | + doctypes "^1.1.0" | ||
741 | + js-stringify "^1.0.1" | ||
742 | + pug-attrs "^2.0.2" | ||
743 | + pug-error "^1.3.2" | ||
744 | + pug-runtime "^2.0.3" | ||
745 | + void-elements "^2.0.1" | ||
746 | + with "^5.0.0" | ||
747 | + | ||
748 | +pug-error@^1.3.2, pug-error@^1.3.3: | ||
749 | + version "1.3.3" | ||
750 | + resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz#f342fb008752d58034c185de03602dd9ffe15fa6" | ||
751 | + integrity sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ== | ||
752 | + | ||
753 | +pug-filters@^2.1.1: | ||
754 | + version "2.1.5" | ||
755 | + resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-2.1.5.tgz#66bf6e80d97fbef829bab0aa35eddff33fc964f3" | ||
756 | + integrity sha512-xkw71KtrC4sxleKiq+cUlQzsiLn8pM5+vCgkChW2E6oNOzaqTSIBKIQ5cl4oheuDzvJYCTSYzRaVinMUrV4YLQ== | ||
757 | + dependencies: | ||
758 | + clean-css "^3.3.0" | ||
759 | + constantinople "^3.0.1" | ||
760 | + jstransformer "1.0.0" | ||
761 | + pug-error "^1.3.2" | ||
762 | + pug-walk "^1.1.5" | ||
763 | + resolve "^1.1.6" | ||
764 | + uglify-js "^2.6.1" | ||
765 | + | ||
766 | +pug-lexer@^3.0.0: | ||
767 | + version "3.1.0" | ||
768 | + resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-3.1.0.tgz#fd087376d4a675b4f59f8fef422883434e9581a2" | ||
769 | + integrity sha1-/QhzdtSmdbT1n4/vQiiDQ06VgaI= | ||
770 | + dependencies: | ||
771 | + character-parser "^2.1.1" | ||
772 | + is-expression "^3.0.0" | ||
773 | + pug-error "^1.3.2" | ||
774 | + | ||
775 | +pug-linker@^2.0.2: | ||
776 | + version "2.0.3" | ||
777 | + resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-2.0.3.tgz#b331ffa25737dde69c127b56c10ff17fae766dca" | ||
778 | + integrity sha1-szH/olc33eacEntWwQ/xf652bco= | ||
779 | + dependencies: | ||
780 | + pug-error "^1.3.2" | ||
781 | + pug-walk "^1.1.2" | ||
782 | + | ||
783 | +pug-load@^2.0.5: | ||
784 | + version "2.0.12" | ||
785 | + resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz#d38c85eb85f6e2f704dea14dcca94144d35d3e7b" | ||
786 | + integrity sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg== | ||
787 | + dependencies: | ||
788 | + object-assign "^4.1.0" | ||
789 | + pug-walk "^1.1.8" | ||
790 | + | ||
791 | +pug-parser@^2.0.2: | ||
792 | + version "2.0.2" | ||
793 | + resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-2.0.2.tgz#53a680cfd05039dcb0c27d029094bc4a792689b0" | ||
794 | + integrity sha1-U6aAz9BQOdywwn0CkJS8SnkmibA= | ||
795 | + dependencies: | ||
796 | + pug-error "^1.3.2" | ||
797 | + token-stream "0.0.1" | ||
798 | + | ||
799 | +pug-runtime@^2.0.3, pug-runtime@^2.0.5: | ||
800 | + version "2.0.5" | ||
801 | + resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz#6da7976c36bf22f68e733c359240d8ae7a32953a" | ||
802 | + integrity sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw== | ||
803 | + | ||
804 | +pug-strip-comments@^1.0.2: | ||
805 | + version "1.0.4" | ||
806 | + resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz#cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8" | ||
807 | + integrity sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw== | ||
808 | + dependencies: | ||
809 | + pug-error "^1.3.3" | ||
810 | + | ||
811 | +pug-walk@^1.1.2, pug-walk@^1.1.5, pug-walk@^1.1.8: | ||
812 | + version "1.1.8" | ||
813 | + resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz#b408f67f27912f8c21da2f45b7230c4bd2a5ea7a" | ||
814 | + integrity sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA== | ||
815 | + | ||
816 | +pug@2.0.0-beta11: | ||
817 | + version "2.0.0-beta11" | ||
818 | + resolved "https://registry.yarnpkg.com/pug/-/pug-2.0.0-beta11.tgz#15abe6af5004c7e2cf4613e4b27465c9546b5f01" | ||
819 | + integrity sha1-Favmr1AEx+LPRhPksnRlyVRrXwE= | ||
820 | + dependencies: | ||
821 | + pug-code-gen "^1.1.1" | ||
822 | + pug-filters "^2.1.1" | ||
823 | + pug-lexer "^3.0.0" | ||
824 | + pug-linker "^2.0.2" | ||
825 | + pug-load "^2.0.5" | ||
826 | + pug-parser "^2.0.2" | ||
827 | + pug-runtime "^2.0.3" | ||
828 | + pug-strip-comments "^1.0.2" | ||
829 | + | ||
830 | +qs@6.5.2: | ||
831 | + version "6.5.2" | ||
832 | + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" | ||
833 | + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== | ||
834 | + | ||
835 | +range-parser@~1.2.0: | ||
836 | + version "1.2.1" | ||
837 | + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" | ||
838 | + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== | ||
839 | + | ||
840 | +raw-body@2.3.3: | ||
841 | + version "2.3.3" | ||
842 | + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" | ||
843 | + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== | ||
844 | + dependencies: | ||
845 | + bytes "3.0.0" | ||
846 | + http-errors "1.6.3" | ||
847 | + iconv-lite "0.4.23" | ||
848 | + unpipe "1.0.0" | ||
849 | + | ||
850 | +readable-stream@1.1.x: | ||
851 | + version "1.1.14" | ||
852 | + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" | ||
853 | + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= | ||
854 | + dependencies: | ||
855 | + core-util-is "~1.0.0" | ||
856 | + inherits "~2.0.1" | ||
857 | + isarray "0.0.1" | ||
858 | + string_decoder "~0.10.x" | ||
859 | + | ||
860 | +readable-stream@^2.2.2, readable-stream@^2.3.5: | ||
861 | + version "2.3.7" | ||
862 | + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" | ||
863 | + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== | ||
864 | + dependencies: | ||
865 | + core-util-is "~1.0.0" | ||
866 | + inherits "~2.0.3" | ||
867 | + isarray "~1.0.0" | ||
868 | + process-nextick-args "~2.0.0" | ||
869 | + safe-buffer "~5.1.1" | ||
870 | + string_decoder "~1.1.1" | ||
871 | + util-deprecate "~1.0.1" | ||
872 | + | ||
873 | +regenerator-runtime@^0.11.0: | ||
874 | + version "0.11.1" | ||
875 | + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" | ||
876 | + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== | ||
877 | + | ||
878 | +regexp-clone@1.0.0, regexp-clone@^1.0.0: | ||
879 | + version "1.0.0" | ||
880 | + resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" | ||
881 | + integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== | ||
882 | + | ||
883 | +repeat-string@^1.5.2: | ||
884 | + version "1.6.1" | ||
885 | + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" | ||
886 | + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= | ||
887 | + | ||
888 | +require_optional@^1.0.1: | ||
889 | + version "1.0.1" | ||
890 | + resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" | ||
891 | + integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== | ||
892 | + dependencies: | ||
893 | + resolve-from "^2.0.0" | ||
894 | + semver "^5.1.0" | ||
895 | + | ||
896 | +resolve-from@^2.0.0: | ||
897 | + version "2.0.0" | ||
898 | + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" | ||
899 | + integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= | ||
900 | + | ||
901 | +resolve@^1.1.6: | ||
902 | + version "1.15.1" | ||
903 | + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" | ||
904 | + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== | ||
905 | + dependencies: | ||
906 | + path-parse "^1.0.6" | ||
907 | + | ||
908 | +right-align@^0.1.1: | ||
909 | + version "0.1.3" | ||
910 | + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" | ||
911 | + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= | ||
912 | + dependencies: | ||
913 | + align-text "^0.1.1" | ||
914 | + | ||
915 | +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: | ||
916 | + version "5.1.2" | ||
917 | + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" | ||
918 | + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== | ||
919 | + | ||
920 | +safe-buffer@^5.1.1, safe-buffer@^5.1.2: | ||
921 | + version "5.2.0" | ||
922 | + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" | ||
923 | + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== | ||
924 | + | ||
925 | +"safer-buffer@>= 2.1.2 < 3": | ||
926 | + version "2.1.2" | ||
927 | + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" | ||
928 | + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== | ||
929 | + | ||
930 | +saslprep@^1.0.0: | ||
931 | + version "1.0.3" | ||
932 | + resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" | ||
933 | + integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== | ||
934 | + dependencies: | ||
935 | + sparse-bitfield "^3.0.3" | ||
936 | + | ||
937 | +semver@^5.1.0: | ||
938 | + version "5.7.1" | ||
939 | + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" | ||
940 | + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== | ||
941 | + | ||
942 | +send@0.16.2: | ||
943 | + version "0.16.2" | ||
944 | + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" | ||
945 | + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== | ||
946 | + dependencies: | ||
947 | + debug "2.6.9" | ||
948 | + depd "~1.1.2" | ||
949 | + destroy "~1.0.4" | ||
950 | + encodeurl "~1.0.2" | ||
951 | + escape-html "~1.0.3" | ||
952 | + etag "~1.8.1" | ||
953 | + fresh "0.5.2" | ||
954 | + http-errors "~1.6.2" | ||
955 | + mime "1.4.1" | ||
956 | + ms "2.0.0" | ||
957 | + on-finished "~2.3.0" | ||
958 | + range-parser "~1.2.0" | ||
959 | + statuses "~1.4.0" | ||
960 | + | ||
961 | +serve-static@1.13.2: | ||
962 | + version "1.13.2" | ||
963 | + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" | ||
964 | + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== | ||
965 | + dependencies: | ||
966 | + encodeurl "~1.0.2" | ||
967 | + escape-html "~1.0.3" | ||
968 | + parseurl "~1.3.2" | ||
969 | + send "0.16.2" | ||
970 | + | ||
971 | +setprototypeof@1.1.0: | ||
972 | + version "1.1.0" | ||
973 | + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" | ||
974 | + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== | ||
975 | + | ||
976 | +sift@7.0.1: | ||
977 | + version "7.0.1" | ||
978 | + resolved "https://registry.yarnpkg.com/sift/-/sift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08" | ||
979 | + integrity sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g== | ||
980 | + | ||
981 | +sliced@1.0.1: | ||
982 | + version "1.0.1" | ||
983 | + resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" | ||
984 | + integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= | ||
985 | + | ||
986 | +source-map@0.4.x: | ||
987 | + version "0.4.4" | ||
988 | + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" | ||
989 | + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= | ||
990 | + dependencies: | ||
991 | + amdefine ">=0.0.4" | ||
992 | + | ||
993 | +source-map@~0.5.1: | ||
994 | + version "0.5.7" | ||
995 | + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" | ||
996 | + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= | ||
997 | + | ||
998 | +sparse-bitfield@^3.0.3: | ||
999 | + version "3.0.3" | ||
1000 | + resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" | ||
1001 | + integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE= | ||
1002 | + dependencies: | ||
1003 | + memory-pager "^1.0.2" | ||
1004 | + | ||
1005 | +"statuses@>= 1.4.0 < 2": | ||
1006 | + version "1.5.0" | ||
1007 | + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" | ||
1008 | + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= | ||
1009 | + | ||
1010 | +statuses@~1.4.0: | ||
1011 | + version "1.4.0" | ||
1012 | + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" | ||
1013 | + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== | ||
1014 | + | ||
1015 | +streamsearch@0.1.2: | ||
1016 | + version "0.1.2" | ||
1017 | + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" | ||
1018 | + integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= | ||
1019 | + | ||
1020 | +string_decoder@~0.10.x: | ||
1021 | + version "0.10.31" | ||
1022 | + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" | ||
1023 | + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= | ||
1024 | + | ||
1025 | +string_decoder@~1.1.1: | ||
1026 | + version "1.1.1" | ||
1027 | + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" | ||
1028 | + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== | ||
1029 | + dependencies: | ||
1030 | + safe-buffer "~5.1.0" | ||
1031 | + | ||
1032 | +to-fast-properties@^1.0.3: | ||
1033 | + version "1.0.3" | ||
1034 | + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" | ||
1035 | + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= | ||
1036 | + | ||
1037 | +token-stream@0.0.1: | ||
1038 | + version "0.0.1" | ||
1039 | + resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" | ||
1040 | + integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= | ||
1041 | + | ||
1042 | +type-is@^1.6.4, type-is@~1.6.16: | ||
1043 | + version "1.6.18" | ||
1044 | + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" | ||
1045 | + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== | ||
1046 | + dependencies: | ||
1047 | + media-typer "0.3.0" | ||
1048 | + mime-types "~2.1.24" | ||
1049 | + | ||
1050 | +typedarray@^0.0.6: | ||
1051 | + version "0.0.6" | ||
1052 | + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" | ||
1053 | + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= | ||
1054 | + | ||
1055 | +uglify-js@^2.6.1: | ||
1056 | + version "2.8.29" | ||
1057 | + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" | ||
1058 | + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= | ||
1059 | + dependencies: | ||
1060 | + source-map "~0.5.1" | ||
1061 | + yargs "~3.10.0" | ||
1062 | + optionalDependencies: | ||
1063 | + uglify-to-browserify "~1.0.0" | ||
1064 | + | ||
1065 | +uglify-to-browserify@~1.0.0: | ||
1066 | + version "1.0.2" | ||
1067 | + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" | ||
1068 | + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= | ||
1069 | + | ||
1070 | +unpipe@1.0.0, unpipe@~1.0.0: | ||
1071 | + version "1.0.0" | ||
1072 | + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" | ||
1073 | + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= | ||
1074 | + | ||
1075 | +util-deprecate@~1.0.1: | ||
1076 | + version "1.0.2" | ||
1077 | + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" | ||
1078 | + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= | ||
1079 | + | ||
1080 | +utils-merge@1.0.1: | ||
1081 | + version "1.0.1" | ||
1082 | + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" | ||
1083 | + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= | ||
1084 | + | ||
1085 | +vary@^1, vary@~1.1.2: | ||
1086 | + version "1.1.2" | ||
1087 | + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" | ||
1088 | + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= | ||
1089 | + | ||
1090 | +void-elements@^2.0.1: | ||
1091 | + version "2.0.1" | ||
1092 | + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" | ||
1093 | + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= | ||
1094 | + | ||
1095 | +window-size@0.1.0: | ||
1096 | + version "0.1.0" | ||
1097 | + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" | ||
1098 | + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= | ||
1099 | + | ||
1100 | +with@^5.0.0: | ||
1101 | + version "5.1.1" | ||
1102 | + resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe" | ||
1103 | + integrity sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4= | ||
1104 | + dependencies: | ||
1105 | + acorn "^3.1.0" | ||
1106 | + acorn-globals "^3.0.0" | ||
1107 | + | ||
1108 | +wordwrap@0.0.2: | ||
1109 | + version "0.0.2" | ||
1110 | + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" | ||
1111 | + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= | ||
1112 | + | ||
1113 | +xtend@^4.0.0: | ||
1114 | + version "4.0.2" | ||
1115 | + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" | ||
1116 | + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== | ||
1117 | + | ||
1118 | +yargs@~3.10.0: | ||
1119 | + version "3.10.0" | ||
1120 | + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" | ||
1121 | + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= | ||
1122 | + dependencies: | ||
1123 | + camelcase "^1.0.2" | ||
1124 | + cliui "^2.1.0" | ||
1125 | + decamelize "^1.0.0" | ||
1126 | + window-size "0.1.0" |
web/frontend/README.md
0 → 100644
1 | +# frontend | ||
2 | + | ||
3 | +## Project setup | ||
4 | +``` | ||
5 | +yarn install | ||
6 | +``` | ||
7 | + | ||
8 | +### Compiles and hot-reloads for development | ||
9 | +``` | ||
10 | +yarn serve | ||
11 | +``` | ||
12 | + | ||
13 | +### Compiles and minifies for production | ||
14 | +``` | ||
15 | +yarn build | ||
16 | +``` | ||
17 | + | ||
18 | +### Lints and fixes files | ||
19 | +``` | ||
20 | +yarn lint | ||
21 | +``` | ||
22 | + | ||
23 | +### Customize configuration | ||
24 | +See [Configuration Reference](https://cli.vuejs.org/config/). |
web/frontend/babel.config.js
0 → 100644
web/frontend/package.json
0 → 100644
1 | +{ | ||
2 | + "name": "frontend", | ||
3 | + "version": "0.1.0", | ||
4 | + "private": true, | ||
5 | + "scripts": { | ||
6 | + "serve": "vue-cli-service serve", | ||
7 | + "build": "vue-cli-service build", | ||
8 | + "lint": "vue-cli-service lint" | ||
9 | + }, | ||
10 | + "dependencies": { | ||
11 | + "@mdi/font": "^5.0.45", | ||
12 | + "axios": "^0.19.2", | ||
13 | + "core-js": "^3.6.4", | ||
14 | + "filepond": "^4.13.0", | ||
15 | + "filepond-plugin-file-validate-type": "^1.2.5", | ||
16 | + "filepond-plugin-image-preview": "^4.6.1", | ||
17 | + "moment": "^2.24.0", | ||
18 | + "roboto-fontface": "*", | ||
19 | + "vee-validate": "^3.2.5", | ||
20 | + "vue": "^2.6.11", | ||
21 | + "vue-filepond": "^6.0.2", | ||
22 | + "vue-infinite-scroll": "^2.0.2", | ||
23 | + "vue-router": "^3.1.5", | ||
24 | + "vue-video-player": "^5.0.2", | ||
25 | + "vuetify": "^2.2.11", | ||
26 | + "vuex": "^3.1.2" | ||
27 | + }, | ||
28 | + "devDependencies": { | ||
29 | + "@vue/cli-plugin-babel": "~4.2.0", | ||
30 | + "@vue/cli-plugin-eslint": "~4.2.0", | ||
31 | + "@vue/cli-plugin-router": "~4.2.0", | ||
32 | + "@vue/cli-plugin-vuex": "~4.2.0", | ||
33 | + "@vue/cli-service": "~4.2.0", | ||
34 | + "@vue/eslint-config-prettier": "^6.0.0", | ||
35 | + "babel-eslint": "^10.0.3", | ||
36 | + "eslint": "^6.7.2", | ||
37 | + "eslint-plugin-prettier": "^3.1.1", | ||
38 | + "eslint-plugin-vue": "^6.1.2", | ||
39 | + "node-sass": "^4.12.0", | ||
40 | + "prettier": "^1.19.1", | ||
41 | + "sass": "^1.19.0", | ||
42 | + "sass-loader": "^8.0.2", | ||
43 | + "vue-cli-plugin-vuetify": "~2.0.5", | ||
44 | + "vue-template-compiler": "^2.6.11", | ||
45 | + "vuetify-loader": "^1.3.0" | ||
46 | + }, | ||
47 | + "eslintConfig": { | ||
48 | + "root": true, | ||
49 | + "env": { | ||
50 | + "node": true | ||
51 | + }, | ||
52 | + "extends": [ | ||
53 | + "plugin:vue/essential", | ||
54 | + "eslint:recommended", | ||
55 | + "@vue/prettier" | ||
56 | + ], | ||
57 | + "parserOptions": { | ||
58 | + "parser": "babel-eslint" | ||
59 | + }, | ||
60 | + "rules": {} | ||
61 | + }, | ||
62 | + "browserslist": [ | ||
63 | + "> 1%", | ||
64 | + "last 2 versions" | ||
65 | + ] | ||
66 | +} |
web/frontend/public/favicon.ico
0 → 100644
No preview for this file type
web/frontend/public/index.html
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html lang="ko"> | ||
3 | + <head> | ||
4 | + <meta charset="utf-8"> | ||
5 | + <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
6 | + <meta name="viewport" content="width=device-width,initial-scale=1.0"> | ||
7 | + <link rel="icon" href="<%= BASE_URL %>favicon.ico"> | ||
8 | + <title><%= htmlWebpackPlugin.options.title %></title> | ||
9 | + </head> | ||
10 | + <body> | ||
11 | + <noscript> | ||
12 | + <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> | ||
13 | + </noscript> | ||
14 | + <div id="app"></div> | ||
15 | + <!-- built files will be auto injected --> | ||
16 | + </body> | ||
17 | +</html> |
web/frontend/src/App.vue
0 → 100644
1 | +<template> | ||
2 | + <v-app> | ||
3 | + <v-app-bar app color="#ffffff" elevation="1"> | ||
4 | + <v-tabs grow v-model="tab"> | ||
5 | + <v-tab @click="$router.push('/')">Home</v-tab> | ||
6 | + <v-tab @click="$router.push('/upload')">Upload</v-tab> | ||
7 | + </v-tabs> | ||
8 | + </v-app-bar> | ||
9 | + <v-content> | ||
10 | + <router-view /> | ||
11 | + </v-content> | ||
12 | + <v-footer> | ||
13 | + <v-row justify="center" @click="exDialog = true"> | ||
14 | + <v-avatar size="25" tile style="border-radius: 4px"> | ||
15 | + <v-img src="./assets/logo.png"></v-img> | ||
16 | + </v-avatar> | ||
17 | + <div> | ||
18 | + <span | ||
19 | + style="margin-left: 2px; font-size: 15px; color: #5a5a5a; font-weight: 400" | ||
20 | + > | ||
21 | + Profit-Hunter | ||
22 | + </span> | ||
23 | + <div | ||
24 | + style="margin-left: 4px; margin-top: -1px; font-size: 10px; color: #888; font-weight: 400" | ||
25 | + > | ||
26 | + Used OpenSource | ||
27 | + </div> | ||
28 | + </div> | ||
29 | + </v-row> | ||
30 | + </v-footer> | ||
31 | + </v-app> | ||
32 | +</template> | ||
33 | + | ||
34 | +<script> | ||
35 | +export default { | ||
36 | + name: "App", | ||
37 | + | ||
38 | + data: () => ({ | ||
39 | + tab: null, | ||
40 | + search: "", | ||
41 | + exDialog: false | ||
42 | + }), | ||
43 | + mounted() { | ||
44 | + console.log(window.location.href.substring(22)); | ||
45 | + if (window.location.href.substring(22) === "") { | ||
46 | + this.tab = 0; | ||
47 | + } else if (window.location.href.substring(22) === "upload") { | ||
48 | + this.tab = 1; | ||
49 | + } else { | ||
50 | + this.tab = null; | ||
51 | + } | ||
52 | + } | ||
53 | +}; | ||
54 | +</script> |
web/frontend/src/assets/logo.png
0 → 100644
87.3 KB
web/frontend/src/assets/logo.svg
0 → 100644
1 | +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 87.5 100"><defs><style>.cls-1{fill:#1697f6;}.cls-2{fill:#7bc6ff;}.cls-3{fill:#1867c0;}.cls-4{fill:#aeddff;}</style></defs><title>Artboard 46</title><polyline class="cls-1" points="43.75 0 23.31 0 43.75 48.32"/><polygon class="cls-2" points="43.75 62.5 43.75 100 0 14.58 22.92 14.58 43.75 62.5"/><polyline class="cls-3" points="43.75 0 64.19 0 43.75 48.32"/><polygon class="cls-4" points="64.58 14.58 87.5 14.58 43.75 100 43.75 62.5 64.58 14.58"/></svg> |
web/frontend/src/components/uploadFile.vue
0 → 100644
1 | +<template> | ||
2 | + <div> | ||
3 | + <file-pond | ||
4 | + name="bin" | ||
5 | + ref="pond" | ||
6 | + allow-multiple="false" | ||
7 | + max-files="1" | ||
8 | + :server="server" | ||
9 | + v-bind:files="myFiles" | ||
10 | + v-on:init="handleFilePondInit" | ||
11 | + v-on:processfile="onload" | ||
12 | + /> | ||
13 | + </div> | ||
14 | +</template> | ||
15 | + | ||
16 | +<script> | ||
17 | +// Import Vue FilePond | ||
18 | +import vueFilePond from "vue-filepond"; | ||
19 | + | ||
20 | +// Import FilePond styles | ||
21 | +import "filepond/dist/filepond.min.css"; | ||
22 | + | ||
23 | +// Import FilePond plugins | ||
24 | +// Please note that you need to install these plugins separately | ||
25 | + | ||
26 | +// Import image preview plugin styles | ||
27 | +import "filepond-plugin-image-preview/dist/filepond-plugin-image-preview.min.css"; | ||
28 | + | ||
29 | +// Import image preview and file type validation plugins | ||
30 | +import FilePondPluginFileValidateType from "filepond-plugin-file-validate-type"; | ||
31 | +import FilePondPluginImagePreview from "filepond-plugin-image-preview"; | ||
32 | + | ||
33 | +// Create component | ||
34 | +const FilePond = vueFilePond( | ||
35 | + FilePondPluginFileValidateType, | ||
36 | + FilePondPluginImagePreview | ||
37 | +); | ||
38 | + | ||
39 | +export default { | ||
40 | + name: "app", | ||
41 | + data() { | ||
42 | + return { | ||
43 | + myFiles: [], | ||
44 | + server: { | ||
45 | + url: `${this.$apiRootPath}upload/video`, | ||
46 | + process: {} | ||
47 | + } | ||
48 | + }; | ||
49 | + }, | ||
50 | + methods: { | ||
51 | + handleFilePondInit() { | ||
52 | + console.log("FilePond has initialized"); | ||
53 | + // FilePond instance methods are available on `this.$refs.pond` | ||
54 | + }, | ||
55 | + onload(e, r) { | ||
56 | + console.log(r); | ||
57 | + // this.$store.dispatch(r); | ||
58 | + } | ||
59 | + }, | ||
60 | + components: { | ||
61 | + FilePond | ||
62 | + } | ||
63 | +}; | ||
64 | +</script> |
web/frontend/src/main.js
0 → 100644
1 | +import Vue from "vue"; | ||
2 | +import App from "./App.vue"; | ||
3 | +import router from "./router"; | ||
4 | +import store from "./store"; | ||
5 | +import vuetify from "./plugins/vuetify"; | ||
6 | +import "roboto-fontface/css/roboto/roboto-fontface.css"; | ||
7 | +import "@mdi/font/css/materialdesignicons.css"; | ||
8 | +import * as VeeValidate from "vee-validate"; | ||
9 | +import "./vee-validate"; | ||
10 | +import infiniteScroll from "vue-infinite-scroll"; | ||
11 | + | ||
12 | +Vue.config.productionTip = false; | ||
13 | +Vue.use(infiniteScroll); | ||
14 | +Vue.use(VeeValidate); | ||
15 | + | ||
16 | +new Vue({ | ||
17 | + router, | ||
18 | + store, | ||
19 | + vuetify, | ||
20 | + render: h => h(App) | ||
21 | +}).$mount("#app"); |
web/frontend/src/plugins/vuetify.js
0 → 100644
1 | +import Vue from "vue"; | ||
2 | +import Vuetify from "vuetify/lib"; | ||
3 | +import ko from "vuetify/es5/locale/ko"; | ||
4 | + | ||
5 | +Vue.use(Vuetify); | ||
6 | + | ||
7 | +export default new Vuetify({ | ||
8 | + theme: { | ||
9 | + options: { | ||
10 | + customProperties: true | ||
11 | + }, | ||
12 | + themes: { | ||
13 | + light: { | ||
14 | + primary: "#7DC1E8", | ||
15 | + secondary: "#EBC478", | ||
16 | + accent: "#82B1FF", | ||
17 | + error: "#FF5252", | ||
18 | + info: "#2196F3", | ||
19 | + success: "#4CAF50", | ||
20 | + warning: "#FFC107", | ||
21 | + grey300: "#eceeef", | ||
22 | + grey500: "#aaaaaa", | ||
23 | + grey700: "#5a5a5a", | ||
24 | + grey900: "#212529" | ||
25 | + } | ||
26 | + } | ||
27 | + }, | ||
28 | + lang: { | ||
29 | + locales: { ko }, | ||
30 | + current: "ko" | ||
31 | + } | ||
32 | +}); |
web/frontend/src/router/index.js
0 → 100644
1 | +import Vue from "vue"; | ||
2 | +import VueRouter from "vue-router"; | ||
3 | +import axios from "axios"; | ||
4 | +Vue.prototype.$axios = axios; | ||
5 | +const apiRootPath = | ||
6 | + process.env.NODE_ENV !== "production" | ||
7 | + ? "http://localhost:3000/api/" | ||
8 | + : "/api/"; | ||
9 | +Vue.prototype.$apiRootPath = apiRootPath; | ||
10 | +axios.defaults.baseURL = apiRootPath; | ||
11 | + | ||
12 | +Vue.use(VueRouter); | ||
13 | + | ||
14 | +const routes = [ | ||
15 | + { | ||
16 | + path: "/", | ||
17 | + name: "Home", | ||
18 | + component: () => import("../views/Home.vue") | ||
19 | + }, | ||
20 | + { | ||
21 | + path: "/upload", | ||
22 | + name: "upload", | ||
23 | + component: () => import("../views/Upload.vue") | ||
24 | + } | ||
25 | +]; | ||
26 | + | ||
27 | +const router = new VueRouter({ | ||
28 | + mode: "history", | ||
29 | + base: process.env.BASE_URL, | ||
30 | + routes | ||
31 | +}); | ||
32 | + | ||
33 | +export default router; |
web/frontend/src/store/index.js
0 → 100644
1 | +import Vue from "vue"; | ||
2 | +import Vuex from "vuex"; | ||
3 | + | ||
4 | +Vue.use(Vuex); | ||
5 | + | ||
6 | +export default new Vuex.Store({ | ||
7 | + state: { | ||
8 | + tags: [] | ||
9 | + }, | ||
10 | + mutations: { | ||
11 | + setTags(state, tags) { | ||
12 | + state.tags = tags; | ||
13 | + } | ||
14 | + }, | ||
15 | + getters: { | ||
16 | + getTags: state => { | ||
17 | + return state.tags; | ||
18 | + } | ||
19 | + }, | ||
20 | + actions: { | ||
21 | + commitSetTags: context => { | ||
22 | + return context.commit("setTags"); | ||
23 | + } | ||
24 | + }, | ||
25 | + modules: {} | ||
26 | +}); |
web/frontend/src/vee-validate.js
0 → 100644
1 | +import { required, max, min } from "vee-validate/dist/rules"; | ||
2 | +import { extend } from "vee-validate"; | ||
3 | + | ||
4 | +extend("required", { | ||
5 | + ...required, | ||
6 | + message: "This field is required" | ||
7 | +}); | ||
8 | + | ||
9 | +extend("max", { | ||
10 | + ...max, | ||
11 | + message: "This field must be {length} characters or less" | ||
12 | +}); | ||
13 | + | ||
14 | +extend("min", { | ||
15 | + ...min, | ||
16 | + message: "This field must have at least {length} characters" | ||
17 | +}); |
web/frontend/src/views/Home.vue
0 → 100644
1 | +<template> | ||
2 | + <v-sheet> | ||
3 | + <!-- autocomplete에 저장된 tag 넣어서(동영상 업로드 할 때마다 tag가 저장됨) 자동완성 되게끔.--> | ||
4 | + <v-text-field | ||
5 | + class="mx-10 mt-4 mb-5" | ||
6 | + prepend-inner-icon="mdi-shape" | ||
7 | + v-model="search" | ||
8 | + label="Tag" | ||
9 | + placeholder="Search Tag" | ||
10 | + type="text" | ||
11 | + > | ||
12 | + </v-text-field> | ||
13 | + <!-- 동영상 리스트 --> | ||
14 | + <v-layout justify-center> | ||
15 | + <v-row class="mx-5"> | ||
16 | + <v-flex | ||
17 | + xs12 | ||
18 | + sm6 | ||
19 | + v-for="(post, index) in postList" | ||
20 | + :key="index" | ||
21 | + class="mx-0" | ||
22 | + > | ||
23 | + <v-card class="mx-2 my-1"> | ||
24 | + <div>{{ post.title }}1</div> | ||
25 | + </v-card> | ||
26 | + </v-flex> | ||
27 | + </v-row> | ||
28 | + </v-layout> | ||
29 | + </v-sheet> | ||
30 | +</template> | ||
31 | +<script> | ||
32 | +// @ is an alias to /src | ||
33 | +export default { | ||
34 | + name: "Home", | ||
35 | + components: {}, | ||
36 | + data() { | ||
37 | + return { | ||
38 | + postList: [], | ||
39 | + search: "", | ||
40 | + params: { | ||
41 | + tag: ["", ""], | ||
42 | + skip: 0 | ||
43 | + } | ||
44 | + }; | ||
45 | + }, | ||
46 | + mounted() { | ||
47 | + this.getPost(); | ||
48 | + }, | ||
49 | + methods: { | ||
50 | + getPost() { | ||
51 | + this.$axios | ||
52 | + .get("/home/list", { params: this.params }) | ||
53 | + .then(r => { | ||
54 | + this.postList = r.data.d; | ||
55 | + console.log(this.postList); | ||
56 | + }) | ||
57 | + .catch(e => { | ||
58 | + console.log(e); | ||
59 | + }); | ||
60 | + } | ||
61 | + } | ||
62 | +}; | ||
63 | +</script> |
web/frontend/src/views/Upload.vue
0 → 100644
1 | +<template> | ||
2 | + <v-sheet> | ||
3 | + <v-layout justify-center> | ||
4 | + <v-flex xs12 sm8 md6> | ||
5 | + <v-row justify="center" class="mx-0 mt-10"> | ||
6 | + <v-icon color="grey500">mdi-power-on</v-icon> | ||
7 | + <div | ||
8 | + style="text-align: center; font-size: 22px; font-weight: 400; color: #343a40; " | ||
9 | + > | ||
10 | + Upload Video | ||
11 | + </div> | ||
12 | + <v-icon color="grey500">mdi-power-on</v-icon> | ||
13 | + </v-row> | ||
14 | + <v-card elevation="0"> | ||
15 | + <v-text-field | ||
16 | + class="mx-10 mt-8 mb-6" | ||
17 | + prepend-inner-icon="mdi-pen" | ||
18 | + v-model="form.title" | ||
19 | + :counter="40" | ||
20 | + label="Title" | ||
21 | + placeholder="Please input Title" | ||
22 | + type="text" | ||
23 | + > | ||
24 | + </v-text-field> | ||
25 | + <!-- file upload --> | ||
26 | + <div class="mx-10"> | ||
27 | + <video-upload /> | ||
28 | + </div> | ||
29 | + <v-card outlined class="pa-2 mx-10" elevation="0" min-height="67"> | ||
30 | + <v-chip-group column> | ||
31 | + <v-chip | ||
32 | + color="secondary" | ||
33 | + v-for="(tag, index) in form.tags" | ||
34 | + :key="index" | ||
35 | + @click="deleteTags(index)" | ||
36 | + > | ||
37 | + {{ tag }} | ||
38 | + </v-chip> | ||
39 | + </v-chip-group> | ||
40 | + </v-card> | ||
41 | + <v-text-field | ||
42 | + class="mx-10 mt-3 mb-5" | ||
43 | + prepend-inner-icon="mdi-shape" | ||
44 | + v-model="tag" | ||
45 | + :counter="20" | ||
46 | + label="Tag" | ||
47 | + placeholder="Type to add Tag" | ||
48 | + append-icon="mdi-arrow-up-bold" | ||
49 | + @click:append="addTags(tag)" | ||
50 | + @keydown.enter="addTags(tag)" | ||
51 | + type="text" | ||
52 | + > | ||
53 | + </v-text-field> | ||
54 | + </v-card> | ||
55 | + <v-row justify="center" style="margin-bottom: 30px"> | ||
56 | + <v-btn elevation="0" large color="primary" @click="submit()"> | ||
57 | + <span style="font-size: 24px; font-weight: 300; letter-spacing: 2px" | ||
58 | + >Upload</span | ||
59 | + > | ||
60 | + </v-btn> | ||
61 | + </v-row> | ||
62 | + </v-flex> | ||
63 | + </v-layout> | ||
64 | + </v-sheet> | ||
65 | +</template> | ||
66 | +<script> | ||
67 | +import videoUpload from "../components/uploadFile"; | ||
68 | +export default { | ||
69 | + name: "Upload", | ||
70 | + components: { | ||
71 | + videoUpload | ||
72 | + }, | ||
73 | + data() { | ||
74 | + return { | ||
75 | + myFiles: [], | ||
76 | + tag: "", | ||
77 | + form: { | ||
78 | + title: "", | ||
79 | + videoUrl: "", | ||
80 | + tags: [ | ||
81 | + "Work", | ||
82 | + "Home Improvement", | ||
83 | + "Vacation", | ||
84 | + "Food", | ||
85 | + "Drawers", | ||
86 | + "Shopping", | ||
87 | + "Art", | ||
88 | + "Tech", | ||
89 | + "Creative Writing" | ||
90 | + ] | ||
91 | + }, | ||
92 | + successDialog: false, | ||
93 | + errorDialog: false | ||
94 | + }; | ||
95 | + }, | ||
96 | + mounted() { | ||
97 | + this.form.tags = this.$store.getters.getTags; | ||
98 | + }, | ||
99 | + methods: { | ||
100 | + submit() { | ||
101 | + if (this.form.tags.length || this.form.title) { | ||
102 | + this.errorDialog = true; | ||
103 | + } else { | ||
104 | + this.$axios | ||
105 | + .post("/upload/post", this.form) | ||
106 | + .then(r => { | ||
107 | + console.log(r); | ||
108 | + this.successDialog = true; | ||
109 | + }) | ||
110 | + .catch(e => { | ||
111 | + console.log(e); | ||
112 | + this.errorDialog = true; | ||
113 | + }); | ||
114 | + } | ||
115 | + }, | ||
116 | + deleteTags(index) { | ||
117 | + for (let i = 0; i < this.form.tags.length; i++) { | ||
118 | + const element = this.form.tags[i]; | ||
119 | + if (this.form.tags[index] === element) { | ||
120 | + this.form.tags[i] = this.form.tags[this.form.tags.length - 1]; | ||
121 | + break; | ||
122 | + } | ||
123 | + } | ||
124 | + this.form.tags.pop(); | ||
125 | + }, | ||
126 | + addTags(tag) { | ||
127 | + let i; | ||
128 | + let check = true; | ||
129 | + for (i = 0; i < this.form.tags.length; i++) { | ||
130 | + const element = this.form.tags[i]; | ||
131 | + if (tag === element) { | ||
132 | + check = false; | ||
133 | + } | ||
134 | + } | ||
135 | + if (tag && check) this.form.tags.push(tag); | ||
136 | + this.tag = ""; | ||
137 | + } | ||
138 | + } | ||
139 | +}; | ||
140 | +</script> |
web/frontend/vue.config.js
0 → 100644
web/frontend/yarn.lock
0 → 100644
This diff could not be displayed because it is too large.
-
Please register or login to post a comment