윤준현

init project and add basic web

1 +.DS_Store
2 +node_modules
3 +/dist
4 +
5 +# local env files
6 +.env.local
7 +.env.*.local
8 +
9 +# Log files
10 +npm-debug.log*
11 +yarn-debug.log*
12 +yarn-error.log*
13 +
14 +# Editor directories and files
15 +.idea
16 +.vscode
17 +*.suo
18 +*.ntvs*
19 +*.njsproj
20 +*.sln
21 +*.sw?
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
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
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 +}
1 +module.exports =
2 +{
3 + db : 'mongodb://nu_manager:nu_manager@18.178.164.245:10002/nu_light_db',
4 + sessionSecret: 'thisissessionSecret',
5 +}
...\ No newline at end of file ...\ No newline at end of file
1 +const mongoose = require('mongoose')
2 +mongoose.set('useCreateIndex', true)
3 +
4 +const Tag = new mongoose.Schema({
5 + tag: [],
6 +})
7 +
8 +const tag = mongoose.model('tag', Tag)
9 +
10 +module.exports = tag
...\ No newline at end of file ...\ No newline at end of file
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
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 +}
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
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 +
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
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"
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/).
1 +module.exports = {
2 + presets: ["@vue/cli-plugin-babel/preset"]
3 +};
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 +}
No preview for this file type
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>
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>
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>
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>
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");
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 +});
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;
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 +});
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 +});
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>
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>
1 +module.exports = {
2 + transpileDependencies: ["vuetify"]
3 +};
This diff could not be displayed because it is too large.