├── .gitignore ├── README.md ├── package.json ├── src ├── @types │ ├── express-session │ │ └── index.d.ts │ └── express │ │ └── index.d.ts ├── controllers │ ├── auth │ │ └── index.ts │ └── user │ │ └── index.ts ├── index.ts ├── routes │ ├── auth │ │ └── index.ts │ ├── index.ts │ └── user │ │ └── index.ts ├── services │ ├── auth │ │ └── index.ts │ └── user │ │ └── index.ts ├── typeorm │ └── entities │ │ ├── Session.ts │ │ └── User.ts └── utils │ ├── constants.ts │ ├── helpers.ts │ ├── session.ts │ └── types.ts ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Discord OAuth2 Implementation Tutorial 2 | 3 | This is the code repository for my Discord OAuth2 Implementation Tutorial. You can find the tutorial [here](https://www.youtube.com/watch?v=RP0P_zGdvj8). 4 | 5 | # Overview 6 | 7 | The purpose of this project is to demonstrate how we can implement Passport.js functionalities from scratch. Instead of using Passport, we can learn how OAuth2 really works underneath the hood, and understand the whole process of exchanging an access code for access & refresh tokens from our OAuth2 provider. 8 | 9 | Additionally, we also would like to add persistence to our application. Passport itself allows you to register it with sessions so whenever you authenticate, it will take care of serialization and deserialization. Often times, users of these libraries don't quite understand what happens underneath these high-level functions. Thus, we implement our own Serialize & Deserialize functions to get a better understanding of how a Session is saved & restored. 10 | 11 | 12 | # Installation & Instructions 13 | 14 | If you wish to use this code, please follow the instructions on how to set everything up. 15 | 16 | Pre-requisites: 17 | 18 | - Clone the repository 19 | - Run `npm install` or `yarn install` 20 | - Use the sample below as a .env boilerplate. Be sure not to share these environment variables with anyone outside of your developer team. 21 | 22 | ``` 23 | # Discord OAuth2 Client Details 24 | 25 | DISCORD_OAUTH_CLIENT_ID= 26 | DISCORD_OAUTH_SECRET= 27 | DISCORD_REDIRECT_URL= 28 | 29 | # Express Server Details 30 | 31 | PORT= 32 | 33 | # Cookie & Session Options 34 | 35 | COOKIE_SECRET= 36 | 37 | # MySQL & TypeORM Connection Options 38 | 39 | MYSQL_DB_USERNAME= 40 | MYSQL_DB_PASSWORD= 41 | MYSQL_DB_DATABASE= 42 | MYSQL_DB_HOSTNAME= 43 | MYSQL_DB_PORT= 44 | ``` 45 | 46 | 1. Create a Discord Application on the Discord Developer Portal 47 | 2. Create a `.env` file to store your environment variables. This is optional, you may choose to store them however you like. There are 4 environment variables that I have created and used in this project. 48 | 49 | - **_DISCORD_OAUTH_CLIENT_ID_** - The Client ID of the Discord Application. 50 | - **_DISCORD_OAUTH_SECRET_** - The Client Secret of the Discord Application 51 | - **_DISCORD_REDIRECT_URL_** - The Redirect Url Discord redirects to upon authorization (success, or fail). 52 | - **_PORT_** - The port the express server runs on 53 | 54 | Your variables in the .env file should look like this: 55 | 56 | ``` 57 | DISCORD_OAUTH_CLIENT_ID=MY CLIENT ID 58 | DISCORD_OAUTH_SECRET=MY CLIENT SECRET 59 | DISCORD_REDIRECT_URL=http://myredirecturl/api/some/redirect/url 60 | PORT=8081 61 | ``` 62 | 63 | *Be sure to place the `.env` file in the *root* directory, not inside the `src` folder, but outside of it.* Additionally, the environment variables stored in the `.env` file will not replace your Operating System's user or system variables. The environment variables will also return as undefined if you execute the code in a directory that does _not_ have the .env file. So if you have your `.env` file in `discord-oauth2-implementation`, but you're executing the `index.ts` file from `discord-oauth2-implementation/src`, the environment variables will not be loaded, thus, you should be executing the index file from the root directory. 64 | 65 | 3. As of Episode #2, you will need a database since we are saving Users & Sessions. In the video, I use MySQL, however, because we are using TypeORM, you can easily swap out MySQL for another database engine like PostgreSQL or even MongoDB. If you choose to use MongoDB, you will need to refer to TypeORM's documentation on MongoDB to get it to work. Be sure to change the `type` to the database engine of your choice in the `ConnectionOptions` object when calling `createConnection`. 66 | 67 | - There are plenty of videos & resources online that guide you on how to install MySQL Server. I recommend MySQL Server 8+ and avoid using a non-root user. 68 | - Inside the `src/index.ts` file you will find the `createConnection` function call with all of the TypeORM Connection Options. You can pass in your credentials in the object. By default it uses environment variables, which I recommend you configure and set in the `.env` file or on your OS. Or you can just pass in the values as is. 69 | 70 | 4. To start the project in "Developer" mode, aka, using nodemon, you can run `yarn start:dev` or `npm run start:dev`. This will be handy for development. As you make changes, the running process will restart without you needing to manually exit & starting it each time. 71 | 72 | 5. To start the project in normal "production" mode, you should run the `build` command first before running the `start` command. Using the build command will compile all TypeScript files to JavaScript. This is recommended for production. 73 | - Running the build command will create a `dist` folder in the root directory with all the compiled JavaScript code. 74 | 75 | # Routes 76 | 77 | **GET** /api/auth/discord/redirect 78 | 79 | - Redirects to this route once the user clicks the "Authorize" button on Discord's platform. 80 | 81 | **GET** /api/auth/user 82 | 83 | - Retrieves the authenticated user. Uses the `access_token` retrieved upon authorization to retrieve the information from Discord's /api/user/@me route. 84 | 85 | **GET** /api/auth/revoke 86 | 87 | - Revokes the access token. This unauthorizes the access token from further use on behalf of the authenticated user. 88 | 89 | --- 90 | 91 | _Please note that this code is for educational purposes only and not intended to be for immediate usage for production environments. Additionally, the code does NOT persist any user's sessions or save & encrypt access & refresh tokens. If you wish to create persistence, you should install a database and save necessary data for your application._ 92 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "discord-oauth2-implementation", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "start": "node ./dist/index.js", 8 | "start:dev": "nodemon ./src/index.ts", 9 | "build": "tsc" 10 | }, 11 | "dependencies": { 12 | "axios": "^0.21.4", 13 | "cookie-parser": "^1.4.5", 14 | "crypto-js": "^4.1.1", 15 | "dotenv": "^10.0.0", 16 | "express": "^4.17.1", 17 | "express-session": "^1.17.2", 18 | "mysql2": "^2.3.0", 19 | "reflect-metadata": "^0.1.13", 20 | "typeorm": "^0.2.38" 21 | }, 22 | "devDependencies": { 23 | "@types/axios": "^0.14.0", 24 | "@types/cookie-parser": "^1.4.2", 25 | "@types/crypto-js": "^4.0.2", 26 | "@types/express": "^4.17.13", 27 | "@types/express-session": "^1.17.4", 28 | "nodemon": "^2.0.13", 29 | "ts-node": "^10.2.1", 30 | "typescript": "^4.4.3" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/@types/express-session/index.d.ts: -------------------------------------------------------------------------------- 1 | import 'express-session'; 2 | import { User } from '../../typeorm/entities/User'; 3 | 4 | declare module 'express-session' { 5 | interface SessionData { 6 | user?: User; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/@types/express/index.d.ts: -------------------------------------------------------------------------------- 1 | import 'express'; 2 | import { User } from '../../typeorm/entities/User'; 3 | 4 | declare module 'express' { 5 | interface Request { 6 | user?: User; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/controllers/auth/index.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response } from 'express'; 2 | import { 3 | createUser, 4 | encryptTokens, 5 | exchangeAccessCodeForCredentials, 6 | getDiscordUserDetails, 7 | revokeToken, 8 | } from '../../services/auth'; 9 | import { 10 | buildOAuth2CredentialsRequest, 11 | buildUser, 12 | decryptToken, 13 | encryptToken, 14 | } from '../../utils/helpers'; 15 | import { serializeSession } from '../../utils/session'; 16 | import CryptoJS from 'crypto-js'; 17 | 18 | export async function authDiscordRedirectController( 19 | req: Request, 20 | res: Response 21 | ) { 22 | const { code } = req.query; 23 | if (code) { 24 | try { 25 | const payload = buildOAuth2CredentialsRequest(code.toString()); 26 | const { data: credentials } = await exchangeAccessCodeForCredentials( 27 | payload 28 | ); 29 | const { access_token, refresh_token } = credentials; 30 | const { data: user } = await getDiscordUserDetails(access_token); 31 | const tokens = encryptTokens(access_token, refresh_token); 32 | const newUser = await createUser(buildUser(user, tokens)); 33 | await serializeSession(req, newUser); 34 | res.send(newUser); 35 | } catch (err) { 36 | console.log(err); 37 | res.sendStatus(400); 38 | } 39 | } 40 | } 41 | 42 | export async function getAuthenticatedUserController( 43 | req: Request, 44 | res: Response 45 | ) { 46 | return req.user ? res.send(req.user) : res.send(401); 47 | } 48 | 49 | export async function revokeAccessTokenController(req: Request, res: Response) { 50 | if (!req.user) return res.sendStatus(401); 51 | try { 52 | await revokeToken(req.user.accessToken); 53 | res.sendStatus(200); 54 | } catch (err) { 55 | console.log(err); 56 | res.sendStatus(400); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/controllers/user/index.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response } from 'express'; 2 | import { fetchDiscordUser } from '../../services/user'; 3 | 4 | export async function getDiscordUser(req: Request, res: Response) { 5 | if (!req.user) return res.send(401); 6 | try { 7 | const { accessToken } = req.user; 8 | const { data: user } = await fetchDiscordUser(accessToken); 9 | res.send(user); 10 | } catch (err) { 11 | console.log(err); 12 | res.sendStatus(400); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | require('dotenv').config(); 2 | import 'reflect-metadata'; 3 | import express from 'express'; 4 | import session from 'express-session'; 5 | import cookieParser from 'cookie-parser'; 6 | import { createConnection } from 'typeorm'; 7 | import { User } from './typeorm/entities/User'; 8 | import { Session } from './typeorm/entities/Session'; 9 | 10 | const PORT = process.env.PORT || 3001; 11 | 12 | async function main() { 13 | const app = express(); 14 | try { 15 | await createConnection({ 16 | type: 'mysql', 17 | username: process.env.MYSQL_DB_USERNAME, 18 | password: process.env.MYSQL_DB_PASSWORD, 19 | database: process.env.MYSQL_DB_DATABASE, 20 | host: process.env.MYSQL_DB_HOSTNAME, 21 | port: parseInt(process.env.MYSQL_DB_PORT || '3306'), 22 | entities: [User, Session], 23 | synchronize: true, 24 | }); 25 | console.log('Connected to the Database'); 26 | const { default: routes } = await import('./routes'); 27 | const { deserializeSession } = await import('./utils/session'); 28 | app.use(cookieParser()); 29 | app.use( 30 | session({ 31 | secret: 'ASDSAJHDGASJDHASDABSDHJASGDAJHD', 32 | name: 'DISCORD_OAUTH2_SESSION_ID', 33 | resave: false, 34 | saveUninitialized: false, 35 | cookie: { 36 | maxAge: 3600000 * 24, 37 | }, 38 | }) 39 | ); 40 | app.use(deserializeSession); 41 | app.use('/api', routes); 42 | app.listen(PORT, () => console.log('Listening on Port:', PORT)); 43 | } catch (err) { 44 | console.log(err); 45 | } 46 | } 47 | 48 | main(); 49 | 50 | // app.get('/api/auth/revoke', async (req: Request, res: Response) => { 51 | // const formData = new url.URLSearchParams({ 52 | // client_id: DISCORD_OAUTH_CLIENT_ID!, 53 | // client_secret: DISCORD_OAUTH_SECRET!, 54 | // token: accessToken, 55 | // }); 56 | // try { 57 | // const response = await axios.post( 58 | // 'https://discord.com/api/v8/oauth2/token/revoke', 59 | // formData.toString(), 60 | // { 61 | // headers: { 62 | // 'Content-Type': 'application/x-www-form-urlencoded', 63 | // }, 64 | // } 65 | // ); 66 | // res.send(response.data); 67 | // } catch (err) { 68 | // console.log(err); 69 | // res.sendStatus(400); 70 | // } 71 | // }); 72 | -------------------------------------------------------------------------------- /src/routes/auth/index.ts: -------------------------------------------------------------------------------- 1 | import { Router } from 'express'; 2 | import { 3 | authDiscordRedirectController, 4 | getAuthenticatedUserController, 5 | revokeAccessTokenController, 6 | } from '../../controllers/auth'; 7 | 8 | const router = Router(); 9 | 10 | router.get('/discord/redirect', authDiscordRedirectController); 11 | router.get('/user', getAuthenticatedUserController); 12 | router.get('/revoke', revokeAccessTokenController); 13 | 14 | export default router; 15 | -------------------------------------------------------------------------------- /src/routes/index.ts: -------------------------------------------------------------------------------- 1 | import { Router } from 'express'; 2 | import authRoutes from './auth'; 3 | import userRoutes from './user'; 4 | 5 | const router = Router(); 6 | 7 | router.use('/auth', authRoutes); 8 | router.use('/user', userRoutes); 9 | 10 | export default router; 11 | -------------------------------------------------------------------------------- /src/routes/user/index.ts: -------------------------------------------------------------------------------- 1 | import { Router } from 'express'; 2 | import { getDiscordUser } from '../../controllers/user'; 3 | 4 | const router = Router(); 5 | 6 | router.get('/profile', getDiscordUser); 7 | 8 | export default router; 9 | -------------------------------------------------------------------------------- /src/services/auth/index.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import CryptoJS from 'crypto-js'; 3 | import url from 'url'; 4 | import { getRepository } from 'typeorm'; 5 | import { User } from '../../typeorm/entities/User'; 6 | import { axiosConfig } from '../../utils/constants'; 7 | import { 8 | authHeaders, 9 | buildOAuth2RequestPayload, 10 | decryptToken, 11 | encryptToken, 12 | } from '../../utils/helpers'; 13 | import { 14 | CreateUserParams, 15 | DiscordOAuth2CredentialsResponse, 16 | DiscordOAuth2UserResponse, 17 | DISCORD_API_ROUTES, 18 | EncryptedTokens, 19 | OAuth2ExchangeRequestParams, 20 | } from '../../utils/types'; 21 | 22 | const userRepository = getRepository(User); 23 | 24 | export async function exchangeAccessCodeForCredentials( 25 | data: OAuth2ExchangeRequestParams 26 | ) { 27 | const payload = buildOAuth2RequestPayload(data); 28 | return axios.post( 29 | DISCORD_API_ROUTES.OAUTH2_TOKEN, 30 | payload, 31 | axiosConfig 32 | ); 33 | } 34 | 35 | export async function getDiscordUserDetails(accessToken: string) { 36 | return axios.get( 37 | DISCORD_API_ROUTES.OAUTH2_USER, 38 | authHeaders(accessToken) 39 | ); 40 | } 41 | 42 | export async function createUser(params: CreateUserParams) { 43 | const userDB = await userRepository.findOne({ discordId: params.discordId }); 44 | 45 | if (userDB) { 46 | const updatedUser = await updateUser(userDB, params); 47 | return updatedUser; 48 | } 49 | const newUser = userRepository.create(params); 50 | return userRepository.save(newUser); 51 | } 52 | 53 | export async function updateUser(user: User, params: CreateUserParams) { 54 | user.discriminator = params.discriminator; 55 | user.tag = params.tag; 56 | user.username = params.username; 57 | user.avatar = params.avatar; 58 | user.accessToken = params.accessToken; 59 | user.refreshToken = params.refreshToken; 60 | return userRepository.save(user); 61 | } 62 | 63 | export function encryptTokens( 64 | accessToken: string, 65 | refreshToken: string 66 | ): EncryptedTokens { 67 | return { 68 | accessToken: encryptToken(accessToken).toString(), 69 | refreshToken: encryptToken(refreshToken).toString(), 70 | }; 71 | } 72 | 73 | export async function revokeToken(accessToken: string) { 74 | const decryptedToken = decryptToken(accessToken).toString(CryptoJS.enc.Utf8); 75 | console.log(decryptedToken); 76 | const formData = new url.URLSearchParams({ 77 | client_id: process.env.DISCORD_OAUTH_CLIENT_ID!, 78 | client_secret: process.env.DISCORD_OAUTH_SECRET!, 79 | token: decryptedToken, 80 | }); 81 | return axios.post( 82 | DISCORD_API_ROUTES.OAUTH2_TOKEN_REVOKE, 83 | formData.toString(), 84 | axiosConfig 85 | ); 86 | } 87 | -------------------------------------------------------------------------------- /src/services/user/index.ts: -------------------------------------------------------------------------------- 1 | import { authHeaders, decryptToken } from '../../utils/helpers'; 2 | import CryptoJS from 'crypto-js'; 3 | import axios from 'axios'; 4 | import { 5 | DiscordOAuth2UserResponse, 6 | DISCORD_API_ROUTES, 7 | } from '../../utils/types'; 8 | 9 | export async function fetchDiscordUser(accessToken: string) { 10 | const decryptedToken = decryptToken(accessToken).toString(CryptoJS.enc.Utf8); 11 | return axios.get( 12 | DISCORD_API_ROUTES.OAUTH2_USER, 13 | authHeaders(decryptedToken) 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src/typeorm/entities/Session.ts: -------------------------------------------------------------------------------- 1 | import { Column, Entity, PrimaryColumn } from 'typeorm'; 2 | 3 | @Entity({ name: 'sessions' }) 4 | export class Session { 5 | @PrimaryColumn() 6 | sessionId: string; 7 | 8 | @Column() 9 | expiresAt: Date; 10 | 11 | @Column('text') 12 | data: string; 13 | } 14 | -------------------------------------------------------------------------------- /src/typeorm/entities/User.ts: -------------------------------------------------------------------------------- 1 | import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; 2 | 3 | @Entity({ name: 'users' }) 4 | export class User { 5 | @PrimaryGeneratedColumn() 6 | id: number; 7 | 8 | @Column({ name: 'discord_id', unique: true }) 9 | discordId: string; 10 | 11 | @Column() 12 | tag: string; 13 | 14 | @Column({ nullable: true }) 15 | avatar: string; 16 | 17 | @Column() 18 | username: string; 19 | 20 | @Column() 21 | discriminator: string; 22 | 23 | @Column({ name: 'access_token' }) 24 | accessToken: string; 25 | 26 | @Column({ name: 'refresh_token' }) 27 | refreshToken: string; 28 | } 29 | -------------------------------------------------------------------------------- /src/utils/constants.ts: -------------------------------------------------------------------------------- 1 | import { AxiosRequestConfig } from 'axios'; 2 | 3 | export const axiosConfig: AxiosRequestConfig = { 4 | headers: { 5 | 'Content-Type': 'application/x-www-form-urlencoded', 6 | }, 7 | }; 8 | -------------------------------------------------------------------------------- /src/utils/helpers.ts: -------------------------------------------------------------------------------- 1 | import { AxiosRequestConfig } from 'axios'; 2 | import url from 'url'; 3 | import { 4 | CreateUserParams, 5 | DiscordOAuth2CredentialsResponse, 6 | DiscordOAuth2UserResponse, 7 | EncryptedTokens, 8 | OAuth2ExchangeRequestParams, 9 | } from './types'; 10 | import CryptoJS from 'crypto-js'; 11 | 12 | const { 13 | DISCORD_OAUTH_CLIENT_ID, 14 | DISCORD_OAUTH_SECRET, 15 | DISCORD_REDIRECT_URL, 16 | ENCRYPT_SECRET, 17 | } = process.env; 18 | 19 | export const encryptToken = (token: string) => 20 | CryptoJS.AES.encrypt(token, ENCRYPT_SECRET!); 21 | 22 | export const decryptToken = (encrypted: string) => 23 | CryptoJS.AES.decrypt(encrypted, ENCRYPT_SECRET!); 24 | 25 | export const buildOAuth2RequestPayload = (data: OAuth2ExchangeRequestParams) => 26 | new url.URLSearchParams(data).toString(); 27 | 28 | export const authHeaders = (accessToken: string): AxiosRequestConfig => ({ 29 | headers: { 30 | Authorization: `Bearer ${accessToken}`, 31 | }, 32 | }); 33 | 34 | export const buildUser = ( 35 | user: DiscordOAuth2UserResponse, 36 | credentials: EncryptedTokens 37 | ): CreateUserParams => ({ 38 | discordId: user.id, 39 | username: user.username, 40 | discriminator: user.discriminator, 41 | avatar: user.avatar, 42 | tag: `${user.username}#${user.discriminator}`, 43 | accessToken: credentials.accessToken, 44 | refreshToken: credentials.refreshToken, 45 | }); 46 | 47 | export const buildOAuth2CredentialsRequest = (code: string) => ({ 48 | client_id: DISCORD_OAUTH_CLIENT_ID || '', 49 | client_secret: DISCORD_OAUTH_SECRET || '', 50 | grant_type: 'authorization_code', 51 | redirect_uri: DISCORD_REDIRECT_URL || '', 52 | code, 53 | }); 54 | -------------------------------------------------------------------------------- /src/utils/session.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response } from 'express'; 2 | import { getRepository } from 'typeorm'; 3 | import { Session } from '../typeorm/entities/Session'; 4 | import { User } from '../typeorm/entities/User'; 5 | import cookieParser from 'cookie-parser'; 6 | const sessionRepository = getRepository(Session); 7 | 8 | export async function serializeSession(req: Request, user: User) { 9 | req.session.user = user; 10 | req.user = user; 11 | const session = sessionRepository.create({ 12 | sessionId: req.sessionID, 13 | expiresAt: req.session.cookie.expires, 14 | data: JSON.stringify(user), 15 | }); 16 | return sessionRepository.save(session); 17 | } 18 | 19 | export async function deserializeSession( 20 | req: Request, 21 | res: Response, 22 | next: Function 23 | ) { 24 | const { DISCORD_OAUTH2_SESSION_ID } = req.cookies; 25 | if (!DISCORD_OAUTH2_SESSION_ID) return next(); 26 | 27 | const sessionId = cookieParser 28 | .signedCookie(DISCORD_OAUTH2_SESSION_ID, 'ASDSAJHDGASJDHASDABSDHJASGDAJHD') 29 | .toString(); 30 | const sessionDB = await sessionRepository.findOne({ 31 | sessionId: sessionId, 32 | }); 33 | if (!sessionDB) { 34 | console.log('No Session'); 35 | return next(); 36 | } 37 | const currentTime = new Date(); 38 | if (sessionDB.expiresAt < currentTime) { 39 | console.log('Session Expired'); 40 | await sessionRepository.delete(sessionDB); 41 | console.log('Session Deleted'); 42 | } else { 43 | console.log('Session Not Expired'); 44 | const data = JSON.parse(sessionDB.data); 45 | req.user = data; 46 | } 47 | next(); 48 | } 49 | -------------------------------------------------------------------------------- /src/utils/types.ts: -------------------------------------------------------------------------------- 1 | import { Session } from 'express-session'; 2 | import { User } from '../typeorm/entities/User'; 3 | 4 | export enum DISCORD_API_ROUTES { 5 | OAUTH2_TOKEN = 'https://discord.com/api/v8/oauth2/token', 6 | OAUTH2_USER = 'https://discord.com/api/v8/users/@me', 7 | OAUTH2_TOKEN_REVOKE = 'https://discord.com/api/v8/oauth2/token/revoke', 8 | } 9 | 10 | export type OAuth2ExchangeRequestParams = { 11 | client_id: string; 12 | client_secret: string; 13 | grant_type: string; 14 | code: string; 15 | redirect_uri: string; 16 | }; 17 | 18 | export type DiscordOAuth2CredentialsResponse = { 19 | access_token: string; 20 | expires_in: number; 21 | refresh_token: string; 22 | scope: string; 23 | token_type: string; 24 | }; 25 | 26 | export type DiscordOAuth2UserResponse = { 27 | id: string; 28 | username: string; 29 | avatar: string; 30 | discriminator: string; 31 | email?: string; 32 | verified?: boolean; 33 | public_flags: number; 34 | flags: number; 35 | banner: string | null; 36 | banner_color: string | null; 37 | accent_color: string | null; 38 | locale: string; 39 | mfa_enabled: boolean; 40 | }; 41 | 42 | export type CreateUserParams = { 43 | discordId: string; 44 | accessToken: string; 45 | refreshToken: string; 46 | username: string; 47 | discriminator: string; 48 | tag: string; 49 | avatar: string; 50 | }; 51 | 52 | export type EncryptedTokens = { 53 | accessToken: string; 54 | refreshToken: string; 55 | }; 56 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es5" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 | "experimentalDecorators": true /* Enable experimental support for TC39 stage 2 draft decorators. */, 18 | "emitDecoratorMetadata": true /* Emit design-type metadata for decorated declarations in source files. */, 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ 22 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | 26 | /* Modules */ 27 | "module": "commonjs" /* Specify what module code is generated. */, 28 | // "rootDir": "./", /* Specify the root folder within your source files. */ 29 | // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ 30 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 31 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 32 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 33 | "typeRoots": [ 34 | "./src/@types", 35 | "./node_modules/@types" 36 | ] /* Specify multiple folders that act like `./node_modules/@types`. */, 37 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 38 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 39 | // "resolveJsonModule": true, /* Enable importing .json files */ 40 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ 41 | 42 | /* JavaScript Support */ 43 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ 44 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 45 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ 46 | 47 | /* Emit */ 48 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 49 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 50 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 51 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 52 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ 53 | "outDir": "./dist" /* Specify an output folder for all emitted files. */, 54 | // "removeComments": true, /* Disable emitting comments. */ 55 | // "noEmit": true, /* Disable emitting files from a compilation. */ 56 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 57 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ 58 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 59 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 60 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 61 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 62 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 63 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 64 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 65 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ 66 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ 67 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 68 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ 69 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 70 | 71 | /* Interop Constraints */ 72 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 73 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 74 | "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, 75 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 76 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 77 | 78 | /* Type Checking */ 79 | "strict": true /* Enable all strict type-checking options. */, 80 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ 81 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ 82 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 83 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ 84 | "strictPropertyInitialization": false /* Check for class properties that are declared but not set in the constructor. */, 85 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ 86 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ 87 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 88 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ 89 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ 90 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 91 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 92 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 93 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 94 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 95 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ 96 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 97 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 98 | 99 | /* Completeness */ 100 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 101 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@cspotcode/source-map-consumer@0.8.0": 6 | version "0.8.0" 7 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" 8 | integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== 9 | 10 | "@cspotcode/source-map-support@0.6.1": 11 | version "0.6.1" 12 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz#118511f316e2e87ee4294761868e254d3da47960" 13 | integrity sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg== 14 | dependencies: 15 | "@cspotcode/source-map-consumer" "0.8.0" 16 | 17 | "@sindresorhus/is@^0.14.0": 18 | version "0.14.0" 19 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 20 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== 21 | 22 | "@sqltools/formatter@^1.2.2": 23 | version "1.2.3" 24 | resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.3.tgz#1185726610acc37317ddab11c3c7f9066966bd20" 25 | integrity sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg== 26 | 27 | "@szmarczak/http-timer@^1.1.2": 28 | version "1.1.2" 29 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 30 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== 31 | dependencies: 32 | defer-to-connect "^1.0.1" 33 | 34 | "@tsconfig/node10@^1.0.7": 35 | version "1.0.8" 36 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" 37 | integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== 38 | 39 | "@tsconfig/node12@^1.0.7": 40 | version "1.0.9" 41 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" 42 | integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== 43 | 44 | "@tsconfig/node14@^1.0.0": 45 | version "1.0.1" 46 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" 47 | integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== 48 | 49 | "@tsconfig/node16@^1.0.2": 50 | version "1.0.2" 51 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" 52 | integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== 53 | 54 | "@types/axios@^0.14.0": 55 | version "0.14.0" 56 | resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" 57 | integrity sha1-7CMA++fX3d1+udOr+HmZlkyvzkY= 58 | dependencies: 59 | axios "*" 60 | 61 | "@types/body-parser@*": 62 | version "1.19.1" 63 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.1.tgz#0c0174c42a7d017b818303d4b5d969cb0b75929c" 64 | integrity sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg== 65 | dependencies: 66 | "@types/connect" "*" 67 | "@types/node" "*" 68 | 69 | "@types/connect@*": 70 | version "3.4.35" 71 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" 72 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== 73 | dependencies: 74 | "@types/node" "*" 75 | 76 | "@types/cookie-parser@^1.4.2": 77 | version "1.4.2" 78 | resolved "https://registry.yarnpkg.com/@types/cookie-parser/-/cookie-parser-1.4.2.tgz#e4d5c5ffda82b80672a88a4281aaceefb1bd9df5" 79 | integrity sha512-uwcY8m6SDQqciHsqcKDGbo10GdasYsPCYkH3hVegj9qAah6pX5HivOnOuI3WYmyQMnOATV39zv/Ybs0bC/6iVg== 80 | dependencies: 81 | "@types/express" "*" 82 | 83 | "@types/crypto-js@^4.0.2": 84 | version "4.0.2" 85 | resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.0.2.tgz#4524325a175bf819fec6e42560c389ce1fb92c97" 86 | integrity sha512-sCVniU+h3GcGqxOmng11BRvf9TfN9yIs8KKjB8C8d75W69cpTfZG80gau9yTx5SxF3gvHGbJhdESzzvnjtf3Og== 87 | 88 | "@types/express-serve-static-core@^4.17.18": 89 | version "4.17.24" 90 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz#ea41f93bf7e0d59cd5a76665068ed6aab6815c07" 91 | integrity sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA== 92 | dependencies: 93 | "@types/node" "*" 94 | "@types/qs" "*" 95 | "@types/range-parser" "*" 96 | 97 | "@types/express-session@^1.17.4": 98 | version "1.17.4" 99 | resolved "https://registry.yarnpkg.com/@types/express-session/-/express-session-1.17.4.tgz#97a30a35e853a61bdd26e727453b8ed314d6166b" 100 | integrity sha512-7cNlSI8+oOBUHTfPXMwDxF/Lchx5aJ3ho7+p9jJZYVg9dVDJFh3qdMXmJtRsysnvS+C6x46k9DRYmrmCkE+MVg== 101 | dependencies: 102 | "@types/express" "*" 103 | 104 | "@types/express@*", "@types/express@^4.17.13": 105 | version "4.17.13" 106 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" 107 | integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== 108 | dependencies: 109 | "@types/body-parser" "*" 110 | "@types/express-serve-static-core" "^4.17.18" 111 | "@types/qs" "*" 112 | "@types/serve-static" "*" 113 | 114 | "@types/mime@^1": 115 | version "1.3.2" 116 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" 117 | integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== 118 | 119 | "@types/node@*": 120 | version "16.10.1" 121 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.1.tgz#f3647623199ca920960006b3dccf633ea905f243" 122 | integrity sha512-4/Z9DMPKFexZj/Gn3LylFgamNKHm4K3QDi0gz9B26Uk0c8izYf97B5fxfpspMNkWlFupblKM/nV8+NA9Ffvr+w== 123 | 124 | "@types/qs@*": 125 | version "6.9.7" 126 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" 127 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== 128 | 129 | "@types/range-parser@*": 130 | version "1.2.4" 131 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" 132 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 133 | 134 | "@types/serve-static@*": 135 | version "1.13.10" 136 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" 137 | integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== 138 | dependencies: 139 | "@types/mime" "^1" 140 | "@types/node" "*" 141 | 142 | "@types/zen-observable@0.8.3": 143 | version "0.8.3" 144 | resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.3.tgz#781d360c282436494b32fe7d9f7f8e64b3118aa3" 145 | integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== 146 | 147 | abbrev@1: 148 | version "1.1.1" 149 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 150 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 151 | 152 | accepts@~1.3.7: 153 | version "1.3.7" 154 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 155 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 156 | dependencies: 157 | mime-types "~2.1.24" 158 | negotiator "0.6.2" 159 | 160 | acorn-walk@^8.1.1: 161 | version "8.2.0" 162 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 163 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 164 | 165 | acorn@^8.4.1: 166 | version "8.5.0" 167 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" 168 | integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== 169 | 170 | ansi-align@^3.0.0: 171 | version "3.0.1" 172 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" 173 | integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== 174 | dependencies: 175 | string-width "^4.1.0" 176 | 177 | ansi-regex@^2.0.0: 178 | version "2.1.1" 179 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 180 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 181 | 182 | ansi-regex@^5.0.1: 183 | version "5.0.1" 184 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 185 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 186 | 187 | ansi-styles@^2.2.1: 188 | version "2.2.1" 189 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 190 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 191 | 192 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 193 | version "4.3.0" 194 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 195 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 196 | dependencies: 197 | color-convert "^2.0.1" 198 | 199 | any-promise@^1.0.0: 200 | version "1.3.0" 201 | resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" 202 | integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= 203 | 204 | anymatch@~3.1.2: 205 | version "3.1.2" 206 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 207 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 208 | dependencies: 209 | normalize-path "^3.0.0" 210 | picomatch "^2.0.4" 211 | 212 | app-root-path@^3.0.0: 213 | version "3.0.0" 214 | resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.0.0.tgz#210b6f43873227e18a4b810a032283311555d5ad" 215 | integrity sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw== 216 | 217 | arg@^4.1.0: 218 | version "4.1.3" 219 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 220 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 221 | 222 | argparse@^2.0.1: 223 | version "2.0.1" 224 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 225 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 226 | 227 | array-flatten@1.1.1: 228 | version "1.1.1" 229 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 230 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 231 | 232 | axios@*, axios@^0.21.4: 233 | version "0.21.4" 234 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" 235 | integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== 236 | dependencies: 237 | follow-redirects "^1.14.0" 238 | 239 | balanced-match@^1.0.0: 240 | version "1.0.2" 241 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 242 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 243 | 244 | base64-js@^1.3.1: 245 | version "1.5.1" 246 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 247 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 248 | 249 | binary-extensions@^2.0.0: 250 | version "2.2.0" 251 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 252 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 253 | 254 | body-parser@1.19.0: 255 | version "1.19.0" 256 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 257 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 258 | dependencies: 259 | bytes "3.1.0" 260 | content-type "~1.0.4" 261 | debug "2.6.9" 262 | depd "~1.1.2" 263 | http-errors "1.7.2" 264 | iconv-lite "0.4.24" 265 | on-finished "~2.3.0" 266 | qs "6.7.0" 267 | raw-body "2.4.0" 268 | type-is "~1.6.17" 269 | 270 | boxen@^5.0.0: 271 | version "5.1.2" 272 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" 273 | integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== 274 | dependencies: 275 | ansi-align "^3.0.0" 276 | camelcase "^6.2.0" 277 | chalk "^4.1.0" 278 | cli-boxes "^2.2.1" 279 | string-width "^4.2.2" 280 | type-fest "^0.20.2" 281 | widest-line "^3.1.0" 282 | wrap-ansi "^7.0.0" 283 | 284 | brace-expansion@^1.1.7: 285 | version "1.1.11" 286 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 287 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 288 | dependencies: 289 | balanced-match "^1.0.0" 290 | concat-map "0.0.1" 291 | 292 | braces@~3.0.2: 293 | version "3.0.2" 294 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 295 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 296 | dependencies: 297 | fill-range "^7.0.1" 298 | 299 | buffer@^6.0.3: 300 | version "6.0.3" 301 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" 302 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== 303 | dependencies: 304 | base64-js "^1.3.1" 305 | ieee754 "^1.2.1" 306 | 307 | bytes@3.1.0: 308 | version "3.1.0" 309 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 310 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 311 | 312 | cacheable-request@^6.0.0: 313 | version "6.1.0" 314 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 315 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== 316 | dependencies: 317 | clone-response "^1.0.2" 318 | get-stream "^5.1.0" 319 | http-cache-semantics "^4.0.0" 320 | keyv "^3.0.0" 321 | lowercase-keys "^2.0.0" 322 | normalize-url "^4.1.0" 323 | responselike "^1.0.2" 324 | 325 | camelcase@^6.2.0: 326 | version "6.2.0" 327 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" 328 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== 329 | 330 | chalk@^1.1.1: 331 | version "1.1.3" 332 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 333 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 334 | dependencies: 335 | ansi-styles "^2.2.1" 336 | escape-string-regexp "^1.0.2" 337 | has-ansi "^2.0.0" 338 | strip-ansi "^3.0.0" 339 | supports-color "^2.0.0" 340 | 341 | chalk@^4.0.0, chalk@^4.1.0: 342 | version "4.1.2" 343 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 344 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 345 | dependencies: 346 | ansi-styles "^4.1.0" 347 | supports-color "^7.1.0" 348 | 349 | chokidar@^3.2.2: 350 | version "3.5.2" 351 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" 352 | integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== 353 | dependencies: 354 | anymatch "~3.1.2" 355 | braces "~3.0.2" 356 | glob-parent "~5.1.2" 357 | is-binary-path "~2.1.0" 358 | is-glob "~4.0.1" 359 | normalize-path "~3.0.0" 360 | readdirp "~3.6.0" 361 | optionalDependencies: 362 | fsevents "~2.3.2" 363 | 364 | ci-info@^2.0.0: 365 | version "2.0.0" 366 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 367 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 368 | 369 | cli-boxes@^2.2.1: 370 | version "2.2.1" 371 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" 372 | integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== 373 | 374 | cli-highlight@^2.1.11: 375 | version "2.1.11" 376 | resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" 377 | integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== 378 | dependencies: 379 | chalk "^4.0.0" 380 | highlight.js "^10.7.1" 381 | mz "^2.4.0" 382 | parse5 "^5.1.1" 383 | parse5-htmlparser2-tree-adapter "^6.0.0" 384 | yargs "^16.0.0" 385 | 386 | cliui@^7.0.2: 387 | version "7.0.4" 388 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 389 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 390 | dependencies: 391 | string-width "^4.2.0" 392 | strip-ansi "^6.0.0" 393 | wrap-ansi "^7.0.0" 394 | 395 | clone-response@^1.0.2: 396 | version "1.0.2" 397 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 398 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 399 | dependencies: 400 | mimic-response "^1.0.0" 401 | 402 | color-convert@^2.0.1: 403 | version "2.0.1" 404 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 405 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 406 | dependencies: 407 | color-name "~1.1.4" 408 | 409 | color-name@~1.1.4: 410 | version "1.1.4" 411 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 412 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 413 | 414 | concat-map@0.0.1: 415 | version "0.0.1" 416 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 417 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 418 | 419 | configstore@^5.0.1: 420 | version "5.0.1" 421 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" 422 | integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== 423 | dependencies: 424 | dot-prop "^5.2.0" 425 | graceful-fs "^4.1.2" 426 | make-dir "^3.0.0" 427 | unique-string "^2.0.0" 428 | write-file-atomic "^3.0.0" 429 | xdg-basedir "^4.0.0" 430 | 431 | content-disposition@0.5.3: 432 | version "0.5.3" 433 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 434 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 435 | dependencies: 436 | safe-buffer "5.1.2" 437 | 438 | content-type@~1.0.4: 439 | version "1.0.4" 440 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 441 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 442 | 443 | cookie-parser@^1.4.5: 444 | version "1.4.5" 445 | resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" 446 | integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== 447 | dependencies: 448 | cookie "0.4.0" 449 | cookie-signature "1.0.6" 450 | 451 | cookie-signature@1.0.6: 452 | version "1.0.6" 453 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 454 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 455 | 456 | cookie@0.4.0: 457 | version "0.4.0" 458 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 459 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 460 | 461 | cookie@0.4.1: 462 | version "0.4.1" 463 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" 464 | integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== 465 | 466 | create-require@^1.1.0: 467 | version "1.1.1" 468 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 469 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 470 | 471 | crypto-js@^4.1.1: 472 | version "4.1.1" 473 | resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" 474 | integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== 475 | 476 | crypto-random-string@^2.0.0: 477 | version "2.0.0" 478 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" 479 | integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== 480 | 481 | debug@2.6.9, debug@^2.2.0: 482 | version "2.6.9" 483 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 484 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 485 | dependencies: 486 | ms "2.0.0" 487 | 488 | debug@^3.2.6: 489 | version "3.2.7" 490 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 491 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 492 | dependencies: 493 | ms "^2.1.1" 494 | 495 | debug@^4.3.1: 496 | version "4.3.2" 497 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 498 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 499 | dependencies: 500 | ms "2.1.2" 501 | 502 | decompress-response@^3.3.0: 503 | version "3.3.0" 504 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 505 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 506 | dependencies: 507 | mimic-response "^1.0.0" 508 | 509 | deep-extend@^0.6.0: 510 | version "0.6.0" 511 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 512 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 513 | 514 | defer-to-connect@^1.0.1: 515 | version "1.1.3" 516 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" 517 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== 518 | 519 | denque@^1.4.1: 520 | version "1.5.1" 521 | resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" 522 | integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== 523 | 524 | depd@~1.1.2: 525 | version "1.1.2" 526 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 527 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 528 | 529 | depd@~2.0.0: 530 | version "2.0.0" 531 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 532 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 533 | 534 | destroy@~1.0.4: 535 | version "1.0.4" 536 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 537 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 538 | 539 | diff@^4.0.1: 540 | version "4.0.2" 541 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 542 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 543 | 544 | dot-prop@^5.2.0: 545 | version "5.3.0" 546 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" 547 | integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== 548 | dependencies: 549 | is-obj "^2.0.0" 550 | 551 | dotenv@^10.0.0: 552 | version "10.0.0" 553 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" 554 | integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== 555 | 556 | dotenv@^8.2.0: 557 | version "8.6.0" 558 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" 559 | integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== 560 | 561 | duplexer3@^0.1.4: 562 | version "0.1.4" 563 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 564 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 565 | 566 | ee-first@1.1.1: 567 | version "1.1.1" 568 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 569 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 570 | 571 | emoji-regex@^8.0.0: 572 | version "8.0.0" 573 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 574 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 575 | 576 | encodeurl@~1.0.2: 577 | version "1.0.2" 578 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 579 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 580 | 581 | end-of-stream@^1.1.0: 582 | version "1.4.4" 583 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 584 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 585 | dependencies: 586 | once "^1.4.0" 587 | 588 | escalade@^3.1.1: 589 | version "3.1.1" 590 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 591 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 592 | 593 | escape-goat@^2.0.0: 594 | version "2.1.1" 595 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" 596 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== 597 | 598 | escape-html@~1.0.3: 599 | version "1.0.3" 600 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 601 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 602 | 603 | escape-string-regexp@^1.0.2: 604 | version "1.0.5" 605 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 606 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 607 | 608 | etag@~1.8.1: 609 | version "1.8.1" 610 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 611 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 612 | 613 | express-session@^1.17.2: 614 | version "1.17.2" 615 | resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.17.2.tgz#397020374f9bf7997f891b85ea338767b30d0efd" 616 | integrity sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ== 617 | dependencies: 618 | cookie "0.4.1" 619 | cookie-signature "1.0.6" 620 | debug "2.6.9" 621 | depd "~2.0.0" 622 | on-headers "~1.0.2" 623 | parseurl "~1.3.3" 624 | safe-buffer "5.2.1" 625 | uid-safe "~2.1.5" 626 | 627 | express@^4.17.1: 628 | version "4.17.1" 629 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 630 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 631 | dependencies: 632 | accepts "~1.3.7" 633 | array-flatten "1.1.1" 634 | body-parser "1.19.0" 635 | content-disposition "0.5.3" 636 | content-type "~1.0.4" 637 | cookie "0.4.0" 638 | cookie-signature "1.0.6" 639 | debug "2.6.9" 640 | depd "~1.1.2" 641 | encodeurl "~1.0.2" 642 | escape-html "~1.0.3" 643 | etag "~1.8.1" 644 | finalhandler "~1.1.2" 645 | fresh "0.5.2" 646 | merge-descriptors "1.0.1" 647 | methods "~1.1.2" 648 | on-finished "~2.3.0" 649 | parseurl "~1.3.3" 650 | path-to-regexp "0.1.7" 651 | proxy-addr "~2.0.5" 652 | qs "6.7.0" 653 | range-parser "~1.2.1" 654 | safe-buffer "5.1.2" 655 | send "0.17.1" 656 | serve-static "1.14.1" 657 | setprototypeof "1.1.1" 658 | statuses "~1.5.0" 659 | type-is "~1.6.18" 660 | utils-merge "1.0.1" 661 | vary "~1.1.2" 662 | 663 | figlet@^1.1.1: 664 | version "1.5.2" 665 | resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.5.2.tgz#dda34ff233c9a48e36fcff6741aeb5bafe49b634" 666 | integrity sha512-WOn21V8AhyE1QqVfPIVxe3tupJacq1xGkPTB4iagT6o+P2cAgEOOwIxMftr4+ZCTI6d551ij9j61DFr0nsP2uQ== 667 | 668 | fill-range@^7.0.1: 669 | version "7.0.1" 670 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 671 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 672 | dependencies: 673 | to-regex-range "^5.0.1" 674 | 675 | finalhandler@~1.1.2: 676 | version "1.1.2" 677 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 678 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 679 | dependencies: 680 | debug "2.6.9" 681 | encodeurl "~1.0.2" 682 | escape-html "~1.0.3" 683 | on-finished "~2.3.0" 684 | parseurl "~1.3.3" 685 | statuses "~1.5.0" 686 | unpipe "~1.0.0" 687 | 688 | follow-redirects@^1.14.0: 689 | version "1.14.4" 690 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" 691 | integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== 692 | 693 | forwarded@0.2.0: 694 | version "0.2.0" 695 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 696 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 697 | 698 | fresh@0.5.2: 699 | version "0.5.2" 700 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 701 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 702 | 703 | fs.realpath@^1.0.0: 704 | version "1.0.0" 705 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 706 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 707 | 708 | fsevents@~2.3.2: 709 | version "2.3.2" 710 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 711 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 712 | 713 | generate-function@^2.3.1: 714 | version "2.3.1" 715 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" 716 | integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== 717 | dependencies: 718 | is-property "^1.0.2" 719 | 720 | get-caller-file@^2.0.5: 721 | version "2.0.5" 722 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 723 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 724 | 725 | get-stream@^4.1.0: 726 | version "4.1.0" 727 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 728 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 729 | dependencies: 730 | pump "^3.0.0" 731 | 732 | get-stream@^5.1.0: 733 | version "5.2.0" 734 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 735 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 736 | dependencies: 737 | pump "^3.0.0" 738 | 739 | glob-parent@~5.1.2: 740 | version "5.1.2" 741 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 742 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 743 | dependencies: 744 | is-glob "^4.0.1" 745 | 746 | glob@^7.1.6: 747 | version "7.2.0" 748 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 749 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 750 | dependencies: 751 | fs.realpath "^1.0.0" 752 | inflight "^1.0.4" 753 | inherits "2" 754 | minimatch "^3.0.4" 755 | once "^1.3.0" 756 | path-is-absolute "^1.0.0" 757 | 758 | global-dirs@^3.0.0: 759 | version "3.0.0" 760 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" 761 | integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== 762 | dependencies: 763 | ini "2.0.0" 764 | 765 | got@^9.6.0: 766 | version "9.6.0" 767 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 768 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== 769 | dependencies: 770 | "@sindresorhus/is" "^0.14.0" 771 | "@szmarczak/http-timer" "^1.1.2" 772 | cacheable-request "^6.0.0" 773 | decompress-response "^3.3.0" 774 | duplexer3 "^0.1.4" 775 | get-stream "^4.1.0" 776 | lowercase-keys "^1.0.1" 777 | mimic-response "^1.0.1" 778 | p-cancelable "^1.0.0" 779 | to-readable-stream "^1.0.0" 780 | url-parse-lax "^3.0.0" 781 | 782 | graceful-fs@^4.1.2: 783 | version "4.2.8" 784 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" 785 | integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== 786 | 787 | has-ansi@^2.0.0: 788 | version "2.0.0" 789 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 790 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 791 | dependencies: 792 | ansi-regex "^2.0.0" 793 | 794 | has-flag@^3.0.0: 795 | version "3.0.0" 796 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 797 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 798 | 799 | has-flag@^4.0.0: 800 | version "4.0.0" 801 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 802 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 803 | 804 | has-yarn@^2.1.0: 805 | version "2.1.0" 806 | resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" 807 | integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== 808 | 809 | highlight.js@^10.7.1: 810 | version "10.7.3" 811 | resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" 812 | integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== 813 | 814 | http-cache-semantics@^4.0.0: 815 | version "4.1.0" 816 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 817 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 818 | 819 | http-errors@1.7.2: 820 | version "1.7.2" 821 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 822 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 823 | dependencies: 824 | depd "~1.1.2" 825 | inherits "2.0.3" 826 | setprototypeof "1.1.1" 827 | statuses ">= 1.5.0 < 2" 828 | toidentifier "1.0.0" 829 | 830 | http-errors@~1.7.2: 831 | version "1.7.3" 832 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 833 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 834 | dependencies: 835 | depd "~1.1.2" 836 | inherits "2.0.4" 837 | setprototypeof "1.1.1" 838 | statuses ">= 1.5.0 < 2" 839 | toidentifier "1.0.0" 840 | 841 | iconv-lite@0.4.24: 842 | version "0.4.24" 843 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 844 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 845 | dependencies: 846 | safer-buffer ">= 2.1.2 < 3" 847 | 848 | iconv-lite@^0.6.2: 849 | version "0.6.3" 850 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 851 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 852 | dependencies: 853 | safer-buffer ">= 2.1.2 < 3.0.0" 854 | 855 | ieee754@^1.2.1: 856 | version "1.2.1" 857 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 858 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 859 | 860 | ignore-by-default@^1.0.1: 861 | version "1.0.1" 862 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 863 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= 864 | 865 | import-lazy@^2.1.0: 866 | version "2.1.0" 867 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 868 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 869 | 870 | imurmurhash@^0.1.4: 871 | version "0.1.4" 872 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 873 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 874 | 875 | inflight@^1.0.4: 876 | version "1.0.6" 877 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 878 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 879 | dependencies: 880 | once "^1.3.0" 881 | wrappy "1" 882 | 883 | inherits@2, inherits@2.0.4, inherits@^2.0.1: 884 | version "2.0.4" 885 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 886 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 887 | 888 | inherits@2.0.3: 889 | version "2.0.3" 890 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 891 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 892 | 893 | ini@2.0.0: 894 | version "2.0.0" 895 | resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" 896 | integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== 897 | 898 | ini@~1.3.0: 899 | version "1.3.8" 900 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 901 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 902 | 903 | ipaddr.js@1.9.1: 904 | version "1.9.1" 905 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 906 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 907 | 908 | is-binary-path@~2.1.0: 909 | version "2.1.0" 910 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 911 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 912 | dependencies: 913 | binary-extensions "^2.0.0" 914 | 915 | is-ci@^2.0.0: 916 | version "2.0.0" 917 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 918 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== 919 | dependencies: 920 | ci-info "^2.0.0" 921 | 922 | is-extglob@^2.1.1: 923 | version "2.1.1" 924 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 925 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 926 | 927 | is-fullwidth-code-point@^3.0.0: 928 | version "3.0.0" 929 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 930 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 931 | 932 | is-glob@^4.0.1, is-glob@~4.0.1: 933 | version "4.0.3" 934 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 935 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 936 | dependencies: 937 | is-extglob "^2.1.1" 938 | 939 | is-installed-globally@^0.4.0: 940 | version "0.4.0" 941 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" 942 | integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== 943 | dependencies: 944 | global-dirs "^3.0.0" 945 | is-path-inside "^3.0.2" 946 | 947 | is-npm@^5.0.0: 948 | version "5.0.0" 949 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" 950 | integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== 951 | 952 | is-number@^7.0.0: 953 | version "7.0.0" 954 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 955 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 956 | 957 | is-obj@^2.0.0: 958 | version "2.0.0" 959 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" 960 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== 961 | 962 | is-path-inside@^3.0.2: 963 | version "3.0.3" 964 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 965 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 966 | 967 | is-property@^1.0.2: 968 | version "1.0.2" 969 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 970 | integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= 971 | 972 | is-typedarray@^1.0.0: 973 | version "1.0.0" 974 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 975 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 976 | 977 | is-yarn-global@^0.3.0: 978 | version "0.3.0" 979 | resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" 980 | integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== 981 | 982 | js-yaml@^4.0.0: 983 | version "4.1.0" 984 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 985 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 986 | dependencies: 987 | argparse "^2.0.1" 988 | 989 | json-buffer@3.0.0: 990 | version "3.0.0" 991 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 992 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= 993 | 994 | keyv@^3.0.0: 995 | version "3.1.0" 996 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 997 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== 998 | dependencies: 999 | json-buffer "3.0.0" 1000 | 1001 | latest-version@^5.1.0: 1002 | version "5.1.0" 1003 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" 1004 | integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== 1005 | dependencies: 1006 | package-json "^6.3.0" 1007 | 1008 | long@^4.0.0: 1009 | version "4.0.0" 1010 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" 1011 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== 1012 | 1013 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: 1014 | version "1.0.1" 1015 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 1016 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 1017 | 1018 | lowercase-keys@^2.0.0: 1019 | version "2.0.0" 1020 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 1021 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 1022 | 1023 | lru-cache@^4.1.3: 1024 | version "4.1.5" 1025 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 1026 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 1027 | dependencies: 1028 | pseudomap "^1.0.2" 1029 | yallist "^2.1.2" 1030 | 1031 | lru-cache@^6.0.0: 1032 | version "6.0.0" 1033 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1034 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1035 | dependencies: 1036 | yallist "^4.0.0" 1037 | 1038 | make-dir@^3.0.0: 1039 | version "3.1.0" 1040 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1041 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1042 | dependencies: 1043 | semver "^6.0.0" 1044 | 1045 | make-error@^1.1.1: 1046 | version "1.3.6" 1047 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 1048 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 1049 | 1050 | media-typer@0.3.0: 1051 | version "0.3.0" 1052 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1053 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 1054 | 1055 | merge-descriptors@1.0.1: 1056 | version "1.0.1" 1057 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1058 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 1059 | 1060 | methods@~1.1.2: 1061 | version "1.1.2" 1062 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1063 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 1064 | 1065 | mime-db@1.49.0: 1066 | version "1.49.0" 1067 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" 1068 | integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== 1069 | 1070 | mime-types@~2.1.24: 1071 | version "2.1.32" 1072 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" 1073 | integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== 1074 | dependencies: 1075 | mime-db "1.49.0" 1076 | 1077 | mime@1.6.0: 1078 | version "1.6.0" 1079 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1080 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1081 | 1082 | mimic-response@^1.0.0, mimic-response@^1.0.1: 1083 | version "1.0.1" 1084 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 1085 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 1086 | 1087 | minimatch@^3.0.4: 1088 | version "3.0.4" 1089 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1090 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1091 | dependencies: 1092 | brace-expansion "^1.1.7" 1093 | 1094 | minimist@^1.2.0: 1095 | version "1.2.5" 1096 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1097 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1098 | 1099 | mkdirp@^1.0.4: 1100 | version "1.0.4" 1101 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 1102 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 1103 | 1104 | ms@2.0.0: 1105 | version "2.0.0" 1106 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1107 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1108 | 1109 | ms@2.1.1: 1110 | version "2.1.1" 1111 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1112 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 1113 | 1114 | ms@2.1.2: 1115 | version "2.1.2" 1116 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1117 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1118 | 1119 | ms@^2.1.1: 1120 | version "2.1.3" 1121 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1122 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1123 | 1124 | mysql2@^2.3.0: 1125 | version "2.3.0" 1126 | resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-2.3.0.tgz#600f5cc27e397dfb77b59eac93666434f88e8079" 1127 | integrity sha512-0t5Ivps5Tdy5YHk5NdKwQhe/4Qyn2pload+S+UooDBvsqngtzujG1BaTWBihQLfeKO3t3122/GtusBtmHEHqww== 1128 | dependencies: 1129 | denque "^1.4.1" 1130 | generate-function "^2.3.1" 1131 | iconv-lite "^0.6.2" 1132 | long "^4.0.0" 1133 | lru-cache "^6.0.0" 1134 | named-placeholders "^1.1.2" 1135 | seq-queue "^0.0.5" 1136 | sqlstring "^2.3.2" 1137 | 1138 | mz@^2.4.0: 1139 | version "2.7.0" 1140 | resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" 1141 | integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== 1142 | dependencies: 1143 | any-promise "^1.0.0" 1144 | object-assign "^4.0.1" 1145 | thenify-all "^1.0.0" 1146 | 1147 | named-placeholders@^1.1.2: 1148 | version "1.1.2" 1149 | resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.2.tgz#ceb1fbff50b6b33492b5cf214ccf5e39cef3d0e8" 1150 | integrity sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA== 1151 | dependencies: 1152 | lru-cache "^4.1.3" 1153 | 1154 | negotiator@0.6.2: 1155 | version "0.6.2" 1156 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 1157 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 1158 | 1159 | nodemon@^2.0.13: 1160 | version "2.0.13" 1161 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.13.tgz#67d40d3a4d5bd840aa785c56587269cfcf5d24aa" 1162 | integrity sha512-UMXMpsZsv1UXUttCn6gv8eQPhn6DR4BW+txnL3IN5IHqrCwcrT/yWHfL35UsClGXknTH79r5xbu+6J1zNHuSyA== 1163 | dependencies: 1164 | chokidar "^3.2.2" 1165 | debug "^3.2.6" 1166 | ignore-by-default "^1.0.1" 1167 | minimatch "^3.0.4" 1168 | pstree.remy "^1.1.7" 1169 | semver "^5.7.1" 1170 | supports-color "^5.5.0" 1171 | touch "^3.1.0" 1172 | undefsafe "^2.0.3" 1173 | update-notifier "^5.1.0" 1174 | 1175 | nopt@~1.0.10: 1176 | version "1.0.10" 1177 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 1178 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= 1179 | dependencies: 1180 | abbrev "1" 1181 | 1182 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1183 | version "3.0.0" 1184 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1185 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1186 | 1187 | normalize-url@^4.1.0: 1188 | version "4.5.1" 1189 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" 1190 | integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== 1191 | 1192 | object-assign@^4.0.1: 1193 | version "4.1.1" 1194 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1195 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1196 | 1197 | on-finished@~2.3.0: 1198 | version "2.3.0" 1199 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1200 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 1201 | dependencies: 1202 | ee-first "1.1.1" 1203 | 1204 | on-headers@~1.0.2: 1205 | version "1.0.2" 1206 | resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" 1207 | integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== 1208 | 1209 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1210 | version "1.4.0" 1211 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1212 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1213 | dependencies: 1214 | wrappy "1" 1215 | 1216 | p-cancelable@^1.0.0: 1217 | version "1.1.0" 1218 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 1219 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 1220 | 1221 | package-json@^6.3.0: 1222 | version "6.5.0" 1223 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" 1224 | integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== 1225 | dependencies: 1226 | got "^9.6.0" 1227 | registry-auth-token "^4.0.0" 1228 | registry-url "^5.0.0" 1229 | semver "^6.2.0" 1230 | 1231 | parent-require@^1.0.0: 1232 | version "1.0.0" 1233 | resolved "https://registry.yarnpkg.com/parent-require/-/parent-require-1.0.0.tgz#746a167638083a860b0eef6732cb27ed46c32977" 1234 | integrity sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc= 1235 | 1236 | parse5-htmlparser2-tree-adapter@^6.0.0: 1237 | version "6.0.1" 1238 | resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" 1239 | integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== 1240 | dependencies: 1241 | parse5 "^6.0.1" 1242 | 1243 | parse5@^5.1.1: 1244 | version "5.1.1" 1245 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" 1246 | integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== 1247 | 1248 | parse5@^6.0.1: 1249 | version "6.0.1" 1250 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" 1251 | integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== 1252 | 1253 | parseurl@~1.3.3: 1254 | version "1.3.3" 1255 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1256 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1257 | 1258 | path-is-absolute@^1.0.0: 1259 | version "1.0.1" 1260 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1261 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1262 | 1263 | path-to-regexp@0.1.7: 1264 | version "0.1.7" 1265 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1266 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 1267 | 1268 | picomatch@^2.0.4, picomatch@^2.2.1: 1269 | version "2.3.0" 1270 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 1271 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 1272 | 1273 | prepend-http@^2.0.0: 1274 | version "2.0.0" 1275 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 1276 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= 1277 | 1278 | proxy-addr@~2.0.5: 1279 | version "2.0.7" 1280 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 1281 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 1282 | dependencies: 1283 | forwarded "0.2.0" 1284 | ipaddr.js "1.9.1" 1285 | 1286 | pseudomap@^1.0.2: 1287 | version "1.0.2" 1288 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1289 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 1290 | 1291 | pstree.remy@^1.1.7: 1292 | version "1.1.8" 1293 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 1294 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 1295 | 1296 | pump@^3.0.0: 1297 | version "3.0.0" 1298 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1299 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1300 | dependencies: 1301 | end-of-stream "^1.1.0" 1302 | once "^1.3.1" 1303 | 1304 | pupa@^2.1.1: 1305 | version "2.1.1" 1306 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" 1307 | integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== 1308 | dependencies: 1309 | escape-goat "^2.0.0" 1310 | 1311 | qs@6.7.0: 1312 | version "6.7.0" 1313 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 1314 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 1315 | 1316 | random-bytes@~1.0.0: 1317 | version "1.0.0" 1318 | resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" 1319 | integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs= 1320 | 1321 | range-parser@~1.2.1: 1322 | version "1.2.1" 1323 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1324 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1325 | 1326 | raw-body@2.4.0: 1327 | version "2.4.0" 1328 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 1329 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 1330 | dependencies: 1331 | bytes "3.1.0" 1332 | http-errors "1.7.2" 1333 | iconv-lite "0.4.24" 1334 | unpipe "1.0.0" 1335 | 1336 | rc@^1.2.8: 1337 | version "1.2.8" 1338 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1339 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1340 | dependencies: 1341 | deep-extend "^0.6.0" 1342 | ini "~1.3.0" 1343 | minimist "^1.2.0" 1344 | strip-json-comments "~2.0.1" 1345 | 1346 | readdirp@~3.6.0: 1347 | version "3.6.0" 1348 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1349 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1350 | dependencies: 1351 | picomatch "^2.2.1" 1352 | 1353 | reflect-metadata@^0.1.13: 1354 | version "0.1.13" 1355 | resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" 1356 | integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== 1357 | 1358 | registry-auth-token@^4.0.0: 1359 | version "4.2.1" 1360 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" 1361 | integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== 1362 | dependencies: 1363 | rc "^1.2.8" 1364 | 1365 | registry-url@^5.0.0: 1366 | version "5.1.0" 1367 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" 1368 | integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== 1369 | dependencies: 1370 | rc "^1.2.8" 1371 | 1372 | require-directory@^2.1.1: 1373 | version "2.1.1" 1374 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1375 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1376 | 1377 | responselike@^1.0.2: 1378 | version "1.0.2" 1379 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 1380 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= 1381 | dependencies: 1382 | lowercase-keys "^1.0.0" 1383 | 1384 | safe-buffer@5.1.2: 1385 | version "5.1.2" 1386 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1387 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1388 | 1389 | safe-buffer@5.2.1, safe-buffer@^5.0.1: 1390 | version "5.2.1" 1391 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1392 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1393 | 1394 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": 1395 | version "2.1.2" 1396 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1397 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1398 | 1399 | sax@>=0.6.0: 1400 | version "1.2.4" 1401 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1402 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1403 | 1404 | semver-diff@^3.1.1: 1405 | version "3.1.1" 1406 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" 1407 | integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== 1408 | dependencies: 1409 | semver "^6.3.0" 1410 | 1411 | semver@^5.7.1: 1412 | version "5.7.1" 1413 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1414 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1415 | 1416 | semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: 1417 | version "6.3.0" 1418 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1419 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1420 | 1421 | semver@^7.3.4: 1422 | version "7.3.5" 1423 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 1424 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 1425 | dependencies: 1426 | lru-cache "^6.0.0" 1427 | 1428 | send@0.17.1: 1429 | version "0.17.1" 1430 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 1431 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 1432 | dependencies: 1433 | debug "2.6.9" 1434 | depd "~1.1.2" 1435 | destroy "~1.0.4" 1436 | encodeurl "~1.0.2" 1437 | escape-html "~1.0.3" 1438 | etag "~1.8.1" 1439 | fresh "0.5.2" 1440 | http-errors "~1.7.2" 1441 | mime "1.6.0" 1442 | ms "2.1.1" 1443 | on-finished "~2.3.0" 1444 | range-parser "~1.2.1" 1445 | statuses "~1.5.0" 1446 | 1447 | seq-queue@^0.0.5: 1448 | version "0.0.5" 1449 | resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" 1450 | integrity sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4= 1451 | 1452 | serve-static@1.14.1: 1453 | version "1.14.1" 1454 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 1455 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 1456 | dependencies: 1457 | encodeurl "~1.0.2" 1458 | escape-html "~1.0.3" 1459 | parseurl "~1.3.3" 1460 | send "0.17.1" 1461 | 1462 | setprototypeof@1.1.1: 1463 | version "1.1.1" 1464 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1465 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1466 | 1467 | sha.js@^2.4.11: 1468 | version "2.4.11" 1469 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 1470 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 1471 | dependencies: 1472 | inherits "^2.0.1" 1473 | safe-buffer "^5.0.1" 1474 | 1475 | signal-exit@^3.0.2: 1476 | version "3.0.5" 1477 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" 1478 | integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== 1479 | 1480 | sqlstring@^2.3.2: 1481 | version "2.3.2" 1482 | resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.2.tgz#cdae7169389a1375b18e885f2e60b3e460809514" 1483 | integrity sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg== 1484 | 1485 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 1486 | version "1.5.0" 1487 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1488 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1489 | 1490 | string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: 1491 | version "4.2.3" 1492 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1493 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1494 | dependencies: 1495 | emoji-regex "^8.0.0" 1496 | is-fullwidth-code-point "^3.0.0" 1497 | strip-ansi "^6.0.1" 1498 | 1499 | strip-ansi@^3.0.0: 1500 | version "3.0.1" 1501 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1502 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 1503 | dependencies: 1504 | ansi-regex "^2.0.0" 1505 | 1506 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1507 | version "6.0.1" 1508 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1509 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1510 | dependencies: 1511 | ansi-regex "^5.0.1" 1512 | 1513 | strip-json-comments@~2.0.1: 1514 | version "2.0.1" 1515 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1516 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1517 | 1518 | supports-color@^2.0.0: 1519 | version "2.0.0" 1520 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1521 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 1522 | 1523 | supports-color@^5.5.0: 1524 | version "5.5.0" 1525 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1526 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1527 | dependencies: 1528 | has-flag "^3.0.0" 1529 | 1530 | supports-color@^7.1.0: 1531 | version "7.2.0" 1532 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1533 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1534 | dependencies: 1535 | has-flag "^4.0.0" 1536 | 1537 | thenify-all@^1.0.0: 1538 | version "1.6.0" 1539 | resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" 1540 | integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= 1541 | dependencies: 1542 | thenify ">= 3.1.0 < 4" 1543 | 1544 | "thenify@>= 3.1.0 < 4": 1545 | version "3.3.1" 1546 | resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" 1547 | integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== 1548 | dependencies: 1549 | any-promise "^1.0.0" 1550 | 1551 | to-readable-stream@^1.0.0: 1552 | version "1.0.0" 1553 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 1554 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== 1555 | 1556 | to-regex-range@^5.0.1: 1557 | version "5.0.1" 1558 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1559 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1560 | dependencies: 1561 | is-number "^7.0.0" 1562 | 1563 | toidentifier@1.0.0: 1564 | version "1.0.0" 1565 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1566 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 1567 | 1568 | touch@^3.1.0: 1569 | version "3.1.0" 1570 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 1571 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 1572 | dependencies: 1573 | nopt "~1.0.10" 1574 | 1575 | ts-node@^10.2.1: 1576 | version "10.2.1" 1577 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.2.1.tgz#4cc93bea0a7aba2179497e65bb08ddfc198b3ab5" 1578 | integrity sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw== 1579 | dependencies: 1580 | "@cspotcode/source-map-support" "0.6.1" 1581 | "@tsconfig/node10" "^1.0.7" 1582 | "@tsconfig/node12" "^1.0.7" 1583 | "@tsconfig/node14" "^1.0.0" 1584 | "@tsconfig/node16" "^1.0.2" 1585 | acorn "^8.4.1" 1586 | acorn-walk "^8.1.1" 1587 | arg "^4.1.0" 1588 | create-require "^1.1.0" 1589 | diff "^4.0.1" 1590 | make-error "^1.1.1" 1591 | yn "3.1.1" 1592 | 1593 | tslib@^2.1.0: 1594 | version "2.3.1" 1595 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" 1596 | integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== 1597 | 1598 | type-fest@^0.20.2: 1599 | version "0.20.2" 1600 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1601 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1602 | 1603 | type-is@~1.6.17, type-is@~1.6.18: 1604 | version "1.6.18" 1605 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1606 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1607 | dependencies: 1608 | media-typer "0.3.0" 1609 | mime-types "~2.1.24" 1610 | 1611 | typedarray-to-buffer@^3.1.5: 1612 | version "3.1.5" 1613 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 1614 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 1615 | dependencies: 1616 | is-typedarray "^1.0.0" 1617 | 1618 | typeorm@^0.2.38: 1619 | version "0.2.38" 1620 | resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.2.38.tgz#2af08079919f6ab04cd17017f9faa2c8d5cd566f" 1621 | integrity sha512-M6Y3KQcAREQcphOVJciywf4mv6+A0I/SeR+lWNjKsjnQ+a3XcMwGYMGL0Jonsx3H0Cqlf/3yYqVki1jIXSK/xg== 1622 | dependencies: 1623 | "@sqltools/formatter" "^1.2.2" 1624 | app-root-path "^3.0.0" 1625 | buffer "^6.0.3" 1626 | chalk "^4.1.0" 1627 | cli-highlight "^2.1.11" 1628 | debug "^4.3.1" 1629 | dotenv "^8.2.0" 1630 | glob "^7.1.6" 1631 | js-yaml "^4.0.0" 1632 | mkdirp "^1.0.4" 1633 | reflect-metadata "^0.1.13" 1634 | sha.js "^2.4.11" 1635 | tslib "^2.1.0" 1636 | xml2js "^0.4.23" 1637 | yargonaut "^1.1.4" 1638 | yargs "^17.0.1" 1639 | zen-observable-ts "^1.0.0" 1640 | 1641 | typescript@^4.4.3: 1642 | version "4.4.3" 1643 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" 1644 | integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== 1645 | 1646 | uid-safe@~2.1.5: 1647 | version "2.1.5" 1648 | resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" 1649 | integrity sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA== 1650 | dependencies: 1651 | random-bytes "~1.0.0" 1652 | 1653 | undefsafe@^2.0.3: 1654 | version "2.0.3" 1655 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" 1656 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== 1657 | dependencies: 1658 | debug "^2.2.0" 1659 | 1660 | unique-string@^2.0.0: 1661 | version "2.0.0" 1662 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" 1663 | integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== 1664 | dependencies: 1665 | crypto-random-string "^2.0.0" 1666 | 1667 | unpipe@1.0.0, unpipe@~1.0.0: 1668 | version "1.0.0" 1669 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1670 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1671 | 1672 | update-notifier@^5.1.0: 1673 | version "5.1.0" 1674 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" 1675 | integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== 1676 | dependencies: 1677 | boxen "^5.0.0" 1678 | chalk "^4.1.0" 1679 | configstore "^5.0.1" 1680 | has-yarn "^2.1.0" 1681 | import-lazy "^2.1.0" 1682 | is-ci "^2.0.0" 1683 | is-installed-globally "^0.4.0" 1684 | is-npm "^5.0.0" 1685 | is-yarn-global "^0.3.0" 1686 | latest-version "^5.1.0" 1687 | pupa "^2.1.1" 1688 | semver "^7.3.4" 1689 | semver-diff "^3.1.1" 1690 | xdg-basedir "^4.0.0" 1691 | 1692 | url-parse-lax@^3.0.0: 1693 | version "3.0.0" 1694 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 1695 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= 1696 | dependencies: 1697 | prepend-http "^2.0.0" 1698 | 1699 | utils-merge@1.0.1: 1700 | version "1.0.1" 1701 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1702 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1703 | 1704 | vary@~1.1.2: 1705 | version "1.1.2" 1706 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1707 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1708 | 1709 | widest-line@^3.1.0: 1710 | version "3.1.0" 1711 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" 1712 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== 1713 | dependencies: 1714 | string-width "^4.0.0" 1715 | 1716 | wrap-ansi@^7.0.0: 1717 | version "7.0.0" 1718 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1719 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1720 | dependencies: 1721 | ansi-styles "^4.0.0" 1722 | string-width "^4.1.0" 1723 | strip-ansi "^6.0.0" 1724 | 1725 | wrappy@1: 1726 | version "1.0.2" 1727 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1728 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1729 | 1730 | write-file-atomic@^3.0.0: 1731 | version "3.0.3" 1732 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 1733 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 1734 | dependencies: 1735 | imurmurhash "^0.1.4" 1736 | is-typedarray "^1.0.0" 1737 | signal-exit "^3.0.2" 1738 | typedarray-to-buffer "^3.1.5" 1739 | 1740 | xdg-basedir@^4.0.0: 1741 | version "4.0.0" 1742 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" 1743 | integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== 1744 | 1745 | xml2js@^0.4.23: 1746 | version "0.4.23" 1747 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" 1748 | integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== 1749 | dependencies: 1750 | sax ">=0.6.0" 1751 | xmlbuilder "~11.0.0" 1752 | 1753 | xmlbuilder@~11.0.0: 1754 | version "11.0.1" 1755 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" 1756 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 1757 | 1758 | y18n@^5.0.5: 1759 | version "5.0.8" 1760 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1761 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1762 | 1763 | yallist@^2.1.2: 1764 | version "2.1.2" 1765 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 1766 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 1767 | 1768 | yallist@^4.0.0: 1769 | version "4.0.0" 1770 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1771 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1772 | 1773 | yargonaut@^1.1.4: 1774 | version "1.1.4" 1775 | resolved "https://registry.yarnpkg.com/yargonaut/-/yargonaut-1.1.4.tgz#c64f56432c7465271221f53f5cc517890c3d6e0c" 1776 | integrity sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA== 1777 | dependencies: 1778 | chalk "^1.1.1" 1779 | figlet "^1.1.1" 1780 | parent-require "^1.0.0" 1781 | 1782 | yargs-parser@^20.2.2: 1783 | version "20.2.9" 1784 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1785 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1786 | 1787 | yargs@^16.0.0: 1788 | version "16.2.0" 1789 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1790 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1791 | dependencies: 1792 | cliui "^7.0.2" 1793 | escalade "^3.1.1" 1794 | get-caller-file "^2.0.5" 1795 | require-directory "^2.1.1" 1796 | string-width "^4.2.0" 1797 | y18n "^5.0.5" 1798 | yargs-parser "^20.2.2" 1799 | 1800 | yargs@^17.0.1: 1801 | version "17.2.1" 1802 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.2.1.tgz#e2c95b9796a0e1f7f3bf4427863b42e0418191ea" 1803 | integrity sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q== 1804 | dependencies: 1805 | cliui "^7.0.2" 1806 | escalade "^3.1.1" 1807 | get-caller-file "^2.0.5" 1808 | require-directory "^2.1.1" 1809 | string-width "^4.2.0" 1810 | y18n "^5.0.5" 1811 | yargs-parser "^20.2.2" 1812 | 1813 | yn@3.1.1: 1814 | version "3.1.1" 1815 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1816 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1817 | 1818 | zen-observable-ts@^1.0.0: 1819 | version "1.1.0" 1820 | resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.1.0.tgz#2d1aa9d79b87058e9b75698b92791c1838551f83" 1821 | integrity sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA== 1822 | dependencies: 1823 | "@types/zen-observable" "0.8.3" 1824 | zen-observable "0.8.15" 1825 | 1826 | zen-observable@0.8.15: 1827 | version "0.8.15" 1828 | resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" 1829 | integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== 1830 | --------------------------------------------------------------------------------