├── quinto ├── .env.example ├── .gitignore ├── src │ ├── data │ │ └── database.js │ ├── models │ │ └── serie.js │ ├── routes │ │ └── series.routes.js │ └── controllers │ │ └── seriesController.js ├── package.json ├── server.js └── yarn.lock ├── sexto ├── .env.example ├── .gitignore ├── src │ ├── data │ │ └── database.js │ ├── models │ │ ├── estudio.js │ │ └── titulo.js │ ├── routes │ │ ├── estudios.routes.js │ │ └── titulos.routes.js │ └── controllers │ │ ├── estudioController.js │ │ └── tituloController.js ├── package.json ├── server.js └── README.md ├── quarto ├── .gitignore ├── package.json ├── src │ ├── data │ │ └── database.js │ ├── routes │ │ └── books.routes.js │ ├── models │ │ └── book.js │ └── controllers │ │ └── booksController.js ├── server.js └── yarn.lock ├── primeiro ├── .gitignore ├── package.json ├── models │ └── subscriber.js ├── server.js └── routes │ └── subscribers.js ├── segundo ├── .gitignore ├── package.json ├── server.js └── src │ ├── models │ └── episodio.js │ └── routes │ └── episodiosRoutes.js ├── terceiro ├── .gitignore ├── .DS_Store ├── src │ ├── .DS_Store │ ├── models │ │ └── filme.js │ ├── database │ │ └── database.js │ ├── routes │ │ └── filmes.routes.js │ └── controllers │ │ └── filmesController.js ├── server.js └── package.json ├── .DS_Store └── README.md /quinto/.env.example: -------------------------------------------------------------------------------- 1 | DATABASE_URL -------------------------------------------------------------------------------- /sexto/.env.example: -------------------------------------------------------------------------------- 1 | DATABASE_URL -------------------------------------------------------------------------------- /quarto/.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | node_modules -------------------------------------------------------------------------------- /quinto/.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | node_modules -------------------------------------------------------------------------------- /sexto/.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | node_modules -------------------------------------------------------------------------------- /primeiro/.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | node_modules -------------------------------------------------------------------------------- /segundo/.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | node_modules -------------------------------------------------------------------------------- /terceiro/.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | node_modules -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simaraconceicao/node-mongo-mongoose/HEAD/.DS_Store -------------------------------------------------------------------------------- /terceiro/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simaraconceicao/node-mongo-mongoose/HEAD/terceiro/.DS_Store -------------------------------------------------------------------------------- /terceiro/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/simaraconceicao/node-mongo-mongoose/HEAD/terceiro/src/.DS_Store -------------------------------------------------------------------------------- /quinto/src/data/database.js: -------------------------------------------------------------------------------- 1 | require('dotenv').config() 2 | const mongoose = require('mongoose') 3 | 4 | const connect = () => {mongoose.connect(process.env.DATABASE_URL, { 5 | useNewUrlParser: true, 6 | useUnifiedTopology: true 7 | } 8 | ).then(console.log('Database connected')).catch(err => console.err)} 9 | 10 | module.exports = { connect } -------------------------------------------------------------------------------- /sexto/src/data/database.js: -------------------------------------------------------------------------------- 1 | require('dotenv').config() 2 | const mongoose = require('mongoose') 3 | 4 | const connect = () => {mongoose.connect(process.env.DATABASE_URL, { 5 | useNewUrlParser: true, 6 | useUnifiedTopology: true 7 | } 8 | ).then(console.log('Database connected')).catch(err => console.err)} 9 | 10 | module.exports = { connect } -------------------------------------------------------------------------------- /terceiro/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const app = express() 3 | 4 | const database = require('./src/database/database') 5 | database.connect() 6 | 7 | app.use(express.json()) 8 | 9 | const filmesRoutes = require('./src/routes/filmes.routes') 10 | app.use('/filmes', filmesRoutes) 11 | 12 | app.listen(3333, () => console.log('Server Started')) -------------------------------------------------------------------------------- /sexto/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "crudfive", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "dependencies": { 7 | "dotenv": "^10.0.0", 8 | "express": "^4.17.1" 9 | }, 10 | "scripts":{ 11 | "devStart": "nodemon server.js" 12 | }, 13 | "devDependencies": { 14 | "mongoose": "^5.12.12", 15 | "nodemon": "^2.0.7" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /quarto/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "crudfour", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "dependencies": { 7 | "express": "^4.17.1", 8 | "mongoose": "^5.12.11" 9 | }, 10 | "scripts": { 11 | "devStart": "nodemon server.js" 12 | }, 13 | "devDependencies": { 14 | "dotenv": "^10.0.0", 15 | "nodemon": "^2.0.7" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /quinto/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "crudfive", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "dependencies": { 7 | "dotenv": "^10.0.0", 8 | "express": "^4.17.1" 9 | }, 10 | "scripts":{ 11 | "devStart": "nodemon server.js" 12 | }, 13 | "devDependencies": { 14 | "mongoose": "^5.12.12", 15 | "nodemon": "^2.0.7" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /terceiro/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "filmes", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "dependencies": { 7 | "express": "^4.17.1", 8 | "mongoose": "^5.12.11" 9 | }, 10 | "scripts":{ 11 | "devStart": "nodemon server.js" 12 | }, 13 | "devDependencies": { 14 | "dotenv": "^10.0.0", 15 | "nodemon": "^2.0.7" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /quinto/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const app = express() 3 | 4 | //conectar o db 5 | const db = require('./src/data/database') 6 | db.connect() 7 | 8 | app.use(express.json()) 9 | 10 | //usar a rota 11 | const seriesRouter = require('./src/routes/series.routes') 12 | app.use('/series', seriesRouter) 13 | 14 | 15 | app.listen(3333, ()=> console.log('Server listening on port 3333')) -------------------------------------------------------------------------------- /quarto/src/data/database.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const connect = () => { 4 | mongoose.connect("mongodb://localhost:27017/books", { 5 | useNewUrlParser: true, 6 | useUnifiedTopology: true, 7 | }) 8 | .then(() => console.log('Database connection established')) 9 | .catch((err) => console.error(err)) 10 | } 11 | 12 | module.exports = { connect } 13 | 14 | -------------------------------------------------------------------------------- /quarto/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const app = express() 3 | 4 | //connect db 5 | const database = require('./src/data/database') 6 | database.connect() 7 | 8 | //use express.json 9 | app.use(express.json()) 10 | 11 | //use router 12 | const booksRoute = require('./src/routes/books.routes') 13 | app.use('/books', booksRoute) 14 | 15 | 16 | app.listen(3333, ()=> console.log('Server started!')) -------------------------------------------------------------------------------- /sexto/src/models/estudio.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const estudioSchema = new mongoose.Schema({ 4 | _id: mongoose.Schema.Types.ObjectId, 5 | nome: { 6 | type: String, 7 | required: true 8 | }, 9 | criadoEm: { 10 | type: Date, 11 | required: true, 12 | default: new Date 13 | } 14 | }) 15 | 16 | module.exports = mongoose.model('estudio', estudioSchema ) -------------------------------------------------------------------------------- /segundo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api-quero-ser-dev", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "devStart": "nodemon server.js" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.17.1", 14 | "mongoose": "^5.12.11" 15 | }, 16 | "devDependencies": { 17 | "dotenv": "^10.0.0", 18 | "nodemon": "^2.0.7" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /terceiro/src/models/filme.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const filmeSchema = new mongoose.Schema({ 4 | title: { 5 | type: String, 6 | required: true 7 | }, 8 | description: { 9 | type: String, 10 | required: true 11 | }, 12 | created_at: { 13 | type: Date, 14 | required: true, 15 | default: Date.now 16 | } 17 | }) 18 | 19 | module.exports = mongoose.model('filme', filmeSchema ) -------------------------------------------------------------------------------- /primeiro/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "primeiro-app-mongoDb", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "devStart": "nodemon server.js" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.17.1", 14 | "mongoose": "^5.12.11" 15 | }, 16 | "devDependencies": { 17 | "dotenv": "^10.0.0", 18 | "nodemon": "^2.0.7" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /primeiro/models/subscriber.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const subscriberSchema = new mongoose.Schema({ 4 | name: { 5 | type: String, 6 | required: true 7 | }, 8 | subscribedToChannel: { 9 | type: String, 10 | required: true 11 | }, 12 | subscribeDate: { 13 | type: Date, 14 | required: true, 15 | default: Date.now 16 | 17 | } 18 | }) 19 | 20 | module.exports = mongoose.model('Subscriber', subscriberSchema) -------------------------------------------------------------------------------- /sexto/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const app = express() 3 | 4 | //conectar o db 5 | const db = require('./src/data/database') 6 | db.connect() 7 | 8 | app.use(express.json()) 9 | 10 | //usar a rota 11 | const estudiosRouter = require('./src/routes/estudios.routes') 12 | app.use('/estudios', estudiosRouter) 13 | 14 | const titulosRouter = require('./src/routes/titulos.routes') 15 | app.use('/titulos', titulosRouter) 16 | 17 | 18 | app.listen(3333, ()=> console.log('Server listening on port 3333')) -------------------------------------------------------------------------------- /quarto/src/routes/books.routes.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | 4 | const controller = require('../controllers/booksController') 5 | 6 | //getAll 7 | router.get('/', controller.getAll) 8 | 9 | //createOne 10 | router.post('/', controller.createABook) 11 | 12 | //getOne 13 | router.get('/:id', controller.getOne) 14 | 15 | //updateOne 16 | router.patch('/:id', controller.updateOne) 17 | 18 | //removeOne 19 | router.delete('/:id', controller.removeOne) 20 | 21 | module.exports = router -------------------------------------------------------------------------------- /quinto/src/models/serie.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const serieSchema = new mongoose.Schema({ 4 | title: { 5 | type: String, 6 | required: true 7 | }, 8 | seasons: { 9 | type: Number, 10 | required: true 11 | }, 12 | availableOn: { 13 | type: String, 14 | required: true 15 | }, 16 | createdAt: { 17 | type: Date, 18 | required: true, 19 | default: new Date 20 | } 21 | }) 22 | 23 | module.exports = mongoose.model('serie', serieSchema ) -------------------------------------------------------------------------------- /terceiro/src/database/database.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | const dotenv = require('dotenv') 3 | dotenv.config(); 4 | 5 | const connect = () => { 6 | mongoose.connect(process.env.DB_URL, { 7 | useNewUrlParser: true, 8 | useCreateIndex: true, 9 | useFindAndModify: false, 10 | useUnifiedTopology: true 11 | }).then(() => { 12 | console.log('Database connection established') 13 | }).catch((err) => { 14 | console.error(err) 15 | }) 16 | } 17 | 18 | module.exports = { connect } 19 | -------------------------------------------------------------------------------- /primeiro/server.js: -------------------------------------------------------------------------------- 1 | require('dotenv').config() 2 | 3 | const express = require('express'); 4 | const app = express(); 5 | const mongoose = require('mongoose'); 6 | 7 | mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true }) 8 | .then(() => { 9 | console.log('Database connection established') 10 | }).catch((err) => { 11 | console.error(err) 12 | }) 13 | 14 | app.use(express.json()) 15 | 16 | const subscribersRouter = require('./routes/subscribers') 17 | app.use('/subscribers', subscribersRouter) 18 | 19 | app.listen(3333, () => console.log('Server started!')) -------------------------------------------------------------------------------- /segundo/server.js: -------------------------------------------------------------------------------- 1 | require('dotenv').config() 2 | 3 | const express = require('express') 4 | const app = express() 5 | 6 | const mongoose = require('mongoose') 7 | mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true }) 8 | .then(() => { 9 | console.log('Database connection established') 10 | }).catch((err) => { 11 | console.error(err) 12 | }) 13 | 14 | app.use(express.json()) 15 | 16 | const episodiosRouter = require('./src/routes/episodiosRoutes') 17 | app.use('/episodios', episodiosRouter) 18 | 19 | app.listen(3333, ()=> console.log('Server started!')) -------------------------------------------------------------------------------- /terceiro/src/routes/filmes.routes.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | 4 | const filmesController = require('../controllers/filmesController') 5 | 6 | //Get All 7 | router.get('/', filmesController.listFilms) 8 | 9 | //Get One 10 | router.get('/:id', filmesController.listOneFilm ) 11 | 12 | //Create One 13 | router.post('/', filmesController.createAFilm) 14 | 15 | //Update One 16 | router.patch('/:id', filmesController.updateAFilm) 17 | 18 | 19 | //Delete One 20 | router.delete('/:id', filmesController.deleteAFilm) 21 | 22 | 23 | module.exports = router -------------------------------------------------------------------------------- /quinto/src/routes/series.routes.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | const controller = require('../controllers/seriesController') 4 | 5 | 6 | //listar todas as series 7 | router.get('/', controller.getAll ) 8 | 9 | //criar uma nova serie 10 | router.post('/', controller.create) 11 | 12 | //listar uma serie 13 | router.get('/:id', controller.getOne ) 14 | 15 | //atualizar uma informacao especifica numa serie 16 | router.patch('/:id', controller.updateOne) 17 | 18 | //deletar uma serie 19 | router.delete('/:id', controller.deleteOne) 20 | 21 | module.exports = router -------------------------------------------------------------------------------- /sexto/src/routes/estudios.routes.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | const controller = require('../controllers/estudioController') 4 | 5 | 6 | //listar todas as series 7 | router.get('/', controller.getAll ) 8 | 9 | //criar uma nova serie 10 | router.post('/', controller.create) 11 | 12 | //listar uma serie 13 | router.get('/:id', controller.getOne ) 14 | 15 | //atualizar uma informacao especifica numa serie 16 | router.patch('/:id', controller.updateOne) 17 | 18 | //deletar uma serie 19 | router.delete('/:id', controller.deleteOne) 20 | 21 | module.exports = router -------------------------------------------------------------------------------- /quarto/src/models/book.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const bookSchema = new mongoose.Schema({ 4 | title : { 5 | type: String, 6 | required: true 7 | }, 8 | author: { 9 | type: String, 10 | required: true 11 | }, 12 | pages: { 13 | type: String, 14 | required: true 15 | }, 16 | genre: { 17 | type: String, 18 | required: true 19 | }, 20 | created_at: { 21 | type: Date, 22 | required: true, 23 | default: Date.now 24 | } 25 | 26 | }) 27 | 28 | module.exports = mongoose.model('book', bookSchema) -------------------------------------------------------------------------------- /segundo/src/models/episodio.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const episodioSchema = new mongoose.Schema({ 4 | nome: { 5 | type: String, 6 | required: true 7 | }, 8 | descricao: { 9 | type: String, 10 | required: true 11 | }, 12 | convidada: { 13 | type: String, 14 | required: true 15 | }, 16 | link: { 17 | type: String, 18 | required: true 19 | }, 20 | criadoEm:{ 21 | type: Date, 22 | required: true, 23 | default: Date.now 24 | } 25 | }) 26 | 27 | module.exports = mongoose.model('Episodio', episodioSchema) -------------------------------------------------------------------------------- /sexto/src/models/titulo.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | 3 | const tituloSchema = new mongoose.Schema({ 4 | _id: mongoose.Schema.Types.ObjectId, 5 | nome: { 6 | type: String, 7 | required: true 8 | }, 9 | genero: { 10 | type: String, 11 | required: true 12 | }, 13 | descricao: { 14 | type: String, 15 | required: true 16 | }, 17 | estudio: { 18 | type: mongoose.Schema.Types.ObjectId, 19 | required: true, 20 | ref:'estudio' 21 | }, 22 | criadoEm: { 23 | type: Date, 24 | required: true, 25 | default: new Date 26 | } 27 | }) 28 | 29 | module.exports = mongoose.model('titulo', tituloSchema ) -------------------------------------------------------------------------------- /sexto/src/routes/titulos.routes.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | const controller = require('../controllers/tituloController') 4 | 5 | 6 | //listar todas os titulos 7 | router.get('/', controller.getAll ) 8 | 9 | //listar todos os titulos por estudio 10 | router.get('/marvel', controller.getAllMarvel) 11 | router.get('/ghibli', controller.getAllGhibli) 12 | router.get('/pixar', controller.getAllPixar) 13 | 14 | //criar um novo titulo 15 | router.post('/', controller.create) 16 | 17 | //listar um titulo 18 | router.get('/:id', controller.getOne ) 19 | 20 | //atualizar uma informacao especifica num titulo 21 | router.patch('/:id', controller.updateOne) 22 | 23 | //deletar um titulo 24 | router.delete('/:id', controller.deleteOne) 25 | 26 | module.exports = router -------------------------------------------------------------------------------- /terceiro/src/controllers/filmesController.js: -------------------------------------------------------------------------------- 1 | const Filme = require('../models/filme') 2 | 3 | const createAFilm = async (req, res) => { 4 | const filme = new Filme({ 5 | title: req.body.title, 6 | description: req.body.description 7 | }) 8 | try { 9 | const novoFilme = await filme.save() 10 | res.status(201).json(novoFilme) 11 | } catch (err) { 12 | res.status(400).json({ message: err.message }) 13 | } 14 | } 15 | 16 | const listFilms = async (req, res) => { 17 | const filmes = await Filme.find() 18 | res.json(filmes) 19 | } 20 | 21 | const listOneFilm = async (req, res) => { 22 | try{ 23 | const filme = await Filme.findById(req.params.id) 24 | if(filme == null){ 25 | return res.status(404).json({message: 'Cannot find film'}) 26 | } 27 | res.json(filme) 28 | } catch (err) { 29 | return res.status(500).json({ message: err.message }) 30 | } 31 | 32 | } 33 | 34 | const updateAFilm = async (req, res) => { 35 | try{ 36 | const filme = await Filme.findById(req.params.id) 37 | if(filme == null){ 38 | return res.status(404).json({message: 'Cannot find film'}) 39 | } 40 | if (req.body.title != null) { 41 | filme.title = req.body.title 42 | } 43 | if (req.body.description != null) { 44 | filme.description = req.body.description 45 | } 46 | const updatedfilme = await filme.save() 47 | res.json(updatedfilme) 48 | } catch (err) { 49 | return res.status(500).json({ message: err.message }) 50 | } 51 | } 52 | 53 | const deleteAFilm = async (req, res) => { 54 | try{ 55 | const filme = await Filme.findById(req.params.id) 56 | if(filme == null){ 57 | return res.status(404).json({message: 'Cannot find film'}) 58 | } 59 | await filme.remove() 60 | res.json({ message: 'Filme deletado com sucesso!'}) 61 | } catch (err) { 62 | return res.status(500).json({ message: err.message }) 63 | } 64 | } 65 | 66 | 67 | 68 | module.exports = { 69 | createAFilm, 70 | listFilms, 71 | listOneFilm, 72 | updateAFilm, 73 | deleteAFilm 74 | } -------------------------------------------------------------------------------- /primeiro/routes/subscribers.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | const Subscriber = require('../models/subscriber') 4 | 5 | // Getting all 6 | router.get('/', async (req, res) =>{ 7 | try { 8 | const subscribers = await Subscriber.find() 9 | res.json(subscribers) 10 | } catch (err) { 11 | res.status(500).json({ message: err.message }) 12 | } 13 | }) 14 | // Getting One 15 | router.get('/:id', getSubscriber, (req, res) =>{ 16 | res.json(res.subscriber) 17 | }) 18 | // Creating One 19 | router.post('/', async (req, res) =>{ 20 | const subscriber = new Subscriber({ 21 | name: req.body.name, 22 | subscribedToChannel: req.body.subscribedToChannel 23 | }) 24 | try { 25 | const newSubscriber = await subscriber.save() 26 | res.status(201).json(newSubscriber) 27 | } catch (err) { 28 | res.status(400).json({ message: err.message }) 29 | } 30 | 31 | }) 32 | // Updating One 33 | router.patch('/:id', getSubscriber, async (req, res) =>{ 34 | if (req.body.name != null) { 35 | res.subscriber.name = req.body.name 36 | } 37 | if (req.body.subscribedToChannel != null) { 38 | res.subscriber.subscribedToChannel = req.body.subscribedToChannel 39 | } 40 | try { 41 | const updatedSubscriber = await res.subscriber.save() 42 | res.json(updatedSubscriber) 43 | } catch (err) { 44 | res.status(400).json({ message: err.message }) 45 | } 46 | 47 | }) 48 | // Deleting One 49 | router.delete('/:id', getSubscriber, async (req, res) =>{ 50 | try { 51 | await res.subscriber.remove() 52 | res.json({ message: 'Deleted Subscriber'}) 53 | } catch (err) { 54 | res.status(500).json({ message: err.message }) 55 | } 56 | }) 57 | 58 | async function getSubscriber(req, res, next) { 59 | let subscriber 60 | try { 61 | subscriber = await Subscriber.findById(req.params.id) 62 | if(subscriber == null){ 63 | return res.status(404).json({message: 'Cannot find subscriber'}) 64 | } 65 | } catch (err) { 66 | return res.status(500).json({ message: err.message }) 67 | } 68 | 69 | res.subscriber = subscriber 70 | next() 71 | } 72 | 73 | module.exports = router -------------------------------------------------------------------------------- /quinto/src/controllers/seriesController.js: -------------------------------------------------------------------------------- 1 | const Serie = require('../models/serie') 2 | 3 | const getAll = async (req, res) => { 4 | const series = await Serie.find() 5 | res.json(series) 6 | } 7 | 8 | const create = async (req,res) => { 9 | const serie = new Serie({ 10 | title: req.body.title, 11 | seasons: req.body.seasons, 12 | availableOn: req.body.availableOn, 13 | createdAt: req.body.createdAt 14 | }) 15 | try { 16 | const newSerie = await serie.save() 17 | res.status(201).json(newSerie) 18 | } catch (error) { 19 | res.status(400).json({ message: error.message }) 20 | } 21 | } 22 | 23 | const getOne = async (req, res) => { 24 | try { 25 | const serie = await Serie.findById(req.params.id) 26 | if(serie == null) { 27 | return res.status(404).json({message: 'serie nao encontrada'}) 28 | } 29 | res.json(serie) 30 | } catch (error) { 31 | res.status(500).json({ message: error.message }) 32 | 33 | } 34 | } 35 | 36 | const updateOne = async (req, res) => { 37 | try { 38 | const serie = await Serie.findById(req.params.id) 39 | if(serie == null) { 40 | return res.status(404).json({message: 'serie nao encontrada'}) 41 | } 42 | 43 | if (req.body.title != null) { 44 | serie.title = req.body.title 45 | } 46 | if (req.body.seasons != null) { 47 | serie.seasons = req.body.seasons 48 | } 49 | if (req.body.availableOn != null) { 50 | serie.availableOn = req.body.availableOn 51 | } 52 | if (req.body.createdAt != null) { 53 | serie.createdAt = req.body.createdAt 54 | } 55 | 56 | const updatedSerie = await serie.save() 57 | res.json(updatedSerie) 58 | 59 | } catch (error) { 60 | res.status(500).json({ message: error.message }) 61 | } 62 | } 63 | 64 | const deleteOne = async (req, res) => { 65 | try{ 66 | const serie = await Serie.findById(req.params.id) 67 | if(serie == null) { 68 | return res.status(404).json({message: 'serie nao encontrada'}) 69 | } 70 | 71 | await serie.remove() 72 | res.json({ message: 'serie deletada com sucesso!'}) 73 | } catch (error) { 74 | res.status(500).json({ message: error.message }) 75 | } 76 | } 77 | 78 | module.exports = { 79 | getAll, 80 | create, 81 | getOne, 82 | updateOne, 83 | deleteOne 84 | } -------------------------------------------------------------------------------- /sexto/src/controllers/estudioController.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | const Estudio = require('../models/estudio') 3 | 4 | const getAll = async (req, res) => { 5 | const estudios = await Estudio.find() 6 | res.json(estudios) 7 | } 8 | 9 | const create = async (req,res) => { 10 | 11 | const estudio = new Estudio({ 12 | _id: new mongoose.Types.ObjectId(), 13 | nome: req.body.nome, 14 | criadoEm: req.body.criadoEm 15 | }) 16 | 17 | const estudioJaExiste = await Estudio.findOne({nome: req.body.nome}) 18 | 19 | if (estudioJaExiste) { 20 | return res.status(400).json({error: 'Estudio já cadastrado.'}) 21 | } 22 | 23 | try { 24 | const novoEstudio = await estudio.save() 25 | res.status(201).json(novoEstudio) 26 | } catch (error) { 27 | res.status(400).json({ message: error.message }) 28 | } 29 | } 30 | 31 | const getOne = async (req, res) => { 32 | try { 33 | const estudio = await Estudio.findById(req.params.id) 34 | if(estudio == null) { 35 | return res.status(404).json({message: 'estudio nao encontrado'}) 36 | } 37 | res.json(estudio) 38 | } catch (error) { 39 | res.status(500).json({ message: error.message }) 40 | 41 | } 42 | } 43 | 44 | const updateOne = async (req, res) => { 45 | try { 46 | const estudio = await Estudio.findById(req.params.id) 47 | if(estudio == null) { 48 | return res.status(404).json({message: 'serie nao encontrada'}) 49 | } 50 | 51 | if (req.body.nome != null) { 52 | estudio.title = req.body.nome 53 | } 54 | 55 | if (req.body.criadoEm != null) { 56 | estudio.criadoEm = req.body.criadoEm 57 | } 58 | 59 | const estudioAtualizado = await estudio.save() 60 | res.json(estudioAtualizado) 61 | 62 | } catch (error) { 63 | res.status(500).json({ message: error.message }) 64 | } 65 | } 66 | 67 | const deleteOne = async (req, res) => { 68 | try{ 69 | const estudio = await Estudio.findById(req.params.id) 70 | if(estudio == null) { 71 | return res.status(404).json({message: 'serie nao encontrada'}) 72 | } 73 | 74 | await estudio.remove() 75 | res.json({ message: 'estudio deletado com sucesso!'}) 76 | } catch (error) { 77 | res.status(500).json({ message: error.message }) 78 | } 79 | } 80 | 81 | module.exports = { 82 | getAll, 83 | create, 84 | getOne, 85 | updateOne, 86 | deleteOne 87 | } -------------------------------------------------------------------------------- /quarto/src/controllers/booksController.js: -------------------------------------------------------------------------------- 1 | const Book = require('../models/book') 2 | 3 | const getAll = async (req, res) => { 4 | const books = await Book.find() 5 | res.json(books) 6 | } 7 | 8 | const createABook = async (req, res) => { 9 | const book = new Book({ 10 | title : req.body.title, 11 | author: req.body.author, 12 | pages: req.body.pages, 13 | genre: req.body.genre, 14 | created_at: req.body.created_at 15 | }) 16 | try { 17 | const newBook = await book.save() 18 | res.status(200).json(newBook) 19 | }catch (err) { 20 | res.status(400).json({message: err.message}) 21 | } 22 | 23 | } 24 | 25 | const getOne = async (req, res) => { 26 | try { 27 | const book = await Book.findById(req.params.id) 28 | if (book == null) { 29 | return res.status(404).json({message: 'Cannot find this book!'}) 30 | } 31 | res.json(book) 32 | } catch(err) { 33 | return res.status(500).json({ message: err.message}) 34 | } 35 | } 36 | 37 | const updateOne = async (req, res) => { 38 | try { 39 | const book = await Book.findById(req.params.id) 40 | if (book == null) { 41 | return res.status(404).json({message: 'Cannot find this book!'}) 42 | } 43 | if (req.body.title != null) { 44 | book.title = req.body.title 45 | } 46 | if (req.body.author != null) { 47 | book.author = req.body.author 48 | } 49 | if (req.body.pages != null) { 50 | book.pages = req.body.pages 51 | } 52 | if (req.body.genre != null) { 53 | book.genre = req.body.genre 54 | } 55 | if (req.body.created_at != null) { 56 | book.created_at = req.body.created_at 57 | } 58 | 59 | const updatedBook = await book.save() 60 | res.json(updatedBook) 61 | } catch(err) { 62 | return res.status(500).json({ message: err.message}) 63 | } 64 | } 65 | 66 | const removeOne = async (req, res) => { 67 | try { 68 | const book = await Book.findById(req.params.id) 69 | if (book == null) { 70 | return res.status(404).json({message: 'Cannot find this book!'}) 71 | } 72 | 73 | await book.remove() 74 | res.json({ message: 'Book deleted'}) 75 | } catch(err) { 76 | return res.status(500).json({ message: err.message}) 77 | } 78 | } 79 | 80 | module.exports = { 81 | getAll, 82 | createABook, 83 | getOne, 84 | updateOne, 85 | removeOne 86 | } -------------------------------------------------------------------------------- /segundo/src/routes/episodiosRoutes.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const router = express.Router() 3 | const Episodio = require('../models/episodio') 4 | 5 | //listar todos os episodios 6 | router.get('/', async (req, res) => { 7 | try { 8 | const episodios = await Episodio.find() 9 | res.json(episodios) 10 | } catch (err) { 11 | res.status(500).json({ message: err.message }) 12 | } 13 | }) 14 | 15 | //listar um episodio 16 | router.get('/:id', getEpisode, (req, res) =>{ 17 | res.json(res.episodio) 18 | }) 19 | 20 | //cadastrar um episodio 21 | router.post('/', async (req, res) =>{ 22 | const episodio = new Episodio({ 23 | nome: req.body.nome, 24 | descricao: req.body.descricao, 25 | convidada: req.body.convidada, 26 | link: req.body.link, 27 | criadoEm: req.body.criadoEm 28 | }) 29 | try { 30 | const novoEpisodio = await episodio.save() 31 | res.status(201).json(novoEpisodio) 32 | } catch (err) { 33 | res.status(400).json({ message: err.message }) 34 | } 35 | }) 36 | 37 | //alterar uma informação especifica em um episodio 38 | router.patch('/:id', getEpisode, async (req, res) =>{ 39 | if (req.body.nome != null) { 40 | res.episodio.nome = req.body.nome 41 | } 42 | if (req.body.descricao != null) { 43 | res.episodio.descricao = req.body.descricao 44 | } 45 | if (req.body.convidada != null) { 46 | res.episodio.convidada = req.body.convidada 47 | } 48 | if (req.body.link != null) { 49 | res.episodio.link = req.body.link 50 | } 51 | try { 52 | const episodioAtualizado = await res.episodio.save() 53 | res.json(episodioAtualizado) 54 | } catch (err) { 55 | res.status(400).json({ message: err.message }) 56 | } 57 | }) 58 | 59 | //remover um episodio 60 | router.delete('/:id', getEpisode, async (req, res)=> { 61 | try { 62 | await res.episodio.remove() 63 | res.json({ message: 'Deletado com sucesso!'}) 64 | } catch (err) { 65 | res.status(500).json({ message: err.message }) 66 | } 67 | }) 68 | 69 | //Middleware 70 | 71 | async function getEpisode(req, res, next) { 72 | let episodio 73 | try { 74 | episodio = await Episodio.findById(req.params.id) 75 | if (episodio == null) { 76 | return res.status(404).json({ message: 'Episodio não encontrado'}) 77 | } 78 | } catch (err) { 79 | return res.status(500).json({ message: err.message}) 80 | } 81 | res.episodio = episodio 82 | next() 83 | } 84 | 85 | 86 | module.exports = router -------------------------------------------------------------------------------- /sexto/src/controllers/tituloController.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | const Titulo = require('../models/titulo') 3 | 4 | const getAll = async (req, res) => { 5 | const titulos = await Titulo.find().populate('estudio') //eager loading 6 | res.json(titulos) 7 | } 8 | 9 | const getAllMarvel = async (req, res) => { 10 | const titulos = await Titulo.find().populate('estudio') //eager loading 11 | const titulosFiltrado = titulos.filter(titulo => titulo.estudio.nome == "Marvel") 12 | res.json(titulosFiltrado) 13 | } 14 | 15 | const getAllGhibli = async (req, res) => { 16 | const titulos = await Titulo.find().populate('estudio') //eager loading 17 | const titulosFiltrado = titulos.filter(titulo => titulo.estudio.nome == "Ghibli") 18 | res.json(titulosFiltrado) 19 | } 20 | 21 | const getAllPixar = async (req, res) => { 22 | const titulos = await Titulo.find().populate('estudio') //eager loading 23 | const titulosFiltrado = titulos.filter(titulo => titulo.estudio.nome == "Pixar") 24 | res.json(titulosFiltrado) 25 | } 26 | 27 | const create = async (req,res) => { 28 | const titulo = new Titulo({ 29 | _id: new mongoose.Types.ObjectId(), 30 | nome: req.body.nome, 31 | genero: req.body.genero, 32 | descricao: req.body.descricao, 33 | estudio: req.body.estudio, 34 | criadoEm: req.body.criadoEm 35 | }) 36 | 37 | const tituloJaExiste = await Titulo.findOne({nome: req.body.nome}) 38 | 39 | if (tituloJaExiste) { 40 | return res.status(400).json({error: 'Estudio já cadastrado.'}) 41 | } 42 | try { 43 | const novoTitulo = await titulo.save() 44 | res.status(201).json(novoTitulo) 45 | } catch (error) { 46 | res.status(400).json({ message: error.message }) 47 | } 48 | } 49 | 50 | const getOne = async (req, res) => { 51 | try { 52 | const titulo = await Titulo.findById(req.params.id) 53 | if(titulo == null) { 54 | return res.status(404).json({message: 'titulo nao encontrado'}) 55 | } 56 | res.json(titulo) 57 | } catch (error) { 58 | res.status(500).json({ message: error.message }) 59 | 60 | } 61 | } 62 | 63 | const updateOne = async (req, res) => { 64 | try { 65 | const titulo = await Titulo.findById(req.params.id) 66 | if(titulo == null) { 67 | return res.status(404).json({message: 'titulo nao encontrado'}) 68 | } 69 | 70 | if (req.body.nome != null) { 71 | titulo.nome = req.body.nome 72 | } 73 | if (req.body.genero != null) { 74 | titulo.genero = req.body.genero 75 | } 76 | if (req.body.descricao != null) { 77 | titulo.descricao = req.body.descricao 78 | } 79 | if (req.body.estudio != null) { 80 | titulo.estudio = req.body.estudio 81 | } 82 | if (req.body.criadoEm != null) { 83 | titulo.criadoEm = req.body.criadoEm 84 | } 85 | 86 | const tituloAtualizado = await titulo.save() 87 | res.json(tituloAtualizado) 88 | 89 | } catch (error) { 90 | res.status(500).json({ message: error.message }) 91 | } 92 | } 93 | 94 | const deleteOne = async (req, res) => { 95 | try{ 96 | const titulo = await Titulo.findById(req.params.id) 97 | if(titulo == null) { 98 | return res.status(404).json({message: 'titulo nao encontrado'}) 99 | } 100 | 101 | await titulo.remove() 102 | res.json({ message: 'titulo deletado com sucesso!'}) 103 | } catch (error) { 104 | res.status(500).json({ message: error.message }) 105 | } 106 | } 107 | 108 | module.exports = { 109 | getAll, 110 | getAllMarvel, 111 | getAllGhibli, 112 | getAllPixar, 113 | create, 114 | getOne, 115 | updateOne, 116 | deleteOne, 117 | 118 | } -------------------------------------------------------------------------------- /sexto/README.md: -------------------------------------------------------------------------------- 1 | # Projeto criado para aula da Reprograma 2 | 3 | Turma Online 11 - Todas em Tech | Back-end | 2021 | Semana 14: Projeto Guiado - CRUD com BD 4 | 5 | 6 | ## Sobre o Projeto 7 | 8 | O **FavMovies** é um sistema de gerenciamento de catálogos de filmes dos estudios Marvel, Ghibli e Pixar. 9 | 10 | Onde receberemos cadastros de títulos(filmes e séries) referenciando cada estúdio criador. 11 | 12 | ``` 13 | "Relacionamento" no MongoDB? Como é isso? 14 | - ref no model 15 | - populate do find (eager loading) 16 | ``` 17 | 18 | ## Tecnologias que vamos usar: 19 | | Ferramenta | Descrição | 20 | | --- | --- | 21 | | `javascript` | Linguagem de programação | 22 | | `nodejs` | Ambiente de execução do javascript| 23 | | `express` | Framework NodeJS | 24 | | `dotenv` | Dependência para proteger dados sensíveis do projeto| 25 | | `mongoose` | Dependência que interage com o MongoDB para a conexão da database, criação do model e das collections| 26 | | `nodemon` | Dependência que observa as atualizações realizadas nos documentos para rodar o servidor automaticamente| 27 | | `npm ou yarn` | Gerenciador de pacotes| 28 | | `MongoDb` | Banco de dado não relacional orietado a documentos| 29 | | `MongoDb Compass` | Interface gráfica para verificar se os dados foram persistidos| 30 | `Insomnia ou Postman` | Interface gráfica para realizar os testes| 31 | 32 |
33 |
34 | 35 | ## 📁 Arquitetura 36 | 37 | ``` 38 | 📁 FavMovies 39 | | 40 | |- 📁 src 41 | | | 42 | | |- 📁 data 43 | | |- 📄 database.js 44 | | 45 | | |- 📁 controllers 46 | | |- 📄 tituloController.js 47 | | |- 📄 estudioController.js 48 | | 49 | | |- 📁 models 50 | | |- 📄 titulo.js 51 | | |- 📄 estudio.js 52 | | 53 | | |- 📁 routes 54 | | |- 📄 tituloRoutes.js 55 | | |- 📄 estudioRoutes.js 56 | | 57 | | 58 | |- 📄 .env 59 | |- 📄 .env.example 60 | |- 📄 .gitignore 61 | |- 📄 package 62 | |- 📄 server.js 63 | 64 | ``` 65 | 66 |
67 |
68 | 69 | ## Contrato 70 | Acesse o board para conferir as informações de forma visual: https://miro.com/app/board/o9J_lA7Nns8=/ 71 | 72 | ### Requisitos 73 | - [x] **"/titulos/marvel"** Deverá retornar todos os títulos com o estudio Marvel 74 | - [x] **"/titulos/ghibli"** Deverá retornar todos os títulos com o estudio Ghibli 75 | - [x] **"/titulos/pixar"** Deverá retornar todos os títulos com o estudio Pixar 76 | 77 | - [x] **"/estudios"** Deverá retornar todos os estudios cadastrados 78 | - [x] "**/titulos**" Deverá retornar todos os títulos cadastrados, cada um fazendo referencia ao seu respectivo estudio 79 | 80 | - [x] "**/estudios**" Deverá criar um estudio 81 | - [x] "**/titulos**" Deverá criar um título 82 | 83 | - [x] "/titulos/[ID]" Deverá deletar titulo por id específico e retorna mensagem amigável 84 | - [x] "/estudios/[ID]" Deverá deletar estudio por id específico e retorna mensagem amigável 85 | 86 | - [x] "/titulos/[ID]" Deverá alterar informação específica dentro de um titulo por id específico e retorna o título alterado 87 | - [x] "/estudios/[ID]" Deverá alterar informação específica dentro de um estudio por id específico e retorna o título alterado 88 | 89 | 90 | ### Regras de negócio 91 | 92 | - [x] Não deverá ser possível criar estudio com o mesmo nome 93 | - [x] Não deverá ser possível criar título com o mesmo nome 94 | - [x] Para criar um novo título, deverá vincular no momento da criação a um estudio já existente no sistema 95 | 96 |
97 |
98 | 99 | ### Dados para Collection Estudios 100 | 101 | - id: autogerado e obrigatório 102 | - nome: texto e obrigatório 103 | - criadoEm: data gerada automaticamente e obrigatório 104 | 105 | 106 | ### API deve retornar seguinte JSON: 107 | 108 | ```jsx 109 | [ 110 | { 111 | "criadoEm": "2021-06-05T01:27:40.886Z", 112 | "_id": "60bad38c8c299c285d2685e7", 113 | "nome": "Marvel", 114 | "__v": 0 115 | }, 116 | { 117 | "criadoEm": "2021-06-05T01:27:40.886Z", 118 | "_id": "60bad33d8c299c285d2685e5", 119 | "nome": "Ghibli", 120 | "__v": 0 121 | }, 122 | { 123 | "criadoEm": "2021-06-05T01:27:40.886Z", 124 | "_id": "60bad33d8c299c285d2685e5", 125 | "nome": "Pixar", 126 | "__v": 0 127 | } 128 | ] 129 | ``` 130 |
131 |
132 | 133 | ### Dados para Collection Titulos 134 | 135 | - id: autogerado e obrigatório 136 | - nome: texto e obrigatório 137 | - genero: texto e obrigatório 138 | - descricao: texto e obrigatório 139 | - criadoEm: data gerada automaticamente e obrigatório 140 | - estudio: referencia do estudio cadastrado previamente obrigatório 141 | 142 | 143 | ### API deve retornar seguinte JSON: 144 | 145 | ```jsx 146 | [ 147 | { 148 | "criadoEm": "2021-06-05T01:27:40.892Z", 149 | "_id": "60bad3568c299c285d2685e6", 150 | "nome": "Spirited Away", 151 | "genero": "romance", 152 | "descricao": "SPIRITED AWAY é uma fantasia maravilhosa sobre uma jovem garota, Chihiro, presa em um estranho mundo novo de espíritos. Quando seus pais passam por uma transformação misteriosa, ela deve invocar a coragem que ela nunca soube que tinha para se libertar e retornar sua família para o mundo exterior. Uma história inesquecível e cheia de criatividade, SPIRITED AWAY o levará em uma jornada além da sua imaginação.", 153 | "estudio": { 154 | "criadoEm": "2021-06-05T01:27:40.886Z", 155 | "_id": "60bad33d8c299c285d2685e5", 156 | "nome": "Ghibli", 157 | } 158 | } 159 | ] 160 | ``` 161 |
162 |
163 | 164 | ## Entregavel 165 | 166 | Crie seu repositório contendo: 167 | - um readme com os maiores aprendizados nesse projeto e copiando todas as informações sobre o projeto 168 | - cumprimento total do contrato (requisitos e regras de negócios) 169 | - realizar testes no Postman e verificar se os dados estão persistindo com o mongoDB 170 | 171 | Subir o repositório no classroom. 172 | 173 | ## Simara Conceição 174 | - [instagram](https://www.instagram.com/simara_conceicao) 175 | - [linkedin](https://www.linkedin.com/in/simaraconceicao/) 176 | - [github](https://github.com/simaraconceicao) 177 | - [spotify](https://open.spotify.com/show/59vCz4TY6tPHXW26qJknh3) 178 | - [quero ser dev](https://queroserdev.com) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Desafio 5 CRUDS MongoDB em 5 dias 🚀 2 | 3 | **Fiz 5 projetos CRUDS MongoDB simples, ao longo de 5 dias com o objetivo de consolidar o aprendizado e compartilho aqui neste repo a evolução, os códigos e as lições aprendidas** 4 | 5 |
6 |
7 | 8 | # Extra +1 CRUD MongoDB com "relacionamento" em outros 5 dias, rs 9 | 10 | **Fiz mais 1 CRUD MongoDB, dessa vez com "relacionamento", ao longo de 5 dias** 11 | 12 | 13 | ## 1. Apresentação 14 | 15 | Prazer, Simara Conceição! 16 | Eu sou desenvolvedora grad na *[ThoughtWorks](https://www.thoughtworks.com/pt-br)*, professora na *[{ reprograma }](https://reprograma.com.br/)* e criadora do *[Podcast Quero Ser Dev](https://open.spotify.com/show/59vCz4TY6tPHXW26qJknh3)*. 17 | 18 | Gif Yeah 19 | 20 | Iniciei minha migração para área de tecnologia em 2019, você pode conhecer essa história completa ouvindo o quero ser dev. 21 | 22 | ## 2. Motivação para criar esse desafio 23 | 24 | Fui convidada para ensinar na Reprograma para mais de 40 mulheres inciantes em backend como criar um CRUD MongoDB usando o mongoose. 25 | 26 | E toda vez que estou me preparando para uma aula eu fico imersa no conteúdo pensando em construir a melhor experiência possível para minhas queridas alunas. 27 | 28 | Eu embarquei nesse desafio, pois acredito que não há nada que a gente saiba tão pouco que não possa compartilhar. 29 | 30 | ## 3. Quando conheci MongoDB 31 | 32 | Eu tenho uma história engraçada sobre como me apaixonei pelo MongoDB, rs. 33 | 34 | Em 2020, antes de entrar na TW eu apliquei pra lá em uma vaga de dev full stack. Lembro que a entrevista foi em inglês e com uma colaboradora baseada em NYC e uma das primeiras perguntas foi: você já usou nossa ferramenta? 35 | 36 | E eu bem garota, faceira, ousada, iniciante mais que tudo respondi que não havia ainda tido a oportunidade de usar, mas que era uma entusiasta. 37 | 38 | Tomei pau, óbvio, rs. A verdade é que eu tinha ficado feliz demais só de ter sido considerada para vaga, ao ser convocada para essa primeira entrevista. 39 | 40 | Saí de lá decidida a usar o MongoDB em meus projetinhos de estudo e ganhar mais maturidade em padrão de projeto e melhores práticas de desenvolvimento. 41 | 42 | Afinal de contas, eu queria carreira em uma empresa global, que tivesse um programa explicito de diversidade e de desenvolvimento para as pessoas colaboradoras. 43 | 44 | Fico feliz de ter alcançado tudo isso aqui na TW, a gente só consegue conectar os pontos olhando pra traz, já dizia Jobs. <3 45 | 46 | ## 4. Sobre os projetos 47 | 48 | `O que é um CRUD?` 49 | acrônimo para Create, Read, Update e Delete(criação, consulta, atualização e remoção de dados). São as 4 operações principais em um banco de dados. 50 | 51 | Resumo de cada CRUD: 52 | - Primeiro: Cadastro de inscritos no canal 53 | - Segundo: Cadastro de episódios de podcast 54 | - Terceiro: Cadastro de filmes 55 | - Quarto: Cadastro de livros 56 | - Quinto: Cadastro de séries 57 | - Sexto: Cadastro de estudios e títulos 58 | 59 | 60 | ### 4.1 Ferramentas usadas 61 | 62 | | Ferramenta | Descrição | 63 | | --- | --- | 64 | | `javascript` | Linguagem de programação | 65 | | `nodejs` | Ambiente de execução do javascript| 66 | | `express` | Framework NodeJS | 67 | | `dotenv` | Dependência para proteger dados sensíveis do projeto| 68 | | `mongoose` | Dependência que interage com o MongoDB para a conexão da database, criação do model e das collections| 69 | | `nodemon` | Dependência que observa as atualizações realizadas nos documentos para rodar o servidor automaticamente| 70 | | `yarn` | Gerenciador de pacotes| 71 | | `MongoDb` | Banco de dado não relacional orietado a documentos| 72 | | `MongoDb Compass` | Interface gráfica para verificar se os dados foram persistidos| 73 | `Insomnia` | Interface gráfica para realizar os testes| 74 | 75 | ### 4.2 Como rodar cada projeto 76 | 77 | Para usar cada projeto, faça o clone e após isso baixe as dependências usando: 78 | 79 | ``` 80 | yarn 81 | ``` 82 | 83 | Após baixar as dependências e configurar o .env com a sua string de conexão do banco de dados, rode o projeto usando: 84 | 85 | ``` 86 | yarn devStart 87 | ``` 88 | ### 4.3 Comportamento de cada CRUD 89 | 90 | Endpoint genérico: localhost:3333/recurso/routeParams 91 | 92 | | Ferramenta | Descrição | 93 | | --- | --- | 94 | | `create/post/save()` | Deverá criar um documento e persistir no db. | 95 | | `getAll/get/find()` | Deverá listar todos os documntos que estão persistidos no db. | 96 | | `getOne/get/findById()` | Deverá listar um documento a partir do RouteParams Id. | 97 | | `updateOne/patch/findById()/save()` | Deverá encontrar um documento a partir do RouteParams Id. Receber a alteração de um ou mais itens especificos do documento e retornar o documento alterado| 98 | | `deleteOne/delete/remove()/save()` | Deverá encontrar um documento a partir do RouteParams Id. Deletar e persistir a remoção no db. E retornar dum json com a mensagem de confirmação da remoção| 99 | 100 | ### 4.4 Modelagem dos dados 101 | 102 | Apenas um schema contendo tipagem, informações de obrigação e de geração automática. Não modelei o id, pois escolhi usar a geração automática do objectId do mongoDb. A data de criação é automática usando o objeto Date do javascript. 103 | 104 | - Primeiro: Cadastro de inscritos no canal 105 | 106 | ``` 107 | name: { 108 | type: String, 109 | required: true 110 | }, 111 | subscribedToChannel: { 112 | type: String, 113 | required: true 114 | }, 115 | subscribeDate: { 116 | type: Date, 117 | required: true, 118 | default: Date.now 119 | 120 | } 121 | ``` 122 | - Segundo: Cadastro de episódios de podcast 123 | ``` 124 | nome: { 125 | type: String, 126 | required: true 127 | }, 128 | descricao: { 129 | type: String, 130 | required: true 131 | }, 132 | convidada: { 133 | type: String, 134 | required: true 135 | }, 136 | link: { 137 | type: String, 138 | required: true 139 | }, 140 | criadoEm:{ 141 | type: Date, 142 | required: true, 143 | default: Date.now 144 | } 145 | ``` 146 | - Terceiro: Cadastro de filmes 147 | ``` 148 | title: { 149 | type: String, 150 | required: true 151 | }, 152 | description: { 153 | type: String, 154 | required: true 155 | }, 156 | created_at: { 157 | type: Date, 158 | required: true, 159 | default: Date.now 160 | } 161 | ``` 162 | - Quarto: Cadastro de livros 163 | ``` 164 | title : { 165 | type: String, 166 | required: true 167 | }, 168 | author: { 169 | type: String, 170 | required: true 171 | }, 172 | pages: { 173 | type: String, 174 | required: true 175 | }, 176 | genre: { 177 | type: String, 178 | required: true 179 | }, 180 | created_at: { 181 | type: Date, 182 | required: true, 183 | default: Date.now 184 | } 185 | ``` 186 | - Quinto: Cadastro de séries 187 | ``` 188 | title: { 189 | type: String, 190 | required: true 191 | }, 192 | seasons: { 193 | type: Number, 194 | required: true 195 | }, 196 | availableOn: { 197 | type: String, 198 | required: true 199 | }, 200 | createdAt: { 201 | type: Date, 202 | required: true, 203 | default: new Date 204 | } 205 | ``` 206 | - Sexto: Cadastro de estudios e títulos 207 | ``` 208 | Dados para Collection Estudios 209 | 210 | - id: autogerado e obrigatório 211 | - nome: texto e obrigatório 212 | - criadoEm: data gerada automaticamente e obrigatório 213 | 214 | Dados para Collection Titulos 215 | 216 | - id: autogerado e obrigatório 217 | - nome: texto e obrigatório 218 | - genero: texto e obrigatório 219 | - descricao: texto e obrigatório 220 | - criadoEm: data gerada automaticamente e obrigatório 221 | - estudio: referencia do estudio cadastrado previamente obrigatório 222 | ``` 223 | 224 | ### 4.5 Arquitetura 225 | 226 | `- Projetos 1 e 2 ` 227 | 228 | #### Server.js 229 | > Subiu servidor nodejs, usou as rotas, converteu os dados para Json e fez conexao com o db. 230 | 231 | #### .env 232 | > Gerenciou a variavel de ambiente de configuração do MongoDb 233 | 234 | #### 📂Routes 235 | > Criou as rotas com toda a lógica acoplada. 236 | 237 | #### 📂Model 238 | > Modelou o esquema de dados para o banco. 239 | 240 |
241 |
242 | 243 | `- Projetos 3, 4 e 5` 244 | #### Server.js 245 | > Subiu servidor nodejs, usou as rotas, converteu os dados para Json e fez conexao com a importação da config do db. 246 | 247 | #### .env 248 | > Gerenciou a variavel de ambiente de configuração do MongoDb 249 | 250 | #### 📂SRC 251 | 252 | #### 📂Routes 253 | > Criou as rotas apenas com a responsabilidade dos metodos HTTP 254 | #### 📂Controllers 255 | > Criou a lógica e salvou as informações do db. 256 | #### 📂Models 257 | > Modelou o esquema de dados para o banco. 258 | #### 📂Data 259 | > Criou a configuração de conexão com o banco. 260 | 261 | `- Projetos 6` 262 | 263 | ``` 264 | 📁 FavMovies 265 | | 266 | |- 📁 src 267 | | | 268 | | |- 📁 data 269 | | |- 📄 database.js 270 | | 271 | | |- 📁 controllers 272 | | |- 📄 tituloController.js 273 | | |- 📄 estudioController.js 274 | | 275 | | |- 📁 models 276 | | |- 📄 titulo.js 277 | | |- 📄 estudio.js 278 | | 279 | | |- 📁 routes 280 | | |- 📄 tituloRoutes.js 281 | | |- 📄 estudioRoutes.js 282 | | 283 | | 284 | |- 📄 .env 285 | |- 📄 .env.example 286 | |- 📄 .gitignore 287 | |- 📄 package 288 | |- 📄 server.js 289 | 290 | ``` 291 | 292 |
293 |
294 | 295 | ## 5. Lições aprendidas 296 | 297 | ### 5.1 - Procurando direitinho tem muito conteúdo incrível no youtube 298 | 299 | A ideia original desses projetinhos foram retiradas desse tutorial do canal Web Dev Simplified. Obrigada Kyle! haha 300 | 301 | *[Build A REST API With Node.js, Express, & MongoDB - Quick](https://www.youtube.com/watch?v=fgTGADljAeg)* 302 | 303 | Já a parte de relacionamento, eu me inspirei nesse vídeo aqui da Rocketseat. Valeuu, Diego!rs 304 | 305 | *[API NodeJS + Express + Mongo - CRUD e relacionamentos com MongoDB|Diego Fernandes](https://www.youtube.com/watch?v=GAZdUyIV3ms)* 306 | 307 | 308 | Eu fiz o projeto 1 acompanhando o tutorial do Kyle e a partir do projeto 2 fui implementando e modificando conforme meu repertório ia deixando, rs. 309 | 310 | Para ter embasamento teórico assisti aulas de de data driven, aulas de conceitos, mapa mental sobre tipos de bancos de dados. Aqui está um comparativo entre SQL e NoSQL: 311 | 312 | | NoSQL | SQL | 313 | | --- | --- | 314 | | `Surgiu no final dos anos 90 e como uma alternativa de natureza não relacional` | RDBMS ou Sistema de Gerenciamento de Banco de Dados Relacional, armazenam dados em um formato estruturado, usando linhas, colunas e tabelas | 315 | | `Possuem alta escalabilidade e desempenho` | Geralmente demanda distribuição vertical de servidores, o que gera mais custo, pois quanto mais dados, mais memória e mais disco um servidor precisa. | 316 | | `Alguns tipos de bancos de dados não relacional: armazenamento de chave-valor, armazenamento column family, orientado a grafos e orientado a documentos` | Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é a linguagem de pesquisa declarativa padrão para banco de dados relacional.| 317 | 318 |
319 |
320 | Aqui está um comparativo dos termos MongoDb e SQL: 321 | 322 | | MongoDB | SQL | 323 | | --- | --- | 324 | | `database` | database| 325 | | `collection` | table| 326 | | `document` | row| 327 | | `field` | column| 328 | | `lookup` | table joins| 329 | 330 | [Referência](https://docs.mongodb.com/manual/reference/sql-comparison/) 331 | 332 | ### 5.1 - Repetição é importante demais 333 | 334 | A cada dia, ficava mais fluído entender a responsabilidade de cada arquivo, a lógica de cada função do CRUD, percebia os comportamentos e conseguia lidar melhor com os erros também. 335 | 336 | Mas Simara, faz sentido criar basicamente o mesmo projeto 5 vezes? Faz muito sentido! De tanto repetir, eu comecei a não precisar consultar o tutorial ou algum projeto meu anterior. 337 | 338 | O último então fluiu que só. Consegui desenhar toda a estratégia de como compartilhar o conhecimento com as meninas, comparando com o que elas já viram antes conectando pontos para o entendimento fluir melhor. 339 | 340 | 341 | ### 5.2 Começando com o MongoDb 342 | Os dados são armazenados no formato que se parece muito com JSON, o que é uma grande facilidade para quem já programa com Javascript. 343 | 344 | Podemos usar o Mongo pelo serviço de nuvem(cloud) ou localmente fazendo o download para nossa máquina (eu usei essa opção) e ainda é possível integrar as 2 formas. 345 | 346 | Além disso, o Mongo possui seu driver com suas próprias queries(comandos para interação com o banco que se assemelham muito com javascript com orientação a objeto), podemos também usar uma interface gráfica(usei o MongoDb Compass) e ainda podemos usar um ODM, ferramenta que mapeia entre nosso objeto e a db(usei o mongoose). 347 | 348 | ### 5.3 - Teste, teste e teste 349 | Eu não criei uma estratégia de testes, mas fiz testes manuais com Insomnia e tratei os possíveis erros para retornar status e mensagens coerentes. 350 | 351 | Não usei o driver do MongoDB, usei a nterface gráfica MongoCompass para verificar se meus dados estavam salvando direitinho. 352 | 353 | ### 5.4 - Mongoose faz um meio de campo lindão entre nosso projeto e o MongoDb 354 | 355 | Sabe quando a gente inventa de editar uma foto no photoshop, mesmo sabendo que existem filtros prontos que fazem um ótimo trabalho? Então usar o mongoose é apelar para templates prontos, lindos e rápidos. 356 | 357 | - Mas muita atenção, pois a comunicação dele com o MongoDB é feita com Assincronicidade. 358 | - Passando nossa string de conexão e informações default é possível fazer a Criação da conexão com a db e também tratar os erros. 359 | - Mas o melhor de todos os pontos, é que ele cria nosso model, informando exatamente como nossos documentos e collections serão. <3 360 | 361 | 362 | ### 5.5 - Separar as responsabilidades faz sentido demais 363 | 364 | A partir do terceiro projeto fui percebendo o quanto os arquivos de server e de routes estava ficando denso e estranho com tantas informações, dessa forma modularizei melhor e separei a minha lógica. Você pode perceber a diferença do primeiro para o último. 365 | 366 | ### 5.6 - Compartilhar conhecimento/vivência é disparada a melhor forma de aprender de forma eficiente 367 | 368 | Repito: não há nada que a gente saiba tão pouco que não possa compartilhar. 369 | 370 | Estou em constante aprendizado, nessa minha rotina de transição, mas eu só tenho segurança pra dizer que entendi algo de verdade depois que eu compartilho esse conhecimento. 371 | 372 | Além disso, compartilhar é uma troca linda e eu sempre aprendo muito com essas vivências. <3 373 | 374 | ## 6. Próximos passos 375 | 376 | - Quero me aventurar com infra e fazer o deploy de algum CRUD, permitindo de forma pública as integrações. 377 | 378 | - Implementar uma estratégia de testes para o CRUD 379 | 380 | --- 381 | ## Simara Conceição 382 | - [instagram](https://www.instagram.com/simara_conceicao) 383 | - [linkedin](https://www.linkedin.com/in/simaraconceicao/) 384 | - [github](https://github.com/simaraconceicao) 385 | - [spotify](https://open.spotify.com/show/59vCz4TY6tPHXW26qJknh3) 386 | - [blog](https://simaraconceicao.com/blog) 387 | 388 | > Me enviem feedbacks sobre esse repositorio e sobre essa minha forma de estudar em contato@simaraconceicao.com. Vou amar trocar ideias com vocês. É isso, pessu! Até a próxima! -------------------------------------------------------------------------------- /quarto/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sindresorhus/is@^0.14.0": 6 | version "0.14.0" 7 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 8 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== 9 | 10 | "@szmarczak/http-timer@^1.1.2": 11 | version "1.1.2" 12 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 13 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== 14 | dependencies: 15 | defer-to-connect "^1.0.1" 16 | 17 | "@types/bson@*": 18 | version "4.0.3" 19 | resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.0.3.tgz#30889d2ffde6262abbe38659364c631454999fbf" 20 | integrity sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw== 21 | dependencies: 22 | "@types/node" "*" 23 | 24 | "@types/mongodb@^3.5.27": 25 | version "3.6.16" 26 | resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.6.16.tgz#7a48aaeb777f57e4655515ce18acbc68600dfeb9" 27 | integrity sha512-D3tM0iRUet3TiIMAdvovxAIRG9gYqFd4j7visGwmPNdQj8Fq/uFFfRxyGCgEwVXAs0NnJPMI/QGVTADxDwhmSQ== 28 | dependencies: 29 | "@types/bson" "*" 30 | "@types/node" "*" 31 | 32 | "@types/node@*": 33 | version "15.6.1" 34 | resolved "https://registry.yarnpkg.com/@types/node/-/node-15.6.1.tgz#32d43390d5c62c5b6ec486a9bc9c59544de39a08" 35 | integrity sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA== 36 | 37 | abbrev@1: 38 | version "1.1.1" 39 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 40 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 41 | 42 | accepts@~1.3.7: 43 | version "1.3.7" 44 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 45 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 46 | dependencies: 47 | mime-types "~2.1.24" 48 | negotiator "0.6.2" 49 | 50 | ansi-align@^3.0.0: 51 | version "3.0.0" 52 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" 53 | integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== 54 | dependencies: 55 | string-width "^3.0.0" 56 | 57 | ansi-regex@^4.1.0: 58 | version "4.1.0" 59 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 60 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 61 | 62 | ansi-regex@^5.0.0: 63 | version "5.0.0" 64 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 65 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 66 | 67 | ansi-styles@^4.1.0: 68 | version "4.3.0" 69 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 70 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 71 | dependencies: 72 | color-convert "^2.0.1" 73 | 74 | anymatch@~3.1.1: 75 | version "3.1.2" 76 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 77 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 78 | dependencies: 79 | normalize-path "^3.0.0" 80 | picomatch "^2.0.4" 81 | 82 | array-flatten@1.1.1: 83 | version "1.1.1" 84 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 85 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 86 | 87 | balanced-match@^1.0.0: 88 | version "1.0.2" 89 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 90 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 91 | 92 | binary-extensions@^2.0.0: 93 | version "2.2.0" 94 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 95 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 96 | 97 | bl@^2.2.1: 98 | version "2.2.1" 99 | resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5" 100 | integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== 101 | dependencies: 102 | readable-stream "^2.3.5" 103 | safe-buffer "^5.1.1" 104 | 105 | bluebird@3.5.1: 106 | version "3.5.1" 107 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" 108 | integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== 109 | 110 | body-parser@1.19.0: 111 | version "1.19.0" 112 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 113 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 114 | dependencies: 115 | bytes "3.1.0" 116 | content-type "~1.0.4" 117 | debug "2.6.9" 118 | depd "~1.1.2" 119 | http-errors "1.7.2" 120 | iconv-lite "0.4.24" 121 | on-finished "~2.3.0" 122 | qs "6.7.0" 123 | raw-body "2.4.0" 124 | type-is "~1.6.17" 125 | 126 | boxen@^4.2.0: 127 | version "4.2.0" 128 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" 129 | integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== 130 | dependencies: 131 | ansi-align "^3.0.0" 132 | camelcase "^5.3.1" 133 | chalk "^3.0.0" 134 | cli-boxes "^2.2.0" 135 | string-width "^4.1.0" 136 | term-size "^2.1.0" 137 | type-fest "^0.8.1" 138 | widest-line "^3.1.0" 139 | 140 | brace-expansion@^1.1.7: 141 | version "1.1.11" 142 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 143 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 144 | dependencies: 145 | balanced-match "^1.0.0" 146 | concat-map "0.0.1" 147 | 148 | braces@~3.0.2: 149 | version "3.0.2" 150 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 151 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 152 | dependencies: 153 | fill-range "^7.0.1" 154 | 155 | bson@^1.1.4: 156 | version "1.1.6" 157 | resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.6.tgz#fb819be9a60cd677e0853aee4ca712a785d6618a" 158 | integrity sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg== 159 | 160 | bytes@3.1.0: 161 | version "3.1.0" 162 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 163 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 164 | 165 | cacheable-request@^6.0.0: 166 | version "6.1.0" 167 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 168 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== 169 | dependencies: 170 | clone-response "^1.0.2" 171 | get-stream "^5.1.0" 172 | http-cache-semantics "^4.0.0" 173 | keyv "^3.0.0" 174 | lowercase-keys "^2.0.0" 175 | normalize-url "^4.1.0" 176 | responselike "^1.0.2" 177 | 178 | camelcase@^5.3.1: 179 | version "5.3.1" 180 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 181 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 182 | 183 | chalk@^3.0.0: 184 | version "3.0.0" 185 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 186 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 187 | dependencies: 188 | ansi-styles "^4.1.0" 189 | supports-color "^7.1.0" 190 | 191 | chokidar@^3.2.2: 192 | version "3.5.1" 193 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 194 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 195 | dependencies: 196 | anymatch "~3.1.1" 197 | braces "~3.0.2" 198 | glob-parent "~5.1.0" 199 | is-binary-path "~2.1.0" 200 | is-glob "~4.0.1" 201 | normalize-path "~3.0.0" 202 | readdirp "~3.5.0" 203 | optionalDependencies: 204 | fsevents "~2.3.1" 205 | 206 | ci-info@^2.0.0: 207 | version "2.0.0" 208 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 209 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 210 | 211 | cli-boxes@^2.2.0: 212 | version "2.2.1" 213 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" 214 | integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== 215 | 216 | clone-response@^1.0.2: 217 | version "1.0.2" 218 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 219 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 220 | dependencies: 221 | mimic-response "^1.0.0" 222 | 223 | color-convert@^2.0.1: 224 | version "2.0.1" 225 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 226 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 227 | dependencies: 228 | color-name "~1.1.4" 229 | 230 | color-name@~1.1.4: 231 | version "1.1.4" 232 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 233 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 234 | 235 | concat-map@0.0.1: 236 | version "0.0.1" 237 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 238 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 239 | 240 | configstore@^5.0.1: 241 | version "5.0.1" 242 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" 243 | integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== 244 | dependencies: 245 | dot-prop "^5.2.0" 246 | graceful-fs "^4.1.2" 247 | make-dir "^3.0.0" 248 | unique-string "^2.0.0" 249 | write-file-atomic "^3.0.0" 250 | xdg-basedir "^4.0.0" 251 | 252 | content-disposition@0.5.3: 253 | version "0.5.3" 254 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 255 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 256 | dependencies: 257 | safe-buffer "5.1.2" 258 | 259 | content-type@~1.0.4: 260 | version "1.0.4" 261 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 262 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 263 | 264 | cookie-signature@1.0.6: 265 | version "1.0.6" 266 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 267 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 268 | 269 | cookie@0.4.0: 270 | version "0.4.0" 271 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 272 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 273 | 274 | core-util-is@~1.0.0: 275 | version "1.0.2" 276 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 277 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 278 | 279 | crypto-random-string@^2.0.0: 280 | version "2.0.0" 281 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" 282 | integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== 283 | 284 | debug@2.6.9, debug@^2.2.0: 285 | version "2.6.9" 286 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 287 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 288 | dependencies: 289 | ms "2.0.0" 290 | 291 | debug@3.1.0: 292 | version "3.1.0" 293 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 294 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 295 | dependencies: 296 | ms "2.0.0" 297 | 298 | debug@^3.2.6: 299 | version "3.2.7" 300 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 301 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 302 | dependencies: 303 | ms "^2.1.1" 304 | 305 | decompress-response@^3.3.0: 306 | version "3.3.0" 307 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 308 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 309 | dependencies: 310 | mimic-response "^1.0.0" 311 | 312 | deep-extend@^0.6.0: 313 | version "0.6.0" 314 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 315 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 316 | 317 | defer-to-connect@^1.0.1: 318 | version "1.1.3" 319 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" 320 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== 321 | 322 | denque@^1.4.1: 323 | version "1.5.0" 324 | resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de" 325 | integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ== 326 | 327 | depd@~1.1.2: 328 | version "1.1.2" 329 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 330 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 331 | 332 | destroy@~1.0.4: 333 | version "1.0.4" 334 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 335 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 336 | 337 | dot-prop@^5.2.0: 338 | version "5.3.0" 339 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" 340 | integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== 341 | dependencies: 342 | is-obj "^2.0.0" 343 | 344 | dotenv@^10.0.0: 345 | version "10.0.0" 346 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" 347 | integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== 348 | 349 | duplexer3@^0.1.4: 350 | version "0.1.4" 351 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 352 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 353 | 354 | ee-first@1.1.1: 355 | version "1.1.1" 356 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 357 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 358 | 359 | emoji-regex@^7.0.1: 360 | version "7.0.3" 361 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 362 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 363 | 364 | emoji-regex@^8.0.0: 365 | version "8.0.0" 366 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 367 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 368 | 369 | encodeurl@~1.0.2: 370 | version "1.0.2" 371 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 372 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 373 | 374 | end-of-stream@^1.1.0: 375 | version "1.4.4" 376 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 377 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 378 | dependencies: 379 | once "^1.4.0" 380 | 381 | escape-goat@^2.0.0: 382 | version "2.1.1" 383 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" 384 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== 385 | 386 | escape-html@~1.0.3: 387 | version "1.0.3" 388 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 389 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 390 | 391 | etag@~1.8.1: 392 | version "1.8.1" 393 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 394 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 395 | 396 | express@^4.17.1: 397 | version "4.17.1" 398 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 399 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 400 | dependencies: 401 | accepts "~1.3.7" 402 | array-flatten "1.1.1" 403 | body-parser "1.19.0" 404 | content-disposition "0.5.3" 405 | content-type "~1.0.4" 406 | cookie "0.4.0" 407 | cookie-signature "1.0.6" 408 | debug "2.6.9" 409 | depd "~1.1.2" 410 | encodeurl "~1.0.2" 411 | escape-html "~1.0.3" 412 | etag "~1.8.1" 413 | finalhandler "~1.1.2" 414 | fresh "0.5.2" 415 | merge-descriptors "1.0.1" 416 | methods "~1.1.2" 417 | on-finished "~2.3.0" 418 | parseurl "~1.3.3" 419 | path-to-regexp "0.1.7" 420 | proxy-addr "~2.0.5" 421 | qs "6.7.0" 422 | range-parser "~1.2.1" 423 | safe-buffer "5.1.2" 424 | send "0.17.1" 425 | serve-static "1.14.1" 426 | setprototypeof "1.1.1" 427 | statuses "~1.5.0" 428 | type-is "~1.6.18" 429 | utils-merge "1.0.1" 430 | vary "~1.1.2" 431 | 432 | fill-range@^7.0.1: 433 | version "7.0.1" 434 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 435 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 436 | dependencies: 437 | to-regex-range "^5.0.1" 438 | 439 | finalhandler@~1.1.2: 440 | version "1.1.2" 441 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 442 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 443 | dependencies: 444 | debug "2.6.9" 445 | encodeurl "~1.0.2" 446 | escape-html "~1.0.3" 447 | on-finished "~2.3.0" 448 | parseurl "~1.3.3" 449 | statuses "~1.5.0" 450 | unpipe "~1.0.0" 451 | 452 | forwarded@~0.1.2: 453 | version "0.1.2" 454 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 455 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 456 | 457 | fresh@0.5.2: 458 | version "0.5.2" 459 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 460 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 461 | 462 | fsevents@~2.3.1: 463 | version "2.3.2" 464 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 465 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 466 | 467 | get-stream@^4.1.0: 468 | version "4.1.0" 469 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 470 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 471 | dependencies: 472 | pump "^3.0.0" 473 | 474 | get-stream@^5.1.0: 475 | version "5.2.0" 476 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 477 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 478 | dependencies: 479 | pump "^3.0.0" 480 | 481 | glob-parent@~5.1.0: 482 | version "5.1.2" 483 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 484 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 485 | dependencies: 486 | is-glob "^4.0.1" 487 | 488 | global-dirs@^2.0.1: 489 | version "2.1.0" 490 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" 491 | integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== 492 | dependencies: 493 | ini "1.3.7" 494 | 495 | got@^9.6.0: 496 | version "9.6.0" 497 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 498 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== 499 | dependencies: 500 | "@sindresorhus/is" "^0.14.0" 501 | "@szmarczak/http-timer" "^1.1.2" 502 | cacheable-request "^6.0.0" 503 | decompress-response "^3.3.0" 504 | duplexer3 "^0.1.4" 505 | get-stream "^4.1.0" 506 | lowercase-keys "^1.0.1" 507 | mimic-response "^1.0.1" 508 | p-cancelable "^1.0.0" 509 | to-readable-stream "^1.0.0" 510 | url-parse-lax "^3.0.0" 511 | 512 | graceful-fs@^4.1.2: 513 | version "4.2.6" 514 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" 515 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== 516 | 517 | has-flag@^3.0.0: 518 | version "3.0.0" 519 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 520 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 521 | 522 | has-flag@^4.0.0: 523 | version "4.0.0" 524 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 525 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 526 | 527 | has-yarn@^2.1.0: 528 | version "2.1.0" 529 | resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" 530 | integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== 531 | 532 | http-cache-semantics@^4.0.0: 533 | version "4.1.0" 534 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 535 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 536 | 537 | http-errors@1.7.2: 538 | version "1.7.2" 539 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 540 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 541 | dependencies: 542 | depd "~1.1.2" 543 | inherits "2.0.3" 544 | setprototypeof "1.1.1" 545 | statuses ">= 1.5.0 < 2" 546 | toidentifier "1.0.0" 547 | 548 | http-errors@~1.7.2: 549 | version "1.7.3" 550 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 551 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 552 | dependencies: 553 | depd "~1.1.2" 554 | inherits "2.0.4" 555 | setprototypeof "1.1.1" 556 | statuses ">= 1.5.0 < 2" 557 | toidentifier "1.0.0" 558 | 559 | iconv-lite@0.4.24: 560 | version "0.4.24" 561 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 562 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 563 | dependencies: 564 | safer-buffer ">= 2.1.2 < 3" 565 | 566 | ignore-by-default@^1.0.1: 567 | version "1.0.1" 568 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 569 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= 570 | 571 | import-lazy@^2.1.0: 572 | version "2.1.0" 573 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 574 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 575 | 576 | imurmurhash@^0.1.4: 577 | version "0.1.4" 578 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 579 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 580 | 581 | inherits@2.0.3: 582 | version "2.0.3" 583 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 584 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 585 | 586 | inherits@2.0.4, inherits@~2.0.3: 587 | version "2.0.4" 588 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 589 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 590 | 591 | ini@1.3.7: 592 | version "1.3.7" 593 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" 594 | integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== 595 | 596 | ini@~1.3.0: 597 | version "1.3.8" 598 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 599 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 600 | 601 | ipaddr.js@1.9.1: 602 | version "1.9.1" 603 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 604 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 605 | 606 | is-binary-path@~2.1.0: 607 | version "2.1.0" 608 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 609 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 610 | dependencies: 611 | binary-extensions "^2.0.0" 612 | 613 | is-ci@^2.0.0: 614 | version "2.0.0" 615 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 616 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== 617 | dependencies: 618 | ci-info "^2.0.0" 619 | 620 | is-extglob@^2.1.1: 621 | version "2.1.1" 622 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 623 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 624 | 625 | is-fullwidth-code-point@^2.0.0: 626 | version "2.0.0" 627 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 628 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 629 | 630 | is-fullwidth-code-point@^3.0.0: 631 | version "3.0.0" 632 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 633 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 634 | 635 | is-glob@^4.0.1, is-glob@~4.0.1: 636 | version "4.0.1" 637 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 638 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 639 | dependencies: 640 | is-extglob "^2.1.1" 641 | 642 | is-installed-globally@^0.3.1: 643 | version "0.3.2" 644 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" 645 | integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== 646 | dependencies: 647 | global-dirs "^2.0.1" 648 | is-path-inside "^3.0.1" 649 | 650 | is-npm@^4.0.0: 651 | version "4.0.0" 652 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" 653 | integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== 654 | 655 | is-number@^7.0.0: 656 | version "7.0.0" 657 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 658 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 659 | 660 | is-obj@^2.0.0: 661 | version "2.0.0" 662 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" 663 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== 664 | 665 | is-path-inside@^3.0.1: 666 | version "3.0.3" 667 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 668 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 669 | 670 | is-typedarray@^1.0.0: 671 | version "1.0.0" 672 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 673 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 674 | 675 | is-yarn-global@^0.3.0: 676 | version "0.3.0" 677 | resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" 678 | integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== 679 | 680 | isarray@~1.0.0: 681 | version "1.0.0" 682 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 683 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 684 | 685 | json-buffer@3.0.0: 686 | version "3.0.0" 687 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 688 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= 689 | 690 | kareem@2.3.2: 691 | version "2.3.2" 692 | resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.2.tgz#78c4508894985b8d38a0dc15e1a8e11078f2ca93" 693 | integrity sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ== 694 | 695 | keyv@^3.0.0: 696 | version "3.1.0" 697 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 698 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== 699 | dependencies: 700 | json-buffer "3.0.0" 701 | 702 | latest-version@^5.0.0: 703 | version "5.1.0" 704 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" 705 | integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== 706 | dependencies: 707 | package-json "^6.3.0" 708 | 709 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: 710 | version "1.0.1" 711 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 712 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 713 | 714 | lowercase-keys@^2.0.0: 715 | version "2.0.0" 716 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 717 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 718 | 719 | make-dir@^3.0.0: 720 | version "3.1.0" 721 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 722 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 723 | dependencies: 724 | semver "^6.0.0" 725 | 726 | media-typer@0.3.0: 727 | version "0.3.0" 728 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 729 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 730 | 731 | memory-pager@^1.0.2: 732 | version "1.5.0" 733 | resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" 734 | integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== 735 | 736 | merge-descriptors@1.0.1: 737 | version "1.0.1" 738 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 739 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 740 | 741 | methods@~1.1.2: 742 | version "1.1.2" 743 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 744 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 745 | 746 | mime-db@1.47.0: 747 | version "1.47.0" 748 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" 749 | integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== 750 | 751 | mime-types@~2.1.24: 752 | version "2.1.30" 753 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" 754 | integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== 755 | dependencies: 756 | mime-db "1.47.0" 757 | 758 | mime@1.6.0: 759 | version "1.6.0" 760 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 761 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 762 | 763 | mimic-response@^1.0.0, mimic-response@^1.0.1: 764 | version "1.0.1" 765 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 766 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 767 | 768 | minimatch@^3.0.4: 769 | version "3.0.4" 770 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 771 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 772 | dependencies: 773 | brace-expansion "^1.1.7" 774 | 775 | minimist@^1.2.0: 776 | version "1.2.5" 777 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 778 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 779 | 780 | mongodb@3.6.8: 781 | version "3.6.8" 782 | resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.6.8.tgz#3e2632af81915b3ff99b7681121ca0895e8ed407" 783 | integrity sha512-sDjJvI73WjON1vapcbyBD3Ao9/VN3TKYY8/QX9EPbs22KaCSrQ5rXo5ZZd44tWJ3wl3FlnrFZ+KyUtNH6+1ZPQ== 784 | dependencies: 785 | bl "^2.2.1" 786 | bson "^1.1.4" 787 | denque "^1.4.1" 788 | optional-require "^1.0.3" 789 | safe-buffer "^5.1.2" 790 | optionalDependencies: 791 | saslprep "^1.0.0" 792 | 793 | mongoose-legacy-pluralize@1.0.2: 794 | version "1.0.2" 795 | resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" 796 | integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== 797 | 798 | mongoose@^5.12.11: 799 | version "5.12.11" 800 | resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.12.11.tgz#e4531e4075aeed86db6482b2f1b5564570934d4c" 801 | integrity sha512-16TVqYhHQdZNR8RTis/8iiTPy+nJPq0UhKyBFTucLLU3PWcDLY2gAGv6aOk0LygTNhEfgNnENgUUHhjVqTuh8w== 802 | dependencies: 803 | "@types/mongodb" "^3.5.27" 804 | bson "^1.1.4" 805 | kareem "2.3.2" 806 | mongodb "3.6.8" 807 | mongoose-legacy-pluralize "1.0.2" 808 | mpath "0.8.3" 809 | mquery "3.2.5" 810 | ms "2.1.2" 811 | regexp-clone "1.0.0" 812 | safe-buffer "5.2.1" 813 | sift "13.5.2" 814 | sliced "1.0.1" 815 | 816 | mpath@0.8.3: 817 | version "0.8.3" 818 | resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.8.3.tgz#828ac0d187f7f42674839d74921970979abbdd8f" 819 | integrity sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA== 820 | 821 | mquery@3.2.5: 822 | version "3.2.5" 823 | resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.5.tgz#8f2305632e4bb197f68f60c0cffa21aaf4060c51" 824 | integrity sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A== 825 | dependencies: 826 | bluebird "3.5.1" 827 | debug "3.1.0" 828 | regexp-clone "^1.0.0" 829 | safe-buffer "5.1.2" 830 | sliced "1.0.1" 831 | 832 | ms@2.0.0: 833 | version "2.0.0" 834 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 835 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 836 | 837 | ms@2.1.1: 838 | version "2.1.1" 839 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 840 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 841 | 842 | ms@2.1.2: 843 | version "2.1.2" 844 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 845 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 846 | 847 | ms@^2.1.1: 848 | version "2.1.3" 849 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 850 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 851 | 852 | negotiator@0.6.2: 853 | version "0.6.2" 854 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 855 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 856 | 857 | nodemon@^2.0.7: 858 | version "2.0.7" 859 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.7.tgz#6f030a0a0ebe3ea1ba2a38f71bf9bab4841ced32" 860 | integrity sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA== 861 | dependencies: 862 | chokidar "^3.2.2" 863 | debug "^3.2.6" 864 | ignore-by-default "^1.0.1" 865 | minimatch "^3.0.4" 866 | pstree.remy "^1.1.7" 867 | semver "^5.7.1" 868 | supports-color "^5.5.0" 869 | touch "^3.1.0" 870 | undefsafe "^2.0.3" 871 | update-notifier "^4.1.0" 872 | 873 | nopt@~1.0.10: 874 | version "1.0.10" 875 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 876 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= 877 | dependencies: 878 | abbrev "1" 879 | 880 | normalize-path@^3.0.0, normalize-path@~3.0.0: 881 | version "3.0.0" 882 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 883 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 884 | 885 | normalize-url@^4.1.0: 886 | version "4.5.1" 887 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" 888 | integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== 889 | 890 | on-finished@~2.3.0: 891 | version "2.3.0" 892 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 893 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 894 | dependencies: 895 | ee-first "1.1.1" 896 | 897 | once@^1.3.1, once@^1.4.0: 898 | version "1.4.0" 899 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 900 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 901 | dependencies: 902 | wrappy "1" 903 | 904 | optional-require@^1.0.3: 905 | version "1.0.3" 906 | resolved "https://registry.yarnpkg.com/optional-require/-/optional-require-1.0.3.tgz#275b8e9df1dc6a17ad155369c2422a440f89cb07" 907 | integrity sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA== 908 | 909 | p-cancelable@^1.0.0: 910 | version "1.1.0" 911 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 912 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 913 | 914 | package-json@^6.3.0: 915 | version "6.5.0" 916 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" 917 | integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== 918 | dependencies: 919 | got "^9.6.0" 920 | registry-auth-token "^4.0.0" 921 | registry-url "^5.0.0" 922 | semver "^6.2.0" 923 | 924 | parseurl@~1.3.3: 925 | version "1.3.3" 926 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 927 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 928 | 929 | path-to-regexp@0.1.7: 930 | version "0.1.7" 931 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 932 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 933 | 934 | picomatch@^2.0.4, picomatch@^2.2.1: 935 | version "2.3.0" 936 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 937 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 938 | 939 | prepend-http@^2.0.0: 940 | version "2.0.0" 941 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 942 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= 943 | 944 | process-nextick-args@~2.0.0: 945 | version "2.0.1" 946 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 947 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 948 | 949 | proxy-addr@~2.0.5: 950 | version "2.0.6" 951 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" 952 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== 953 | dependencies: 954 | forwarded "~0.1.2" 955 | ipaddr.js "1.9.1" 956 | 957 | pstree.remy@^1.1.7: 958 | version "1.1.8" 959 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 960 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 961 | 962 | pump@^3.0.0: 963 | version "3.0.0" 964 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 965 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 966 | dependencies: 967 | end-of-stream "^1.1.0" 968 | once "^1.3.1" 969 | 970 | pupa@^2.0.1: 971 | version "2.1.1" 972 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" 973 | integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== 974 | dependencies: 975 | escape-goat "^2.0.0" 976 | 977 | qs@6.7.0: 978 | version "6.7.0" 979 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 980 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 981 | 982 | range-parser@~1.2.1: 983 | version "1.2.1" 984 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 985 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 986 | 987 | raw-body@2.4.0: 988 | version "2.4.0" 989 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 990 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 991 | dependencies: 992 | bytes "3.1.0" 993 | http-errors "1.7.2" 994 | iconv-lite "0.4.24" 995 | unpipe "1.0.0" 996 | 997 | rc@^1.2.8: 998 | version "1.2.8" 999 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1000 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1001 | dependencies: 1002 | deep-extend "^0.6.0" 1003 | ini "~1.3.0" 1004 | minimist "^1.2.0" 1005 | strip-json-comments "~2.0.1" 1006 | 1007 | readable-stream@^2.3.5: 1008 | version "2.3.7" 1009 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1010 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1011 | dependencies: 1012 | core-util-is "~1.0.0" 1013 | inherits "~2.0.3" 1014 | isarray "~1.0.0" 1015 | process-nextick-args "~2.0.0" 1016 | safe-buffer "~5.1.1" 1017 | string_decoder "~1.1.1" 1018 | util-deprecate "~1.0.1" 1019 | 1020 | readdirp@~3.5.0: 1021 | version "3.5.0" 1022 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 1023 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 1024 | dependencies: 1025 | picomatch "^2.2.1" 1026 | 1027 | regexp-clone@1.0.0, regexp-clone@^1.0.0: 1028 | version "1.0.0" 1029 | resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" 1030 | integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== 1031 | 1032 | registry-auth-token@^4.0.0: 1033 | version "4.2.1" 1034 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" 1035 | integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== 1036 | dependencies: 1037 | rc "^1.2.8" 1038 | 1039 | registry-url@^5.0.0: 1040 | version "5.1.0" 1041 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" 1042 | integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== 1043 | dependencies: 1044 | rc "^1.2.8" 1045 | 1046 | responselike@^1.0.2: 1047 | version "1.0.2" 1048 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 1049 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= 1050 | dependencies: 1051 | lowercase-keys "^1.0.0" 1052 | 1053 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1054 | version "5.1.2" 1055 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1056 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1057 | 1058 | safe-buffer@5.2.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: 1059 | version "5.2.1" 1060 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1061 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1062 | 1063 | "safer-buffer@>= 2.1.2 < 3": 1064 | version "2.1.2" 1065 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1066 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1067 | 1068 | saslprep@^1.0.0: 1069 | version "1.0.3" 1070 | resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" 1071 | integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== 1072 | dependencies: 1073 | sparse-bitfield "^3.0.3" 1074 | 1075 | semver-diff@^3.1.1: 1076 | version "3.1.1" 1077 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" 1078 | integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== 1079 | dependencies: 1080 | semver "^6.3.0" 1081 | 1082 | semver@^5.7.1: 1083 | version "5.7.1" 1084 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1085 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1086 | 1087 | semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: 1088 | version "6.3.0" 1089 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1090 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1091 | 1092 | send@0.17.1: 1093 | version "0.17.1" 1094 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 1095 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 1096 | dependencies: 1097 | debug "2.6.9" 1098 | depd "~1.1.2" 1099 | destroy "~1.0.4" 1100 | encodeurl "~1.0.2" 1101 | escape-html "~1.0.3" 1102 | etag "~1.8.1" 1103 | fresh "0.5.2" 1104 | http-errors "~1.7.2" 1105 | mime "1.6.0" 1106 | ms "2.1.1" 1107 | on-finished "~2.3.0" 1108 | range-parser "~1.2.1" 1109 | statuses "~1.5.0" 1110 | 1111 | serve-static@1.14.1: 1112 | version "1.14.1" 1113 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 1114 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 1115 | dependencies: 1116 | encodeurl "~1.0.2" 1117 | escape-html "~1.0.3" 1118 | parseurl "~1.3.3" 1119 | send "0.17.1" 1120 | 1121 | setprototypeof@1.1.1: 1122 | version "1.1.1" 1123 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1124 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1125 | 1126 | sift@13.5.2: 1127 | version "13.5.2" 1128 | resolved "https://registry.yarnpkg.com/sift/-/sift-13.5.2.tgz#24a715e13c617b086166cd04917d204a591c9da6" 1129 | integrity sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA== 1130 | 1131 | signal-exit@^3.0.2: 1132 | version "3.0.3" 1133 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1134 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1135 | 1136 | sliced@1.0.1: 1137 | version "1.0.1" 1138 | resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" 1139 | integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= 1140 | 1141 | sparse-bitfield@^3.0.3: 1142 | version "3.0.3" 1143 | resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" 1144 | integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE= 1145 | dependencies: 1146 | memory-pager "^1.0.2" 1147 | 1148 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 1149 | version "1.5.0" 1150 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1151 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1152 | 1153 | string-width@^3.0.0: 1154 | version "3.1.0" 1155 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1156 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1157 | dependencies: 1158 | emoji-regex "^7.0.1" 1159 | is-fullwidth-code-point "^2.0.0" 1160 | strip-ansi "^5.1.0" 1161 | 1162 | string-width@^4.0.0, string-width@^4.1.0: 1163 | version "4.2.2" 1164 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" 1165 | integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== 1166 | dependencies: 1167 | emoji-regex "^8.0.0" 1168 | is-fullwidth-code-point "^3.0.0" 1169 | strip-ansi "^6.0.0" 1170 | 1171 | string_decoder@~1.1.1: 1172 | version "1.1.1" 1173 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1174 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1175 | dependencies: 1176 | safe-buffer "~5.1.0" 1177 | 1178 | strip-ansi@^5.1.0: 1179 | version "5.2.0" 1180 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1181 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1182 | dependencies: 1183 | ansi-regex "^4.1.0" 1184 | 1185 | strip-ansi@^6.0.0: 1186 | version "6.0.0" 1187 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1188 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1189 | dependencies: 1190 | ansi-regex "^5.0.0" 1191 | 1192 | strip-json-comments@~2.0.1: 1193 | version "2.0.1" 1194 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1195 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1196 | 1197 | supports-color@^5.5.0: 1198 | version "5.5.0" 1199 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1200 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1201 | dependencies: 1202 | has-flag "^3.0.0" 1203 | 1204 | supports-color@^7.1.0: 1205 | version "7.2.0" 1206 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1207 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1208 | dependencies: 1209 | has-flag "^4.0.0" 1210 | 1211 | term-size@^2.1.0: 1212 | version "2.2.1" 1213 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" 1214 | integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== 1215 | 1216 | to-readable-stream@^1.0.0: 1217 | version "1.0.0" 1218 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 1219 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== 1220 | 1221 | to-regex-range@^5.0.1: 1222 | version "5.0.1" 1223 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1224 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1225 | dependencies: 1226 | is-number "^7.0.0" 1227 | 1228 | toidentifier@1.0.0: 1229 | version "1.0.0" 1230 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1231 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 1232 | 1233 | touch@^3.1.0: 1234 | version "3.1.0" 1235 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 1236 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 1237 | dependencies: 1238 | nopt "~1.0.10" 1239 | 1240 | type-fest@^0.8.1: 1241 | version "0.8.1" 1242 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1243 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1244 | 1245 | type-is@~1.6.17, type-is@~1.6.18: 1246 | version "1.6.18" 1247 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1248 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1249 | dependencies: 1250 | media-typer "0.3.0" 1251 | mime-types "~2.1.24" 1252 | 1253 | typedarray-to-buffer@^3.1.5: 1254 | version "3.1.5" 1255 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 1256 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 1257 | dependencies: 1258 | is-typedarray "^1.0.0" 1259 | 1260 | undefsafe@^2.0.3: 1261 | version "2.0.3" 1262 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" 1263 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== 1264 | dependencies: 1265 | debug "^2.2.0" 1266 | 1267 | unique-string@^2.0.0: 1268 | version "2.0.0" 1269 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" 1270 | integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== 1271 | dependencies: 1272 | crypto-random-string "^2.0.0" 1273 | 1274 | unpipe@1.0.0, unpipe@~1.0.0: 1275 | version "1.0.0" 1276 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1277 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1278 | 1279 | update-notifier@^4.1.0: 1280 | version "4.1.3" 1281 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" 1282 | integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== 1283 | dependencies: 1284 | boxen "^4.2.0" 1285 | chalk "^3.0.0" 1286 | configstore "^5.0.1" 1287 | has-yarn "^2.1.0" 1288 | import-lazy "^2.1.0" 1289 | is-ci "^2.0.0" 1290 | is-installed-globally "^0.3.1" 1291 | is-npm "^4.0.0" 1292 | is-yarn-global "^0.3.0" 1293 | latest-version "^5.0.0" 1294 | pupa "^2.0.1" 1295 | semver-diff "^3.1.1" 1296 | xdg-basedir "^4.0.0" 1297 | 1298 | url-parse-lax@^3.0.0: 1299 | version "3.0.0" 1300 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 1301 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= 1302 | dependencies: 1303 | prepend-http "^2.0.0" 1304 | 1305 | util-deprecate@~1.0.1: 1306 | version "1.0.2" 1307 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1308 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1309 | 1310 | utils-merge@1.0.1: 1311 | version "1.0.1" 1312 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1313 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1314 | 1315 | vary@~1.1.2: 1316 | version "1.1.2" 1317 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1318 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1319 | 1320 | widest-line@^3.1.0: 1321 | version "3.1.0" 1322 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" 1323 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== 1324 | dependencies: 1325 | string-width "^4.0.0" 1326 | 1327 | wrappy@1: 1328 | version "1.0.2" 1329 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1330 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1331 | 1332 | write-file-atomic@^3.0.0: 1333 | version "3.0.3" 1334 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 1335 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 1336 | dependencies: 1337 | imurmurhash "^0.1.4" 1338 | is-typedarray "^1.0.0" 1339 | signal-exit "^3.0.2" 1340 | typedarray-to-buffer "^3.1.5" 1341 | 1342 | xdg-basedir@^4.0.0: 1343 | version "4.0.0" 1344 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" 1345 | integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== 1346 | -------------------------------------------------------------------------------- /quinto/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sindresorhus/is@^0.14.0": 6 | version "0.14.0" 7 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 8 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== 9 | 10 | "@szmarczak/http-timer@^1.1.2": 11 | version "1.1.2" 12 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 13 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== 14 | dependencies: 15 | defer-to-connect "^1.0.1" 16 | 17 | "@types/bson@*": 18 | version "4.0.3" 19 | resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.0.3.tgz#30889d2ffde6262abbe38659364c631454999fbf" 20 | integrity sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw== 21 | dependencies: 22 | "@types/node" "*" 23 | 24 | "@types/mongodb@^3.5.27": 25 | version "3.6.16" 26 | resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.6.16.tgz#7a48aaeb777f57e4655515ce18acbc68600dfeb9" 27 | integrity sha512-D3tM0iRUet3TiIMAdvovxAIRG9gYqFd4j7visGwmPNdQj8Fq/uFFfRxyGCgEwVXAs0NnJPMI/QGVTADxDwhmSQ== 28 | dependencies: 29 | "@types/bson" "*" 30 | "@types/node" "*" 31 | 32 | "@types/node@*": 33 | version "15.6.1" 34 | resolved "https://registry.yarnpkg.com/@types/node/-/node-15.6.1.tgz#32d43390d5c62c5b6ec486a9bc9c59544de39a08" 35 | integrity sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA== 36 | 37 | abbrev@1: 38 | version "1.1.1" 39 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 40 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 41 | 42 | accepts@~1.3.7: 43 | version "1.3.7" 44 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 45 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 46 | dependencies: 47 | mime-types "~2.1.24" 48 | negotiator "0.6.2" 49 | 50 | ansi-align@^3.0.0: 51 | version "3.0.0" 52 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" 53 | integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== 54 | dependencies: 55 | string-width "^3.0.0" 56 | 57 | ansi-regex@^4.1.0: 58 | version "4.1.0" 59 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 60 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 61 | 62 | ansi-regex@^5.0.0: 63 | version "5.0.0" 64 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 65 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 66 | 67 | ansi-styles@^4.1.0: 68 | version "4.3.0" 69 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 70 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 71 | dependencies: 72 | color-convert "^2.0.1" 73 | 74 | anymatch@~3.1.1: 75 | version "3.1.2" 76 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 77 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 78 | dependencies: 79 | normalize-path "^3.0.0" 80 | picomatch "^2.0.4" 81 | 82 | array-flatten@1.1.1: 83 | version "1.1.1" 84 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 85 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 86 | 87 | balanced-match@^1.0.0: 88 | version "1.0.2" 89 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 90 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 91 | 92 | binary-extensions@^2.0.0: 93 | version "2.2.0" 94 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 95 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 96 | 97 | bl@^2.2.1: 98 | version "2.2.1" 99 | resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5" 100 | integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== 101 | dependencies: 102 | readable-stream "^2.3.5" 103 | safe-buffer "^5.1.1" 104 | 105 | bluebird@3.5.1: 106 | version "3.5.1" 107 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" 108 | integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== 109 | 110 | body-parser@1.19.0: 111 | version "1.19.0" 112 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 113 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 114 | dependencies: 115 | bytes "3.1.0" 116 | content-type "~1.0.4" 117 | debug "2.6.9" 118 | depd "~1.1.2" 119 | http-errors "1.7.2" 120 | iconv-lite "0.4.24" 121 | on-finished "~2.3.0" 122 | qs "6.7.0" 123 | raw-body "2.4.0" 124 | type-is "~1.6.17" 125 | 126 | boxen@^4.2.0: 127 | version "4.2.0" 128 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" 129 | integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== 130 | dependencies: 131 | ansi-align "^3.0.0" 132 | camelcase "^5.3.1" 133 | chalk "^3.0.0" 134 | cli-boxes "^2.2.0" 135 | string-width "^4.1.0" 136 | term-size "^2.1.0" 137 | type-fest "^0.8.1" 138 | widest-line "^3.1.0" 139 | 140 | brace-expansion@^1.1.7: 141 | version "1.1.11" 142 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 143 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 144 | dependencies: 145 | balanced-match "^1.0.0" 146 | concat-map "0.0.1" 147 | 148 | braces@~3.0.2: 149 | version "3.0.2" 150 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 151 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 152 | dependencies: 153 | fill-range "^7.0.1" 154 | 155 | bson@^1.1.4: 156 | version "1.1.6" 157 | resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.6.tgz#fb819be9a60cd677e0853aee4ca712a785d6618a" 158 | integrity sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg== 159 | 160 | bytes@3.1.0: 161 | version "3.1.0" 162 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 163 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 164 | 165 | cacheable-request@^6.0.0: 166 | version "6.1.0" 167 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 168 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== 169 | dependencies: 170 | clone-response "^1.0.2" 171 | get-stream "^5.1.0" 172 | http-cache-semantics "^4.0.0" 173 | keyv "^3.0.0" 174 | lowercase-keys "^2.0.0" 175 | normalize-url "^4.1.0" 176 | responselike "^1.0.2" 177 | 178 | camelcase@^5.3.1: 179 | version "5.3.1" 180 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 181 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 182 | 183 | chalk@^3.0.0: 184 | version "3.0.0" 185 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 186 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 187 | dependencies: 188 | ansi-styles "^4.1.0" 189 | supports-color "^7.1.0" 190 | 191 | chokidar@^3.2.2: 192 | version "3.5.1" 193 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 194 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 195 | dependencies: 196 | anymatch "~3.1.1" 197 | braces "~3.0.2" 198 | glob-parent "~5.1.0" 199 | is-binary-path "~2.1.0" 200 | is-glob "~4.0.1" 201 | normalize-path "~3.0.0" 202 | readdirp "~3.5.0" 203 | optionalDependencies: 204 | fsevents "~2.3.1" 205 | 206 | ci-info@^2.0.0: 207 | version "2.0.0" 208 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 209 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 210 | 211 | cli-boxes@^2.2.0: 212 | version "2.2.1" 213 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" 214 | integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== 215 | 216 | clone-response@^1.0.2: 217 | version "1.0.2" 218 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 219 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 220 | dependencies: 221 | mimic-response "^1.0.0" 222 | 223 | color-convert@^2.0.1: 224 | version "2.0.1" 225 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 226 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 227 | dependencies: 228 | color-name "~1.1.4" 229 | 230 | color-name@~1.1.4: 231 | version "1.1.4" 232 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 233 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 234 | 235 | concat-map@0.0.1: 236 | version "0.0.1" 237 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 238 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 239 | 240 | configstore@^5.0.1: 241 | version "5.0.1" 242 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" 243 | integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== 244 | dependencies: 245 | dot-prop "^5.2.0" 246 | graceful-fs "^4.1.2" 247 | make-dir "^3.0.0" 248 | unique-string "^2.0.0" 249 | write-file-atomic "^3.0.0" 250 | xdg-basedir "^4.0.0" 251 | 252 | content-disposition@0.5.3: 253 | version "0.5.3" 254 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 255 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 256 | dependencies: 257 | safe-buffer "5.1.2" 258 | 259 | content-type@~1.0.4: 260 | version "1.0.4" 261 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 262 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 263 | 264 | cookie-signature@1.0.6: 265 | version "1.0.6" 266 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 267 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 268 | 269 | cookie@0.4.0: 270 | version "0.4.0" 271 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 272 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 273 | 274 | core-util-is@~1.0.0: 275 | version "1.0.2" 276 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 277 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 278 | 279 | crypto-random-string@^2.0.0: 280 | version "2.0.0" 281 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" 282 | integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== 283 | 284 | debug@2.6.9, debug@^2.2.0: 285 | version "2.6.9" 286 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 287 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 288 | dependencies: 289 | ms "2.0.0" 290 | 291 | debug@3.1.0: 292 | version "3.1.0" 293 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 294 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 295 | dependencies: 296 | ms "2.0.0" 297 | 298 | debug@^3.2.6: 299 | version "3.2.7" 300 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 301 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 302 | dependencies: 303 | ms "^2.1.1" 304 | 305 | decompress-response@^3.3.0: 306 | version "3.3.0" 307 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 308 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 309 | dependencies: 310 | mimic-response "^1.0.0" 311 | 312 | deep-extend@^0.6.0: 313 | version "0.6.0" 314 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 315 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 316 | 317 | defer-to-connect@^1.0.1: 318 | version "1.1.3" 319 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" 320 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== 321 | 322 | denque@^1.4.1: 323 | version "1.5.0" 324 | resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de" 325 | integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ== 326 | 327 | depd@~1.1.2: 328 | version "1.1.2" 329 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 330 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 331 | 332 | destroy@~1.0.4: 333 | version "1.0.4" 334 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 335 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 336 | 337 | dot-prop@^5.2.0: 338 | version "5.3.0" 339 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" 340 | integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== 341 | dependencies: 342 | is-obj "^2.0.0" 343 | 344 | dotenv@^10.0.0: 345 | version "10.0.0" 346 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" 347 | integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== 348 | 349 | duplexer3@^0.1.4: 350 | version "0.1.4" 351 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 352 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 353 | 354 | ee-first@1.1.1: 355 | version "1.1.1" 356 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 357 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 358 | 359 | emoji-regex@^7.0.1: 360 | version "7.0.3" 361 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 362 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 363 | 364 | emoji-regex@^8.0.0: 365 | version "8.0.0" 366 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 367 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 368 | 369 | encodeurl@~1.0.2: 370 | version "1.0.2" 371 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 372 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 373 | 374 | end-of-stream@^1.1.0: 375 | version "1.4.4" 376 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 377 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 378 | dependencies: 379 | once "^1.4.0" 380 | 381 | escape-goat@^2.0.0: 382 | version "2.1.1" 383 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" 384 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== 385 | 386 | escape-html@~1.0.3: 387 | version "1.0.3" 388 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 389 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 390 | 391 | etag@~1.8.1: 392 | version "1.8.1" 393 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 394 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 395 | 396 | express@^4.17.1: 397 | version "4.17.1" 398 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 399 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 400 | dependencies: 401 | accepts "~1.3.7" 402 | array-flatten "1.1.1" 403 | body-parser "1.19.0" 404 | content-disposition "0.5.3" 405 | content-type "~1.0.4" 406 | cookie "0.4.0" 407 | cookie-signature "1.0.6" 408 | debug "2.6.9" 409 | depd "~1.1.2" 410 | encodeurl "~1.0.2" 411 | escape-html "~1.0.3" 412 | etag "~1.8.1" 413 | finalhandler "~1.1.2" 414 | fresh "0.5.2" 415 | merge-descriptors "1.0.1" 416 | methods "~1.1.2" 417 | on-finished "~2.3.0" 418 | parseurl "~1.3.3" 419 | path-to-regexp "0.1.7" 420 | proxy-addr "~2.0.5" 421 | qs "6.7.0" 422 | range-parser "~1.2.1" 423 | safe-buffer "5.1.2" 424 | send "0.17.1" 425 | serve-static "1.14.1" 426 | setprototypeof "1.1.1" 427 | statuses "~1.5.0" 428 | type-is "~1.6.18" 429 | utils-merge "1.0.1" 430 | vary "~1.1.2" 431 | 432 | fill-range@^7.0.1: 433 | version "7.0.1" 434 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 435 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 436 | dependencies: 437 | to-regex-range "^5.0.1" 438 | 439 | finalhandler@~1.1.2: 440 | version "1.1.2" 441 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 442 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 443 | dependencies: 444 | debug "2.6.9" 445 | encodeurl "~1.0.2" 446 | escape-html "~1.0.3" 447 | on-finished "~2.3.0" 448 | parseurl "~1.3.3" 449 | statuses "~1.5.0" 450 | unpipe "~1.0.0" 451 | 452 | forwarded@~0.1.2: 453 | version "0.1.2" 454 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 455 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 456 | 457 | fresh@0.5.2: 458 | version "0.5.2" 459 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 460 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 461 | 462 | fsevents@~2.3.1: 463 | version "2.3.2" 464 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 465 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 466 | 467 | get-stream@^4.1.0: 468 | version "4.1.0" 469 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 470 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 471 | dependencies: 472 | pump "^3.0.0" 473 | 474 | get-stream@^5.1.0: 475 | version "5.2.0" 476 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 477 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 478 | dependencies: 479 | pump "^3.0.0" 480 | 481 | glob-parent@~5.1.0: 482 | version "5.1.2" 483 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 484 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 485 | dependencies: 486 | is-glob "^4.0.1" 487 | 488 | global-dirs@^2.0.1: 489 | version "2.1.0" 490 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" 491 | integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== 492 | dependencies: 493 | ini "1.3.7" 494 | 495 | got@^9.6.0: 496 | version "9.6.0" 497 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 498 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== 499 | dependencies: 500 | "@sindresorhus/is" "^0.14.0" 501 | "@szmarczak/http-timer" "^1.1.2" 502 | cacheable-request "^6.0.0" 503 | decompress-response "^3.3.0" 504 | duplexer3 "^0.1.4" 505 | get-stream "^4.1.0" 506 | lowercase-keys "^1.0.1" 507 | mimic-response "^1.0.1" 508 | p-cancelable "^1.0.0" 509 | to-readable-stream "^1.0.0" 510 | url-parse-lax "^3.0.0" 511 | 512 | graceful-fs@^4.1.2: 513 | version "4.2.6" 514 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" 515 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== 516 | 517 | has-flag@^3.0.0: 518 | version "3.0.0" 519 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 520 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 521 | 522 | has-flag@^4.0.0: 523 | version "4.0.0" 524 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 525 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 526 | 527 | has-yarn@^2.1.0: 528 | version "2.1.0" 529 | resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" 530 | integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== 531 | 532 | http-cache-semantics@^4.0.0: 533 | version "4.1.0" 534 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 535 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 536 | 537 | http-errors@1.7.2: 538 | version "1.7.2" 539 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 540 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 541 | dependencies: 542 | depd "~1.1.2" 543 | inherits "2.0.3" 544 | setprototypeof "1.1.1" 545 | statuses ">= 1.5.0 < 2" 546 | toidentifier "1.0.0" 547 | 548 | http-errors@~1.7.2: 549 | version "1.7.3" 550 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 551 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 552 | dependencies: 553 | depd "~1.1.2" 554 | inherits "2.0.4" 555 | setprototypeof "1.1.1" 556 | statuses ">= 1.5.0 < 2" 557 | toidentifier "1.0.0" 558 | 559 | iconv-lite@0.4.24: 560 | version "0.4.24" 561 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 562 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 563 | dependencies: 564 | safer-buffer ">= 2.1.2 < 3" 565 | 566 | ignore-by-default@^1.0.1: 567 | version "1.0.1" 568 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 569 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= 570 | 571 | import-lazy@^2.1.0: 572 | version "2.1.0" 573 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 574 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 575 | 576 | imurmurhash@^0.1.4: 577 | version "0.1.4" 578 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 579 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 580 | 581 | inherits@2.0.3: 582 | version "2.0.3" 583 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 584 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 585 | 586 | inherits@2.0.4, inherits@~2.0.3: 587 | version "2.0.4" 588 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 589 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 590 | 591 | ini@1.3.7: 592 | version "1.3.7" 593 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" 594 | integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== 595 | 596 | ini@~1.3.0: 597 | version "1.3.8" 598 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 599 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 600 | 601 | ipaddr.js@1.9.1: 602 | version "1.9.1" 603 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 604 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 605 | 606 | is-binary-path@~2.1.0: 607 | version "2.1.0" 608 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 609 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 610 | dependencies: 611 | binary-extensions "^2.0.0" 612 | 613 | is-ci@^2.0.0: 614 | version "2.0.0" 615 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 616 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== 617 | dependencies: 618 | ci-info "^2.0.0" 619 | 620 | is-extglob@^2.1.1: 621 | version "2.1.1" 622 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 623 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 624 | 625 | is-fullwidth-code-point@^2.0.0: 626 | version "2.0.0" 627 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 628 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 629 | 630 | is-fullwidth-code-point@^3.0.0: 631 | version "3.0.0" 632 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 633 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 634 | 635 | is-glob@^4.0.1, is-glob@~4.0.1: 636 | version "4.0.1" 637 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 638 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 639 | dependencies: 640 | is-extglob "^2.1.1" 641 | 642 | is-installed-globally@^0.3.1: 643 | version "0.3.2" 644 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" 645 | integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== 646 | dependencies: 647 | global-dirs "^2.0.1" 648 | is-path-inside "^3.0.1" 649 | 650 | is-npm@^4.0.0: 651 | version "4.0.0" 652 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" 653 | integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== 654 | 655 | is-number@^7.0.0: 656 | version "7.0.0" 657 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 658 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 659 | 660 | is-obj@^2.0.0: 661 | version "2.0.0" 662 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" 663 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== 664 | 665 | is-path-inside@^3.0.1: 666 | version "3.0.3" 667 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 668 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 669 | 670 | is-typedarray@^1.0.0: 671 | version "1.0.0" 672 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 673 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 674 | 675 | is-yarn-global@^0.3.0: 676 | version "0.3.0" 677 | resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" 678 | integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== 679 | 680 | isarray@~1.0.0: 681 | version "1.0.0" 682 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 683 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 684 | 685 | json-buffer@3.0.0: 686 | version "3.0.0" 687 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 688 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= 689 | 690 | kareem@2.3.2: 691 | version "2.3.2" 692 | resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.2.tgz#78c4508894985b8d38a0dc15e1a8e11078f2ca93" 693 | integrity sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ== 694 | 695 | keyv@^3.0.0: 696 | version "3.1.0" 697 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 698 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== 699 | dependencies: 700 | json-buffer "3.0.0" 701 | 702 | latest-version@^5.0.0: 703 | version "5.1.0" 704 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" 705 | integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== 706 | dependencies: 707 | package-json "^6.3.0" 708 | 709 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: 710 | version "1.0.1" 711 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 712 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 713 | 714 | lowercase-keys@^2.0.0: 715 | version "2.0.0" 716 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 717 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 718 | 719 | make-dir@^3.0.0: 720 | version "3.1.0" 721 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 722 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 723 | dependencies: 724 | semver "^6.0.0" 725 | 726 | media-typer@0.3.0: 727 | version "0.3.0" 728 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 729 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 730 | 731 | memory-pager@^1.0.2: 732 | version "1.5.0" 733 | resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" 734 | integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== 735 | 736 | merge-descriptors@1.0.1: 737 | version "1.0.1" 738 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 739 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 740 | 741 | methods@~1.1.2: 742 | version "1.1.2" 743 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 744 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 745 | 746 | mime-db@1.47.0: 747 | version "1.47.0" 748 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" 749 | integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== 750 | 751 | mime-types@~2.1.24: 752 | version "2.1.30" 753 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" 754 | integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== 755 | dependencies: 756 | mime-db "1.47.0" 757 | 758 | mime@1.6.0: 759 | version "1.6.0" 760 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 761 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 762 | 763 | mimic-response@^1.0.0, mimic-response@^1.0.1: 764 | version "1.0.1" 765 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 766 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 767 | 768 | minimatch@^3.0.4: 769 | version "3.0.4" 770 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 771 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 772 | dependencies: 773 | brace-expansion "^1.1.7" 774 | 775 | minimist@^1.2.0: 776 | version "1.2.5" 777 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 778 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 779 | 780 | mongodb@3.6.8: 781 | version "3.6.8" 782 | resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.6.8.tgz#3e2632af81915b3ff99b7681121ca0895e8ed407" 783 | integrity sha512-sDjJvI73WjON1vapcbyBD3Ao9/VN3TKYY8/QX9EPbs22KaCSrQ5rXo5ZZd44tWJ3wl3FlnrFZ+KyUtNH6+1ZPQ== 784 | dependencies: 785 | bl "^2.2.1" 786 | bson "^1.1.4" 787 | denque "^1.4.1" 788 | optional-require "^1.0.3" 789 | safe-buffer "^5.1.2" 790 | optionalDependencies: 791 | saslprep "^1.0.0" 792 | 793 | mongoose-legacy-pluralize@1.0.2: 794 | version "1.0.2" 795 | resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" 796 | integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== 797 | 798 | mongoose@^5.12.12: 799 | version "5.12.12" 800 | resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.12.12.tgz#7da29c7d7924ad1fb07b5c5fc0acde2f4aaff4f9" 801 | integrity sha512-n+ZmGApaL5x/r92w6S4pb+c075i+YKzg1F9YWkznSzQMtvetj/2dSjj2cqsITpd6z60k3K7ZaosIl6hzHwUA9g== 802 | dependencies: 803 | "@types/mongodb" "^3.5.27" 804 | bson "^1.1.4" 805 | kareem "2.3.2" 806 | mongodb "3.6.8" 807 | mongoose-legacy-pluralize "1.0.2" 808 | mpath "0.8.3" 809 | mquery "3.2.5" 810 | ms "2.1.2" 811 | regexp-clone "1.0.0" 812 | safe-buffer "5.2.1" 813 | sift "13.5.2" 814 | sliced "1.0.1" 815 | 816 | mpath@0.8.3: 817 | version "0.8.3" 818 | resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.8.3.tgz#828ac0d187f7f42674839d74921970979abbdd8f" 819 | integrity sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA== 820 | 821 | mquery@3.2.5: 822 | version "3.2.5" 823 | resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.5.tgz#8f2305632e4bb197f68f60c0cffa21aaf4060c51" 824 | integrity sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A== 825 | dependencies: 826 | bluebird "3.5.1" 827 | debug "3.1.0" 828 | regexp-clone "^1.0.0" 829 | safe-buffer "5.1.2" 830 | sliced "1.0.1" 831 | 832 | ms@2.0.0: 833 | version "2.0.0" 834 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 835 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 836 | 837 | ms@2.1.1: 838 | version "2.1.1" 839 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 840 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 841 | 842 | ms@2.1.2: 843 | version "2.1.2" 844 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 845 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 846 | 847 | ms@^2.1.1: 848 | version "2.1.3" 849 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 850 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 851 | 852 | negotiator@0.6.2: 853 | version "0.6.2" 854 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 855 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 856 | 857 | nodemon@^2.0.7: 858 | version "2.0.7" 859 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.7.tgz#6f030a0a0ebe3ea1ba2a38f71bf9bab4841ced32" 860 | integrity sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA== 861 | dependencies: 862 | chokidar "^3.2.2" 863 | debug "^3.2.6" 864 | ignore-by-default "^1.0.1" 865 | minimatch "^3.0.4" 866 | pstree.remy "^1.1.7" 867 | semver "^5.7.1" 868 | supports-color "^5.5.0" 869 | touch "^3.1.0" 870 | undefsafe "^2.0.3" 871 | update-notifier "^4.1.0" 872 | 873 | nopt@~1.0.10: 874 | version "1.0.10" 875 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 876 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= 877 | dependencies: 878 | abbrev "1" 879 | 880 | normalize-path@^3.0.0, normalize-path@~3.0.0: 881 | version "3.0.0" 882 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 883 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 884 | 885 | normalize-url@^4.1.0: 886 | version "4.5.1" 887 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" 888 | integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== 889 | 890 | on-finished@~2.3.0: 891 | version "2.3.0" 892 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 893 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 894 | dependencies: 895 | ee-first "1.1.1" 896 | 897 | once@^1.3.1, once@^1.4.0: 898 | version "1.4.0" 899 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 900 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 901 | dependencies: 902 | wrappy "1" 903 | 904 | optional-require@^1.0.3: 905 | version "1.0.3" 906 | resolved "https://registry.yarnpkg.com/optional-require/-/optional-require-1.0.3.tgz#275b8e9df1dc6a17ad155369c2422a440f89cb07" 907 | integrity sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA== 908 | 909 | p-cancelable@^1.0.0: 910 | version "1.1.0" 911 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 912 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 913 | 914 | package-json@^6.3.0: 915 | version "6.5.0" 916 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" 917 | integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== 918 | dependencies: 919 | got "^9.6.0" 920 | registry-auth-token "^4.0.0" 921 | registry-url "^5.0.0" 922 | semver "^6.2.0" 923 | 924 | parseurl@~1.3.3: 925 | version "1.3.3" 926 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 927 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 928 | 929 | path-to-regexp@0.1.7: 930 | version "0.1.7" 931 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 932 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 933 | 934 | picomatch@^2.0.4, picomatch@^2.2.1: 935 | version "2.3.0" 936 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 937 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 938 | 939 | prepend-http@^2.0.0: 940 | version "2.0.0" 941 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 942 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= 943 | 944 | process-nextick-args@~2.0.0: 945 | version "2.0.1" 946 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 947 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 948 | 949 | proxy-addr@~2.0.5: 950 | version "2.0.6" 951 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" 952 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== 953 | dependencies: 954 | forwarded "~0.1.2" 955 | ipaddr.js "1.9.1" 956 | 957 | pstree.remy@^1.1.7: 958 | version "1.1.8" 959 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 960 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 961 | 962 | pump@^3.0.0: 963 | version "3.0.0" 964 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 965 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 966 | dependencies: 967 | end-of-stream "^1.1.0" 968 | once "^1.3.1" 969 | 970 | pupa@^2.0.1: 971 | version "2.1.1" 972 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" 973 | integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== 974 | dependencies: 975 | escape-goat "^2.0.0" 976 | 977 | qs@6.7.0: 978 | version "6.7.0" 979 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 980 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 981 | 982 | range-parser@~1.2.1: 983 | version "1.2.1" 984 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 985 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 986 | 987 | raw-body@2.4.0: 988 | version "2.4.0" 989 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 990 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 991 | dependencies: 992 | bytes "3.1.0" 993 | http-errors "1.7.2" 994 | iconv-lite "0.4.24" 995 | unpipe "1.0.0" 996 | 997 | rc@^1.2.8: 998 | version "1.2.8" 999 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1000 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1001 | dependencies: 1002 | deep-extend "^0.6.0" 1003 | ini "~1.3.0" 1004 | minimist "^1.2.0" 1005 | strip-json-comments "~2.0.1" 1006 | 1007 | readable-stream@^2.3.5: 1008 | version "2.3.7" 1009 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1010 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1011 | dependencies: 1012 | core-util-is "~1.0.0" 1013 | inherits "~2.0.3" 1014 | isarray "~1.0.0" 1015 | process-nextick-args "~2.0.0" 1016 | safe-buffer "~5.1.1" 1017 | string_decoder "~1.1.1" 1018 | util-deprecate "~1.0.1" 1019 | 1020 | readdirp@~3.5.0: 1021 | version "3.5.0" 1022 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 1023 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 1024 | dependencies: 1025 | picomatch "^2.2.1" 1026 | 1027 | regexp-clone@1.0.0, regexp-clone@^1.0.0: 1028 | version "1.0.0" 1029 | resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" 1030 | integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== 1031 | 1032 | registry-auth-token@^4.0.0: 1033 | version "4.2.1" 1034 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" 1035 | integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== 1036 | dependencies: 1037 | rc "^1.2.8" 1038 | 1039 | registry-url@^5.0.0: 1040 | version "5.1.0" 1041 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" 1042 | integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== 1043 | dependencies: 1044 | rc "^1.2.8" 1045 | 1046 | responselike@^1.0.2: 1047 | version "1.0.2" 1048 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 1049 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= 1050 | dependencies: 1051 | lowercase-keys "^1.0.0" 1052 | 1053 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1054 | version "5.1.2" 1055 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1056 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1057 | 1058 | safe-buffer@5.2.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: 1059 | version "5.2.1" 1060 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1061 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1062 | 1063 | "safer-buffer@>= 2.1.2 < 3": 1064 | version "2.1.2" 1065 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1066 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1067 | 1068 | saslprep@^1.0.0: 1069 | version "1.0.3" 1070 | resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" 1071 | integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== 1072 | dependencies: 1073 | sparse-bitfield "^3.0.3" 1074 | 1075 | semver-diff@^3.1.1: 1076 | version "3.1.1" 1077 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" 1078 | integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== 1079 | dependencies: 1080 | semver "^6.3.0" 1081 | 1082 | semver@^5.7.1: 1083 | version "5.7.1" 1084 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1085 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1086 | 1087 | semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: 1088 | version "6.3.0" 1089 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1090 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1091 | 1092 | send@0.17.1: 1093 | version "0.17.1" 1094 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 1095 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 1096 | dependencies: 1097 | debug "2.6.9" 1098 | depd "~1.1.2" 1099 | destroy "~1.0.4" 1100 | encodeurl "~1.0.2" 1101 | escape-html "~1.0.3" 1102 | etag "~1.8.1" 1103 | fresh "0.5.2" 1104 | http-errors "~1.7.2" 1105 | mime "1.6.0" 1106 | ms "2.1.1" 1107 | on-finished "~2.3.0" 1108 | range-parser "~1.2.1" 1109 | statuses "~1.5.0" 1110 | 1111 | serve-static@1.14.1: 1112 | version "1.14.1" 1113 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 1114 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 1115 | dependencies: 1116 | encodeurl "~1.0.2" 1117 | escape-html "~1.0.3" 1118 | parseurl "~1.3.3" 1119 | send "0.17.1" 1120 | 1121 | setprototypeof@1.1.1: 1122 | version "1.1.1" 1123 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1124 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1125 | 1126 | sift@13.5.2: 1127 | version "13.5.2" 1128 | resolved "https://registry.yarnpkg.com/sift/-/sift-13.5.2.tgz#24a715e13c617b086166cd04917d204a591c9da6" 1129 | integrity sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA== 1130 | 1131 | signal-exit@^3.0.2: 1132 | version "3.0.3" 1133 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1134 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1135 | 1136 | sliced@1.0.1: 1137 | version "1.0.1" 1138 | resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" 1139 | integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= 1140 | 1141 | sparse-bitfield@^3.0.3: 1142 | version "3.0.3" 1143 | resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" 1144 | integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE= 1145 | dependencies: 1146 | memory-pager "^1.0.2" 1147 | 1148 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 1149 | version "1.5.0" 1150 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1151 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1152 | 1153 | string-width@^3.0.0: 1154 | version "3.1.0" 1155 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1156 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1157 | dependencies: 1158 | emoji-regex "^7.0.1" 1159 | is-fullwidth-code-point "^2.0.0" 1160 | strip-ansi "^5.1.0" 1161 | 1162 | string-width@^4.0.0, string-width@^4.1.0: 1163 | version "4.2.2" 1164 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" 1165 | integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== 1166 | dependencies: 1167 | emoji-regex "^8.0.0" 1168 | is-fullwidth-code-point "^3.0.0" 1169 | strip-ansi "^6.0.0" 1170 | 1171 | string_decoder@~1.1.1: 1172 | version "1.1.1" 1173 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1174 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1175 | dependencies: 1176 | safe-buffer "~5.1.0" 1177 | 1178 | strip-ansi@^5.1.0: 1179 | version "5.2.0" 1180 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1181 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1182 | dependencies: 1183 | ansi-regex "^4.1.0" 1184 | 1185 | strip-ansi@^6.0.0: 1186 | version "6.0.0" 1187 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1188 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1189 | dependencies: 1190 | ansi-regex "^5.0.0" 1191 | 1192 | strip-json-comments@~2.0.1: 1193 | version "2.0.1" 1194 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1195 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1196 | 1197 | supports-color@^5.5.0: 1198 | version "5.5.0" 1199 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1200 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1201 | dependencies: 1202 | has-flag "^3.0.0" 1203 | 1204 | supports-color@^7.1.0: 1205 | version "7.2.0" 1206 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1207 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1208 | dependencies: 1209 | has-flag "^4.0.0" 1210 | 1211 | term-size@^2.1.0: 1212 | version "2.2.1" 1213 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" 1214 | integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== 1215 | 1216 | to-readable-stream@^1.0.0: 1217 | version "1.0.0" 1218 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 1219 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== 1220 | 1221 | to-regex-range@^5.0.1: 1222 | version "5.0.1" 1223 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1224 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1225 | dependencies: 1226 | is-number "^7.0.0" 1227 | 1228 | toidentifier@1.0.0: 1229 | version "1.0.0" 1230 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1231 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 1232 | 1233 | touch@^3.1.0: 1234 | version "3.1.0" 1235 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 1236 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 1237 | dependencies: 1238 | nopt "~1.0.10" 1239 | 1240 | type-fest@^0.8.1: 1241 | version "0.8.1" 1242 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1243 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1244 | 1245 | type-is@~1.6.17, type-is@~1.6.18: 1246 | version "1.6.18" 1247 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1248 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1249 | dependencies: 1250 | media-typer "0.3.0" 1251 | mime-types "~2.1.24" 1252 | 1253 | typedarray-to-buffer@^3.1.5: 1254 | version "3.1.5" 1255 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 1256 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 1257 | dependencies: 1258 | is-typedarray "^1.0.0" 1259 | 1260 | undefsafe@^2.0.3: 1261 | version "2.0.3" 1262 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" 1263 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== 1264 | dependencies: 1265 | debug "^2.2.0" 1266 | 1267 | unique-string@^2.0.0: 1268 | version "2.0.0" 1269 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" 1270 | integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== 1271 | dependencies: 1272 | crypto-random-string "^2.0.0" 1273 | 1274 | unpipe@1.0.0, unpipe@~1.0.0: 1275 | version "1.0.0" 1276 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1277 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1278 | 1279 | update-notifier@^4.1.0: 1280 | version "4.1.3" 1281 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" 1282 | integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== 1283 | dependencies: 1284 | boxen "^4.2.0" 1285 | chalk "^3.0.0" 1286 | configstore "^5.0.1" 1287 | has-yarn "^2.1.0" 1288 | import-lazy "^2.1.0" 1289 | is-ci "^2.0.0" 1290 | is-installed-globally "^0.3.1" 1291 | is-npm "^4.0.0" 1292 | is-yarn-global "^0.3.0" 1293 | latest-version "^5.0.0" 1294 | pupa "^2.0.1" 1295 | semver-diff "^3.1.1" 1296 | xdg-basedir "^4.0.0" 1297 | 1298 | url-parse-lax@^3.0.0: 1299 | version "3.0.0" 1300 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 1301 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= 1302 | dependencies: 1303 | prepend-http "^2.0.0" 1304 | 1305 | util-deprecate@~1.0.1: 1306 | version "1.0.2" 1307 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1308 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1309 | 1310 | utils-merge@1.0.1: 1311 | version "1.0.1" 1312 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1313 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1314 | 1315 | vary@~1.1.2: 1316 | version "1.1.2" 1317 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1318 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1319 | 1320 | widest-line@^3.1.0: 1321 | version "3.1.0" 1322 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" 1323 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== 1324 | dependencies: 1325 | string-width "^4.0.0" 1326 | 1327 | wrappy@1: 1328 | version "1.0.2" 1329 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1330 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1331 | 1332 | write-file-atomic@^3.0.0: 1333 | version "3.0.3" 1334 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 1335 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 1336 | dependencies: 1337 | imurmurhash "^0.1.4" 1338 | is-typedarray "^1.0.0" 1339 | signal-exit "^3.0.2" 1340 | typedarray-to-buffer "^3.1.5" 1341 | 1342 | xdg-basedir@^4.0.0: 1343 | version "4.0.0" 1344 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" 1345 | integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== 1346 | --------------------------------------------------------------------------------