├── .gitignore ├── src ├── database │ ├── index.ts │ └── migrations │ │ ├── 1618868672846-CreateUsers.ts │ │ ├── 1618693424828-CreateSettings.ts │ │ ├── 1618869473471-CreateMessages.ts │ │ └── 1619042610756-CreateConnections.ts ├── server.ts ├── repositories │ ├── UsersRepository.ts │ ├── MessagesRepository.ts │ ├── SettingsRepository.ts │ └── ConnectionsRepository.ts ├── entities │ ├── User.ts │ ├── Setting.ts │ ├── Message.ts │ └── Connection.ts ├── controllers │ ├── UsersController.ts │ ├── MessagesController.ts │ └── SettingsController.ts ├── services │ ├── UsersService.ts │ ├── MessagesService.ts │ ├── SettingsService.ts │ └── ConnectionsService.ts ├── routes.ts ├── http.ts └── websocket │ ├── admin.ts │ └── client.ts ├── public ├── images │ ├── chat.png │ ├── send.png │ └── close.png ├── html │ ├── admin.html │ └── client.html ├── js │ ├── chat.js │ └── admin.js └── css │ └── styles.css ├── ormconfig.json ├── package.json ├── Insomnia.json ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | **/database.sqlite 3 | -------------------------------------------------------------------------------- /src/database/index.ts: -------------------------------------------------------------------------------- 1 | import { createConnection } from 'typeorm'; 2 | 3 | createConnection(); 4 | -------------------------------------------------------------------------------- /public/images/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EliasGcf/nlw-05-nodejs/HEAD/public/images/chat.png -------------------------------------------------------------------------------- /public/images/send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EliasGcf/nlw-05-nodejs/HEAD/public/images/send.png -------------------------------------------------------------------------------- /public/images/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EliasGcf/nlw-05-nodejs/HEAD/public/images/close.png -------------------------------------------------------------------------------- /src/server.ts: -------------------------------------------------------------------------------- 1 | import { http } from './http'; 2 | import './websocket/client'; 3 | import './websocket/admin'; 4 | 5 | http.listen(3333, () => console.log('Server started on 3333')); 6 | -------------------------------------------------------------------------------- /src/repositories/UsersRepository.ts: -------------------------------------------------------------------------------- 1 | import { EntityRepository, Repository } from 'typeorm'; 2 | 3 | import { User } from '../entities/User'; 4 | 5 | @EntityRepository(User) 6 | class UsersRepository extends Repository {} 7 | 8 | export { UsersRepository }; 9 | -------------------------------------------------------------------------------- /ormconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "sqlite", 3 | "database": "./src/database/database.sqlite", 4 | "migrations": ["./src/database/migrations/*.ts"], 5 | "entities": ["./src/entities/*.ts"], 6 | "cli": { 7 | "migrationsDir": "./src/database/migrations" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/repositories/MessagesRepository.ts: -------------------------------------------------------------------------------- 1 | import { EntityRepository, Repository } from 'typeorm'; 2 | 3 | import { Message } from '../entities/Message'; 4 | 5 | @EntityRepository(Message) 6 | class MessagesRepository extends Repository {} 7 | 8 | export { MessagesRepository }; 9 | -------------------------------------------------------------------------------- /src/repositories/SettingsRepository.ts: -------------------------------------------------------------------------------- 1 | import { EntityRepository, Repository } from 'typeorm'; 2 | 3 | import { Setting } from '../entities/Setting'; 4 | 5 | @EntityRepository(Setting) 6 | class SettingsRepository extends Repository {} 7 | 8 | export { SettingsRepository }; 9 | -------------------------------------------------------------------------------- /src/repositories/ConnectionsRepository.ts: -------------------------------------------------------------------------------- 1 | import { EntityRepository, Repository } from 'typeorm'; 2 | 3 | import { Connection } from '../entities/Connection'; 4 | 5 | @EntityRepository(Connection) 6 | class ConnectionsRepository extends Repository {} 7 | 8 | export { ConnectionsRepository }; 9 | -------------------------------------------------------------------------------- /src/entities/User.ts: -------------------------------------------------------------------------------- 1 | import { Column, CreateDateColumn, Entity, PrimaryColumn } from 'typeorm'; 2 | import { v4 as uuidV4 } from 'uuid'; 3 | 4 | @Entity('users') 5 | class User { 6 | @PrimaryColumn() 7 | id: string; 8 | 9 | @Column() 10 | email: string; 11 | 12 | @CreateDateColumn() 13 | created_at: Date; 14 | 15 | constructor() { 16 | if (!this.id) this.id = uuidV4(); 17 | } 18 | } 19 | 20 | export { User }; 21 | -------------------------------------------------------------------------------- /src/controllers/UsersController.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response } from 'express'; 2 | 3 | import { UsersService } from '../services/UsersService'; 4 | 5 | class UsersController { 6 | async create(req: Request, res: Response): Promise { 7 | const { email } = req.body; 8 | 9 | const usersService = new UsersService(); 10 | 11 | const user = await usersService.create(email); 12 | 13 | return res.json(user); 14 | } 15 | } 16 | 17 | export { UsersController }; 18 | -------------------------------------------------------------------------------- /src/entities/Setting.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Column, 3 | CreateDateColumn, 4 | Entity, 5 | PrimaryColumn, 6 | UpdateDateColumn, 7 | } from 'typeorm'; 8 | import { v4 as uuidV4 } from 'uuid'; 9 | 10 | @Entity('settings') 11 | class Setting { 12 | @PrimaryColumn() 13 | id: string; 14 | 15 | @Column() 16 | username: string; 17 | 18 | @Column() 19 | chat: boolean; 20 | 21 | @CreateDateColumn() 22 | created_at: Date; 23 | 24 | @UpdateDateColumn() 25 | updated_at: Date; 26 | 27 | constructor() { 28 | if (!this.id) this.id = uuidV4(); 29 | } 30 | } 31 | 32 | export { Setting }; 33 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nlw-05-nodejs", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "tsnd src/server.ts", 8 | "typeorm": "tsnd node_modules/typeorm/cli.js" 9 | }, 10 | "dependencies": { 11 | "ejs": "^3.1.6", 12 | "express": "^4.17.1", 13 | "reflect-metadata": "^0.1.13", 14 | "socket.io": "^4.0.1", 15 | "socket.io-client": "^4.0.1", 16 | "sqlite3": "^5.0.2", 17 | "typeorm": "^0.2.32", 18 | "uuid": "^8.3.2" 19 | }, 20 | "devDependencies": { 21 | "@types/express": "^4.17.11", 22 | "@types/uuid": "^8.3.0", 23 | "ts-node-dev": "^1.1.6", 24 | "typescript": "^4.2.4" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/entities/Message.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Column, 3 | CreateDateColumn, 4 | Entity, 5 | JoinColumn, 6 | ManyToOne, 7 | PrimaryColumn, 8 | } from 'typeorm'; 9 | import { v4 as uuidV4 } from 'uuid'; 10 | 11 | import { User } from './User'; 12 | 13 | @Entity('messages') 14 | class Message { 15 | @PrimaryColumn() 16 | id: string; 17 | 18 | @Column() 19 | admin_id: string; 20 | 21 | @Column() 22 | user_id: string; 23 | 24 | @ManyToOne(() => User) 25 | @JoinColumn({ name: 'user_id' }) 26 | user: User; 27 | 28 | @Column() 29 | text: string; 30 | 31 | @CreateDateColumn() 32 | created_at: Date; 33 | 34 | constructor() { 35 | if (!this.id) this.id = uuidV4(); 36 | } 37 | } 38 | 39 | export { Message }; 40 | -------------------------------------------------------------------------------- /src/entities/Connection.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Column, 3 | CreateDateColumn, 4 | Entity, 5 | JoinColumn, 6 | ManyToOne, 7 | PrimaryColumn, 8 | UpdateDateColumn, 9 | } from 'typeorm'; 10 | import { v4 as uuidV4 } from 'uuid'; 11 | 12 | import { User } from './User'; 13 | 14 | @Entity('connections') 15 | class Connection { 16 | @PrimaryColumn() 17 | id: string; 18 | 19 | @Column() 20 | admin_id: string; 21 | 22 | @Column() 23 | user_id: string; 24 | 25 | @ManyToOne(() => User) 26 | @JoinColumn({ name: 'user_id' }) 27 | user: User; 28 | 29 | @Column() 30 | socket_id: string; 31 | 32 | @CreateDateColumn() 33 | created_at: Date; 34 | 35 | @UpdateDateColumn() 36 | updated_at: Date; 37 | 38 | constructor() { 39 | if (!this.id) this.id = uuidV4(); 40 | } 41 | } 42 | 43 | export { Connection }; 44 | -------------------------------------------------------------------------------- /src/controllers/MessagesController.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response } from 'express'; 2 | 3 | import { MessagesService } from '../services/MessagesService'; 4 | 5 | class MessagesController { 6 | async create(req: Request, res: Response): Promise { 7 | const { admin_id, user_id, text } = req.body; 8 | 9 | const messagesService = new MessagesService(); 10 | 11 | const message = await messagesService.create({ admin_id, user_id, text }); 12 | 13 | return res.json(message); 14 | } 15 | 16 | async showByUser(req: Request, res: Response): Promise { 17 | const { id } = req.params; 18 | 19 | const messagesService = new MessagesService(); 20 | 21 | const messages = await messagesService.listByUser(id); 22 | 23 | return res.json(messages); 24 | } 25 | } 26 | 27 | export { MessagesController }; 28 | -------------------------------------------------------------------------------- /src/services/UsersService.ts: -------------------------------------------------------------------------------- 1 | import { getCustomRepository } from 'typeorm'; 2 | 3 | import { UsersRepository } from '../repositories/UsersRepository'; 4 | 5 | class UsersService { 6 | private usersRepository: UsersRepository; 7 | 8 | constructor() { 9 | this.usersRepository = getCustomRepository(UsersRepository); 10 | } 11 | 12 | async create(email: string) { 13 | const userExists = await this.usersRepository.findOne({ email }); 14 | 15 | if (userExists) { 16 | return userExists; 17 | } 18 | 19 | const user = this.usersRepository.create({ email }); 20 | 21 | await this.usersRepository.save(user); 22 | 23 | return user; 24 | } 25 | 26 | async findByEmail(email: string) { 27 | const user = await this.usersRepository.findOne({ email }); 28 | 29 | return user; 30 | } 31 | } 32 | 33 | export { UsersService }; 34 | -------------------------------------------------------------------------------- /src/routes.ts: -------------------------------------------------------------------------------- 1 | import { Router } from 'express'; 2 | 3 | import { SettingsController } from './controllers/SettingsController'; 4 | import { UsersController } from './controllers/UsersController'; 5 | import { MessagesController } from './controllers/MessagesController'; 6 | 7 | const routes = Router(); 8 | 9 | const settingsController = new SettingsController(); 10 | const usersController = new UsersController(); 11 | const messagesController = new MessagesController(); 12 | 13 | routes.post('/settings', settingsController.create); 14 | routes.get('/settings/:username', settingsController.findByUsername); 15 | routes.put('/settings/:username', settingsController.update); 16 | 17 | routes.post('/users', usersController.create); 18 | 19 | routes.post('/messages', messagesController.create); 20 | routes.get('/messages/:id', messagesController.showByUser); 21 | 22 | export { routes }; 23 | -------------------------------------------------------------------------------- /src/database/migrations/1618868672846-CreateUsers.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner, Table } from 'typeorm'; 2 | 3 | export class CreateUsers1618868672846 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.createTable( 6 | new Table({ 7 | name: 'users', 8 | columns: [ 9 | { 10 | name: 'id', 11 | type: 'uuid', 12 | isPrimary: true, 13 | }, 14 | { 15 | name: 'email', 16 | type: 'varchar', 17 | }, 18 | { 19 | name: 'created_at', 20 | type: 'timestamp', 21 | default: 'now()', 22 | }, 23 | ], 24 | }), 25 | ); 26 | } 27 | 28 | public async down(queryRunner: QueryRunner): Promise { 29 | await queryRunner.dropTable('users'); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/http.ts: -------------------------------------------------------------------------------- 1 | import express from 'express'; 2 | import { createServer } from 'http'; 3 | import { Server, Socket } from 'socket.io'; 4 | import path from 'path'; 5 | 6 | import { routes } from './routes'; 7 | 8 | import './database'; 9 | 10 | const app = express(); 11 | 12 | app.use(express.static(path.join(__dirname, '..', 'public'))); 13 | app.set('views', path.join(__dirname, '..', 'public')); 14 | app.engine('html', require('ejs').renderFile); 15 | app.set('view engine', 'ejs'); 16 | 17 | app.get('/pages/client', (req, res) => { 18 | return res.render('html/client.html'); 19 | }); 20 | 21 | app.get('/pages/admin', (req, res) => { 22 | return res.render('html/admin.html'); 23 | }); 24 | 25 | const http = createServer(app); 26 | const io = new Server(http); 27 | 28 | io.on('connection', (socket: Socket) => { 29 | console.log('Se conectou', socket.id); 30 | }); 31 | 32 | app.use(express.json()); 33 | app.use(routes); 34 | 35 | export { http, io }; 36 | -------------------------------------------------------------------------------- /src/services/MessagesService.ts: -------------------------------------------------------------------------------- 1 | import { getCustomRepository } from 'typeorm'; 2 | 3 | import { MessagesRepository } from '../repositories/MessagesRepository'; 4 | 5 | interface IMessageCreate { 6 | admin_id?: string; 7 | user_id: string; 8 | text: string; 9 | } 10 | 11 | class MessagesService { 12 | private messagesRepository: MessagesRepository; 13 | 14 | constructor() { 15 | this.messagesRepository = getCustomRepository(MessagesRepository); 16 | } 17 | 18 | async create({ admin_id, user_id, text }: IMessageCreate) { 19 | const message = this.messagesRepository.create({ admin_id, user_id, text }); 20 | 21 | await this.messagesRepository.save(message); 22 | 23 | return message; 24 | } 25 | 26 | async listByUser(user_id: string) { 27 | const list = await this.messagesRepository.find({ 28 | where: { user_id }, 29 | relations: ['user'], 30 | }); 31 | 32 | return list; 33 | } 34 | } 35 | 36 | export { MessagesService }; 37 | -------------------------------------------------------------------------------- /src/database/migrations/1618693424828-CreateSettings.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner, Table } from 'typeorm'; 2 | 3 | export class CreateSettings1618693424828 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.createTable( 6 | new Table({ 7 | name: 'settings', 8 | columns: [ 9 | { 10 | name: 'id', 11 | type: 'uuid', 12 | isPrimary: true, 13 | }, 14 | { 15 | name: 'username', 16 | type: 'varchar', 17 | }, 18 | { 19 | name: 'chat', 20 | type: 'boolean', 21 | default: true, 22 | }, 23 | { 24 | name: 'created_at', 25 | type: 'timestamp', 26 | default: 'now()', 27 | }, 28 | { 29 | name: 'updated_at', 30 | type: 'timestamp', 31 | default: 'now()', 32 | }, 33 | ], 34 | }), 35 | ); 36 | } 37 | 38 | public async down(queryRunner: QueryRunner): Promise { 39 | await queryRunner.dropTable('settings'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/controllers/SettingsController.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response } from 'express'; 2 | 3 | import { SettingsService } from '../services/SettingsService'; 4 | 5 | class SettingsController { 6 | async create(req: Request, res: Response) { 7 | const { chat, username } = req.body; 8 | 9 | const settingsService = new SettingsService(); 10 | 11 | try { 12 | const setting = await settingsService.create({ chat, username }); 13 | 14 | return res.json(setting); 15 | } catch (err) { 16 | return res.status(400).json({ message: err.message }); 17 | } 18 | } 19 | 20 | async findByUsername(req: Request, res: Response) { 21 | const { username } = req.params; 22 | 23 | const settingsService = new SettingsService(); 24 | 25 | const setting = await settingsService.findByUsername(username); 26 | 27 | return res.json(setting); 28 | } 29 | 30 | async update(req: Request, res: Response) { 31 | const { username } = req.params; 32 | const { chat } = req.body; 33 | 34 | const settingsService = new SettingsService(); 35 | 36 | await settingsService.update(username, chat); 37 | 38 | return res.send(); 39 | } 40 | } 41 | 42 | export { SettingsController }; 43 | -------------------------------------------------------------------------------- /src/services/SettingsService.ts: -------------------------------------------------------------------------------- 1 | import { getCustomRepository } from 'typeorm'; 2 | import { Setting } from '../entities/Setting'; 3 | 4 | import { SettingsRepository } from '../repositories/SettingsRepository'; 5 | 6 | interface ISettingsCreate { 7 | chat: boolean; 8 | username: string; 9 | } 10 | 11 | class SettingsService { 12 | private settingsRepository: SettingsRepository; 13 | 14 | constructor() { 15 | this.settingsRepository = getCustomRepository(SettingsRepository); 16 | } 17 | 18 | async create({ chat, username }: ISettingsCreate) { 19 | const settingsAlreadyExists = await this.settingsRepository.findOne({ 20 | username, 21 | }); 22 | 23 | if (settingsAlreadyExists) { 24 | throw new Error('Settings already exists.'); 25 | } 26 | 27 | const setting = this.settingsRepository.create({ 28 | chat, 29 | username, 30 | }); 31 | 32 | await this.settingsRepository.save(setting); 33 | 34 | return setting; 35 | } 36 | 37 | async findByUsername(username: string) { 38 | const settings = await this.settingsRepository.findOne({ username }); 39 | 40 | return settings; 41 | } 42 | 43 | async update(username: string, chat: boolean) { 44 | await this.settingsRepository 45 | .createQueryBuilder() 46 | .update(Setting) 47 | .set({ chat }) 48 | .where('username = :username', { username }) 49 | .execute(); 50 | } 51 | } 52 | 53 | export { SettingsService }; 54 | -------------------------------------------------------------------------------- /src/database/migrations/1618869473471-CreateMessages.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner, Table } from 'typeorm'; 2 | 3 | export class CreateMessages1618869473471 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.createTable( 6 | new Table({ 7 | name: 'messages', 8 | columns: [ 9 | { 10 | name: 'id', 11 | type: 'uuid', 12 | isPrimary: true, 13 | }, 14 | { 15 | name: 'admin_id', 16 | type: 'uuid', 17 | isNullable: true, 18 | }, 19 | { 20 | name: 'user_id', 21 | type: 'uuid', 22 | }, 23 | { 24 | name: 'text', 25 | type: 'varchar', 26 | }, 27 | { 28 | name: 'created_at', 29 | type: 'timestamp', 30 | default: 'now()', 31 | }, 32 | ], 33 | foreignKeys: [ 34 | { 35 | name: 'FKUser', 36 | referencedTableName: 'users', 37 | referencedColumnNames: ['id'], 38 | columnNames: ['user_id'], 39 | onDelete: 'SET NULL', 40 | onUpdate: 'CASCADE', 41 | }, 42 | ], 43 | }), 44 | ); 45 | } 46 | 47 | public async down(queryRunner: QueryRunner): Promise { 48 | await queryRunner.dropTable('messages'); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/websocket/admin.ts: -------------------------------------------------------------------------------- 1 | import { io } from '../http'; 2 | import { ConnectionsService } from '../services/ConnectionsService'; 3 | import { MessagesService } from '../services/MessagesService'; 4 | 5 | io.on('connect', async socket => { 6 | const connectionsService = new ConnectionsService(); 7 | const messagesService = new MessagesService(); 8 | 9 | const allConnectionsWithoutAdmin = await connectionsService.findAllWithoutAdmin(); 10 | 11 | io.emit('admin_list_all_users', allConnectionsWithoutAdmin); 12 | 13 | socket.on('admin_list_messages_by_user', async (params, callback) => { 14 | const { user_id } = params; 15 | 16 | const allMessages = await messagesService.listByUser(user_id); 17 | 18 | callback(allMessages); 19 | }); 20 | 21 | socket.on('admin_send_message', async params => { 22 | const { user_id, text } = params; 23 | 24 | await messagesService.create({ 25 | text, 26 | user_id, 27 | admin_id: socket.id, 28 | }); 29 | 30 | const { socket_id } = await connectionsService.findByUserId(user_id); 31 | 32 | io.to(socket_id).emit('admin_send_to_client', { 33 | text, 34 | socket_id: socket.id, 35 | }); 36 | }); 37 | 38 | socket.on('admin_user_in_support', async params => { 39 | const { user_id } = params; 40 | await connectionsService.updateAdminID(user_id, socket.id); 41 | 42 | const allConnectionsWithoutAdmin = await connectionsService.findAllWithoutAdmin(); 43 | 44 | io.emit('admin_list_all_users', allConnectionsWithoutAdmin); 45 | }); 46 | }); 47 | -------------------------------------------------------------------------------- /src/database/migrations/1619042610756-CreateConnections.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner, Table, TableForeignKey } from 'typeorm'; 2 | 3 | export class CreateConnections1619042610756 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.createTable( 6 | new Table({ 7 | name: 'connections', 8 | columns: [ 9 | { 10 | name: 'id', 11 | type: 'uuid', 12 | isPrimary: true, 13 | }, 14 | { 15 | name: 'admin_id', 16 | type: 'uuid', 17 | isNullable: true, 18 | }, 19 | { 20 | name: 'user_id', 21 | type: 'uuid', 22 | }, 23 | { 24 | name: 'socket_id', 25 | type: 'varchar', 26 | }, 27 | { 28 | name: 'created_at', 29 | type: 'timestamp', 30 | default: 'now()', 31 | }, 32 | { 33 | name: 'updated_at', 34 | type: 'timestamp', 35 | default: 'now()', 36 | }, 37 | ], 38 | }), 39 | ); 40 | 41 | await queryRunner.createForeignKey( 42 | 'connections', 43 | new TableForeignKey({ 44 | name: 'FKConnectionUser', 45 | referencedTableName: 'users', 46 | referencedColumnNames: ['id'], 47 | columnNames: ['user_id'], 48 | onDelete: 'SET NULL', 49 | onUpdate: 'CASCADE', 50 | }), 51 | ); 52 | } 53 | 54 | public async down(queryRunner: QueryRunner): Promise { 55 | await queryRunner.dropForeignKey('connections', 'FKConnectionUser'); 56 | await queryRunner.dropTable('connections'); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /public/html/admin.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 25 | 26 |
27 | 28 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /src/services/ConnectionsService.ts: -------------------------------------------------------------------------------- 1 | import { getCustomRepository } from 'typeorm'; 2 | import { Connection } from '../entities/Connection'; 3 | 4 | import { ConnectionsRepository } from '../repositories/ConnectionsRepository'; 5 | 6 | interface IConnectionCreate { 7 | socket_id: string; 8 | user_id: string; 9 | admin_id?: string; 10 | id?: string; 11 | } 12 | 13 | class ConnectionsService { 14 | private connectionsRepository: ConnectionsRepository; 15 | 16 | constructor() { 17 | this.connectionsRepository = getCustomRepository(ConnectionsRepository); 18 | } 19 | 20 | async create({ socket_id, user_id, admin_id, id }: IConnectionCreate) { 21 | const connection = this.connectionsRepository.create({ 22 | socket_id, 23 | user_id, 24 | admin_id, 25 | id, 26 | }); 27 | 28 | await this.connectionsRepository.save(connection); 29 | } 30 | 31 | async findByUserId(user_id: string) { 32 | const connection = this.connectionsRepository.findOne({ user_id }); 33 | 34 | return connection; 35 | } 36 | 37 | async findAllWithoutAdmin() { 38 | const connections = this.connectionsRepository.find({ 39 | where: { 40 | admin_id: null, 41 | }, 42 | relations: ['user'], 43 | }); 44 | 45 | return connections; 46 | } 47 | 48 | async findBySocketID(socket_id: string) { 49 | const connection = this.connectionsRepository.findOne({ socket_id }); 50 | 51 | return connection; 52 | } 53 | 54 | async updateAdminID(user_id: string, admin_id: string) { 55 | await this.connectionsRepository 56 | .createQueryBuilder() 57 | .update(Connection) 58 | .set({ admin_id }) 59 | .where('user_id = :user_id', { 60 | user_id, 61 | }) 62 | .execute(); 63 | } 64 | } 65 | 66 | export { ConnectionsService }; 67 | -------------------------------------------------------------------------------- /src/websocket/client.ts: -------------------------------------------------------------------------------- 1 | import { io } from '../http'; 2 | 3 | import { ConnectionsService } from '../services/ConnectionsService'; 4 | import { MessagesService } from '../services/MessagesService'; 5 | import { UsersService } from '../services/UsersService'; 6 | 7 | interface IParams { 8 | text: string; 9 | email: string; 10 | } 11 | 12 | io.on('connect', socket => { 13 | const connectionsService = new ConnectionsService(); 14 | const usersService = new UsersService(); 15 | const messagesService = new MessagesService(); 16 | 17 | socket.on('client_first_access', async params => { 18 | const socket_id = socket.id; 19 | const { text, email } = params as IParams; 20 | let user_id = null; 21 | 22 | const userExists = await usersService.findByEmail(email); 23 | 24 | if (!userExists) { 25 | const user = await usersService.create(email); 26 | 27 | await connectionsService.create({ 28 | socket_id, 29 | user_id: user.id, 30 | }); 31 | 32 | user_id = user.id; 33 | } else { 34 | user_id = userExists.id; 35 | const connection = await connectionsService.findByUserId(userExists.id); 36 | 37 | if (!connection) { 38 | await connectionsService.create({ 39 | socket_id, 40 | user_id: userExists.id, 41 | }); 42 | } else { 43 | connection.socket_id = socket_id; 44 | await connectionsService.create(connection); 45 | } 46 | } 47 | 48 | await messagesService.create({ 49 | text, 50 | user_id, 51 | }); 52 | 53 | const allMessages = await messagesService.listByUser(user_id); 54 | 55 | socket.emit('client_list_all_messages', allMessages); 56 | 57 | const allUsers = await connectionsService.findAllWithoutAdmin(); 58 | io.emit('admin_list_all_users', allUsers); 59 | }); 60 | 61 | socket.on('client_send_to_admin', async params => { 62 | const { text, socket_admin_id } = params; 63 | 64 | const socket_id = socket.id; 65 | 66 | const { user_id } = await connectionsService.findBySocketID(socket_id); 67 | 68 | const message = await messagesService.create({ 69 | text, 70 | user_id, 71 | }); 72 | 73 | io.to(socket_admin_id).emit('admin_receive_message', { 74 | message, 75 | socket_id, 76 | }); 77 | }); 78 | }); 79 | -------------------------------------------------------------------------------- /public/js/chat.js: -------------------------------------------------------------------------------- 1 | let socket_admin_id = null; 2 | let emailUser = null; 3 | let socket = null; 4 | 5 | document.querySelector('#start_chat').addEventListener('click', event => { 6 | const chat_help = document.getElementById('chat_help'); 7 | chat_help.style.display = 'none'; 8 | 9 | const chat_in_support = document.getElementById('chat_in_support'); 10 | chat_in_support.style.display = 'block'; 11 | 12 | socket = io(); 13 | 14 | const email = document.getElementById('email').value; 15 | emailUser = email; 16 | const text = document.getElementById('txt_help').value; 17 | 18 | socket.on('connect', () => { 19 | const params = { 20 | email, 21 | text, 22 | }; 23 | socket.emit('client_first_access', params, (call, err) => { 24 | if (err) { 25 | console.err(err); 26 | } else { 27 | console.log(call); 28 | } 29 | }); 30 | }); 31 | 32 | socket.on('client_list_all_messages', messages => { 33 | var template_client = document.getElementById('message-user-template').innerHTML; 34 | var template_admin = document.getElementById('admin-template').innerHTML; 35 | 36 | messages.forEach(message => { 37 | if (message.admin_id === null) { 38 | const rendered = Mustache.render(template_client, { 39 | message: message.text, 40 | email, 41 | }); 42 | 43 | document.getElementById('messages').innerHTML += rendered; 44 | } else { 45 | const rendered = Mustache.render(template_admin, { 46 | message_admin: message.text, 47 | }); 48 | 49 | document.getElementById('messages').innerHTML += rendered; 50 | } 51 | }); 52 | }); 53 | 54 | socket.on('admin_send_to_client', message => { 55 | socket_admin_id = message.socket_id; 56 | 57 | const template_admin = document.getElementById('admin-template').innerHTML; 58 | 59 | const rendered = Mustache.render(template_admin, { 60 | message_admin: message.text, 61 | }); 62 | 63 | document.getElementById('messages').innerHTML += rendered; 64 | }); 65 | }); 66 | 67 | document.querySelector('#send_message_button').addEventListener('click', event => { 68 | const text = document.getElementById('message_user'); 69 | 70 | const params = { 71 | text: text.value, 72 | socket_admin_id, 73 | }; 74 | 75 | socket.emit('client_send_to_admin', params); 76 | 77 | const template_client = document.getElementById('message-user-template').innerHTML; 78 | 79 | const rendered = Mustache.render(template_client, { 80 | message: text.value, 81 | email: emailUser, 82 | }); 83 | 84 | document.getElementById('messages').innerHTML += rendered; 85 | 86 | text.value = ''; 87 | }); 88 | -------------------------------------------------------------------------------- /public/js/admin.js: -------------------------------------------------------------------------------- 1 | const socket = io(); 2 | let connectionsUsers = []; 3 | let connectionInSupport = []; 4 | 5 | socket.on('admin_list_all_users', connections => { 6 | connectionsUsers = connections; 7 | document.getElementById('list_users').innerHTML = ''; 8 | 9 | let template = document.getElementById('template').innerHTML; 10 | 11 | connections.forEach(connection => { 12 | const rendered = Mustache.render(template, { 13 | email: connection.user.email, 14 | id: connection.socket_id, 15 | }); 16 | 17 | document.getElementById('list_users').innerHTML += rendered; 18 | }); 19 | }); 20 | 21 | function call(id) { 22 | const connection = connectionsUsers.find(connection => connection.socket_id === id); 23 | 24 | connectionInSupport.push(connection); 25 | 26 | const template = document.getElementById('admin_template').innerHTML; 27 | 28 | const rendered = Mustache.render(template, { 29 | email: connection.user.email, 30 | id: connection.user_id, 31 | }); 32 | 33 | document.getElementById('supports').innerHTML += rendered; 34 | 35 | const params = { 36 | user_id: connection.user_id, 37 | }; 38 | 39 | socket.emit('admin_user_in_support', params); 40 | 41 | socket.emit('admin_list_messages_by_user', params, messages => { 42 | const divMessages = document.getElementById(`allMessages${connection.user_id}`); 43 | 44 | messages.forEach(message => { 45 | const createDiv = document.createElement('div'); 46 | 47 | if (message.admin_id === null) { 48 | createDiv.className = 'admin_message_client'; 49 | 50 | createDiv.innerHTML = `${connection.user.email} `; 51 | createDiv.innerHTML += `${message.text}`; 52 | createDiv.innerHTML += `${dayjs( 53 | message.created_at, 54 | ).format('DD/MM/YYYY HH:mm:ss')}`; 55 | } else { 56 | createDiv.className = 'admin_message_admin'; 57 | 58 | createDiv.innerHTML = `Atendente: ${message.text}`; 59 | createDiv.innerHTML += `${dayjs().format( 85 | 'DD/MM/YYYY HH:mm:ss', 86 | )}`; 87 | 88 | divMessages.appendChild(createDiv); 89 | 90 | text.value = ''; 91 | } 92 | 93 | socket.on('admin_receive_message', data => { 94 | console.log(data); 95 | const connection = connectionInSupport.find( 96 | connection => connection.socket_id === data.socket_id, 97 | ); 98 | 99 | const divMessages = document.getElementById(`allMessages${connection.user_id}`); 100 | 101 | const createDiv = document.createElement('div'); 102 | 103 | createDiv.className = 'admin_message_client'; 104 | createDiv.innerHTML = `${connection.user.email} `; 105 | createDiv.innerHTML += `${data.message.text}`; 106 | createDiv.innerHTML += `${dayjs( 107 | data.message.created_at, 108 | ).format('DD/MM/YYYY HH:mm:ss')}`; 109 | 110 | divMessages.appendChild(createDiv); 111 | }); 112 | -------------------------------------------------------------------------------- /public/html/client.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | Em suporte ... 19 |
20 | 21 |
22 |
23 | 24 |
25 | 34 | 41 |
42 | 43 |
44 |
45 | 50 |
51 | 52 |
53 |
54 |
55 | 56 |
57 |
58 | Iniciar um chat de suporte 59 |
60 | 61 |
62 |
63 |
64 |
65 | Como podemos te ajudar? 66 | 74 | 75 | caracteres restantes 77 |
78 | 79 |
80 | Seu e-mail 81 | 82 |
83 | 84 |
85 | 86 | 87 |
88 |
89 |
90 | 91 |
92 | 95 |
96 | 97 | 98 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | -------------------------------------------------------------------------------- /Insomnia.json: -------------------------------------------------------------------------------- 1 | {"_type":"export","__export_format":4,"__export_date":"2021-04-28T15:39:02.636Z","__export_source":"insomnia.desktop.app:v2021.2.2","resources":[{"_id":"req_6d6fc39684854707926fe44898fec261","parentId":"wrk_64f78b315137405998fb0c0771feaf68","modified":1619624319258,"created":1618533069939,"url":"{{baseURL}}/settings","name":"Create Setting","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"chat\": true,\n\t\"username\": \"admin\"\n}\t"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json","id":"pair_cbe6317349b945a082319ddb5b92e1b7"}],"authentication":{},"metaSortKey":-1619114919710,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"wrk_64f78b315137405998fb0c0771feaf68","parentId":null,"modified":1618533048303,"created":1618533048303,"name":"NLW #05","description":"","scope":"collection","_type":"workspace"},{"_id":"req_d1fab871a2484b4c82378f0667051d4e","parentId":"wrk_64f78b315137405998fb0c0771feaf68","modified":1619624322360,"created":1618869338261,"url":"{{baseURL}}/users","name":"Create User","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"email\": \"teste@gmail.com\"\n}\t"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json","id":"pair_2769e36e2d5547c78e01e16783b0ce45"}],"authentication":{},"metaSortKey":-1619114919685,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_b28a7d8284794649acc20ded38f7cdb6","parentId":"wrk_64f78b315137405998fb0c0771feaf68","modified":1619624323555,"created":1618870615002,"url":"{{baseURL}}/messages","name":"Create Message","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n\t\"user_id\": \"4ff77a47-59ea-4533-97e0-ebc15b251a95\",\n\t\"text\": \"Teste\"\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json","id":"pair_2769e36e2d5547c78e01e16783b0ce45"}],"authentication":{},"metaSortKey":-1619114919672.5,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_a90fbdf38c2b4640885748b94d3678b6","parentId":"wrk_64f78b315137405998fb0c0771feaf68","modified":1619115078566,"created":1619114919660,"url":"{{baseURL}}/settings/admin","name":"Get Admin","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{},"metaSortKey":-1619114919660,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_82265e1e373840f799a1be787192d8bb","parentId":"wrk_64f78b315137405998fb0c0771feaf68","modified":1619044866795,"created":1619044845316,"url":"{{baseURL}}/settings/admin","name":"Update Settings","description":"","method":"PUT","body":{"mimeType":"application/json","text":"{\n\t\"chat\": true\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json","id":"pair_6bd89a0c62ca42cba5a927b80d3474d8"}],"authentication":{},"metaSortKey":-1619044845316,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"req_7cca8da30f644f379c866b8e1bcb84ef","parentId":"wrk_64f78b315137405998fb0c0771feaf68","modified":1618871090793,"created":1618871074108,"url":"{{baseURL}}/messages/95418ca0-0c0d-4dbe-8aec-69f0b333aa9f","name":"List Messages By User","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{},"metaSortKey":-1618230499533.5,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"env_26fb7632e12f5bbac86aa46eaf8b7247edd0c4ca","parentId":"wrk_64f78b315137405998fb0c0771feaf68","modified":1618533048404,"created":1618533048404,"name":"Base Environment","data":{},"dataPropertyOrder":null,"color":null,"isPrivate":false,"metaSortKey":1618533048404,"_type":"environment"},{"_id":"jar_26fb7632e12f5bbac86aa46eaf8b7247edd0c4ca","parentId":"wrk_64f78b315137405998fb0c0771feaf68","modified":1618533048405,"created":1618533048405,"name":"Default Jar","cookies":[],"_type":"cookie_jar"},{"_id":"spc_36709f67d03649f49db5a94d47fe866c","parentId":"wrk_64f78b315137405998fb0c0771feaf68","modified":1618533048308,"created":1618533048308,"fileName":"NLW #05","contents":"","contentType":"yaml","_type":"api_spec"},{"_id":"env_ca80965a1af94f61b9bc73123b158eff","parentId":"env_26fb7632e12f5bbac86aa46eaf8b7247edd0c4ca","modified":1618533098606,"created":1618533079942,"name":"Dev","data":{"baseURL":"http://localhost:3333"},"dataPropertyOrder":{"&":["baseURL"]},"color":"#27e70d","isPrivate":false,"metaSortKey":1618533079942,"_type":"environment"}]} -------------------------------------------------------------------------------- /public/css/styles.css: -------------------------------------------------------------------------------- 1 | *, 2 | root, 3 | html { 4 | padding: 5px; 5 | box-sizing: border-box; 6 | } 7 | 8 | body { 9 | background: #ffffff; 10 | } 11 | 12 | .btn_support { 13 | float: right; 14 | width: 153px; 15 | height: 56px; 16 | 17 | background: #8257e6; 18 | border-radius: 68px; 19 | text-align: center; 20 | color: #fff; 21 | outline: none; 22 | border: 0; 23 | 24 | display: flex; 25 | align-items: center; 26 | justify-content: space-evenly; 27 | 28 | position: absolute; 29 | bottom: 30px; 30 | right: 10px; 31 | cursor: pointer; 32 | } 33 | 34 | .btn_support:hover { 35 | opacity: 0.9; 36 | } 37 | 38 | .chat { 39 | display: none; 40 | font-family: "Roboto", sans-serif; 41 | } 42 | 43 | .in_support_header { 44 | float: right; 45 | width: 320px; 46 | height: 56px; 47 | 48 | background: #8257e6; 49 | border-radius: 16px 16px 0px 0px; 50 | 51 | display: flex; 52 | justify-content: space-between; 53 | } 54 | 55 | .in_support_header span { 56 | color: #fff; 57 | display: flex; 58 | align-items: center; 59 | } 60 | 61 | .icon_close { 62 | align-items: center; 63 | display: flex; 64 | cursor: pointer; 65 | } 66 | 67 | .chat_support { 68 | position: absolute; 69 | max-width: 330px; 70 | right: 10px; 71 | animation: up 1s; 72 | } 73 | 74 | .chat_support_hide { 75 | animation: down 1s; 76 | animation-fill-mode: forwards; 77 | } 78 | 79 | @keyframes up { 80 | from { 81 | transform: translateY(60vh); 82 | } 83 | to { 84 | transform: translateY(0); 85 | } 86 | } 87 | 88 | @keyframes down { 89 | from { 90 | transform: translateY(0); 91 | } 92 | to { 93 | transform: translateY(100vh); 94 | } 95 | } 96 | 97 | .client { 98 | display: flex; 99 | flex-direction: column; 100 | } 101 | 102 | .client .name { 103 | text-align: end; 104 | } 105 | 106 | .client_message { 107 | background: #f2ecfa; 108 | padding: 20px 10px; 109 | margin: 10px 0; 110 | width: 250px; 111 | margin-left: 30px; 112 | border-radius: 4px; 113 | line-height: 20px; 114 | } 115 | 116 | .client .message { 117 | background: #f2ecfa; 118 | /* background: #cecad4; */ 119 | padding: 20px 10px; 120 | margin: 10px 0; 121 | width: 250px; 122 | margin-left: 30px; 123 | border-radius: 4px; 124 | line-height: 20px; 125 | } 126 | 127 | .text_support { 128 | border: 1px solid #cec9c9; 129 | max-height: 500px; 130 | overflow-y: scroll; 131 | /* border-bottom: 0px; */ 132 | } 133 | 134 | .admin { 135 | display: flex; 136 | flex-direction: column; 137 | } 138 | 139 | .admin .message { 140 | width: 230px; 141 | background: #f2ecfa; 142 | border-radius: 4px; 143 | padding: 10px; 144 | margin-left: 12px; 145 | } 146 | 147 | .message_send { 148 | display: flex; 149 | justify-content: space-between; 150 | border: 1px solid #cec9c9; 151 | align-items: center; 152 | } 153 | 154 | .message_send input { 155 | outline: none; 156 | height: 34px; 157 | align-items: center; 158 | width: 252px; 159 | } 160 | 161 | .send_message_button { 162 | display: flex; 163 | cursor: pointer; 164 | } 165 | 166 | .line { 167 | border: 1px solid #e9e9e9; 168 | padding: 0; 169 | margin: 0; 170 | } 171 | 172 | .text_help { 173 | padding-top: 8px; 174 | } 175 | 176 | .text_help textarea { 177 | width: 290px; 178 | height: 115px; 179 | 180 | padding: 10px; 181 | 182 | background: #ffffff; 183 | border: 1px solid #dddddd; 184 | box-sizing: border-box; 185 | border-radius: 4px; 186 | 187 | resize: none; 188 | } 189 | 190 | .first_email { 191 | display: flex; 192 | flex-direction: column; 193 | margin-top: 34px; 194 | } 195 | 196 | .first_email input { 197 | border: 1px solid #dddddd; 198 | box-sizing: border-box; 199 | border-radius: 4px; 200 | height: 42px; 201 | width: 290px; 202 | } 203 | 204 | input[type="text"]:focus { 205 | outline: 1px solid #a8a8a8; 206 | } 207 | 208 | .btn_start_chat { 209 | width: 121px; 210 | height: 40px; 211 | 212 | background: #8257e6; 213 | border-radius: 4px; 214 | color: #fff; 215 | border: none; 216 | cursor: pointer; 217 | } 218 | 219 | .btn_start_chat:hover { 220 | opacity: 0.8; 221 | } 222 | 223 | .btn_cancel { 224 | border: 0; 225 | cursor: pointer; 226 | margin-right: 10px; 227 | } 228 | 229 | .button { 230 | display: flex; 231 | flex-direction: row; 232 | justify-content: flex-end; 233 | align-items: center; 234 | padding: 10px; 235 | } 236 | 237 | #txt_help:focus { 238 | outline: 1px solid #a8a8a8; 239 | } 240 | 241 | .charac_remaining { 242 | font-size: 10px; 243 | float: right; 244 | } 245 | 246 | .date { 247 | text-align: right; 248 | font-size: 1px; 249 | } 250 | 251 | .btn_atd { 252 | cursor: pointer; 253 | color: #fff; 254 | background: #b32a2a; 255 | border: none; 256 | height: 30px; 257 | padding: 10px; 258 | display: flex; 259 | align-items: center; 260 | } 261 | 262 | .btn_atd:hover { 263 | opacity: 0.9; 264 | } 265 | 266 | .admin { 267 | border: 1px solid #ededed; 268 | margin-top: 5px; 269 | } 270 | 271 | .email { 272 | float: left; 273 | width: 350px; 274 | } 275 | 276 | .admin_send_message { 277 | display: flex; 278 | flex-direction: row; 279 | } 280 | 281 | .admin_send_message input { 282 | width: 300px; 283 | margin-right: 10px; 284 | } 285 | 286 | .admin_send_message button { 287 | width: 100px; 288 | cursor: pointer; 289 | } 290 | 291 | .admin_list_messages { 292 | height: 300px; 293 | overflow-y: scroll; 294 | } 295 | 296 | .admin_message_admin { 297 | width: 300px; 298 | background: #e0e0e0; 299 | padding: 10px; 300 | margin: 12px; 301 | display: flex; 302 | flex-direction: column; 303 | 304 | border-radius: 10px; 305 | 306 | font-family: "Roboto", sans-serif; 307 | } 308 | 309 | #atendimentos { 310 | width: 600px; 311 | } 312 | 313 | .admin_message_client { 314 | width: 300px; 315 | background: #6f5eab; 316 | padding: 10px; 317 | margin: 10px; 318 | color: #eee; 319 | display: flex; 320 | flex-direction: column; 321 | 322 | border-radius: 10px; 323 | font-family: "Roboto", sans-serif; 324 | } 325 | 326 | .admin_date { 327 | font-size: 10px; 328 | color: #fff; 329 | } 330 | 331 | .in_support { 332 | background: #8d7aef; 333 | color: #fff; 334 | font-size: 17px; 335 | } 336 | 337 | .btn_send { 338 | background: #1eb363; 339 | color: #eee; 340 | border: none; 341 | } 342 | 343 | .btn_send:hover { 344 | opacity: 0.8; 345 | } 346 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Basic Options */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, 8 | "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, 9 | // "lib": [], /* Specify library files to be included in the compilation. */ 10 | // "allowJs": true, /* Allow javascript files to be compiled. */ 11 | // "checkJs": true, /* Report errors in .js files. */ 12 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ 13 | // "declaration": true, /* Generates corresponding '.d.ts' file. */ 14 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ 15 | // "sourceMap": true, /* Generates corresponding '.map' file. */ 16 | // "outFile": "./", /* Concatenate and emit output to single file. */ 17 | // "outDir": "./", /* Redirect output structure to the directory. */ 18 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 19 | // "composite": true, /* Enable project compilation */ 20 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ 21 | // "removeComments": true, /* Do not emit comments to output. */ 22 | // "noEmit": true, /* Do not emit outputs. */ 23 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 24 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 25 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 26 | 27 | /* Strict Type-Checking Options */ 28 | "strict": false /* Enable all strict type-checking options. */, 29 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 30 | // "strictNullChecks": true, /* Enable strict null checks. */ 31 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 32 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ 33 | "strictPropertyInitialization": false /* Enable strict checking of property initialization in classes. */, 34 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 35 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 36 | 37 | /* Additional Checks */ 38 | // "noUnusedLocals": true, /* Report errors on unused locals. */ 39 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 40 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 41 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 42 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 43 | // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ 44 | 45 | /* Module Resolution Options */ 46 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 47 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 48 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 49 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 50 | // "typeRoots": [], /* List of folders to include type definitions from. */ 51 | // "types": [], /* Type declaration files to be included in compilation. */ 52 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 53 | "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, 54 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 55 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 56 | 57 | /* Source Map Options */ 58 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 59 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 60 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 61 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 62 | 63 | /* Experimental Options */ 64 | "experimentalDecorators": true /* Enables experimental support for ES7 decorators. */, 65 | "emitDecoratorMetadata": true /* Enables experimental support for emitting type metadata for decorators. */, 66 | 67 | /* Advanced Options */ 68 | "skipLibCheck": true /* Skip type checking of declaration files. */, 69 | "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sqltools/formatter@^1.2.2": 6 | version "1.2.3" 7 | resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.3.tgz#1185726610acc37317ddab11c3c7f9066966bd20" 8 | integrity sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg== 9 | 10 | "@types/body-parser@*": 11 | version "1.19.0" 12 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" 13 | integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== 14 | dependencies: 15 | "@types/connect" "*" 16 | "@types/node" "*" 17 | 18 | "@types/component-emitter@^1.2.10": 19 | version "1.2.10" 20 | resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.10.tgz#ef5b1589b9f16544642e473db5ea5639107ef3ea" 21 | integrity sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg== 22 | 23 | "@types/connect@*": 24 | version "3.4.34" 25 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" 26 | integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== 27 | dependencies: 28 | "@types/node" "*" 29 | 30 | "@types/cookie@^0.4.0": 31 | version "0.4.0" 32 | resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.0.tgz#14f854c0f93d326e39da6e3b6f34f7d37513d108" 33 | integrity sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg== 34 | 35 | "@types/cors@^2.8.8": 36 | version "2.8.10" 37 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.10.tgz#61cc8469849e5bcdd0c7044122265c39cec10cf4" 38 | integrity sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ== 39 | 40 | "@types/express-serve-static-core@^4.17.18": 41 | version "4.17.19" 42 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz#00acfc1632e729acac4f1530e9e16f6dd1508a1d" 43 | integrity sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA== 44 | dependencies: 45 | "@types/node" "*" 46 | "@types/qs" "*" 47 | "@types/range-parser" "*" 48 | 49 | "@types/express@^4.17.11": 50 | version "4.17.11" 51 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545" 52 | integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg== 53 | dependencies: 54 | "@types/body-parser" "*" 55 | "@types/express-serve-static-core" "^4.17.18" 56 | "@types/qs" "*" 57 | "@types/serve-static" "*" 58 | 59 | "@types/mime@^1": 60 | version "1.3.2" 61 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" 62 | integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== 63 | 64 | "@types/node@*", "@types/node@>=10.0.0": 65 | version "14.14.41" 66 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.41.tgz#d0b939d94c1d7bd53d04824af45f1139b8c45615" 67 | integrity sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g== 68 | 69 | "@types/qs@*": 70 | version "6.9.6" 71 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" 72 | integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== 73 | 74 | "@types/range-parser@*": 75 | version "1.2.3" 76 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" 77 | integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== 78 | 79 | "@types/serve-static@*": 80 | version "1.13.9" 81 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" 82 | integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== 83 | dependencies: 84 | "@types/mime" "^1" 85 | "@types/node" "*" 86 | 87 | "@types/strip-bom@^3.0.0": 88 | version "3.0.0" 89 | resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" 90 | integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I= 91 | 92 | "@types/strip-json-comments@0.0.30": 93 | version "0.0.30" 94 | resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" 95 | integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== 96 | 97 | "@types/uuid@^8.3.0": 98 | version "8.3.0" 99 | resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" 100 | integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== 101 | 102 | "@types/zen-observable@^0.8.2": 103 | version "0.8.2" 104 | resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71" 105 | integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== 106 | 107 | abbrev@1: 108 | version "1.1.1" 109 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 110 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 111 | 112 | accepts@~1.3.4, accepts@~1.3.7: 113 | version "1.3.7" 114 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 115 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 116 | dependencies: 117 | mime-types "~2.1.24" 118 | negotiator "0.6.2" 119 | 120 | ajv@^6.12.3: 121 | version "6.12.6" 122 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 123 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 124 | dependencies: 125 | fast-deep-equal "^3.1.1" 126 | fast-json-stable-stringify "^2.0.0" 127 | json-schema-traverse "^0.4.1" 128 | uri-js "^4.2.2" 129 | 130 | ansi-regex@^2.0.0: 131 | version "2.1.1" 132 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 133 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 134 | 135 | ansi-regex@^3.0.0: 136 | version "3.0.0" 137 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 138 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 139 | 140 | ansi-regex@^5.0.0: 141 | version "5.0.0" 142 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 143 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 144 | 145 | ansi-styles@^2.2.1: 146 | version "2.2.1" 147 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 148 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 149 | 150 | ansi-styles@^3.2.1: 151 | version "3.2.1" 152 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 153 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 154 | dependencies: 155 | color-convert "^1.9.0" 156 | 157 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 158 | version "4.3.0" 159 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 160 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 161 | dependencies: 162 | color-convert "^2.0.1" 163 | 164 | any-promise@^1.0.0: 165 | version "1.3.0" 166 | resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" 167 | integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= 168 | 169 | anymatch@~3.1.1: 170 | version "3.1.2" 171 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 172 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 173 | dependencies: 174 | normalize-path "^3.0.0" 175 | picomatch "^2.0.4" 176 | 177 | app-root-path@^3.0.0: 178 | version "3.0.0" 179 | resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.0.0.tgz#210b6f43873227e18a4b810a032283311555d5ad" 180 | integrity sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw== 181 | 182 | aproba@^1.0.3: 183 | version "1.2.0" 184 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 185 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== 186 | 187 | are-we-there-yet@~1.1.2: 188 | version "1.1.5" 189 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 190 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== 191 | dependencies: 192 | delegates "^1.0.0" 193 | readable-stream "^2.0.6" 194 | 195 | arg@^4.1.0: 196 | version "4.1.3" 197 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 198 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 199 | 200 | argparse@^2.0.1: 201 | version "2.0.1" 202 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 203 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 204 | 205 | array-find-index@^1.0.1: 206 | version "1.0.2" 207 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" 208 | integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= 209 | 210 | array-flatten@1.1.1: 211 | version "1.1.1" 212 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 213 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 214 | 215 | asn1@~0.2.3: 216 | version "0.2.4" 217 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 218 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 219 | dependencies: 220 | safer-buffer "~2.1.0" 221 | 222 | assert-plus@1.0.0, assert-plus@^1.0.0: 223 | version "1.0.0" 224 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 225 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 226 | 227 | async@0.9.x: 228 | version "0.9.2" 229 | resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" 230 | integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= 231 | 232 | asynckit@^0.4.0: 233 | version "0.4.0" 234 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 235 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 236 | 237 | aws-sign2@~0.7.0: 238 | version "0.7.0" 239 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 240 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 241 | 242 | aws4@^1.8.0: 243 | version "1.11.0" 244 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" 245 | integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== 246 | 247 | backo2@~1.0.2: 248 | version "1.0.2" 249 | resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" 250 | integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= 251 | 252 | balanced-match@^1.0.0: 253 | version "1.0.2" 254 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 255 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 256 | 257 | base64-arraybuffer@0.1.4: 258 | version "0.1.4" 259 | resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" 260 | integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= 261 | 262 | base64-js@^1.3.1: 263 | version "1.5.1" 264 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 265 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 266 | 267 | base64id@2.0.0, base64id@~2.0.0: 268 | version "2.0.0" 269 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" 270 | integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== 271 | 272 | bcrypt-pbkdf@^1.0.0: 273 | version "1.0.2" 274 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 275 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 276 | dependencies: 277 | tweetnacl "^0.14.3" 278 | 279 | binary-extensions@^2.0.0: 280 | version "2.2.0" 281 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 282 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 283 | 284 | block-stream@*: 285 | version "0.0.9" 286 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 287 | integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= 288 | dependencies: 289 | inherits "~2.0.0" 290 | 291 | body-parser@1.19.0: 292 | version "1.19.0" 293 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 294 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 295 | dependencies: 296 | bytes "3.1.0" 297 | content-type "~1.0.4" 298 | debug "2.6.9" 299 | depd "~1.1.2" 300 | http-errors "1.7.2" 301 | iconv-lite "0.4.24" 302 | on-finished "~2.3.0" 303 | qs "6.7.0" 304 | raw-body "2.4.0" 305 | type-is "~1.6.17" 306 | 307 | brace-expansion@^1.1.7: 308 | version "1.1.11" 309 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 310 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 311 | dependencies: 312 | balanced-match "^1.0.0" 313 | concat-map "0.0.1" 314 | 315 | braces@~3.0.2: 316 | version "3.0.2" 317 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 318 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 319 | dependencies: 320 | fill-range "^7.0.1" 321 | 322 | buffer-from@^1.0.0: 323 | version "1.1.1" 324 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 325 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 326 | 327 | buffer@^6.0.3: 328 | version "6.0.3" 329 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" 330 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== 331 | dependencies: 332 | base64-js "^1.3.1" 333 | ieee754 "^1.2.1" 334 | 335 | bytes@3.1.0: 336 | version "3.1.0" 337 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 338 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 339 | 340 | camelcase-keys@^2.0.0: 341 | version "2.1.0" 342 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" 343 | integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= 344 | dependencies: 345 | camelcase "^2.0.0" 346 | map-obj "^1.0.0" 347 | 348 | camelcase@^2.0.0: 349 | version "2.1.1" 350 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" 351 | integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= 352 | 353 | caseless@~0.12.0: 354 | version "0.12.0" 355 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 356 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 357 | 358 | chalk@^1.1.1: 359 | version "1.1.3" 360 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 361 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 362 | dependencies: 363 | ansi-styles "^2.2.1" 364 | escape-string-regexp "^1.0.2" 365 | has-ansi "^2.0.0" 366 | strip-ansi "^3.0.0" 367 | supports-color "^2.0.0" 368 | 369 | chalk@^2.4.2: 370 | version "2.4.2" 371 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 372 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 373 | dependencies: 374 | ansi-styles "^3.2.1" 375 | escape-string-regexp "^1.0.5" 376 | supports-color "^5.3.0" 377 | 378 | chalk@^4.0.0, chalk@^4.1.0: 379 | version "4.1.0" 380 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 381 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 382 | dependencies: 383 | ansi-styles "^4.1.0" 384 | supports-color "^7.1.0" 385 | 386 | chokidar@^3.5.1: 387 | version "3.5.1" 388 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 389 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 390 | dependencies: 391 | anymatch "~3.1.1" 392 | braces "~3.0.2" 393 | glob-parent "~5.1.0" 394 | is-binary-path "~2.1.0" 395 | is-glob "~4.0.1" 396 | normalize-path "~3.0.0" 397 | readdirp "~3.5.0" 398 | optionalDependencies: 399 | fsevents "~2.3.1" 400 | 401 | chownr@^1.1.1: 402 | version "1.1.4" 403 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 404 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 405 | 406 | cli-highlight@^2.1.10: 407 | version "2.1.11" 408 | resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" 409 | integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== 410 | dependencies: 411 | chalk "^4.0.0" 412 | highlight.js "^10.7.1" 413 | mz "^2.4.0" 414 | parse5 "^5.1.1" 415 | parse5-htmlparser2-tree-adapter "^6.0.0" 416 | yargs "^16.0.0" 417 | 418 | cliui@^7.0.2: 419 | version "7.0.4" 420 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 421 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 422 | dependencies: 423 | string-width "^4.2.0" 424 | strip-ansi "^6.0.0" 425 | wrap-ansi "^7.0.0" 426 | 427 | code-point-at@^1.0.0: 428 | version "1.1.0" 429 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 430 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 431 | 432 | color-convert@^1.9.0: 433 | version "1.9.3" 434 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 435 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 436 | dependencies: 437 | color-name "1.1.3" 438 | 439 | color-convert@^2.0.1: 440 | version "2.0.1" 441 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 442 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 443 | dependencies: 444 | color-name "~1.1.4" 445 | 446 | color-name@1.1.3: 447 | version "1.1.3" 448 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 449 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 450 | 451 | color-name@~1.1.4: 452 | version "1.1.4" 453 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 454 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 455 | 456 | combined-stream@^1.0.6, combined-stream@~1.0.6: 457 | version "1.0.8" 458 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 459 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 460 | dependencies: 461 | delayed-stream "~1.0.0" 462 | 463 | component-emitter@~1.3.0: 464 | version "1.3.0" 465 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" 466 | integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== 467 | 468 | concat-map@0.0.1: 469 | version "0.0.1" 470 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 471 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 472 | 473 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 474 | version "1.1.0" 475 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 476 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 477 | 478 | content-disposition@0.5.3: 479 | version "0.5.3" 480 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 481 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 482 | dependencies: 483 | safe-buffer "5.1.2" 484 | 485 | content-type@~1.0.4: 486 | version "1.0.4" 487 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 488 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 489 | 490 | cookie-signature@1.0.6: 491 | version "1.0.6" 492 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 493 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 494 | 495 | cookie@0.4.0: 496 | version "0.4.0" 497 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 498 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 499 | 500 | cookie@~0.4.1: 501 | version "0.4.1" 502 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" 503 | integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== 504 | 505 | core-util-is@1.0.2, core-util-is@~1.0.0: 506 | version "1.0.2" 507 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 508 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 509 | 510 | cors@~2.8.5: 511 | version "2.8.5" 512 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 513 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 514 | dependencies: 515 | object-assign "^4" 516 | vary "^1" 517 | 518 | create-require@^1.1.0: 519 | version "1.1.1" 520 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 521 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 522 | 523 | currently-unhandled@^0.4.1: 524 | version "0.4.1" 525 | resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" 526 | integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= 527 | dependencies: 528 | array-find-index "^1.0.1" 529 | 530 | dashdash@^1.12.0: 531 | version "1.14.1" 532 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 533 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 534 | dependencies: 535 | assert-plus "^1.0.0" 536 | 537 | dateformat@~1.0.4-1.2.3: 538 | version "1.0.12" 539 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" 540 | integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk= 541 | dependencies: 542 | get-stdin "^4.0.1" 543 | meow "^3.3.0" 544 | 545 | debug@2.6.9: 546 | version "2.6.9" 547 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 548 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 549 | dependencies: 550 | ms "2.0.0" 551 | 552 | debug@^3.2.6: 553 | version "3.2.7" 554 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 555 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 556 | dependencies: 557 | ms "^2.1.1" 558 | 559 | debug@^4.3.1, debug@~4.3.1: 560 | version "4.3.1" 561 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 562 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 563 | dependencies: 564 | ms "2.1.2" 565 | 566 | decamelize@^1.1.2: 567 | version "1.2.0" 568 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 569 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 570 | 571 | deep-extend@^0.6.0: 572 | version "0.6.0" 573 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 574 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 575 | 576 | delayed-stream@~1.0.0: 577 | version "1.0.0" 578 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 579 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 580 | 581 | delegates@^1.0.0: 582 | version "1.0.0" 583 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 584 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 585 | 586 | depd@~1.1.2: 587 | version "1.1.2" 588 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 589 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 590 | 591 | destroy@~1.0.4: 592 | version "1.0.4" 593 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 594 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 595 | 596 | detect-libc@^1.0.2: 597 | version "1.0.3" 598 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 599 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= 600 | 601 | diff@^4.0.1: 602 | version "4.0.2" 603 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 604 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 605 | 606 | dotenv@^8.2.0: 607 | version "8.2.0" 608 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" 609 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== 610 | 611 | dynamic-dedupe@^0.3.0: 612 | version "0.3.0" 613 | resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1" 614 | integrity sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE= 615 | dependencies: 616 | xtend "^4.0.0" 617 | 618 | ecc-jsbn@~0.1.1: 619 | version "0.1.2" 620 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 621 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 622 | dependencies: 623 | jsbn "~0.1.0" 624 | safer-buffer "^2.1.0" 625 | 626 | ee-first@1.1.1: 627 | version "1.1.1" 628 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 629 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 630 | 631 | ejs@^3.1.6: 632 | version "3.1.6" 633 | resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" 634 | integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== 635 | dependencies: 636 | jake "^10.6.1" 637 | 638 | emoji-regex@^8.0.0: 639 | version "8.0.0" 640 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 641 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 642 | 643 | encodeurl@~1.0.2: 644 | version "1.0.2" 645 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 646 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 647 | 648 | engine.io-client@~5.0.0: 649 | version "5.0.1" 650 | resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-5.0.1.tgz#9470fc6655c9789c5c0aa1a0e7e7d9ae9753a798" 651 | integrity sha512-CQtGN3YwfvbxVwpPugcsHe5rHT4KgT49CEcQppNtu9N7WxbPN0MAG27lGaem7bvtCFtGNLSL+GEqXsFSz36jTg== 652 | dependencies: 653 | base64-arraybuffer "0.1.4" 654 | component-emitter "~1.3.0" 655 | debug "~4.3.1" 656 | engine.io-parser "~4.0.1" 657 | has-cors "1.1.0" 658 | parseqs "0.0.6" 659 | parseuri "0.0.6" 660 | ws "~7.4.2" 661 | yeast "0.1.2" 662 | 663 | engine.io-parser@~4.0.0, engine.io-parser@~4.0.1: 664 | version "4.0.2" 665 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-4.0.2.tgz#e41d0b3fb66f7bf4a3671d2038a154024edb501e" 666 | integrity sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg== 667 | dependencies: 668 | base64-arraybuffer "0.1.4" 669 | 670 | engine.io@~5.0.0: 671 | version "5.0.0" 672 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-5.0.0.tgz#470dc94a8a4907fa4d2cd1fa6611426afcee61bf" 673 | integrity sha512-BATIdDV3H1SrE9/u2BAotvsmjJg0t1P4+vGedImSs1lkFAtQdvk4Ev1y4LDiPF7BPWgXWEG+NDY+nLvW3UrMWw== 674 | dependencies: 675 | accepts "~1.3.4" 676 | base64id "2.0.0" 677 | cookie "~0.4.1" 678 | cors "~2.8.5" 679 | debug "~4.3.1" 680 | engine.io-parser "~4.0.0" 681 | ws "~7.4.2" 682 | 683 | error-ex@^1.2.0: 684 | version "1.3.2" 685 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 686 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 687 | dependencies: 688 | is-arrayish "^0.2.1" 689 | 690 | escalade@^3.1.1: 691 | version "3.1.1" 692 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 693 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 694 | 695 | escape-html@~1.0.3: 696 | version "1.0.3" 697 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 698 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 699 | 700 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 701 | version "1.0.5" 702 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 703 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 704 | 705 | etag@~1.8.1: 706 | version "1.8.1" 707 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 708 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 709 | 710 | express@^4.17.1: 711 | version "4.17.1" 712 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 713 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 714 | dependencies: 715 | accepts "~1.3.7" 716 | array-flatten "1.1.1" 717 | body-parser "1.19.0" 718 | content-disposition "0.5.3" 719 | content-type "~1.0.4" 720 | cookie "0.4.0" 721 | cookie-signature "1.0.6" 722 | debug "2.6.9" 723 | depd "~1.1.2" 724 | encodeurl "~1.0.2" 725 | escape-html "~1.0.3" 726 | etag "~1.8.1" 727 | finalhandler "~1.1.2" 728 | fresh "0.5.2" 729 | merge-descriptors "1.0.1" 730 | methods "~1.1.2" 731 | on-finished "~2.3.0" 732 | parseurl "~1.3.3" 733 | path-to-regexp "0.1.7" 734 | proxy-addr "~2.0.5" 735 | qs "6.7.0" 736 | range-parser "~1.2.1" 737 | safe-buffer "5.1.2" 738 | send "0.17.1" 739 | serve-static "1.14.1" 740 | setprototypeof "1.1.1" 741 | statuses "~1.5.0" 742 | type-is "~1.6.18" 743 | utils-merge "1.0.1" 744 | vary "~1.1.2" 745 | 746 | extend@~3.0.2: 747 | version "3.0.2" 748 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 749 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 750 | 751 | extsprintf@1.3.0: 752 | version "1.3.0" 753 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 754 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 755 | 756 | extsprintf@^1.2.0: 757 | version "1.4.0" 758 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 759 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 760 | 761 | fast-deep-equal@^3.1.1: 762 | version "3.1.3" 763 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 764 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 765 | 766 | fast-json-stable-stringify@^2.0.0: 767 | version "2.1.0" 768 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 769 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 770 | 771 | figlet@^1.1.1: 772 | version "1.5.0" 773 | resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.5.0.tgz#2db4d00a584e5155a96080632db919213c3e003c" 774 | integrity sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww== 775 | 776 | filelist@^1.0.1: 777 | version "1.0.2" 778 | resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" 779 | integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== 780 | dependencies: 781 | minimatch "^3.0.4" 782 | 783 | fill-range@^7.0.1: 784 | version "7.0.1" 785 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 786 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 787 | dependencies: 788 | to-regex-range "^5.0.1" 789 | 790 | finalhandler@~1.1.2: 791 | version "1.1.2" 792 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 793 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 794 | dependencies: 795 | debug "2.6.9" 796 | encodeurl "~1.0.2" 797 | escape-html "~1.0.3" 798 | on-finished "~2.3.0" 799 | parseurl "~1.3.3" 800 | statuses "~1.5.0" 801 | unpipe "~1.0.0" 802 | 803 | find-up@^1.0.0: 804 | version "1.1.2" 805 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 806 | integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= 807 | dependencies: 808 | path-exists "^2.0.0" 809 | pinkie-promise "^2.0.0" 810 | 811 | forever-agent@~0.6.1: 812 | version "0.6.1" 813 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 814 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 815 | 816 | form-data@~2.3.2: 817 | version "2.3.3" 818 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 819 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 820 | dependencies: 821 | asynckit "^0.4.0" 822 | combined-stream "^1.0.6" 823 | mime-types "^2.1.12" 824 | 825 | forwarded@~0.1.2: 826 | version "0.1.2" 827 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 828 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 829 | 830 | fresh@0.5.2: 831 | version "0.5.2" 832 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 833 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 834 | 835 | fs-minipass@^1.2.5: 836 | version "1.2.7" 837 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" 838 | integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== 839 | dependencies: 840 | minipass "^2.6.0" 841 | 842 | fs.realpath@^1.0.0: 843 | version "1.0.0" 844 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 845 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 846 | 847 | fsevents@~2.3.1: 848 | version "2.3.2" 849 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 850 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 851 | 852 | fstream@^1.0.0, fstream@^1.0.12: 853 | version "1.0.12" 854 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" 855 | integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== 856 | dependencies: 857 | graceful-fs "^4.1.2" 858 | inherits "~2.0.0" 859 | mkdirp ">=0.5 0" 860 | rimraf "2" 861 | 862 | function-bind@^1.1.1: 863 | version "1.1.1" 864 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 865 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 866 | 867 | gauge@~2.7.3: 868 | version "2.7.4" 869 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 870 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 871 | dependencies: 872 | aproba "^1.0.3" 873 | console-control-strings "^1.0.0" 874 | has-unicode "^2.0.0" 875 | object-assign "^4.1.0" 876 | signal-exit "^3.0.0" 877 | string-width "^1.0.1" 878 | strip-ansi "^3.0.1" 879 | wide-align "^1.1.0" 880 | 881 | get-caller-file@^2.0.5: 882 | version "2.0.5" 883 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 884 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 885 | 886 | get-stdin@^4.0.1: 887 | version "4.0.1" 888 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" 889 | integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= 890 | 891 | getpass@^0.1.1: 892 | version "0.1.7" 893 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 894 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 895 | dependencies: 896 | assert-plus "^1.0.0" 897 | 898 | glob-parent@~5.1.0: 899 | version "5.1.2" 900 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 901 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 902 | dependencies: 903 | is-glob "^4.0.1" 904 | 905 | glob@^7.0.3, glob@^7.1.3, glob@^7.1.6: 906 | version "7.1.6" 907 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 908 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 909 | dependencies: 910 | fs.realpath "^1.0.0" 911 | inflight "^1.0.4" 912 | inherits "2" 913 | minimatch "^3.0.4" 914 | once "^1.3.0" 915 | path-is-absolute "^1.0.0" 916 | 917 | graceful-fs@^4.1.2: 918 | version "4.2.6" 919 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" 920 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== 921 | 922 | har-schema@^2.0.0: 923 | version "2.0.0" 924 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 925 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 926 | 927 | har-validator@~5.1.3: 928 | version "5.1.5" 929 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" 930 | integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== 931 | dependencies: 932 | ajv "^6.12.3" 933 | har-schema "^2.0.0" 934 | 935 | has-ansi@^2.0.0: 936 | version "2.0.0" 937 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 938 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 939 | dependencies: 940 | ansi-regex "^2.0.0" 941 | 942 | has-cors@1.1.0: 943 | version "1.1.0" 944 | resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" 945 | integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= 946 | 947 | has-flag@^3.0.0: 948 | version "3.0.0" 949 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 950 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 951 | 952 | has-flag@^4.0.0: 953 | version "4.0.0" 954 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 955 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 956 | 957 | has-unicode@^2.0.0: 958 | version "2.0.1" 959 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 960 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 961 | 962 | has@^1.0.3: 963 | version "1.0.3" 964 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 965 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 966 | dependencies: 967 | function-bind "^1.1.1" 968 | 969 | highlight.js@^10.7.1: 970 | version "10.7.2" 971 | resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" 972 | integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== 973 | 974 | hosted-git-info@^2.1.4: 975 | version "2.8.9" 976 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" 977 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== 978 | 979 | http-errors@1.7.2: 980 | version "1.7.2" 981 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 982 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 983 | dependencies: 984 | depd "~1.1.2" 985 | inherits "2.0.3" 986 | setprototypeof "1.1.1" 987 | statuses ">= 1.5.0 < 2" 988 | toidentifier "1.0.0" 989 | 990 | http-errors@~1.7.2: 991 | version "1.7.3" 992 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 993 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 994 | dependencies: 995 | depd "~1.1.2" 996 | inherits "2.0.4" 997 | setprototypeof "1.1.1" 998 | statuses ">= 1.5.0 < 2" 999 | toidentifier "1.0.0" 1000 | 1001 | http-signature@~1.2.0: 1002 | version "1.2.0" 1003 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 1004 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 1005 | dependencies: 1006 | assert-plus "^1.0.0" 1007 | jsprim "^1.2.2" 1008 | sshpk "^1.7.0" 1009 | 1010 | iconv-lite@0.4.24, iconv-lite@^0.4.4: 1011 | version "0.4.24" 1012 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1013 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1014 | dependencies: 1015 | safer-buffer ">= 2.1.2 < 3" 1016 | 1017 | ieee754@^1.2.1: 1018 | version "1.2.1" 1019 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 1020 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1021 | 1022 | ignore-walk@^3.0.1: 1023 | version "3.0.3" 1024 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" 1025 | integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== 1026 | dependencies: 1027 | minimatch "^3.0.4" 1028 | 1029 | indent-string@^2.1.0: 1030 | version "2.1.0" 1031 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" 1032 | integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= 1033 | dependencies: 1034 | repeating "^2.0.0" 1035 | 1036 | inflight@^1.0.4: 1037 | version "1.0.6" 1038 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1039 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1040 | dependencies: 1041 | once "^1.3.0" 1042 | wrappy "1" 1043 | 1044 | inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.3: 1045 | version "2.0.4" 1046 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1047 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1048 | 1049 | inherits@2.0.3: 1050 | version "2.0.3" 1051 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1052 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1053 | 1054 | ini@~1.3.0: 1055 | version "1.3.8" 1056 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 1057 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 1058 | 1059 | ipaddr.js@1.9.1: 1060 | version "1.9.1" 1061 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 1062 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 1063 | 1064 | is-arrayish@^0.2.1: 1065 | version "0.2.1" 1066 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1067 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1068 | 1069 | is-binary-path@~2.1.0: 1070 | version "2.1.0" 1071 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1072 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1073 | dependencies: 1074 | binary-extensions "^2.0.0" 1075 | 1076 | is-core-module@^2.2.0: 1077 | version "2.2.0" 1078 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" 1079 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== 1080 | dependencies: 1081 | has "^1.0.3" 1082 | 1083 | is-extglob@^2.1.1: 1084 | version "2.1.1" 1085 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1086 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1087 | 1088 | is-finite@^1.0.0: 1089 | version "1.1.0" 1090 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" 1091 | integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== 1092 | 1093 | is-fullwidth-code-point@^1.0.0: 1094 | version "1.0.0" 1095 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1096 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 1097 | dependencies: 1098 | number-is-nan "^1.0.0" 1099 | 1100 | is-fullwidth-code-point@^2.0.0: 1101 | version "2.0.0" 1102 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1103 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1104 | 1105 | is-fullwidth-code-point@^3.0.0: 1106 | version "3.0.0" 1107 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1108 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1109 | 1110 | is-glob@^4.0.1, is-glob@~4.0.1: 1111 | version "4.0.1" 1112 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1113 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1114 | dependencies: 1115 | is-extglob "^2.1.1" 1116 | 1117 | is-number@^7.0.0: 1118 | version "7.0.0" 1119 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1120 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1121 | 1122 | is-typedarray@~1.0.0: 1123 | version "1.0.0" 1124 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1125 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 1126 | 1127 | is-utf8@^0.2.0: 1128 | version "0.2.1" 1129 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1130 | integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= 1131 | 1132 | isarray@~1.0.0: 1133 | version "1.0.0" 1134 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1135 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1136 | 1137 | isexe@^2.0.0: 1138 | version "2.0.0" 1139 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1140 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1141 | 1142 | isstream@~0.1.2: 1143 | version "0.1.2" 1144 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1145 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 1146 | 1147 | jake@^10.6.1: 1148 | version "10.8.2" 1149 | resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" 1150 | integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== 1151 | dependencies: 1152 | async "0.9.x" 1153 | chalk "^2.4.2" 1154 | filelist "^1.0.1" 1155 | minimatch "^3.0.4" 1156 | 1157 | js-yaml@^4.0.0: 1158 | version "4.1.0" 1159 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1160 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1161 | dependencies: 1162 | argparse "^2.0.1" 1163 | 1164 | jsbn@~0.1.0: 1165 | version "0.1.1" 1166 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1167 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 1168 | 1169 | json-schema-traverse@^0.4.1: 1170 | version "0.4.1" 1171 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1172 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1173 | 1174 | json-schema@0.2.3: 1175 | version "0.2.3" 1176 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1177 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 1178 | 1179 | json-stringify-safe@~5.0.1: 1180 | version "5.0.1" 1181 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1182 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 1183 | 1184 | jsprim@^1.2.2: 1185 | version "1.4.1" 1186 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 1187 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 1188 | dependencies: 1189 | assert-plus "1.0.0" 1190 | extsprintf "1.3.0" 1191 | json-schema "0.2.3" 1192 | verror "1.10.0" 1193 | 1194 | load-json-file@^1.0.0: 1195 | version "1.1.0" 1196 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 1197 | integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= 1198 | dependencies: 1199 | graceful-fs "^4.1.2" 1200 | parse-json "^2.2.0" 1201 | pify "^2.0.0" 1202 | pinkie-promise "^2.0.0" 1203 | strip-bom "^2.0.0" 1204 | 1205 | loud-rejection@^1.0.0: 1206 | version "1.6.0" 1207 | resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" 1208 | integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= 1209 | dependencies: 1210 | currently-unhandled "^0.4.1" 1211 | signal-exit "^3.0.0" 1212 | 1213 | make-error@^1.1.1: 1214 | version "1.3.6" 1215 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 1216 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 1217 | 1218 | map-obj@^1.0.0, map-obj@^1.0.1: 1219 | version "1.0.1" 1220 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 1221 | integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= 1222 | 1223 | media-typer@0.3.0: 1224 | version "0.3.0" 1225 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1226 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 1227 | 1228 | meow@^3.3.0: 1229 | version "3.7.0" 1230 | resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" 1231 | integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= 1232 | dependencies: 1233 | camelcase-keys "^2.0.0" 1234 | decamelize "^1.1.2" 1235 | loud-rejection "^1.0.0" 1236 | map-obj "^1.0.1" 1237 | minimist "^1.1.3" 1238 | normalize-package-data "^2.3.4" 1239 | object-assign "^4.0.1" 1240 | read-pkg-up "^1.0.1" 1241 | redent "^1.0.0" 1242 | trim-newlines "^1.0.0" 1243 | 1244 | merge-descriptors@1.0.1: 1245 | version "1.0.1" 1246 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1247 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 1248 | 1249 | methods@~1.1.2: 1250 | version "1.1.2" 1251 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1252 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 1253 | 1254 | mime-db@1.47.0: 1255 | version "1.47.0" 1256 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" 1257 | integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== 1258 | 1259 | mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: 1260 | version "2.1.30" 1261 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" 1262 | integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== 1263 | dependencies: 1264 | mime-db "1.47.0" 1265 | 1266 | mime@1.6.0: 1267 | version "1.6.0" 1268 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1269 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1270 | 1271 | minimatch@^3.0.4: 1272 | version "3.0.4" 1273 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1274 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1275 | dependencies: 1276 | brace-expansion "^1.1.7" 1277 | 1278 | minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: 1279 | version "1.2.5" 1280 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1281 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1282 | 1283 | minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: 1284 | version "2.9.0" 1285 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" 1286 | integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== 1287 | dependencies: 1288 | safe-buffer "^5.1.2" 1289 | yallist "^3.0.0" 1290 | 1291 | minizlib@^1.2.1: 1292 | version "1.3.3" 1293 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" 1294 | integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== 1295 | dependencies: 1296 | minipass "^2.9.0" 1297 | 1298 | "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: 1299 | version "0.5.5" 1300 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 1301 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 1302 | dependencies: 1303 | minimist "^1.2.5" 1304 | 1305 | mkdirp@^1.0.4: 1306 | version "1.0.4" 1307 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 1308 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 1309 | 1310 | ms@2.0.0: 1311 | version "2.0.0" 1312 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1313 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1314 | 1315 | ms@2.1.1: 1316 | version "2.1.1" 1317 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1318 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 1319 | 1320 | ms@2.1.2: 1321 | version "2.1.2" 1322 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1323 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1324 | 1325 | ms@^2.1.1: 1326 | version "2.1.3" 1327 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1328 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1329 | 1330 | mz@^2.4.0: 1331 | version "2.7.0" 1332 | resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" 1333 | integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== 1334 | dependencies: 1335 | any-promise "^1.0.0" 1336 | object-assign "^4.0.1" 1337 | thenify-all "^1.0.0" 1338 | 1339 | needle@^2.2.1: 1340 | version "2.6.0" 1341 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.6.0.tgz#24dbb55f2509e2324b4a99d61f413982013ccdbe" 1342 | integrity sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg== 1343 | dependencies: 1344 | debug "^3.2.6" 1345 | iconv-lite "^0.4.4" 1346 | sax "^1.2.4" 1347 | 1348 | negotiator@0.6.2: 1349 | version "0.6.2" 1350 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 1351 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 1352 | 1353 | node-addon-api@^3.0.0: 1354 | version "3.1.0" 1355 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.1.0.tgz#98b21931557466c6729e51cb77cd39c965f42239" 1356 | integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw== 1357 | 1358 | node-gyp@3.x: 1359 | version "3.8.0" 1360 | resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" 1361 | integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== 1362 | dependencies: 1363 | fstream "^1.0.0" 1364 | glob "^7.0.3" 1365 | graceful-fs "^4.1.2" 1366 | mkdirp "^0.5.0" 1367 | nopt "2 || 3" 1368 | npmlog "0 || 1 || 2 || 3 || 4" 1369 | osenv "0" 1370 | request "^2.87.0" 1371 | rimraf "2" 1372 | semver "~5.3.0" 1373 | tar "^2.0.0" 1374 | which "1" 1375 | 1376 | node-pre-gyp@^0.11.0: 1377 | version "0.11.0" 1378 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" 1379 | integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== 1380 | dependencies: 1381 | detect-libc "^1.0.2" 1382 | mkdirp "^0.5.1" 1383 | needle "^2.2.1" 1384 | nopt "^4.0.1" 1385 | npm-packlist "^1.1.6" 1386 | npmlog "^4.0.2" 1387 | rc "^1.2.7" 1388 | rimraf "^2.6.1" 1389 | semver "^5.3.0" 1390 | tar "^4" 1391 | 1392 | "nopt@2 || 3": 1393 | version "3.0.6" 1394 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 1395 | integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= 1396 | dependencies: 1397 | abbrev "1" 1398 | 1399 | nopt@^4.0.1: 1400 | version "4.0.3" 1401 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" 1402 | integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== 1403 | dependencies: 1404 | abbrev "1" 1405 | osenv "^0.1.4" 1406 | 1407 | normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: 1408 | version "2.5.0" 1409 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1410 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1411 | dependencies: 1412 | hosted-git-info "^2.1.4" 1413 | resolve "^1.10.0" 1414 | semver "2 || 3 || 4 || 5" 1415 | validate-npm-package-license "^3.0.1" 1416 | 1417 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1418 | version "3.0.0" 1419 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1420 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1421 | 1422 | npm-bundled@^1.0.1: 1423 | version "1.1.1" 1424 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" 1425 | integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== 1426 | dependencies: 1427 | npm-normalize-package-bin "^1.0.1" 1428 | 1429 | npm-normalize-package-bin@^1.0.1: 1430 | version "1.0.1" 1431 | resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" 1432 | integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== 1433 | 1434 | npm-packlist@^1.1.6: 1435 | version "1.4.8" 1436 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" 1437 | integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== 1438 | dependencies: 1439 | ignore-walk "^3.0.1" 1440 | npm-bundled "^1.0.1" 1441 | npm-normalize-package-bin "^1.0.1" 1442 | 1443 | "npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2: 1444 | version "4.1.2" 1445 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1446 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== 1447 | dependencies: 1448 | are-we-there-yet "~1.1.2" 1449 | console-control-strings "~1.1.0" 1450 | gauge "~2.7.3" 1451 | set-blocking "~2.0.0" 1452 | 1453 | number-is-nan@^1.0.0: 1454 | version "1.0.1" 1455 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1456 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 1457 | 1458 | oauth-sign@~0.9.0: 1459 | version "0.9.0" 1460 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 1461 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 1462 | 1463 | object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0: 1464 | version "4.1.1" 1465 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1466 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1467 | 1468 | on-finished@~2.3.0: 1469 | version "2.3.0" 1470 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1471 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 1472 | dependencies: 1473 | ee-first "1.1.1" 1474 | 1475 | once@^1.3.0: 1476 | version "1.4.0" 1477 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1478 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1479 | dependencies: 1480 | wrappy "1" 1481 | 1482 | os-homedir@^1.0.0: 1483 | version "1.0.2" 1484 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1485 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 1486 | 1487 | os-tmpdir@^1.0.0: 1488 | version "1.0.2" 1489 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1490 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1491 | 1492 | osenv@0, osenv@^0.1.4: 1493 | version "0.1.5" 1494 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 1495 | integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== 1496 | dependencies: 1497 | os-homedir "^1.0.0" 1498 | os-tmpdir "^1.0.0" 1499 | 1500 | parent-require@^1.0.0: 1501 | version "1.0.0" 1502 | resolved "https://registry.yarnpkg.com/parent-require/-/parent-require-1.0.0.tgz#746a167638083a860b0eef6732cb27ed46c32977" 1503 | integrity sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc= 1504 | 1505 | parse-json@^2.2.0: 1506 | version "2.2.0" 1507 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1508 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 1509 | dependencies: 1510 | error-ex "^1.2.0" 1511 | 1512 | parse5-htmlparser2-tree-adapter@^6.0.0: 1513 | version "6.0.1" 1514 | resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" 1515 | integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== 1516 | dependencies: 1517 | parse5 "^6.0.1" 1518 | 1519 | parse5@^5.1.1: 1520 | version "5.1.1" 1521 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" 1522 | integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== 1523 | 1524 | parse5@^6.0.1: 1525 | version "6.0.1" 1526 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" 1527 | integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== 1528 | 1529 | parseqs@0.0.6: 1530 | version "0.0.6" 1531 | resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" 1532 | integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== 1533 | 1534 | parseuri@0.0.6: 1535 | version "0.0.6" 1536 | resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" 1537 | integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== 1538 | 1539 | parseurl@~1.3.3: 1540 | version "1.3.3" 1541 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1542 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1543 | 1544 | path-exists@^2.0.0: 1545 | version "2.1.0" 1546 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 1547 | integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= 1548 | dependencies: 1549 | pinkie-promise "^2.0.0" 1550 | 1551 | path-is-absolute@^1.0.0: 1552 | version "1.0.1" 1553 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1554 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1555 | 1556 | path-parse@^1.0.6: 1557 | version "1.0.6" 1558 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1559 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1560 | 1561 | path-to-regexp@0.1.7: 1562 | version "0.1.7" 1563 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1564 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 1565 | 1566 | path-type@^1.0.0: 1567 | version "1.1.0" 1568 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 1569 | integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= 1570 | dependencies: 1571 | graceful-fs "^4.1.2" 1572 | pify "^2.0.0" 1573 | pinkie-promise "^2.0.0" 1574 | 1575 | performance-now@^2.1.0: 1576 | version "2.1.0" 1577 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 1578 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 1579 | 1580 | picomatch@^2.0.4, picomatch@^2.2.1: 1581 | version "2.2.3" 1582 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" 1583 | integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== 1584 | 1585 | pify@^2.0.0: 1586 | version "2.3.0" 1587 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1588 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 1589 | 1590 | pinkie-promise@^2.0.0: 1591 | version "2.0.1" 1592 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1593 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= 1594 | dependencies: 1595 | pinkie "^2.0.0" 1596 | 1597 | pinkie@^2.0.0: 1598 | version "2.0.4" 1599 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1600 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= 1601 | 1602 | process-nextick-args@~2.0.0: 1603 | version "2.0.1" 1604 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1605 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1606 | 1607 | proxy-addr@~2.0.5: 1608 | version "2.0.6" 1609 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" 1610 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== 1611 | dependencies: 1612 | forwarded "~0.1.2" 1613 | ipaddr.js "1.9.1" 1614 | 1615 | psl@^1.1.28: 1616 | version "1.8.0" 1617 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 1618 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 1619 | 1620 | punycode@^2.1.0, punycode@^2.1.1: 1621 | version "2.1.1" 1622 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1623 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1624 | 1625 | qs@6.7.0: 1626 | version "6.7.0" 1627 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 1628 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 1629 | 1630 | qs@~6.5.2: 1631 | version "6.5.2" 1632 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 1633 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 1634 | 1635 | range-parser@~1.2.1: 1636 | version "1.2.1" 1637 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1638 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1639 | 1640 | raw-body@2.4.0: 1641 | version "2.4.0" 1642 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 1643 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 1644 | dependencies: 1645 | bytes "3.1.0" 1646 | http-errors "1.7.2" 1647 | iconv-lite "0.4.24" 1648 | unpipe "1.0.0" 1649 | 1650 | rc@^1.2.7: 1651 | version "1.2.8" 1652 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1653 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1654 | dependencies: 1655 | deep-extend "^0.6.0" 1656 | ini "~1.3.0" 1657 | minimist "^1.2.0" 1658 | strip-json-comments "~2.0.1" 1659 | 1660 | read-pkg-up@^1.0.1: 1661 | version "1.0.1" 1662 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 1663 | integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= 1664 | dependencies: 1665 | find-up "^1.0.0" 1666 | read-pkg "^1.0.0" 1667 | 1668 | read-pkg@^1.0.0: 1669 | version "1.1.0" 1670 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 1671 | integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= 1672 | dependencies: 1673 | load-json-file "^1.0.0" 1674 | normalize-package-data "^2.3.2" 1675 | path-type "^1.0.0" 1676 | 1677 | readable-stream@^2.0.6: 1678 | version "2.3.7" 1679 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1680 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1681 | dependencies: 1682 | core-util-is "~1.0.0" 1683 | inherits "~2.0.3" 1684 | isarray "~1.0.0" 1685 | process-nextick-args "~2.0.0" 1686 | safe-buffer "~5.1.1" 1687 | string_decoder "~1.1.1" 1688 | util-deprecate "~1.0.1" 1689 | 1690 | readdirp@~3.5.0: 1691 | version "3.5.0" 1692 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 1693 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 1694 | dependencies: 1695 | picomatch "^2.2.1" 1696 | 1697 | redent@^1.0.0: 1698 | version "1.0.0" 1699 | resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" 1700 | integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= 1701 | dependencies: 1702 | indent-string "^2.1.0" 1703 | strip-indent "^1.0.1" 1704 | 1705 | reflect-metadata@^0.1.13: 1706 | version "0.1.13" 1707 | resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" 1708 | integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== 1709 | 1710 | repeating@^2.0.0: 1711 | version "2.0.1" 1712 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 1713 | integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= 1714 | dependencies: 1715 | is-finite "^1.0.0" 1716 | 1717 | request@^2.87.0: 1718 | version "2.88.2" 1719 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 1720 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 1721 | dependencies: 1722 | aws-sign2 "~0.7.0" 1723 | aws4 "^1.8.0" 1724 | caseless "~0.12.0" 1725 | combined-stream "~1.0.6" 1726 | extend "~3.0.2" 1727 | forever-agent "~0.6.1" 1728 | form-data "~2.3.2" 1729 | har-validator "~5.1.3" 1730 | http-signature "~1.2.0" 1731 | is-typedarray "~1.0.0" 1732 | isstream "~0.1.2" 1733 | json-stringify-safe "~5.0.1" 1734 | mime-types "~2.1.19" 1735 | oauth-sign "~0.9.0" 1736 | performance-now "^2.1.0" 1737 | qs "~6.5.2" 1738 | safe-buffer "^5.1.2" 1739 | tough-cookie "~2.5.0" 1740 | tunnel-agent "^0.6.0" 1741 | uuid "^3.3.2" 1742 | 1743 | require-directory@^2.1.1: 1744 | version "2.1.1" 1745 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1746 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1747 | 1748 | resolve@^1.0.0, resolve@^1.10.0: 1749 | version "1.20.0" 1750 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 1751 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 1752 | dependencies: 1753 | is-core-module "^2.2.0" 1754 | path-parse "^1.0.6" 1755 | 1756 | rimraf@2, rimraf@^2.6.1: 1757 | version "2.7.1" 1758 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 1759 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 1760 | dependencies: 1761 | glob "^7.1.3" 1762 | 1763 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1764 | version "5.1.2" 1765 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1766 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1767 | 1768 | safe-buffer@^5.0.1, safe-buffer@^5.1.2: 1769 | version "5.2.1" 1770 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1771 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1772 | 1773 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 1774 | version "2.1.2" 1775 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1776 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1777 | 1778 | sax@>=0.6.0, sax@^1.2.4: 1779 | version "1.2.4" 1780 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1781 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1782 | 1783 | "semver@2 || 3 || 4 || 5", semver@^5.3.0: 1784 | version "5.7.1" 1785 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1786 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1787 | 1788 | semver@~5.3.0: 1789 | version "5.3.0" 1790 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 1791 | integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= 1792 | 1793 | send@0.17.1: 1794 | version "0.17.1" 1795 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 1796 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 1797 | dependencies: 1798 | debug "2.6.9" 1799 | depd "~1.1.2" 1800 | destroy "~1.0.4" 1801 | encodeurl "~1.0.2" 1802 | escape-html "~1.0.3" 1803 | etag "~1.8.1" 1804 | fresh "0.5.2" 1805 | http-errors "~1.7.2" 1806 | mime "1.6.0" 1807 | ms "2.1.1" 1808 | on-finished "~2.3.0" 1809 | range-parser "~1.2.1" 1810 | statuses "~1.5.0" 1811 | 1812 | serve-static@1.14.1: 1813 | version "1.14.1" 1814 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 1815 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 1816 | dependencies: 1817 | encodeurl "~1.0.2" 1818 | escape-html "~1.0.3" 1819 | parseurl "~1.3.3" 1820 | send "0.17.1" 1821 | 1822 | set-blocking@~2.0.0: 1823 | version "2.0.0" 1824 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1825 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1826 | 1827 | setprototypeof@1.1.1: 1828 | version "1.1.1" 1829 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1830 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1831 | 1832 | sha.js@^2.4.11: 1833 | version "2.4.11" 1834 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 1835 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 1836 | dependencies: 1837 | inherits "^2.0.1" 1838 | safe-buffer "^5.0.1" 1839 | 1840 | signal-exit@^3.0.0: 1841 | version "3.0.3" 1842 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1843 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1844 | 1845 | socket.io-adapter@~2.2.0: 1846 | version "2.2.0" 1847 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.2.0.tgz#43af9157c4609e74b8addc6867873ac7eb48fda2" 1848 | integrity sha512-rG49L+FwaVEwuAdeBRq49M97YI3ElVabJPzvHT9S6a2CWhDKnjSFasvwAwSYPRhQzfn4NtDIbCaGYgOCOU/rlg== 1849 | 1850 | socket.io-client@^4.0.1: 1851 | version "4.0.1" 1852 | resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.0.1.tgz#8f3bf4ce9282dda1741a4ed0f726b412944e012b" 1853 | integrity sha512-6AkaEG5zrVuSVW294cH1chioag9i1OqnCYjKwTc3EBGXbnyb98Lw7yMa40ifLjFj3y6fsFKsd0llbUZUCRf3Qw== 1854 | dependencies: 1855 | "@types/component-emitter" "^1.2.10" 1856 | backo2 "~1.0.2" 1857 | component-emitter "~1.3.0" 1858 | debug "~4.3.1" 1859 | engine.io-client "~5.0.0" 1860 | parseuri "0.0.6" 1861 | socket.io-parser "~4.0.4" 1862 | 1863 | socket.io-parser@~4.0.3, socket.io-parser@~4.0.4: 1864 | version "4.0.4" 1865 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.4.tgz#9ea21b0d61508d18196ef04a2c6b9ab630f4c2b0" 1866 | integrity sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g== 1867 | dependencies: 1868 | "@types/component-emitter" "^1.2.10" 1869 | component-emitter "~1.3.0" 1870 | debug "~4.3.1" 1871 | 1872 | socket.io@^4.0.1: 1873 | version "4.0.1" 1874 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.0.1.tgz#d2e01cf3780d810b66182b3fbef08a04a4ccf924" 1875 | integrity sha512-g8eZB9lV0f4X4gndG0k7YZAywOg1VxYgCUspS4V+sDqsgI/duqd0AW84pKkbGj/wQwxrqrEq+VZrspRfTbHTAQ== 1876 | dependencies: 1877 | "@types/cookie" "^0.4.0" 1878 | "@types/cors" "^2.8.8" 1879 | "@types/node" ">=10.0.0" 1880 | accepts "~1.3.4" 1881 | base64id "~2.0.0" 1882 | debug "~4.3.1" 1883 | engine.io "~5.0.0" 1884 | socket.io-adapter "~2.2.0" 1885 | socket.io-parser "~4.0.3" 1886 | 1887 | source-map-support@^0.5.12, source-map-support@^0.5.17: 1888 | version "0.5.19" 1889 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1890 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1891 | dependencies: 1892 | buffer-from "^1.0.0" 1893 | source-map "^0.6.0" 1894 | 1895 | source-map@^0.6.0: 1896 | version "0.6.1" 1897 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1898 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1899 | 1900 | spdx-correct@^3.0.0: 1901 | version "3.1.1" 1902 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 1903 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 1904 | dependencies: 1905 | spdx-expression-parse "^3.0.0" 1906 | spdx-license-ids "^3.0.0" 1907 | 1908 | spdx-exceptions@^2.1.0: 1909 | version "2.3.0" 1910 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1911 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1912 | 1913 | spdx-expression-parse@^3.0.0: 1914 | version "3.0.1" 1915 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1916 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1917 | dependencies: 1918 | spdx-exceptions "^2.1.0" 1919 | spdx-license-ids "^3.0.0" 1920 | 1921 | spdx-license-ids@^3.0.0: 1922 | version "3.0.7" 1923 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" 1924 | integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== 1925 | 1926 | sqlite3@^5.0.2: 1927 | version "5.0.2" 1928 | resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.2.tgz#00924adcc001c17686e0a6643b6cbbc2d3965083" 1929 | integrity sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA== 1930 | dependencies: 1931 | node-addon-api "^3.0.0" 1932 | node-pre-gyp "^0.11.0" 1933 | optionalDependencies: 1934 | node-gyp "3.x" 1935 | 1936 | sshpk@^1.7.0: 1937 | version "1.16.1" 1938 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 1939 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 1940 | dependencies: 1941 | asn1 "~0.2.3" 1942 | assert-plus "^1.0.0" 1943 | bcrypt-pbkdf "^1.0.0" 1944 | dashdash "^1.12.0" 1945 | ecc-jsbn "~0.1.1" 1946 | getpass "^0.1.1" 1947 | jsbn "~0.1.0" 1948 | safer-buffer "^2.0.2" 1949 | tweetnacl "~0.14.0" 1950 | 1951 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 1952 | version "1.5.0" 1953 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1954 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1955 | 1956 | string-width@^1.0.1: 1957 | version "1.0.2" 1958 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1959 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 1960 | dependencies: 1961 | code-point-at "^1.0.0" 1962 | is-fullwidth-code-point "^1.0.0" 1963 | strip-ansi "^3.0.0" 1964 | 1965 | "string-width@^1.0.2 || 2": 1966 | version "2.1.1" 1967 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1968 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1969 | dependencies: 1970 | is-fullwidth-code-point "^2.0.0" 1971 | strip-ansi "^4.0.0" 1972 | 1973 | string-width@^4.1.0, string-width@^4.2.0: 1974 | version "4.2.2" 1975 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" 1976 | integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== 1977 | dependencies: 1978 | emoji-regex "^8.0.0" 1979 | is-fullwidth-code-point "^3.0.0" 1980 | strip-ansi "^6.0.0" 1981 | 1982 | string_decoder@~1.1.1: 1983 | version "1.1.1" 1984 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1985 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1986 | dependencies: 1987 | safe-buffer "~5.1.0" 1988 | 1989 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1990 | version "3.0.1" 1991 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1992 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 1993 | dependencies: 1994 | ansi-regex "^2.0.0" 1995 | 1996 | strip-ansi@^4.0.0: 1997 | version "4.0.0" 1998 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1999 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2000 | dependencies: 2001 | ansi-regex "^3.0.0" 2002 | 2003 | strip-ansi@^6.0.0: 2004 | version "6.0.0" 2005 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 2006 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 2007 | dependencies: 2008 | ansi-regex "^5.0.0" 2009 | 2010 | strip-bom@^2.0.0: 2011 | version "2.0.0" 2012 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 2013 | integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= 2014 | dependencies: 2015 | is-utf8 "^0.2.0" 2016 | 2017 | strip-bom@^3.0.0: 2018 | version "3.0.0" 2019 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2020 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 2021 | 2022 | strip-indent@^1.0.1: 2023 | version "1.0.1" 2024 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" 2025 | integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= 2026 | dependencies: 2027 | get-stdin "^4.0.1" 2028 | 2029 | strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: 2030 | version "2.0.1" 2031 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2032 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2033 | 2034 | supports-color@^2.0.0: 2035 | version "2.0.0" 2036 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2037 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 2038 | 2039 | supports-color@^5.3.0: 2040 | version "5.5.0" 2041 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2042 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2043 | dependencies: 2044 | has-flag "^3.0.0" 2045 | 2046 | supports-color@^7.1.0: 2047 | version "7.2.0" 2048 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2049 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2050 | dependencies: 2051 | has-flag "^4.0.0" 2052 | 2053 | tar@^2.0.0: 2054 | version "2.2.2" 2055 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" 2056 | integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== 2057 | dependencies: 2058 | block-stream "*" 2059 | fstream "^1.0.12" 2060 | inherits "2" 2061 | 2062 | tar@^4: 2063 | version "4.4.13" 2064 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" 2065 | integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== 2066 | dependencies: 2067 | chownr "^1.1.1" 2068 | fs-minipass "^1.2.5" 2069 | minipass "^2.8.6" 2070 | minizlib "^1.2.1" 2071 | mkdirp "^0.5.0" 2072 | safe-buffer "^5.1.2" 2073 | yallist "^3.0.3" 2074 | 2075 | thenify-all@^1.0.0: 2076 | version "1.6.0" 2077 | resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" 2078 | integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= 2079 | dependencies: 2080 | thenify ">= 3.1.0 < 4" 2081 | 2082 | "thenify@>= 3.1.0 < 4": 2083 | version "3.3.1" 2084 | resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" 2085 | integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== 2086 | dependencies: 2087 | any-promise "^1.0.0" 2088 | 2089 | to-regex-range@^5.0.1: 2090 | version "5.0.1" 2091 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2092 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2093 | dependencies: 2094 | is-number "^7.0.0" 2095 | 2096 | toidentifier@1.0.0: 2097 | version "1.0.0" 2098 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 2099 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 2100 | 2101 | tough-cookie@~2.5.0: 2102 | version "2.5.0" 2103 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 2104 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 2105 | dependencies: 2106 | psl "^1.1.28" 2107 | punycode "^2.1.1" 2108 | 2109 | tree-kill@^1.2.2: 2110 | version "1.2.2" 2111 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" 2112 | integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== 2113 | 2114 | trim-newlines@^1.0.0: 2115 | version "1.0.0" 2116 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" 2117 | integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= 2118 | 2119 | ts-node-dev@^1.1.6: 2120 | version "1.1.6" 2121 | resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-1.1.6.tgz#ee2113718cb5a92c1c8f4229123ad6afbeba01f8" 2122 | integrity sha512-RTUi7mHMNQospArGz07KiraQcdgUVNXKsgO2HAi7FoiyPMdTDqdniB6K1dqyaIxT7c9v/VpSbfBZPS6uVpaFLQ== 2123 | dependencies: 2124 | chokidar "^3.5.1" 2125 | dateformat "~1.0.4-1.2.3" 2126 | dynamic-dedupe "^0.3.0" 2127 | minimist "^1.2.5" 2128 | mkdirp "^1.0.4" 2129 | resolve "^1.0.0" 2130 | rimraf "^2.6.1" 2131 | source-map-support "^0.5.12" 2132 | tree-kill "^1.2.2" 2133 | ts-node "^9.0.0" 2134 | tsconfig "^7.0.0" 2135 | 2136 | ts-node@^9.0.0: 2137 | version "9.1.1" 2138 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" 2139 | integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== 2140 | dependencies: 2141 | arg "^4.1.0" 2142 | create-require "^1.1.0" 2143 | diff "^4.0.1" 2144 | make-error "^1.1.1" 2145 | source-map-support "^0.5.17" 2146 | yn "3.1.1" 2147 | 2148 | tsconfig@^7.0.0: 2149 | version "7.0.0" 2150 | resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" 2151 | integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== 2152 | dependencies: 2153 | "@types/strip-bom" "^3.0.0" 2154 | "@types/strip-json-comments" "0.0.30" 2155 | strip-bom "^3.0.0" 2156 | strip-json-comments "^2.0.0" 2157 | 2158 | tslib@^2.1.0: 2159 | version "2.2.0" 2160 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" 2161 | integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== 2162 | 2163 | tunnel-agent@^0.6.0: 2164 | version "0.6.0" 2165 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2166 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 2167 | dependencies: 2168 | safe-buffer "^5.0.1" 2169 | 2170 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2171 | version "0.14.5" 2172 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2173 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 2174 | 2175 | type-is@~1.6.17, type-is@~1.6.18: 2176 | version "1.6.18" 2177 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 2178 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 2179 | dependencies: 2180 | media-typer "0.3.0" 2181 | mime-types "~2.1.24" 2182 | 2183 | typeorm@^0.2.32: 2184 | version "0.2.32" 2185 | resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.2.32.tgz#544dbfdfe0cd0887548d9bcbd28527ea4f4b3c9b" 2186 | integrity sha512-LOBZKZ9As3f8KRMPCUT2H0JZbZfWfkcUnO3w/1BFAbL/X9+cADTF6bczDGGaKVENJ3P8SaKheKmBgpt5h1x+EQ== 2187 | dependencies: 2188 | "@sqltools/formatter" "^1.2.2" 2189 | app-root-path "^3.0.0" 2190 | buffer "^6.0.3" 2191 | chalk "^4.1.0" 2192 | cli-highlight "^2.1.10" 2193 | debug "^4.3.1" 2194 | dotenv "^8.2.0" 2195 | glob "^7.1.6" 2196 | js-yaml "^4.0.0" 2197 | mkdirp "^1.0.4" 2198 | reflect-metadata "^0.1.13" 2199 | sha.js "^2.4.11" 2200 | tslib "^2.1.0" 2201 | xml2js "^0.4.23" 2202 | yargonaut "^1.1.4" 2203 | yargs "^16.2.0" 2204 | zen-observable-ts "^1.0.0" 2205 | 2206 | typescript@^4.2.4: 2207 | version "4.2.4" 2208 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" 2209 | integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== 2210 | 2211 | unpipe@1.0.0, unpipe@~1.0.0: 2212 | version "1.0.0" 2213 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2214 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 2215 | 2216 | uri-js@^4.2.2: 2217 | version "4.4.1" 2218 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 2219 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 2220 | dependencies: 2221 | punycode "^2.1.0" 2222 | 2223 | util-deprecate@~1.0.1: 2224 | version "1.0.2" 2225 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2226 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2227 | 2228 | utils-merge@1.0.1: 2229 | version "1.0.1" 2230 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 2231 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 2232 | 2233 | uuid@^3.3.2: 2234 | version "3.4.0" 2235 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 2236 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 2237 | 2238 | uuid@^8.3.2: 2239 | version "8.3.2" 2240 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 2241 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 2242 | 2243 | validate-npm-package-license@^3.0.1: 2244 | version "3.0.4" 2245 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 2246 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 2247 | dependencies: 2248 | spdx-correct "^3.0.0" 2249 | spdx-expression-parse "^3.0.0" 2250 | 2251 | vary@^1, vary@~1.1.2: 2252 | version "1.1.2" 2253 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 2254 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 2255 | 2256 | verror@1.10.0: 2257 | version "1.10.0" 2258 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 2259 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 2260 | dependencies: 2261 | assert-plus "^1.0.0" 2262 | core-util-is "1.0.2" 2263 | extsprintf "^1.2.0" 2264 | 2265 | which@1: 2266 | version "1.3.1" 2267 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2268 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 2269 | dependencies: 2270 | isexe "^2.0.0" 2271 | 2272 | wide-align@^1.1.0: 2273 | version "1.1.3" 2274 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 2275 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 2276 | dependencies: 2277 | string-width "^1.0.2 || 2" 2278 | 2279 | wrap-ansi@^7.0.0: 2280 | version "7.0.0" 2281 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2282 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2283 | dependencies: 2284 | ansi-styles "^4.0.0" 2285 | string-width "^4.1.0" 2286 | strip-ansi "^6.0.0" 2287 | 2288 | wrappy@1: 2289 | version "1.0.2" 2290 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2291 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2292 | 2293 | ws@~7.4.2: 2294 | version "7.4.5" 2295 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" 2296 | integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== 2297 | 2298 | xml2js@^0.4.23: 2299 | version "0.4.23" 2300 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" 2301 | integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== 2302 | dependencies: 2303 | sax ">=0.6.0" 2304 | xmlbuilder "~11.0.0" 2305 | 2306 | xmlbuilder@~11.0.0: 2307 | version "11.0.1" 2308 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" 2309 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 2310 | 2311 | xtend@^4.0.0: 2312 | version "4.0.2" 2313 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 2314 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 2315 | 2316 | y18n@^5.0.5: 2317 | version "5.0.8" 2318 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 2319 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 2320 | 2321 | yallist@^3.0.0, yallist@^3.0.3: 2322 | version "3.1.1" 2323 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 2324 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 2325 | 2326 | yargonaut@^1.1.4: 2327 | version "1.1.4" 2328 | resolved "https://registry.yarnpkg.com/yargonaut/-/yargonaut-1.1.4.tgz#c64f56432c7465271221f53f5cc517890c3d6e0c" 2329 | integrity sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA== 2330 | dependencies: 2331 | chalk "^1.1.1" 2332 | figlet "^1.1.1" 2333 | parent-require "^1.0.0" 2334 | 2335 | yargs-parser@^20.2.2: 2336 | version "20.2.7" 2337 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" 2338 | integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== 2339 | 2340 | yargs@^16.0.0, yargs@^16.2.0: 2341 | version "16.2.0" 2342 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 2343 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 2344 | dependencies: 2345 | cliui "^7.0.2" 2346 | escalade "^3.1.1" 2347 | get-caller-file "^2.0.5" 2348 | require-directory "^2.1.1" 2349 | string-width "^4.2.0" 2350 | y18n "^5.0.5" 2351 | yargs-parser "^20.2.2" 2352 | 2353 | yeast@0.1.2: 2354 | version "0.1.2" 2355 | resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" 2356 | integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= 2357 | 2358 | yn@3.1.1: 2359 | version "3.1.1" 2360 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 2361 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 2362 | 2363 | zen-observable-ts@^1.0.0: 2364 | version "1.0.0" 2365 | resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.0.0.tgz#30d1202b81d8ba4c489e3781e8ca09abf0075e70" 2366 | integrity sha512-KmWcbz+9kKUeAQ8btY8m1SsEFgBcp7h/Uf3V5quhan7ZWdjGsf0JcGLULQiwOZibbFWnHkYq8Nn2AZbJabovQg== 2367 | dependencies: 2368 | "@types/zen-observable" "^0.8.2" 2369 | zen-observable "^0.8.15" 2370 | 2371 | zen-observable@^0.8.15: 2372 | version "0.8.15" 2373 | resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" 2374 | integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== 2375 | --------------------------------------------------------------------------------