├── .gitignore ├── .eslintrc.json ├── .env ├── utils └── connectdb.js ├── strategies ├── LocalStrategy.js └── JwtStrategy.js ├── package.json ├── authenticate.js ├── models └── user.js ├── index.js ├── routes └── userRoutes.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "commonjs": true, 5 | "es2021": true 6 | }, 7 | "extends": "eslint:recommended", 8 | "parserOptions": { 9 | "ecmaVersion": 12 10 | }, 11 | "rules": { 12 | "no-unused-vars":"warn" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | JWT_SECRET=jdhdhd-kjfjdhrhrerj-uurhr-jjge 2 | REFRESH_TOKEN_SECRET = fgkjddshfdjh773bdjsj84-jdjd774 3 | SESSION_EXPIRY = 60 * 15 4 | REFRESH_TOKEN_EXPIRY = 60 * 60 * 24 * 30 5 | MONGO_DB_CONNECTION_STRING = mongodb://127.0.0.1:27017/mern_auth 6 | COOKIE_SECRET = jhdshhds884hfhhs-ew6dhjd 7 | WHITELISTED_DOMAINS = http://localhost:3000,https://trial-mern-auth-client.vercel.app -------------------------------------------------------------------------------- /utils/connectdb.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | const url = process.env.MONGO_DB_CONNECTION_STRING; 3 | const connect = mongoose.connect(url, { 4 | useNewUrlParser: true, 5 | useUnifiedTopology: true, 6 | useCreateIndex: true, 7 | }); 8 | connect 9 | .then((db) => { 10 | console.log("connected to db"); 11 | }) 12 | .catch((err) => { 13 | console.log(err); 14 | }); 15 | -------------------------------------------------------------------------------- /strategies/LocalStrategy.js: -------------------------------------------------------------------------------- 1 | const passport = require("passport"); 2 | const LocalStrategy = require("passport-local").Strategy; 3 | const User = require("../models/user"); 4 | 5 | //Called during login/sign up. 6 | passport.use(new LocalStrategy(User.authenticate())); 7 | 8 | //called while after logging in / signing up to set user details in req.user 9 | passport.serializeUser(User.serializeUser()); 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mern-auth-server", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "body-parser": "^1.19.0", 15 | "cookie-parser": "^1.4.5", 16 | "cors": "^2.8.5", 17 | "dotenv": "^8.2.0", 18 | "express": "^4.17.1", 19 | "jsonwebtoken": "^8.5.1", 20 | "mongoose": "5.11.12", 21 | "passport": "^0.4.1", 22 | "passport-jwt": "^4.0.0", 23 | "passport-local": "^1.0.0", 24 | "passport-local-mongoose": "^6.1.0" 25 | }, 26 | "devDependencies": { 27 | "eslint": "^7.21.0" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /authenticate.js: -------------------------------------------------------------------------------- 1 | const passport = require("passport"); 2 | const jwt = require("jsonwebtoken"); 3 | const dev = process.env.NODE_ENV !== "production"; 4 | 5 | exports.COOKIE_OPTIONS = { 6 | httpOnly: true, 7 | // Since localhost is not having https protocol, secure cookies does not work correctly (in postman) 8 | secure: !dev, 9 | signed: true, 10 | maxAge: eval(process.env.REFRESH_TOKEN_EXPIRY) * 1000, 11 | sameSite: "none", 12 | }; 13 | 14 | exports.getToken = (user) => { 15 | return jwt.sign(user, process.env.JWT_SECRET, { 16 | expiresIn: eval(process.env.SESSION_EXPIRY), 17 | }); 18 | }; 19 | 20 | exports.getRefreshToken = (user) => { 21 | const refreshToken = jwt.sign(user, process.env.REFRESH_TOKEN_SECRET, { 22 | expiresIn: eval(process.env.REFRESH_TOKEN_EXPIRY), 23 | }); 24 | return refreshToken; 25 | }; 26 | 27 | exports.verifyUser = passport.authenticate("jwt", { session: false }); 28 | -------------------------------------------------------------------------------- /models/user.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | const Schema = mongoose.Schema; 3 | 4 | const passportLocalMongoose = require("passport-local-mongoose"); 5 | 6 | const Session = new Schema({ 7 | refreshToken: { 8 | type: String, 9 | default: "", 10 | }, 11 | }); 12 | 13 | const User = new Schema({ 14 | firstName: { 15 | type: String, 16 | default: "", 17 | }, 18 | lastName: { 19 | type: String, 20 | default: "", 21 | }, 22 | authStrategy: { 23 | type: String, 24 | default: "local", 25 | }, 26 | points: { 27 | type: Number, 28 | default: 50, 29 | }, 30 | refreshToken: { 31 | type: [Session], 32 | }, 33 | }); 34 | 35 | //Remove refreshToken from the response 36 | User.set("toJSON", { 37 | transform: function (doc, ret, options) { 38 | delete ret.refreshToken; 39 | return ret; 40 | }, 41 | }); 42 | 43 | User.plugin(passportLocalMongoose); 44 | module.exports = mongoose.model("User", User); 45 | -------------------------------------------------------------------------------- /strategies/JwtStrategy.js: -------------------------------------------------------------------------------- 1 | const passport = require("passport"); 2 | const JwtStrategy = require("passport-jwt").Strategy, 3 | ExtractJwt = require("passport-jwt").ExtractJwt; 4 | const User = require("../models/user"); 5 | 6 | const opts = {}; 7 | opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken(); 8 | opts.secretOrKey = process.env.JWT_SECRET; 9 | 10 | // Used by the authenticated requests to deserialize the user, 11 | // i.e., to fetch user details from the JWT. 12 | passport.use( 13 | new JwtStrategy(opts, function (jwt_payload, done) { 14 | // Check against the DB only if necessary. 15 | // This can be avoided if you don't want to fetch user details in each request. 16 | User.findOne({ _id: jwt_payload._id }, function (err, user) { 17 | if (err) { 18 | return done(err, false); 19 | } 20 | if (user) { 21 | return done(null, user); 22 | } else { 23 | return done(null, false); 24 | // or you could create a new account 25 | } 26 | }); 27 | }) 28 | ); 29 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const cors = require("cors"); 3 | const bodyParser = require("body-parser"); 4 | const cookieParser = require("cookie-parser"); 5 | const passport = require("passport"); 6 | 7 | if (process.env.NODE_ENV !== "production") { 8 | // Load environment variables from .env file in non prod environments 9 | require("dotenv").config(); 10 | } 11 | require("./utils/connectdb"); 12 | 13 | require("./strategies/JwtStrategy"); 14 | require("./strategies/LocalStrategy"); 15 | require("./authenticate"); 16 | 17 | const userRouter = require("./routes/userRoutes"); 18 | 19 | const app = express(); 20 | 21 | app.use(bodyParser.json()); 22 | app.use(cookieParser(process.env.COOKIE_SECRET)); 23 | 24 | //Add the client URL to the CORS policy 25 | 26 | const whitelist = process.env.WHITELISTED_DOMAINS 27 | ? process.env.WHITELISTED_DOMAINS.split(",") 28 | : []; 29 | 30 | const corsOptions = { 31 | origin: function (origin, callback) { 32 | if (!origin || whitelist.indexOf(origin) !== -1) { 33 | callback(null, true); 34 | } else { 35 | callback(new Error("Not allowed by CORS")); 36 | } 37 | }, 38 | 39 | credentials: true, 40 | }; 41 | 42 | app.use(cors(corsOptions)); 43 | 44 | app.use(passport.initialize()); 45 | 46 | app.use("/users", userRouter); 47 | 48 | app.get("/", function (req, res) { 49 | res.send({ status: "success" }); 50 | }); 51 | 52 | //Start the server in port 8081 53 | 54 | const server = app.listen(process.env.PORT || 8081, function () { 55 | const port = server.address().port; 56 | 57 | console.log("App started at port:", port); 58 | }); 59 | -------------------------------------------------------------------------------- /routes/userRoutes.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const router = express.Router(); 3 | const User = require("../models/user"); 4 | const passport = require("passport"); 5 | const jwt = require("jsonwebtoken"); 6 | 7 | const { 8 | getToken, 9 | COOKIE_OPTIONS, 10 | getRefreshToken, 11 | verifyUser, 12 | } = require("../authenticate"); 13 | 14 | router.post("/signup", (req, res, next) => { 15 | // Verify that first name is not empty 16 | if (!req.body.firstName) { 17 | res.statusCode = 500; 18 | res.send({ 19 | name: "FirstNameError", 20 | message: "The first name is required", 21 | }); 22 | } else { 23 | User.register( 24 | new User({ username: req.body.username }), 25 | req.body.password, 26 | (err, user) => { 27 | if (err) { 28 | res.statusCode = 500; 29 | res.send(err); 30 | } else { 31 | user.firstName = req.body.firstName; 32 | user.lastName = req.body.lastName || ""; 33 | const token = getToken({ _id: user._id }); 34 | const refreshToken = getRefreshToken({ _id: user._id }); 35 | user.refreshToken.push({ refreshToken }); 36 | user.save((err, user) => { 37 | if (err) { 38 | res.statusCode = 500; 39 | res.send(err); 40 | } else { 41 | res.cookie("refreshToken", refreshToken, COOKIE_OPTIONS); 42 | res.send({ success: true, token }); 43 | } 44 | }); 45 | } 46 | } 47 | ); 48 | } 49 | }); 50 | 51 | router.post("/login", passport.authenticate("local"), (req, res, next) => { 52 | const token = getToken({ _id: req.user._id }); 53 | const refreshToken = getRefreshToken({ _id: req.user._id }); 54 | User.findById(req.user._id).then( 55 | (user) => { 56 | user.refreshToken.push({ refreshToken }); 57 | user.save((err, user) => { 58 | if (err) { 59 | res.statusCode = 500; 60 | res.send(err); 61 | } else { 62 | res.cookie("refreshToken", refreshToken, COOKIE_OPTIONS); 63 | res.send({ success: true, token }); 64 | } 65 | }); 66 | }, 67 | (err) => next(err) 68 | ); 69 | }); 70 | 71 | router.post("/refreshToken", (req, res, next) => { 72 | const { signedCookies = {} } = req; 73 | const { refreshToken } = signedCookies; 74 | 75 | if (refreshToken) { 76 | try { 77 | const payload = jwt.verify( 78 | refreshToken, 79 | process.env.REFRESH_TOKEN_SECRET 80 | ); 81 | const userId = payload._id; 82 | User.findOne({ _id: userId }).then( 83 | (user) => { 84 | if (user) { 85 | // Find the refresh token against the user record in database 86 | const tokenIndex = user.refreshToken.findIndex( 87 | (item) => item.refreshToken === refreshToken 88 | ); 89 | 90 | if (tokenIndex === -1) { 91 | res.statusCode = 401; 92 | res.send("Unauthorized"); 93 | } else { 94 | const token = getToken({ _id: userId }); 95 | // If the refresh token exists, then create new one and replace it. 96 | const newRefreshToken = getRefreshToken({ _id: userId }); 97 | user.refreshToken[tokenIndex] = { refreshToken: newRefreshToken }; 98 | user.save((err, user) => { 99 | if (err) { 100 | res.statusCode = 500; 101 | res.send(err); 102 | } else { 103 | res.cookie("refreshToken", newRefreshToken, COOKIE_OPTIONS); 104 | res.send({ success: true, token }); 105 | } 106 | }); 107 | } 108 | } else { 109 | res.statusCode = 401; 110 | res.send("Unauthorized"); 111 | } 112 | }, 113 | (err) => next(err) 114 | ); 115 | } catch (err) { 116 | res.statusCode = 401; 117 | res.send("Unauthorized"); 118 | } 119 | } else { 120 | res.statusCode = 401; 121 | res.send("Unauthorized"); 122 | } 123 | }); 124 | 125 | router.get("/me", verifyUser, (req, res, next) => { 126 | res.send(req.user); 127 | }); 128 | 129 | router.get("/logout", verifyUser, (req, res, next) => { 130 | const { signedCookies = {} } = req; 131 | const { refreshToken } = signedCookies; 132 | User.findById(req.user._id).then( 133 | (user) => { 134 | const tokenIndex = user.refreshToken.findIndex( 135 | (item) => item.refreshToken === refreshToken 136 | ); 137 | 138 | if (tokenIndex !== -1) { 139 | user.refreshToken.id(user.refreshToken[tokenIndex]._id).remove(); 140 | } 141 | 142 | user.save((err, user) => { 143 | if (err) { 144 | res.statusCode = 500; 145 | res.send(err); 146 | } else { 147 | res.clearCookie("refreshToken", COOKIE_OPTIONS); 148 | res.send({ success: true }); 149 | } 150 | }); 151 | }, 152 | (err) => next(err) 153 | ); 154 | }); 155 | module.exports = router; 156 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@7.12.11": 6 | version "7.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.12.11": 13 | version "7.12.11" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" 15 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.13.8" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.8.tgz#10b2dac78526424dfc1f47650d0e415dfd9dc481" 20 | integrity sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.12.11" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.4.0": 27 | version "0.4.0" 28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" 29 | integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^12.1.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | minimatch "^3.0.4" 39 | strip-json-comments "^3.1.1" 40 | 41 | "@types/bson@*": 42 | version "4.0.3" 43 | resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.0.3.tgz#30889d2ffde6262abbe38659364c631454999fbf" 44 | integrity sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw== 45 | dependencies: 46 | "@types/node" "*" 47 | 48 | "@types/mongodb@^3.5.27": 49 | version "3.6.8" 50 | resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.6.8.tgz#f80f0a3022c44d8db659a936434403ca3f4661df" 51 | integrity sha512-8qNbL5/GFrljXc/QijcuQcUMYZ1iWNcqnJ6tneROwbfU0LsAjQ9bmq3aHi5lWXM4cyBPd2F/n9INAk/pZZttHw== 52 | dependencies: 53 | "@types/bson" "*" 54 | "@types/node" "*" 55 | 56 | "@types/node@*": 57 | version "14.14.31" 58 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" 59 | integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== 60 | 61 | accepts@~1.3.7: 62 | version "1.3.7" 63 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 64 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 65 | dependencies: 66 | mime-types "~2.1.24" 67 | negotiator "0.6.2" 68 | 69 | acorn-jsx@^5.3.1: 70 | version "5.3.1" 71 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 72 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 73 | 74 | acorn@^7.4.0: 75 | version "7.4.1" 76 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 77 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 78 | 79 | ajv@^6.10.0, ajv@^6.12.4: 80 | version "6.12.6" 81 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 82 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 83 | dependencies: 84 | fast-deep-equal "^3.1.1" 85 | fast-json-stable-stringify "^2.0.0" 86 | json-schema-traverse "^0.4.1" 87 | uri-js "^4.2.2" 88 | 89 | ajv@^7.0.2: 90 | version "7.1.1" 91 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84" 92 | integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ== 93 | dependencies: 94 | fast-deep-equal "^3.1.1" 95 | json-schema-traverse "^1.0.0" 96 | require-from-string "^2.0.2" 97 | uri-js "^4.2.2" 98 | 99 | ansi-colors@^4.1.1: 100 | version "4.1.1" 101 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 102 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 103 | 104 | ansi-regex@^5.0.0: 105 | version "5.0.0" 106 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 107 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 108 | 109 | ansi-styles@^3.2.1: 110 | version "3.2.1" 111 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 112 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 113 | dependencies: 114 | color-convert "^1.9.0" 115 | 116 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 117 | version "4.3.0" 118 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 119 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 120 | dependencies: 121 | color-convert "^2.0.1" 122 | 123 | argparse@^1.0.7: 124 | version "1.0.10" 125 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 126 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 127 | dependencies: 128 | sprintf-js "~1.0.2" 129 | 130 | array-flatten@1.1.1: 131 | version "1.1.1" 132 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 133 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 134 | 135 | astral-regex@^2.0.0: 136 | version "2.0.0" 137 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 138 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 139 | 140 | balanced-match@^1.0.0: 141 | version "1.0.0" 142 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 143 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 144 | 145 | bl@^2.2.1: 146 | version "2.2.1" 147 | resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5" 148 | integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== 149 | dependencies: 150 | readable-stream "^2.3.5" 151 | safe-buffer "^5.1.1" 152 | 153 | bluebird@3.5.1: 154 | version "3.5.1" 155 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" 156 | integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== 157 | 158 | body-parser@1.19.0, body-parser@^1.19.0: 159 | version "1.19.0" 160 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 161 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 162 | dependencies: 163 | bytes "3.1.0" 164 | content-type "~1.0.4" 165 | debug "2.6.9" 166 | depd "~1.1.2" 167 | http-errors "1.7.2" 168 | iconv-lite "0.4.24" 169 | on-finished "~2.3.0" 170 | qs "6.7.0" 171 | raw-body "2.4.0" 172 | type-is "~1.6.17" 173 | 174 | brace-expansion@^1.1.7: 175 | version "1.1.11" 176 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 177 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 178 | dependencies: 179 | balanced-match "^1.0.0" 180 | concat-map "0.0.1" 181 | 182 | bson@^1.1.4: 183 | version "1.1.5" 184 | resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.5.tgz#2aaae98fcdf6750c0848b0cba1ddec3c73060a34" 185 | integrity sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg== 186 | 187 | buffer-equal-constant-time@1.0.1: 188 | version "1.0.1" 189 | resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" 190 | integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= 191 | 192 | bytes@3.1.0: 193 | version "3.1.0" 194 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 195 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 196 | 197 | callsites@^3.0.0: 198 | version "3.1.0" 199 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 200 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 201 | 202 | chalk@^2.0.0: 203 | version "2.4.2" 204 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 205 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 206 | dependencies: 207 | ansi-styles "^3.2.1" 208 | escape-string-regexp "^1.0.5" 209 | supports-color "^5.3.0" 210 | 211 | chalk@^4.0.0: 212 | version "4.1.0" 213 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 214 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 215 | dependencies: 216 | ansi-styles "^4.1.0" 217 | supports-color "^7.1.0" 218 | 219 | color-convert@^1.9.0: 220 | version "1.9.3" 221 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 222 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 223 | dependencies: 224 | color-name "1.1.3" 225 | 226 | color-convert@^2.0.1: 227 | version "2.0.1" 228 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 229 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 230 | dependencies: 231 | color-name "~1.1.4" 232 | 233 | color-name@1.1.3: 234 | version "1.1.3" 235 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 236 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 237 | 238 | color-name@~1.1.4: 239 | version "1.1.4" 240 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 241 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 242 | 243 | concat-map@0.0.1: 244 | version "0.0.1" 245 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 246 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 247 | 248 | content-disposition@0.5.3: 249 | version "0.5.3" 250 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 251 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 252 | dependencies: 253 | safe-buffer "5.1.2" 254 | 255 | content-type@~1.0.4: 256 | version "1.0.4" 257 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 258 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 259 | 260 | cookie-parser@^1.4.5: 261 | version "1.4.5" 262 | resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" 263 | integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== 264 | dependencies: 265 | cookie "0.4.0" 266 | cookie-signature "1.0.6" 267 | 268 | cookie-signature@1.0.6: 269 | version "1.0.6" 270 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 271 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 272 | 273 | cookie@0.4.0: 274 | version "0.4.0" 275 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 276 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 277 | 278 | core-util-is@~1.0.0: 279 | version "1.0.2" 280 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 281 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 282 | 283 | cors@^2.8.5: 284 | version "2.8.5" 285 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 286 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 287 | dependencies: 288 | object-assign "^4" 289 | vary "^1" 290 | 291 | cross-spawn@^7.0.2: 292 | version "7.0.3" 293 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 294 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 295 | dependencies: 296 | path-key "^3.1.0" 297 | shebang-command "^2.0.0" 298 | which "^2.0.1" 299 | 300 | debug@2.6.9: 301 | version "2.6.9" 302 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 303 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 304 | dependencies: 305 | ms "2.0.0" 306 | 307 | debug@3.1.0: 308 | version "3.1.0" 309 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 310 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 311 | dependencies: 312 | ms "2.0.0" 313 | 314 | debug@^4.0.1, debug@^4.1.1: 315 | version "4.3.1" 316 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 317 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 318 | dependencies: 319 | ms "2.1.2" 320 | 321 | deep-is@^0.1.3: 322 | version "0.1.3" 323 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 324 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 325 | 326 | denque@^1.4.1: 327 | version "1.5.0" 328 | resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de" 329 | integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ== 330 | 331 | depd@~1.1.2: 332 | version "1.1.2" 333 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 334 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 335 | 336 | destroy@~1.0.4: 337 | version "1.0.4" 338 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 339 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 340 | 341 | doctrine@^3.0.0: 342 | version "3.0.0" 343 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 344 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 345 | dependencies: 346 | esutils "^2.0.2" 347 | 348 | dotenv@^8.2.0: 349 | version "8.2.0" 350 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" 351 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== 352 | 353 | ecdsa-sig-formatter@1.0.11: 354 | version "1.0.11" 355 | resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" 356 | integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== 357 | dependencies: 358 | safe-buffer "^5.0.1" 359 | 360 | ee-first@1.1.1: 361 | version "1.1.1" 362 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 363 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 364 | 365 | emoji-regex@^8.0.0: 366 | version "8.0.0" 367 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 368 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 369 | 370 | encodeurl@~1.0.2: 371 | version "1.0.2" 372 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 373 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 374 | 375 | enquirer@^2.3.5: 376 | version "2.3.6" 377 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 378 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 379 | dependencies: 380 | ansi-colors "^4.1.1" 381 | 382 | escape-html@~1.0.3: 383 | version "1.0.3" 384 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 385 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 386 | 387 | escape-string-regexp@^1.0.5: 388 | version "1.0.5" 389 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 390 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 391 | 392 | eslint-scope@^5.1.1: 393 | version "5.1.1" 394 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 395 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 396 | dependencies: 397 | esrecurse "^4.3.0" 398 | estraverse "^4.1.1" 399 | 400 | eslint-utils@^2.1.0: 401 | version "2.1.0" 402 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 403 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 404 | dependencies: 405 | eslint-visitor-keys "^1.1.0" 406 | 407 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 408 | version "1.3.0" 409 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 410 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 411 | 412 | eslint-visitor-keys@^2.0.0: 413 | version "2.0.0" 414 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 415 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== 416 | 417 | eslint@^7.21.0: 418 | version "7.21.0" 419 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.21.0.tgz#4ecd5b8c5b44f5dedc9b8a110b01bbfeb15d1c83" 420 | integrity sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg== 421 | dependencies: 422 | "@babel/code-frame" "7.12.11" 423 | "@eslint/eslintrc" "^0.4.0" 424 | ajv "^6.10.0" 425 | chalk "^4.0.0" 426 | cross-spawn "^7.0.2" 427 | debug "^4.0.1" 428 | doctrine "^3.0.0" 429 | enquirer "^2.3.5" 430 | eslint-scope "^5.1.1" 431 | eslint-utils "^2.1.0" 432 | eslint-visitor-keys "^2.0.0" 433 | espree "^7.3.1" 434 | esquery "^1.4.0" 435 | esutils "^2.0.2" 436 | file-entry-cache "^6.0.1" 437 | functional-red-black-tree "^1.0.1" 438 | glob-parent "^5.0.0" 439 | globals "^12.1.0" 440 | ignore "^4.0.6" 441 | import-fresh "^3.0.0" 442 | imurmurhash "^0.1.4" 443 | is-glob "^4.0.0" 444 | js-yaml "^3.13.1" 445 | json-stable-stringify-without-jsonify "^1.0.1" 446 | levn "^0.4.1" 447 | lodash "^4.17.20" 448 | minimatch "^3.0.4" 449 | natural-compare "^1.4.0" 450 | optionator "^0.9.1" 451 | progress "^2.0.0" 452 | regexpp "^3.1.0" 453 | semver "^7.2.1" 454 | strip-ansi "^6.0.0" 455 | strip-json-comments "^3.1.0" 456 | table "^6.0.4" 457 | text-table "^0.2.0" 458 | v8-compile-cache "^2.0.3" 459 | 460 | espree@^7.3.0, espree@^7.3.1: 461 | version "7.3.1" 462 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 463 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 464 | dependencies: 465 | acorn "^7.4.0" 466 | acorn-jsx "^5.3.1" 467 | eslint-visitor-keys "^1.3.0" 468 | 469 | esprima@^4.0.0: 470 | version "4.0.1" 471 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 472 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 473 | 474 | esquery@^1.4.0: 475 | version "1.4.0" 476 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 477 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 478 | dependencies: 479 | estraverse "^5.1.0" 480 | 481 | esrecurse@^4.3.0: 482 | version "4.3.0" 483 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 484 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 485 | dependencies: 486 | estraverse "^5.2.0" 487 | 488 | estraverse@^4.1.1: 489 | version "4.3.0" 490 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 491 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 492 | 493 | estraverse@^5.1.0, estraverse@^5.2.0: 494 | version "5.2.0" 495 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 496 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 497 | 498 | esutils@^2.0.2: 499 | version "2.0.3" 500 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 501 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 502 | 503 | etag@~1.8.1: 504 | version "1.8.1" 505 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 506 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 507 | 508 | express@^4.17.1: 509 | version "4.17.1" 510 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 511 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 512 | dependencies: 513 | accepts "~1.3.7" 514 | array-flatten "1.1.1" 515 | body-parser "1.19.0" 516 | content-disposition "0.5.3" 517 | content-type "~1.0.4" 518 | cookie "0.4.0" 519 | cookie-signature "1.0.6" 520 | debug "2.6.9" 521 | depd "~1.1.2" 522 | encodeurl "~1.0.2" 523 | escape-html "~1.0.3" 524 | etag "~1.8.1" 525 | finalhandler "~1.1.2" 526 | fresh "0.5.2" 527 | merge-descriptors "1.0.1" 528 | methods "~1.1.2" 529 | on-finished "~2.3.0" 530 | parseurl "~1.3.3" 531 | path-to-regexp "0.1.7" 532 | proxy-addr "~2.0.5" 533 | qs "6.7.0" 534 | range-parser "~1.2.1" 535 | safe-buffer "5.1.2" 536 | send "0.17.1" 537 | serve-static "1.14.1" 538 | setprototypeof "1.1.1" 539 | statuses "~1.5.0" 540 | type-is "~1.6.18" 541 | utils-merge "1.0.1" 542 | vary "~1.1.2" 543 | 544 | fast-deep-equal@^3.1.1: 545 | version "3.1.3" 546 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 547 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 548 | 549 | fast-json-stable-stringify@^2.0.0: 550 | version "2.1.0" 551 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 552 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 553 | 554 | fast-levenshtein@^2.0.6: 555 | version "2.0.6" 556 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 557 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 558 | 559 | file-entry-cache@^6.0.1: 560 | version "6.0.1" 561 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 562 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 563 | dependencies: 564 | flat-cache "^3.0.4" 565 | 566 | finalhandler@~1.1.2: 567 | version "1.1.2" 568 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 569 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 570 | dependencies: 571 | debug "2.6.9" 572 | encodeurl "~1.0.2" 573 | escape-html "~1.0.3" 574 | on-finished "~2.3.0" 575 | parseurl "~1.3.3" 576 | statuses "~1.5.0" 577 | unpipe "~1.0.0" 578 | 579 | flat-cache@^3.0.4: 580 | version "3.0.4" 581 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 582 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 583 | dependencies: 584 | flatted "^3.1.0" 585 | rimraf "^3.0.2" 586 | 587 | flatted@^3.1.0: 588 | version "3.1.1" 589 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" 590 | integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== 591 | 592 | forwarded@~0.1.2: 593 | version "0.1.2" 594 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 595 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 596 | 597 | fresh@0.5.2: 598 | version "0.5.2" 599 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 600 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 601 | 602 | fs.realpath@^1.0.0: 603 | version "1.0.0" 604 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 605 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 606 | 607 | functional-red-black-tree@^1.0.1: 608 | version "1.0.1" 609 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 610 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 611 | 612 | generaterr@^1.5.0: 613 | version "1.5.0" 614 | resolved "https://registry.yarnpkg.com/generaterr/-/generaterr-1.5.0.tgz#b0ceb6cc5164df2a061338cc340a8615395c52fc" 615 | integrity sha1-sM62zFFk3yoGEzjMNAqGFTlcUvw= 616 | 617 | glob-parent@^5.0.0: 618 | version "5.1.2" 619 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 620 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 621 | dependencies: 622 | is-glob "^4.0.1" 623 | 624 | glob@^7.1.3: 625 | version "7.1.6" 626 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 627 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 628 | dependencies: 629 | fs.realpath "^1.0.0" 630 | inflight "^1.0.4" 631 | inherits "2" 632 | minimatch "^3.0.4" 633 | once "^1.3.0" 634 | path-is-absolute "^1.0.0" 635 | 636 | globals@^12.1.0: 637 | version "12.4.0" 638 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 639 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 640 | dependencies: 641 | type-fest "^0.8.1" 642 | 643 | has-flag@^3.0.0: 644 | version "3.0.0" 645 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 646 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 647 | 648 | has-flag@^4.0.0: 649 | version "4.0.0" 650 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 651 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 652 | 653 | http-errors@1.7.2: 654 | version "1.7.2" 655 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 656 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 657 | dependencies: 658 | depd "~1.1.2" 659 | inherits "2.0.3" 660 | setprototypeof "1.1.1" 661 | statuses ">= 1.5.0 < 2" 662 | toidentifier "1.0.0" 663 | 664 | http-errors@~1.7.2: 665 | version "1.7.3" 666 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 667 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 668 | dependencies: 669 | depd "~1.1.2" 670 | inherits "2.0.4" 671 | setprototypeof "1.1.1" 672 | statuses ">= 1.5.0 < 2" 673 | toidentifier "1.0.0" 674 | 675 | iconv-lite@0.4.24: 676 | version "0.4.24" 677 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 678 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 679 | dependencies: 680 | safer-buffer ">= 2.1.2 < 3" 681 | 682 | ignore@^4.0.6: 683 | version "4.0.6" 684 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 685 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 686 | 687 | import-fresh@^3.0.0, import-fresh@^3.2.1: 688 | version "3.3.0" 689 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 690 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 691 | dependencies: 692 | parent-module "^1.0.0" 693 | resolve-from "^4.0.0" 694 | 695 | imurmurhash@^0.1.4: 696 | version "0.1.4" 697 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 698 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 699 | 700 | inflight@^1.0.4: 701 | version "1.0.6" 702 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 703 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 704 | dependencies: 705 | once "^1.3.0" 706 | wrappy "1" 707 | 708 | inherits@2, inherits@2.0.4, inherits@~2.0.3: 709 | version "2.0.4" 710 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 711 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 712 | 713 | inherits@2.0.3: 714 | version "2.0.3" 715 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 716 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 717 | 718 | ipaddr.js@1.9.1: 719 | version "1.9.1" 720 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 721 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 722 | 723 | is-extglob@^2.1.1: 724 | version "2.1.1" 725 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 726 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 727 | 728 | is-fullwidth-code-point@^3.0.0: 729 | version "3.0.0" 730 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 731 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 732 | 733 | is-glob@^4.0.0, is-glob@^4.0.1: 734 | version "4.0.1" 735 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 736 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 737 | dependencies: 738 | is-extglob "^2.1.1" 739 | 740 | isarray@~1.0.0: 741 | version "1.0.0" 742 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 743 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 744 | 745 | isexe@^2.0.0: 746 | version "2.0.0" 747 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 748 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 749 | 750 | js-tokens@^4.0.0: 751 | version "4.0.0" 752 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 753 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 754 | 755 | js-yaml@^3.13.1: 756 | version "3.14.1" 757 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 758 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 759 | dependencies: 760 | argparse "^1.0.7" 761 | esprima "^4.0.0" 762 | 763 | json-schema-traverse@^0.4.1: 764 | version "0.4.1" 765 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 766 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 767 | 768 | json-schema-traverse@^1.0.0: 769 | version "1.0.0" 770 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 771 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 772 | 773 | json-stable-stringify-without-jsonify@^1.0.1: 774 | version "1.0.1" 775 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 776 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 777 | 778 | jsonwebtoken@^8.2.0, jsonwebtoken@^8.5.1: 779 | version "8.5.1" 780 | resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" 781 | integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== 782 | dependencies: 783 | jws "^3.2.2" 784 | lodash.includes "^4.3.0" 785 | lodash.isboolean "^3.0.3" 786 | lodash.isinteger "^4.0.4" 787 | lodash.isnumber "^3.0.3" 788 | lodash.isplainobject "^4.0.6" 789 | lodash.isstring "^4.0.1" 790 | lodash.once "^4.0.0" 791 | ms "^2.1.1" 792 | semver "^5.6.0" 793 | 794 | jwa@^1.4.1: 795 | version "1.4.1" 796 | resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" 797 | integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== 798 | dependencies: 799 | buffer-equal-constant-time "1.0.1" 800 | ecdsa-sig-formatter "1.0.11" 801 | safe-buffer "^5.0.1" 802 | 803 | jws@^3.2.2: 804 | version "3.2.2" 805 | resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" 806 | integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== 807 | dependencies: 808 | jwa "^1.4.1" 809 | safe-buffer "^5.0.1" 810 | 811 | kareem@2.3.2: 812 | version "2.3.2" 813 | resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.2.tgz#78c4508894985b8d38a0dc15e1a8e11078f2ca93" 814 | integrity sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ== 815 | 816 | levn@^0.4.1: 817 | version "0.4.1" 818 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 819 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 820 | dependencies: 821 | prelude-ls "^1.2.1" 822 | type-check "~0.4.0" 823 | 824 | lodash.includes@^4.3.0: 825 | version "4.3.0" 826 | resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" 827 | integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= 828 | 829 | lodash.isboolean@^3.0.3: 830 | version "3.0.3" 831 | resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" 832 | integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= 833 | 834 | lodash.isinteger@^4.0.4: 835 | version "4.0.4" 836 | resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" 837 | integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= 838 | 839 | lodash.isnumber@^3.0.3: 840 | version "3.0.3" 841 | resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" 842 | integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= 843 | 844 | lodash.isplainobject@^4.0.6: 845 | version "4.0.6" 846 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 847 | integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= 848 | 849 | lodash.isstring@^4.0.1: 850 | version "4.0.1" 851 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" 852 | integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= 853 | 854 | lodash.once@^4.0.0: 855 | version "4.1.1" 856 | resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" 857 | integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= 858 | 859 | lodash@^4.17.20: 860 | version "4.17.21" 861 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 862 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 863 | 864 | lru-cache@^6.0.0: 865 | version "6.0.0" 866 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 867 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 868 | dependencies: 869 | yallist "^4.0.0" 870 | 871 | media-typer@0.3.0: 872 | version "0.3.0" 873 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 874 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 875 | 876 | memory-pager@^1.0.2: 877 | version "1.5.0" 878 | resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" 879 | integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== 880 | 881 | merge-descriptors@1.0.1: 882 | version "1.0.1" 883 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 884 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 885 | 886 | methods@~1.1.2: 887 | version "1.1.2" 888 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 889 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 890 | 891 | mime-db@1.46.0: 892 | version "1.46.0" 893 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" 894 | integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== 895 | 896 | mime-types@~2.1.24: 897 | version "2.1.29" 898 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" 899 | integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== 900 | dependencies: 901 | mime-db "1.46.0" 902 | 903 | mime@1.6.0: 904 | version "1.6.0" 905 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 906 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 907 | 908 | minimatch@^3.0.4: 909 | version "3.0.4" 910 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 911 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 912 | dependencies: 913 | brace-expansion "^1.1.7" 914 | 915 | mongodb@3.6.3: 916 | version "3.6.3" 917 | resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.6.3.tgz#eddaed0cc3598474d7a15f0f2a5b04848489fd05" 918 | integrity sha512-rOZuR0QkodZiM+UbQE5kDsJykBqWi0CL4Ec2i1nrGrUI3KO11r6Fbxskqmq3JK2NH7aW4dcccBuUujAP0ERl5w== 919 | dependencies: 920 | bl "^2.2.1" 921 | bson "^1.1.4" 922 | denque "^1.4.1" 923 | require_optional "^1.0.1" 924 | safe-buffer "^5.1.2" 925 | optionalDependencies: 926 | saslprep "^1.0.0" 927 | 928 | mongoose-legacy-pluralize@1.0.2: 929 | version "1.0.2" 930 | resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" 931 | integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== 932 | 933 | mongoose@5.11.12: 934 | version "5.11.12" 935 | resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.11.12.tgz#452d28ef04b9c6a9601e62a54064851c3b57d4ee" 936 | integrity sha512-70wST9hnVlPbt5nKClPKJo54ULIACOVGYdg8fyj17sWtCJLyURCDahhzUh+oUA7WVykOW2ZMqWm2kujBIWYagg== 937 | dependencies: 938 | "@types/mongodb" "^3.5.27" 939 | bson "^1.1.4" 940 | kareem "2.3.2" 941 | mongodb "3.6.3" 942 | mongoose-legacy-pluralize "1.0.2" 943 | mpath "0.8.3" 944 | mquery "3.2.3" 945 | ms "2.1.2" 946 | regexp-clone "1.0.0" 947 | safe-buffer "5.2.1" 948 | sift "7.0.1" 949 | sliced "1.0.1" 950 | 951 | mpath@0.8.3: 952 | version "0.8.3" 953 | resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.8.3.tgz#828ac0d187f7f42674839d74921970979abbdd8f" 954 | integrity sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA== 955 | 956 | mquery@3.2.3: 957 | version "3.2.3" 958 | resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.3.tgz#bcf54fdfe3baf57b6a22f9b62b1ad5fa18ffe96a" 959 | integrity sha512-cIfbP4TyMYX+SkaQ2MntD+F2XbqaBHUYWk3j+kqdDztPWok3tgyssOZxMHMtzbV1w9DaSlvEea0Iocuro41A4g== 960 | dependencies: 961 | bluebird "3.5.1" 962 | debug "3.1.0" 963 | regexp-clone "^1.0.0" 964 | safe-buffer "5.1.2" 965 | sliced "1.0.1" 966 | 967 | ms@2.0.0: 968 | version "2.0.0" 969 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 970 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 971 | 972 | ms@2.1.1: 973 | version "2.1.1" 974 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 975 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 976 | 977 | ms@2.1.2: 978 | version "2.1.2" 979 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 980 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 981 | 982 | ms@^2.1.1: 983 | version "2.1.3" 984 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 985 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 986 | 987 | natural-compare@^1.4.0: 988 | version "1.4.0" 989 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 990 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 991 | 992 | negotiator@0.6.2: 993 | version "0.6.2" 994 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 995 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 996 | 997 | object-assign@^4: 998 | version "4.1.1" 999 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1000 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1001 | 1002 | on-finished@~2.3.0: 1003 | version "2.3.0" 1004 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1005 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 1006 | dependencies: 1007 | ee-first "1.1.1" 1008 | 1009 | once@^1.3.0: 1010 | version "1.4.0" 1011 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1012 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1013 | dependencies: 1014 | wrappy "1" 1015 | 1016 | optionator@^0.9.1: 1017 | version "0.9.1" 1018 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1019 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1020 | dependencies: 1021 | deep-is "^0.1.3" 1022 | fast-levenshtein "^2.0.6" 1023 | levn "^0.4.1" 1024 | prelude-ls "^1.2.1" 1025 | type-check "^0.4.0" 1026 | word-wrap "^1.2.3" 1027 | 1028 | parent-module@^1.0.0: 1029 | version "1.0.1" 1030 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1031 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1032 | dependencies: 1033 | callsites "^3.0.0" 1034 | 1035 | parseurl@~1.3.3: 1036 | version "1.3.3" 1037 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1038 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1039 | 1040 | passport-jwt@^4.0.0: 1041 | version "4.0.0" 1042 | resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.0.tgz#7f0be7ba942e28b9f5d22c2ebbb8ce96ef7cf065" 1043 | integrity sha512-BwC0n2GP/1hMVjR4QpnvqA61TxenUMlmfNjYNgK0ZAs0HK4SOQkHcSv4L328blNTLtHq7DbmvyNJiH+bn6C5Mg== 1044 | dependencies: 1045 | jsonwebtoken "^8.2.0" 1046 | passport-strategy "^1.0.0" 1047 | 1048 | passport-local-mongoose@^6.1.0: 1049 | version "6.1.0" 1050 | resolved "https://registry.yarnpkg.com/passport-local-mongoose/-/passport-local-mongoose-6.1.0.tgz#341db91359ac855057476e0f2d795f6a6c5f686b" 1051 | integrity sha512-kxRDejpBXoPmWau1RCrmEeNYEXGG9ec4aDYjd0pFAHIEAzZ0RXKn581ISfjpHZ1zZLoCCM2pWUo4SfGHNJNwnw== 1052 | dependencies: 1053 | generaterr "^1.5.0" 1054 | passport-local "^1.0.0" 1055 | scmp "^2.1.0" 1056 | 1057 | passport-local@^1.0.0: 1058 | version "1.0.0" 1059 | resolved "https://registry.yarnpkg.com/passport-local/-/passport-local-1.0.0.tgz#1fe63268c92e75606626437e3b906662c15ba6ee" 1060 | integrity sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4= 1061 | dependencies: 1062 | passport-strategy "1.x.x" 1063 | 1064 | passport-strategy@1.x.x, passport-strategy@^1.0.0: 1065 | version "1.0.0" 1066 | resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" 1067 | integrity sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ= 1068 | 1069 | passport@^0.4.1: 1070 | version "0.4.1" 1071 | resolved "https://registry.yarnpkg.com/passport/-/passport-0.4.1.tgz#941446a21cb92fc688d97a0861c38ce9f738f270" 1072 | integrity sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg== 1073 | dependencies: 1074 | passport-strategy "1.x.x" 1075 | pause "0.0.1" 1076 | 1077 | path-is-absolute@^1.0.0: 1078 | version "1.0.1" 1079 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1080 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1081 | 1082 | path-key@^3.1.0: 1083 | version "3.1.1" 1084 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1085 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1086 | 1087 | path-to-regexp@0.1.7: 1088 | version "0.1.7" 1089 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1090 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 1091 | 1092 | pause@0.0.1: 1093 | version "0.0.1" 1094 | resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" 1095 | integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= 1096 | 1097 | prelude-ls@^1.2.1: 1098 | version "1.2.1" 1099 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1100 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1101 | 1102 | process-nextick-args@~2.0.0: 1103 | version "2.0.1" 1104 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1105 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1106 | 1107 | progress@^2.0.0: 1108 | version "2.0.3" 1109 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1110 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1111 | 1112 | proxy-addr@~2.0.5: 1113 | version "2.0.6" 1114 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" 1115 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== 1116 | dependencies: 1117 | forwarded "~0.1.2" 1118 | ipaddr.js "1.9.1" 1119 | 1120 | punycode@^2.1.0: 1121 | version "2.1.1" 1122 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1123 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1124 | 1125 | qs@6.7.0: 1126 | version "6.7.0" 1127 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 1128 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 1129 | 1130 | range-parser@~1.2.1: 1131 | version "1.2.1" 1132 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1133 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1134 | 1135 | raw-body@2.4.0: 1136 | version "2.4.0" 1137 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 1138 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 1139 | dependencies: 1140 | bytes "3.1.0" 1141 | http-errors "1.7.2" 1142 | iconv-lite "0.4.24" 1143 | unpipe "1.0.0" 1144 | 1145 | readable-stream@^2.3.5: 1146 | version "2.3.7" 1147 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1148 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1149 | dependencies: 1150 | core-util-is "~1.0.0" 1151 | inherits "~2.0.3" 1152 | isarray "~1.0.0" 1153 | process-nextick-args "~2.0.0" 1154 | safe-buffer "~5.1.1" 1155 | string_decoder "~1.1.1" 1156 | util-deprecate "~1.0.1" 1157 | 1158 | regexp-clone@1.0.0, regexp-clone@^1.0.0: 1159 | version "1.0.0" 1160 | resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" 1161 | integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== 1162 | 1163 | regexpp@^3.1.0: 1164 | version "3.1.0" 1165 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 1166 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 1167 | 1168 | require-from-string@^2.0.2: 1169 | version "2.0.2" 1170 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1171 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1172 | 1173 | require_optional@^1.0.1: 1174 | version "1.0.1" 1175 | resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" 1176 | integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== 1177 | dependencies: 1178 | resolve-from "^2.0.0" 1179 | semver "^5.1.0" 1180 | 1181 | resolve-from@^2.0.0: 1182 | version "2.0.0" 1183 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" 1184 | integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= 1185 | 1186 | resolve-from@^4.0.0: 1187 | version "4.0.0" 1188 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1189 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1190 | 1191 | rimraf@^3.0.2: 1192 | version "3.0.2" 1193 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1194 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1195 | dependencies: 1196 | glob "^7.1.3" 1197 | 1198 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1199 | version "5.1.2" 1200 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1201 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1202 | 1203 | safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: 1204 | version "5.2.1" 1205 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1206 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1207 | 1208 | "safer-buffer@>= 2.1.2 < 3": 1209 | version "2.1.2" 1210 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1211 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1212 | 1213 | saslprep@^1.0.0: 1214 | version "1.0.3" 1215 | resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" 1216 | integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== 1217 | dependencies: 1218 | sparse-bitfield "^3.0.3" 1219 | 1220 | scmp@^2.1.0: 1221 | version "2.1.0" 1222 | resolved "https://registry.yarnpkg.com/scmp/-/scmp-2.1.0.tgz#37b8e197c425bdeb570ab91cc356b311a11f9c9a" 1223 | integrity sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q== 1224 | 1225 | semver@^5.1.0, semver@^5.6.0: 1226 | version "5.7.1" 1227 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1228 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1229 | 1230 | semver@^7.2.1: 1231 | version "7.3.4" 1232 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" 1233 | integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== 1234 | dependencies: 1235 | lru-cache "^6.0.0" 1236 | 1237 | send@0.17.1: 1238 | version "0.17.1" 1239 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 1240 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 1241 | dependencies: 1242 | debug "2.6.9" 1243 | depd "~1.1.2" 1244 | destroy "~1.0.4" 1245 | encodeurl "~1.0.2" 1246 | escape-html "~1.0.3" 1247 | etag "~1.8.1" 1248 | fresh "0.5.2" 1249 | http-errors "~1.7.2" 1250 | mime "1.6.0" 1251 | ms "2.1.1" 1252 | on-finished "~2.3.0" 1253 | range-parser "~1.2.1" 1254 | statuses "~1.5.0" 1255 | 1256 | serve-static@1.14.1: 1257 | version "1.14.1" 1258 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 1259 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 1260 | dependencies: 1261 | encodeurl "~1.0.2" 1262 | escape-html "~1.0.3" 1263 | parseurl "~1.3.3" 1264 | send "0.17.1" 1265 | 1266 | setprototypeof@1.1.1: 1267 | version "1.1.1" 1268 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1269 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1270 | 1271 | shebang-command@^2.0.0: 1272 | version "2.0.0" 1273 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1274 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1275 | dependencies: 1276 | shebang-regex "^3.0.0" 1277 | 1278 | shebang-regex@^3.0.0: 1279 | version "3.0.0" 1280 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1281 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1282 | 1283 | sift@7.0.1: 1284 | version "7.0.1" 1285 | resolved "https://registry.yarnpkg.com/sift/-/sift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08" 1286 | integrity sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g== 1287 | 1288 | slice-ansi@^4.0.0: 1289 | version "4.0.0" 1290 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1291 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1292 | dependencies: 1293 | ansi-styles "^4.0.0" 1294 | astral-regex "^2.0.0" 1295 | is-fullwidth-code-point "^3.0.0" 1296 | 1297 | sliced@1.0.1: 1298 | version "1.0.1" 1299 | resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" 1300 | integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= 1301 | 1302 | sparse-bitfield@^3.0.3: 1303 | version "3.0.3" 1304 | resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" 1305 | integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE= 1306 | dependencies: 1307 | memory-pager "^1.0.2" 1308 | 1309 | sprintf-js@~1.0.2: 1310 | version "1.0.3" 1311 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1312 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1313 | 1314 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 1315 | version "1.5.0" 1316 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1317 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1318 | 1319 | string-width@^4.2.0: 1320 | version "4.2.2" 1321 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" 1322 | integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== 1323 | dependencies: 1324 | emoji-regex "^8.0.0" 1325 | is-fullwidth-code-point "^3.0.0" 1326 | strip-ansi "^6.0.0" 1327 | 1328 | string_decoder@~1.1.1: 1329 | version "1.1.1" 1330 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1331 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1332 | dependencies: 1333 | safe-buffer "~5.1.0" 1334 | 1335 | strip-ansi@^6.0.0: 1336 | version "6.0.0" 1337 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1338 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1339 | dependencies: 1340 | ansi-regex "^5.0.0" 1341 | 1342 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1343 | version "3.1.1" 1344 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1345 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1346 | 1347 | supports-color@^5.3.0: 1348 | version "5.5.0" 1349 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1350 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1351 | dependencies: 1352 | has-flag "^3.0.0" 1353 | 1354 | supports-color@^7.1.0: 1355 | version "7.2.0" 1356 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1357 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1358 | dependencies: 1359 | has-flag "^4.0.0" 1360 | 1361 | table@^6.0.4: 1362 | version "6.0.7" 1363 | resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" 1364 | integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== 1365 | dependencies: 1366 | ajv "^7.0.2" 1367 | lodash "^4.17.20" 1368 | slice-ansi "^4.0.0" 1369 | string-width "^4.2.0" 1370 | 1371 | text-table@^0.2.0: 1372 | version "0.2.0" 1373 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1374 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1375 | 1376 | toidentifier@1.0.0: 1377 | version "1.0.0" 1378 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1379 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 1380 | 1381 | type-check@^0.4.0, type-check@~0.4.0: 1382 | version "0.4.0" 1383 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1384 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1385 | dependencies: 1386 | prelude-ls "^1.2.1" 1387 | 1388 | type-fest@^0.8.1: 1389 | version "0.8.1" 1390 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1391 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1392 | 1393 | type-is@~1.6.17, type-is@~1.6.18: 1394 | version "1.6.18" 1395 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1396 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1397 | dependencies: 1398 | media-typer "0.3.0" 1399 | mime-types "~2.1.24" 1400 | 1401 | unpipe@1.0.0, unpipe@~1.0.0: 1402 | version "1.0.0" 1403 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1404 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1405 | 1406 | uri-js@^4.2.2: 1407 | version "4.4.1" 1408 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1409 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1410 | dependencies: 1411 | punycode "^2.1.0" 1412 | 1413 | util-deprecate@~1.0.1: 1414 | version "1.0.2" 1415 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1416 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1417 | 1418 | utils-merge@1.0.1: 1419 | version "1.0.1" 1420 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1421 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1422 | 1423 | v8-compile-cache@^2.0.3: 1424 | version "2.3.0" 1425 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1426 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1427 | 1428 | vary@^1, vary@~1.1.2: 1429 | version "1.1.2" 1430 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1431 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1432 | 1433 | which@^2.0.1: 1434 | version "2.0.2" 1435 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1436 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1437 | dependencies: 1438 | isexe "^2.0.0" 1439 | 1440 | word-wrap@^1.2.3: 1441 | version "1.2.3" 1442 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1443 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1444 | 1445 | wrappy@1: 1446 | version "1.0.2" 1447 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1448 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1449 | 1450 | yallist@^4.0.0: 1451 | version "4.0.0" 1452 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1453 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1454 | --------------------------------------------------------------------------------