├── .gitignore ├── env.example ├── http-status-code.md ├── package.json ├── public └── images │ ├── 1668018736689-Logo HSD.png │ └── Logo-HSD.png ├── src ├── config │ └── database.js ├── controller │ └── users.js ├── index.js ├── middleware │ ├── logs.js │ └── multer.js ├── models │ └── users.js └── routes │ └── users.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .env -------------------------------------------------------------------------------- /env.example: -------------------------------------------------------------------------------- 1 | PORT=xxxx 2 | DB_HOST=xxxx 3 | DB_USERNAME=xxxx 4 | DB_PASSWORD=xxxx 5 | DB_NAME=xxxx -------------------------------------------------------------------------------- /http-status-code.md: -------------------------------------------------------------------------------- 1 | 2 | # HTTP Status Code 3 | 4 | **Successful Responses (2xx)** 5 | 6 | - 200 OK (GET, PATCH) 7 | 8 | - 201 Created (POST, PUT) 9 | 10 | **Client Error Responses (4xx)** 11 | 12 | - 400 Bad Request 13 | 14 | - 401 Unauthorized 15 | 16 | - 403 Forbidden 17 | 18 | - 404 Not Found 19 | 20 | - 405 Method Not Allowed 21 | 22 | **Server error responses (5xx)** 23 | 24 | - 500 Internal Server Error 25 | 26 | 27 | **Source:** 28 | https://rapidapi.com/guides/http-status-code -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express-mysql", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "author": "Prawito Hudoro", 6 | "license": "MIT", 7 | "scripts": { 8 | "start": "nodemon src/index.js" 9 | }, 10 | "dependencies": { 11 | "dotenv": "^16.0.3", 12 | "express": "^4.18.2", 13 | "multer": "^1.4.5-lts.1", 14 | "mysql2": "^2.3.3", 15 | "nodemon": "^2.0.20" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /public/images/1668018736689-Logo HSD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/prawito/express-mysql/9a30f5b3e0d345b3a21502761884133c789905cc/public/images/1668018736689-Logo HSD.png -------------------------------------------------------------------------------- /public/images/Logo-HSD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/prawito/express-mysql/9a30f5b3e0d345b3a21502761884133c789905cc/public/images/Logo-HSD.png -------------------------------------------------------------------------------- /src/config/database.js: -------------------------------------------------------------------------------- 1 | const mysql = require('mysql2'); 2 | 3 | const dbPool = mysql.createPool({ 4 | host: process.env.DB_HOST, 5 | user: process.env.DB_USERNAME, 6 | password: process.env.DB_PASSWORD, 7 | database: process.env.DB_NAME, 8 | }); 9 | 10 | module.exports = dbPool.promise(); -------------------------------------------------------------------------------- /src/controller/users.js: -------------------------------------------------------------------------------- 1 | const UsersModel = require('../models/users'); 2 | 3 | const getAllUsers = async (req, res) => { 4 | try { 5 | const [data] = await UsersModel.getAllUsers(); 6 | 7 | res.json({ 8 | message: 'GET all users success', 9 | data: data 10 | }) 11 | } catch (error) { 12 | res.status(500).json({ 13 | message: 'Server Error', 14 | serverMessage: error, 15 | }) 16 | } 17 | } 18 | 19 | const createNewUser = async (req, res) => { 20 | const {body} = req; 21 | 22 | if(!body.email || !body.name || !body.addres){ 23 | return res.status(400).json({ 24 | message: 'Anda mengirimkan data yang salah', 25 | data: null, 26 | }) 27 | } 28 | 29 | try { 30 | await UsersModel.createNewUser(body); 31 | res.status(201).json({ 32 | message: 'CREATE new user success', 33 | data: body 34 | }) 35 | } catch (error) { 36 | res.status(500).json({ 37 | message: 'Server Error', 38 | serverMessage: error, 39 | }) 40 | } 41 | } 42 | 43 | const updateUser = async (req, res) => { 44 | const {idUser} = req.params; 45 | const {body} = req; 46 | try { 47 | await UsersModel.updateUser(body, idUser); 48 | res.json({ 49 | message: 'UPDATE user success', 50 | data: { 51 | id: idUser, 52 | ...body 53 | }, 54 | }) 55 | } catch (error) { 56 | res.status(500).json({ 57 | message: 'Server Error', 58 | serverMessage: error, 59 | }) 60 | } 61 | } 62 | 63 | const deleteUser = async (req, res) => { 64 | const {idUser} = req.params; 65 | try { 66 | await UsersModel.deleteUser(idUser); 67 | res.json({ 68 | message: 'DELETE user success', 69 | data: null 70 | }) 71 | } catch (error) { 72 | res.status(500).json({ 73 | message: 'Server Error', 74 | serverMessage: error, 75 | }) 76 | } 77 | } 78 | 79 | module.exports = { 80 | getAllUsers, 81 | createNewUser, 82 | updateUser, 83 | deleteUser, 84 | } -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | require('dotenv').config() 2 | const PORT = process.env.PORT || 5000; 3 | const express = require('express'); 4 | 5 | const usersRoutes = require('./routes/users'); 6 | 7 | const middlewareLogRequest = require('./middleware/logs'); 8 | const upload = require('./middleware/multer'); 9 | 10 | const app = express(); 11 | 12 | app.use(middlewareLogRequest); 13 | app.use(express.json()); 14 | app.use('/assets', express.static('public/images')) 15 | 16 | app.use('/users', usersRoutes); 17 | app.post('/upload',upload.single('photo'),(req, res) => { 18 | res.json({ 19 | message: 'Upload berhasil' 20 | }) 21 | }) 22 | 23 | app.use((err, req, res, next) => { 24 | res.json({ 25 | message: err.message 26 | }) 27 | }) 28 | 29 | app.listen(PORT, () => { 30 | console.log(`Server berhasil di running di port ${PORT}`); 31 | }) -------------------------------------------------------------------------------- /src/middleware/logs.js: -------------------------------------------------------------------------------- 1 | const logRequest = (req, res, next) => { 2 | console.log('Terjadi request ke PATH: ', req.path); 3 | next(); 4 | } 5 | 6 | module.exports = logRequest; -------------------------------------------------------------------------------- /src/middleware/multer.js: -------------------------------------------------------------------------------- 1 | const multer = require('multer'); 2 | const path = require('path'); 3 | 4 | const storage = multer.diskStorage({ 5 | destination: (req, file, cb) => { 6 | cb(null, 'public/images'); 7 | }, 8 | filename: (req, file, cb) => { 9 | const timestamp = new Date().getTime(); 10 | const originalname = file.originalname; 11 | // const extension = path.extname(file.originalname); 12 | 13 | cb(null, `${timestamp}-${originalname}`); 14 | } 15 | }); 16 | 17 | const upload = multer({ 18 | storage: storage, 19 | limits: { 20 | fileSize: 3 * 1000 * 1000 // 3 MB 21 | } 22 | }); 23 | 24 | module.exports = upload; -------------------------------------------------------------------------------- /src/models/users.js: -------------------------------------------------------------------------------- 1 | const dbPool = require('../config/database'); 2 | 3 | const getAllUsers = () => { 4 | const SQLQuery = 'SELECT * FROM users'; 5 | 6 | return dbPool.execute(SQLQuery); 7 | } 8 | 9 | const createNewUser = (body) => { 10 | const SQLQuery = ` INSERT INTO users (name, email, address) 11 | VALUES ('${body.name}', '${body.email}', '${body.address}')`; 12 | 13 | return dbPool.execute(SQLQuery); 14 | } 15 | 16 | const updateUser = (body, idUser) => { 17 | const SQLQuery = ` UPDATE users 18 | SET name='${body.name}', email='${body.email}', address='${body.address}' 19 | WHERE id=${idUser}`; 20 | 21 | return dbPool.execute(SQLQuery); 22 | } 23 | 24 | const deleteUser = (idUser) => { 25 | const SQLQuery = `DELETE FROM users WHERE id=${idUser}`; 26 | 27 | return dbPool.execute(SQLQuery); 28 | } 29 | 30 | module.exports = { 31 | getAllUsers, 32 | createNewUser, 33 | updateUser, 34 | deleteUser, 35 | } -------------------------------------------------------------------------------- /src/routes/users.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | 3 | const UserController = require('../controller/users.js'); 4 | 5 | const router = express.Router(); 6 | 7 | // CREATE - POST 8 | router.post('/', UserController.createNewUser); 9 | 10 | // READ - GET 11 | router.get('/', UserController.getAllUsers); 12 | 13 | // UPDATE - PATCH 14 | router.patch('/:idUser', UserController.updateUser); 15 | 16 | // DELETE - DELETE 17 | router.delete('/:idUser', UserController.deleteUser); 18 | 19 | 20 | 21 | module.exports = router; -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | abbrev@1: 6 | version "1.1.1" 7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 8 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 9 | 10 | accepts@~1.3.8: 11 | version "1.3.8" 12 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 13 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 14 | dependencies: 15 | mime-types "~2.1.34" 16 | negotiator "0.6.3" 17 | 18 | anymatch@~3.1.2: 19 | version "3.1.2" 20 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 21 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 22 | dependencies: 23 | normalize-path "^3.0.0" 24 | picomatch "^2.0.4" 25 | 26 | append-field@^1.0.0: 27 | version "1.0.0" 28 | resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" 29 | integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== 30 | 31 | array-flatten@1.1.1: 32 | version "1.1.1" 33 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 34 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== 35 | 36 | balanced-match@^1.0.0: 37 | version "1.0.2" 38 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 39 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 40 | 41 | binary-extensions@^2.0.0: 42 | version "2.2.0" 43 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 44 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 45 | 46 | body-parser@1.20.1: 47 | version "1.20.1" 48 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" 49 | integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== 50 | dependencies: 51 | bytes "3.1.2" 52 | content-type "~1.0.4" 53 | debug "2.6.9" 54 | depd "2.0.0" 55 | destroy "1.2.0" 56 | http-errors "2.0.0" 57 | iconv-lite "0.4.24" 58 | on-finished "2.4.1" 59 | qs "6.11.0" 60 | raw-body "2.5.1" 61 | type-is "~1.6.18" 62 | unpipe "1.0.0" 63 | 64 | brace-expansion@^1.1.7: 65 | version "1.1.11" 66 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 67 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 68 | dependencies: 69 | balanced-match "^1.0.0" 70 | concat-map "0.0.1" 71 | 72 | braces@~3.0.2: 73 | version "3.0.2" 74 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 75 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 76 | dependencies: 77 | fill-range "^7.0.1" 78 | 79 | buffer-from@^1.0.0: 80 | version "1.1.2" 81 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 82 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 83 | 84 | busboy@^1.0.0: 85 | version "1.6.0" 86 | resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" 87 | integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== 88 | dependencies: 89 | streamsearch "^1.1.0" 90 | 91 | bytes@3.1.2: 92 | version "3.1.2" 93 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 94 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 95 | 96 | call-bind@^1.0.0: 97 | version "1.0.2" 98 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 99 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 100 | dependencies: 101 | function-bind "^1.1.1" 102 | get-intrinsic "^1.0.2" 103 | 104 | chokidar@^3.5.2: 105 | version "3.5.3" 106 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 107 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 108 | dependencies: 109 | anymatch "~3.1.2" 110 | braces "~3.0.2" 111 | glob-parent "~5.1.2" 112 | is-binary-path "~2.1.0" 113 | is-glob "~4.0.1" 114 | normalize-path "~3.0.0" 115 | readdirp "~3.6.0" 116 | optionalDependencies: 117 | fsevents "~2.3.2" 118 | 119 | concat-map@0.0.1: 120 | version "0.0.1" 121 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 122 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 123 | 124 | concat-stream@^1.5.2: 125 | version "1.6.2" 126 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 127 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 128 | dependencies: 129 | buffer-from "^1.0.0" 130 | inherits "^2.0.3" 131 | readable-stream "^2.2.2" 132 | typedarray "^0.0.6" 133 | 134 | content-disposition@0.5.4: 135 | version "0.5.4" 136 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 137 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 138 | dependencies: 139 | safe-buffer "5.2.1" 140 | 141 | content-type@~1.0.4: 142 | version "1.0.4" 143 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 144 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 145 | 146 | cookie-signature@1.0.6: 147 | version "1.0.6" 148 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 149 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== 150 | 151 | cookie@0.5.0: 152 | version "0.5.0" 153 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 154 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 155 | 156 | core-util-is@~1.0.0: 157 | version "1.0.3" 158 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 159 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 160 | 161 | debug@2.6.9: 162 | version "2.6.9" 163 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 164 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 165 | dependencies: 166 | ms "2.0.0" 167 | 168 | debug@^3.2.7: 169 | version "3.2.7" 170 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 171 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 172 | dependencies: 173 | ms "^2.1.1" 174 | 175 | denque@^2.0.1: 176 | version "2.1.0" 177 | resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" 178 | integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== 179 | 180 | depd@2.0.0: 181 | version "2.0.0" 182 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 183 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 184 | 185 | destroy@1.2.0: 186 | version "1.2.0" 187 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 188 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 189 | 190 | dotenv@^16.0.3: 191 | version "16.0.3" 192 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" 193 | integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== 194 | 195 | ee-first@1.1.1: 196 | version "1.1.1" 197 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 198 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 199 | 200 | encodeurl@~1.0.2: 201 | version "1.0.2" 202 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 203 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 204 | 205 | escape-html@~1.0.3: 206 | version "1.0.3" 207 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 208 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 209 | 210 | etag@~1.8.1: 211 | version "1.8.1" 212 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 213 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 214 | 215 | express@^4.18.2: 216 | version "4.18.2" 217 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" 218 | integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== 219 | dependencies: 220 | accepts "~1.3.8" 221 | array-flatten "1.1.1" 222 | body-parser "1.20.1" 223 | content-disposition "0.5.4" 224 | content-type "~1.0.4" 225 | cookie "0.5.0" 226 | cookie-signature "1.0.6" 227 | debug "2.6.9" 228 | depd "2.0.0" 229 | encodeurl "~1.0.2" 230 | escape-html "~1.0.3" 231 | etag "~1.8.1" 232 | finalhandler "1.2.0" 233 | fresh "0.5.2" 234 | http-errors "2.0.0" 235 | merge-descriptors "1.0.1" 236 | methods "~1.1.2" 237 | on-finished "2.4.1" 238 | parseurl "~1.3.3" 239 | path-to-regexp "0.1.7" 240 | proxy-addr "~2.0.7" 241 | qs "6.11.0" 242 | range-parser "~1.2.1" 243 | safe-buffer "5.2.1" 244 | send "0.18.0" 245 | serve-static "1.15.0" 246 | setprototypeof "1.2.0" 247 | statuses "2.0.1" 248 | type-is "~1.6.18" 249 | utils-merge "1.0.1" 250 | vary "~1.1.2" 251 | 252 | fill-range@^7.0.1: 253 | version "7.0.1" 254 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 255 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 256 | dependencies: 257 | to-regex-range "^5.0.1" 258 | 259 | finalhandler@1.2.0: 260 | version "1.2.0" 261 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 262 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 263 | dependencies: 264 | debug "2.6.9" 265 | encodeurl "~1.0.2" 266 | escape-html "~1.0.3" 267 | on-finished "2.4.1" 268 | parseurl "~1.3.3" 269 | statuses "2.0.1" 270 | unpipe "~1.0.0" 271 | 272 | forwarded@0.2.0: 273 | version "0.2.0" 274 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 275 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 276 | 277 | fresh@0.5.2: 278 | version "0.5.2" 279 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 280 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 281 | 282 | fsevents@~2.3.2: 283 | version "2.3.2" 284 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 285 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 286 | 287 | function-bind@^1.1.1: 288 | version "1.1.1" 289 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 290 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 291 | 292 | generate-function@^2.3.1: 293 | version "2.3.1" 294 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" 295 | integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== 296 | dependencies: 297 | is-property "^1.0.2" 298 | 299 | get-intrinsic@^1.0.2: 300 | version "1.1.3" 301 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" 302 | integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== 303 | dependencies: 304 | function-bind "^1.1.1" 305 | has "^1.0.3" 306 | has-symbols "^1.0.3" 307 | 308 | glob-parent@~5.1.2: 309 | version "5.1.2" 310 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 311 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 312 | dependencies: 313 | is-glob "^4.0.1" 314 | 315 | has-flag@^3.0.0: 316 | version "3.0.0" 317 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 318 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 319 | 320 | has-symbols@^1.0.3: 321 | version "1.0.3" 322 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 323 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 324 | 325 | has@^1.0.3: 326 | version "1.0.3" 327 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 328 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 329 | dependencies: 330 | function-bind "^1.1.1" 331 | 332 | http-errors@2.0.0: 333 | version "2.0.0" 334 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 335 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 336 | dependencies: 337 | depd "2.0.0" 338 | inherits "2.0.4" 339 | setprototypeof "1.2.0" 340 | statuses "2.0.1" 341 | toidentifier "1.0.1" 342 | 343 | iconv-lite@0.4.24: 344 | version "0.4.24" 345 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 346 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 347 | dependencies: 348 | safer-buffer ">= 2.1.2 < 3" 349 | 350 | iconv-lite@^0.6.3: 351 | version "0.6.3" 352 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 353 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 354 | dependencies: 355 | safer-buffer ">= 2.1.2 < 3.0.0" 356 | 357 | ignore-by-default@^1.0.1: 358 | version "1.0.1" 359 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 360 | integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== 361 | 362 | inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: 363 | version "2.0.4" 364 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 365 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 366 | 367 | ipaddr.js@1.9.1: 368 | version "1.9.1" 369 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 370 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 371 | 372 | is-binary-path@~2.1.0: 373 | version "2.1.0" 374 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 375 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 376 | dependencies: 377 | binary-extensions "^2.0.0" 378 | 379 | is-extglob@^2.1.1: 380 | version "2.1.1" 381 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 382 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 383 | 384 | is-glob@^4.0.1, is-glob@~4.0.1: 385 | version "4.0.3" 386 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 387 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 388 | dependencies: 389 | is-extglob "^2.1.1" 390 | 391 | is-number@^7.0.0: 392 | version "7.0.0" 393 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 394 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 395 | 396 | is-property@^1.0.2: 397 | version "1.0.2" 398 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 399 | integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== 400 | 401 | isarray@~1.0.0: 402 | version "1.0.0" 403 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 404 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 405 | 406 | long@^4.0.0: 407 | version "4.0.0" 408 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" 409 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== 410 | 411 | lru-cache@^4.1.3: 412 | version "4.1.5" 413 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 414 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 415 | dependencies: 416 | pseudomap "^1.0.2" 417 | yallist "^2.1.2" 418 | 419 | lru-cache@^6.0.0: 420 | version "6.0.0" 421 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 422 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 423 | dependencies: 424 | yallist "^4.0.0" 425 | 426 | media-typer@0.3.0: 427 | version "0.3.0" 428 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 429 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 430 | 431 | merge-descriptors@1.0.1: 432 | version "1.0.1" 433 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 434 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 435 | 436 | methods@~1.1.2: 437 | version "1.1.2" 438 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 439 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 440 | 441 | mime-db@1.52.0: 442 | version "1.52.0" 443 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 444 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 445 | 446 | mime-types@~2.1.24, mime-types@~2.1.34: 447 | version "2.1.35" 448 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 449 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 450 | dependencies: 451 | mime-db "1.52.0" 452 | 453 | mime@1.6.0: 454 | version "1.6.0" 455 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 456 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 457 | 458 | minimatch@^3.1.2: 459 | version "3.1.2" 460 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 461 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 462 | dependencies: 463 | brace-expansion "^1.1.7" 464 | 465 | minimist@^1.2.6: 466 | version "1.2.7" 467 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" 468 | integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== 469 | 470 | mkdirp@^0.5.4: 471 | version "0.5.6" 472 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 473 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 474 | dependencies: 475 | minimist "^1.2.6" 476 | 477 | ms@2.0.0: 478 | version "2.0.0" 479 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 480 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 481 | 482 | ms@2.1.3, ms@^2.1.1: 483 | version "2.1.3" 484 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 485 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 486 | 487 | multer@^1.4.5-lts.1: 488 | version "1.4.5-lts.1" 489 | resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.5-lts.1.tgz#803e24ad1984f58edffbc79f56e305aec5cfd1ac" 490 | integrity sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== 491 | dependencies: 492 | append-field "^1.0.0" 493 | busboy "^1.0.0" 494 | concat-stream "^1.5.2" 495 | mkdirp "^0.5.4" 496 | object-assign "^4.1.1" 497 | type-is "^1.6.4" 498 | xtend "^4.0.0" 499 | 500 | mysql2@^2.3.3: 501 | version "2.3.3" 502 | resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-2.3.3.tgz#944f3deca4b16629052ff8614fbf89d5552545a0" 503 | integrity sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA== 504 | dependencies: 505 | denque "^2.0.1" 506 | generate-function "^2.3.1" 507 | iconv-lite "^0.6.3" 508 | long "^4.0.0" 509 | lru-cache "^6.0.0" 510 | named-placeholders "^1.1.2" 511 | seq-queue "^0.0.5" 512 | sqlstring "^2.3.2" 513 | 514 | named-placeholders@^1.1.2: 515 | version "1.1.2" 516 | resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.2.tgz#ceb1fbff50b6b33492b5cf214ccf5e39cef3d0e8" 517 | integrity sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA== 518 | dependencies: 519 | lru-cache "^4.1.3" 520 | 521 | negotiator@0.6.3: 522 | version "0.6.3" 523 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 524 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 525 | 526 | nodemon@^2.0.20: 527 | version "2.0.20" 528 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.20.tgz#e3537de768a492e8d74da5c5813cb0c7486fc701" 529 | integrity sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw== 530 | dependencies: 531 | chokidar "^3.5.2" 532 | debug "^3.2.7" 533 | ignore-by-default "^1.0.1" 534 | minimatch "^3.1.2" 535 | pstree.remy "^1.1.8" 536 | semver "^5.7.1" 537 | simple-update-notifier "^1.0.7" 538 | supports-color "^5.5.0" 539 | touch "^3.1.0" 540 | undefsafe "^2.0.5" 541 | 542 | nopt@~1.0.10: 543 | version "1.0.10" 544 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 545 | integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== 546 | dependencies: 547 | abbrev "1" 548 | 549 | normalize-path@^3.0.0, normalize-path@~3.0.0: 550 | version "3.0.0" 551 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 552 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 553 | 554 | object-assign@^4.1.1: 555 | version "4.1.1" 556 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 557 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 558 | 559 | object-inspect@^1.9.0: 560 | version "1.12.2" 561 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" 562 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== 563 | 564 | on-finished@2.4.1: 565 | version "2.4.1" 566 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 567 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 568 | dependencies: 569 | ee-first "1.1.1" 570 | 571 | parseurl@~1.3.3: 572 | version "1.3.3" 573 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 574 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 575 | 576 | path-to-regexp@0.1.7: 577 | version "0.1.7" 578 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 579 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== 580 | 581 | picomatch@^2.0.4, picomatch@^2.2.1: 582 | version "2.3.1" 583 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 584 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 585 | 586 | process-nextick-args@~2.0.0: 587 | version "2.0.1" 588 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 589 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 590 | 591 | proxy-addr@~2.0.7: 592 | version "2.0.7" 593 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 594 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 595 | dependencies: 596 | forwarded "0.2.0" 597 | ipaddr.js "1.9.1" 598 | 599 | pseudomap@^1.0.2: 600 | version "1.0.2" 601 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 602 | integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== 603 | 604 | pstree.remy@^1.1.8: 605 | version "1.1.8" 606 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 607 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 608 | 609 | qs@6.11.0: 610 | version "6.11.0" 611 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 612 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 613 | dependencies: 614 | side-channel "^1.0.4" 615 | 616 | range-parser@~1.2.1: 617 | version "1.2.1" 618 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 619 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 620 | 621 | raw-body@2.5.1: 622 | version "2.5.1" 623 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 624 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 625 | dependencies: 626 | bytes "3.1.2" 627 | http-errors "2.0.0" 628 | iconv-lite "0.4.24" 629 | unpipe "1.0.0" 630 | 631 | readable-stream@^2.2.2: 632 | version "2.3.7" 633 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 634 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 635 | dependencies: 636 | core-util-is "~1.0.0" 637 | inherits "~2.0.3" 638 | isarray "~1.0.0" 639 | process-nextick-args "~2.0.0" 640 | safe-buffer "~5.1.1" 641 | string_decoder "~1.1.1" 642 | util-deprecate "~1.0.1" 643 | 644 | readdirp@~3.6.0: 645 | version "3.6.0" 646 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 647 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 648 | dependencies: 649 | picomatch "^2.2.1" 650 | 651 | safe-buffer@5.2.1: 652 | version "5.2.1" 653 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 654 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 655 | 656 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 657 | version "5.1.2" 658 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 659 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 660 | 661 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": 662 | version "2.1.2" 663 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 664 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 665 | 666 | semver@^5.7.1: 667 | version "5.7.1" 668 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 669 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 670 | 671 | semver@~7.0.0: 672 | version "7.0.0" 673 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" 674 | integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== 675 | 676 | send@0.18.0: 677 | version "0.18.0" 678 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 679 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 680 | dependencies: 681 | debug "2.6.9" 682 | depd "2.0.0" 683 | destroy "1.2.0" 684 | encodeurl "~1.0.2" 685 | escape-html "~1.0.3" 686 | etag "~1.8.1" 687 | fresh "0.5.2" 688 | http-errors "2.0.0" 689 | mime "1.6.0" 690 | ms "2.1.3" 691 | on-finished "2.4.1" 692 | range-parser "~1.2.1" 693 | statuses "2.0.1" 694 | 695 | seq-queue@^0.0.5: 696 | version "0.0.5" 697 | resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" 698 | integrity sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q== 699 | 700 | serve-static@1.15.0: 701 | version "1.15.0" 702 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 703 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 704 | dependencies: 705 | encodeurl "~1.0.2" 706 | escape-html "~1.0.3" 707 | parseurl "~1.3.3" 708 | send "0.18.0" 709 | 710 | setprototypeof@1.2.0: 711 | version "1.2.0" 712 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 713 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 714 | 715 | side-channel@^1.0.4: 716 | version "1.0.4" 717 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 718 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 719 | dependencies: 720 | call-bind "^1.0.0" 721 | get-intrinsic "^1.0.2" 722 | object-inspect "^1.9.0" 723 | 724 | simple-update-notifier@^1.0.7: 725 | version "1.0.7" 726 | resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz#7edf75c5bdd04f88828d632f762b2bc32996a9cc" 727 | integrity sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew== 728 | dependencies: 729 | semver "~7.0.0" 730 | 731 | sqlstring@^2.3.2: 732 | version "2.3.3" 733 | resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" 734 | integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== 735 | 736 | statuses@2.0.1: 737 | version "2.0.1" 738 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 739 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 740 | 741 | streamsearch@^1.1.0: 742 | version "1.1.0" 743 | resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" 744 | integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== 745 | 746 | string_decoder@~1.1.1: 747 | version "1.1.1" 748 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 749 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 750 | dependencies: 751 | safe-buffer "~5.1.0" 752 | 753 | supports-color@^5.5.0: 754 | version "5.5.0" 755 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 756 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 757 | dependencies: 758 | has-flag "^3.0.0" 759 | 760 | to-regex-range@^5.0.1: 761 | version "5.0.1" 762 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 763 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 764 | dependencies: 765 | is-number "^7.0.0" 766 | 767 | toidentifier@1.0.1: 768 | version "1.0.1" 769 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 770 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 771 | 772 | touch@^3.1.0: 773 | version "3.1.0" 774 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 775 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 776 | dependencies: 777 | nopt "~1.0.10" 778 | 779 | type-is@^1.6.4, type-is@~1.6.18: 780 | version "1.6.18" 781 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 782 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 783 | dependencies: 784 | media-typer "0.3.0" 785 | mime-types "~2.1.24" 786 | 787 | typedarray@^0.0.6: 788 | version "0.0.6" 789 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 790 | integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== 791 | 792 | undefsafe@^2.0.5: 793 | version "2.0.5" 794 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" 795 | integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== 796 | 797 | unpipe@1.0.0, unpipe@~1.0.0: 798 | version "1.0.0" 799 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 800 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 801 | 802 | util-deprecate@~1.0.1: 803 | version "1.0.2" 804 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 805 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 806 | 807 | utils-merge@1.0.1: 808 | version "1.0.1" 809 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 810 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 811 | 812 | vary@~1.1.2: 813 | version "1.1.2" 814 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 815 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 816 | 817 | xtend@^4.0.0: 818 | version "4.0.2" 819 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 820 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 821 | 822 | yallist@^2.1.2: 823 | version "2.1.2" 824 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 825 | integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== 826 | 827 | yallist@^4.0.0: 828 | version "4.0.0" 829 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 830 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 831 | --------------------------------------------------------------------------------