├── static ├── assets │ └── 1 └── secret ├── .dockerignore ├── .gitignore ├── lib ├── graphql-type-json.d.ts └── gql │ ├── schema.ts │ ├── types │ ├── mutation.ts │ ├── query.ts │ ├── post.ts │ └── user.ts │ └── mutations │ ├── secret_mutation.ts │ ├── create_post.ts │ └── authentication.ts ├── run.sh ├── models ├── post.js ├── user.js └── index.ts ├── Dockerfile ├── config └── config.json ├── migrations ├── 20190514182937-create-post.js ├── 20190514192801-create-associations.js └── 20190514175844-create-user.js ├── README.md ├── package.json ├── LICENSE ├── seeders ├── 20190514193954-seed_users.js └── 20190514203133-seed_posts.js ├── app.ts ├── tsconfig.json └── yarn.lock /static/assets/1: -------------------------------------------------------------------------------- 1 | Hello ! 2 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | db.sqlite 2 | build/ 3 | node_modules/ 4 | -------------------------------------------------------------------------------- /lib/graphql-type-json.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'graphql-type-json'; -------------------------------------------------------------------------------- /static/secret: -------------------------------------------------------------------------------- 1 | This is a secret asset. I hope it is not accessible to the outside world... 2 | -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | node build/app.js & 3 | cd static 4 | python3 -m http.server --bind 127.0.0.1 8081 5 | 6 | -------------------------------------------------------------------------------- /lib/gql/schema.ts: -------------------------------------------------------------------------------- 1 | import {GraphQLSchema} from 'graphql'; 2 | 3 | import {QueryType} from './types/query'; 4 | import {MutationType} from './types/mutation' 5 | 6 | export var schema = new GraphQLSchema({ 7 | query: QueryType, 8 | mutation: MutationType 9 | }); -------------------------------------------------------------------------------- /models/post.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = (sequelize, DataTypes) => { 3 | const Post = sequelize.define('Post', { 4 | title: DataTypes.STRING, 5 | content: DataTypes.TEXT, 6 | public: DataTypes.BOOLEAN 7 | }, { 8 | timestamps: false 9 | }); 10 | Post.associate = function(models) { 11 | // associations can be defined here 12 | Post.belongsTo(models.User); 13 | }; 14 | return Post; 15 | }; 16 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:18.04 2 | MAINTAINER Aidan Noll (aidan.noll@carvesystems.com) 3 | 4 | 5 | RUN apt-get update && apt-get install -y nodejs npm python3 sqlite3 6 | 7 | RUN useradd -m app 8 | USER app 9 | 10 | COPY --chown=app . /home/app/app 11 | 12 | RUN cd /home/app/app && npm install sqlite3 && npm install && npm run tsc && npm run sequelize db:migrate && npm run sequelize db:seed:all 13 | 14 | EXPOSE 3000/tcp 15 | 16 | CMD cd /home/app/app && ./run.sh 17 | -------------------------------------------------------------------------------- /config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "development": { 3 | "storage": "db.sqlite", 4 | "dialect": "sqlite" 5 | }, 6 | "test": { 7 | "username": "root", 8 | "password": null, 9 | "database": "database_test", 10 | "host": "127.0.0.1", 11 | "dialect": "mysql" 12 | }, 13 | "production": { 14 | "username": "root", 15 | "password": null, 16 | "database": "database_production", 17 | "host": "127.0.0.1", 18 | "dialect": "mysql" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /models/user.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = (sequelize, DataTypes) => { 3 | const User = sequelize.define('User', { 4 | username: DataTypes.STRING, 5 | firstName: DataTypes.STRING, 6 | lastName: DataTypes.STRING, 7 | password: DataTypes.STRING, 8 | resetToken: DataTypes.STRING 9 | }, { 10 | timestamps: false 11 | }); 12 | User.associate = function(models) { 13 | // associations can be defined here 14 | User.hasMany(models.Post); 15 | }; 16 | return User; 17 | }; -------------------------------------------------------------------------------- /lib/gql/types/mutation.ts: -------------------------------------------------------------------------------- 1 | import {GraphQLObjectType} from 'graphql' 2 | 3 | import {SecretMutation} from '../mutations/secret_mutation' 4 | import { CreatePost } from '../mutations/create_post'; 5 | import { Register, Login, PasswordReset } from '../mutations/authentication'; 6 | 7 | export var MutationType = new GraphQLObjectType({ 8 | name: "RootMutation", 9 | fields: { 10 | register: Register, 11 | login: Login, 12 | passwordReset: PasswordReset, 13 | 14 | createPost: CreatePost, 15 | superSecretPrivateMutation: SecretMutation 16 | } 17 | }); -------------------------------------------------------------------------------- /migrations/20190514182937-create-post.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | up: (queryInterface, Sequelize) => { 4 | return queryInterface.createTable('Posts', { 5 | id: { 6 | allowNull: false, 7 | autoIncrement: true, 8 | primaryKey: true, 9 | type: Sequelize.INTEGER 10 | }, 11 | title: { 12 | type: Sequelize.STRING 13 | }, 14 | content: { 15 | type: Sequelize.TEXT 16 | }, 17 | public: { 18 | type: Sequelize.BOOLEAN 19 | } 20 | }); 21 | }, 22 | down: (queryInterface, Sequelize) => { 23 | return queryInterface.dropTable('Posts'); 24 | } 25 | }; -------------------------------------------------------------------------------- /migrations/20190514192801-create-associations.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | up: (queryInterface, Sequelize) => { 5 | return queryInterface.addColumn('Posts', 'UserId', { 6 | type: Sequelize.INTEGER, 7 | references: { 8 | model: 'Users', 9 | key: 'id' 10 | }, 11 | onUpdate: 'CASCADE', 12 | onDelete: 'SET NULL' 13 | }) 14 | }, 15 | 16 | down: (queryInterface, Sequelize) => { 17 | /* 18 | Add reverting commands here. 19 | Return a promise to correctly handle asynchronicity. 20 | 21 | Example: 22 | return queryInterface.dropTable('users'); 23 | */ 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /migrations/20190514175844-create-user.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | up: (queryInterface, Sequelize) => { 4 | return queryInterface.createTable('Users', { 5 | id: { 6 | allowNull: false, 7 | autoIncrement: true, 8 | primaryKey: true, 9 | type: Sequelize.INTEGER 10 | }, 11 | username: { 12 | type: Sequelize.STRING 13 | }, 14 | firstName: { 15 | type: Sequelize.STRING 16 | }, 17 | lastName: { 18 | type: Sequelize.STRING 19 | }, 20 | password: { 21 | type: Sequelize.STRING 22 | }, 23 | resetToken: { 24 | type: Sequelize.STRING 25 | } 26 | }); 27 | }, 28 | down: (queryInterface, Sequelize) => { 29 | return queryInterface.dropTable('Users'); 30 | } 31 | }; -------------------------------------------------------------------------------- /lib/gql/mutations/secret_mutation.ts: -------------------------------------------------------------------------------- 1 | import {GraphQLObjectType, GraphQLString, GraphQLFieldConfig} from 'graphql' 2 | 3 | import child_process from 'child_process'; 4 | import {promisify} from 'util'; 5 | 6 | const exec = promisify(child_process.exec); 7 | 8 | var CommandOutputType = new GraphQLObjectType({ 9 | name: 'CommandOutput', 10 | fields: { 11 | stdout: { 12 | type: GraphQLString 13 | }, 14 | stderr: { 15 | type: GraphQLString 16 | } 17 | } 18 | }) 19 | 20 | export var SecretMutation: GraphQLFieldConfig = { 21 | type: CommandOutputType, 22 | args: { 23 | command: { 24 | type: GraphQLString 25 | } 26 | }, 27 | resolve: async (_root: any, args: any, _info: any) => { 28 | let command = args.command; 29 | let results = await exec(command); 30 | return results; 31 | } 32 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GraphQL - Demo Vulnerable API 2 | 3 | A simple GraphQL API demonstrating several common vulnerabilities. 4 | 5 | Authored by Aidan Noll, Carve Systems, LLC. 6 | 7 | ## Requirements 8 | 9 | Node, NPM, and Python 10 | 11 | ## Setup 12 | 13 | ``` 14 | # Install all dependencies. 15 | npm install 16 | # Build the TypeScript source. 17 | npm run tsc 18 | # Create the database and seed it with random users and comments. 19 | npm run sequelize db:migrate 20 | npm run sequelize db:seed:all 21 | ``` 22 | 23 | ## Running 24 | 25 | To run the main API: 26 | 27 | ``` 28 | ./run.sh 29 | ``` 30 | 31 | ## Usage 32 | 33 | The GraphQL API is available on port 3000. Visiting the homepage will take you to a GraphIQL IDE for exploration. 34 | 35 | The API provides a simple social media/blog system. Users are able to make and view posts from other users, and they can be marked private so that they can't be seen by other users. 36 | -------------------------------------------------------------------------------- /lib/gql/mutations/create_post.ts: -------------------------------------------------------------------------------- 1 | import { GraphQLFieldConfig, GraphQLString, GraphQLBoolean } from "graphql"; 2 | import { PostType } from "../types/post"; 3 | 4 | import {db} from '../../../models'; 5 | 6 | export var CreatePost: GraphQLFieldConfig = { 7 | type: PostType, 8 | args: { 9 | title: { 10 | type: GraphQLString, 11 | }, 12 | content: { 13 | type: GraphQLString 14 | }, 15 | public: { 16 | type: GraphQLBoolean, 17 | // default to making our posts public. 18 | defaultValue: true 19 | } 20 | }, 21 | resolve: async (_root: any, args: any, context: any) => { 22 | let user_id = context.user.id; 23 | let post_data = { 24 | UserId: user_id, 25 | ...args 26 | }; 27 | let post = await db.Post.create(post_data, {}); 28 | return post; 29 | } 30 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vulnerable-graphql-api", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "tsc": "tsc", 8 | "sequelize": "sequelize" 9 | }, 10 | "dependencies": { 11 | "@types/bluebird": "^3.5.26", 12 | "@types/cors": "^2.8.5", 13 | "@types/express": "^4.16.1", 14 | "@types/express-graphql": "^0.8.0", 15 | "@types/express-rate-limit": "^3.3.3", 16 | "@types/express-session": "^1.15.12", 17 | "@types/faker": "^4.1.9", 18 | "@types/graphql": "^14.2.0", 19 | "@types/node": "^12.0.1", 20 | "@types/validator": "^10.11.0", 21 | "argon2": "^0.25.1", 22 | "axios": "^0.18.0", 23 | "cors": "^2.8.5", 24 | "express": "^4.16.4", 25 | "express-graphql": "^0.8.0", 26 | "express-rate-limit": "^5.0.0", 27 | "express-session": "^1.16.1", 28 | "faker": "^4.1.0", 29 | "graphql": "^14.3.0", 30 | "graphql-type-json": "^0.3.0", 31 | "sequelize": "^5.21.5", 32 | "sequelize-cli": "^5.5.1", 33 | "sqlite": "^3.0.3", 34 | "sqlite3": "^4.1.1", 35 | "typescript": "^3.4.5" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2019 Carve Systems, LLC 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a 4 | copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included 12 | in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 15 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 18 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 19 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 20 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /seeders/20190514193954-seed_users.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var faker = require('faker'); 4 | var argon2 = require('argon2'); 5 | 6 | module.exports = { 7 | up: async (queryInterface, Sequelize) => { 8 | 9 | faker.seed(0xDEADBEEF); 10 | 11 | var users = []; 12 | for (var i = 0; i < 50; i++) { 13 | let token = faker.random.number({ min: 0, max: 99999 }); 14 | 15 | let password = faker.internet.password(); 16 | let hash = await argon2.hash(password); 17 | var user = { 18 | username: faker.internet.userName(), 19 | firstName: faker.name.firstName(), 20 | lastName: faker.name.lastName(), 21 | password: hash.toString(), 22 | resetToken: token.toString().padStart(5, '0') 23 | }; 24 | 25 | users.push(user); 26 | console.log(user); 27 | } 28 | 29 | return queryInterface.bulkInsert('Users', users, {}) 30 | }, 31 | 32 | down: (queryInterface, Sequelize) => { 33 | /* 34 | Add reverting commands here. 35 | Return a promise to correctly handle asynchronicity. 36 | 37 | Example: 38 | return queryInterface.bulkDelete('People', null, {}); 39 | */ 40 | } 41 | }; 42 | -------------------------------------------------------------------------------- /lib/gql/types/query.ts: -------------------------------------------------------------------------------- 1 | import {GraphQLObjectType, GraphQLString} from 'graphql'; 2 | 3 | import {GetAllUsers, GetUserById, Me} from './user' 4 | import { GetPostById, Search } from './post'; 5 | 6 | import axios from 'axios'; 7 | 8 | export const QueryType = new GraphQLObjectType({ 9 | name: "RootQuery", 10 | fields: { 11 | // Return information about the currently-logged-in user. 12 | me: Me, 13 | 14 | // Get a list of all users, or find them by their ID. 15 | allUsers: GetAllUsers, 16 | user: GetUserById, 17 | 18 | // Find a post, or search. 19 | post: GetPostById, 20 | search: Search, 21 | 22 | // Resolve an asset stored on the external service. 23 | getAsset: { 24 | type: GraphQLString, 25 | args: { 26 | name: { 27 | type: GraphQLString 28 | } 29 | }, 30 | resolve: async (_root, args, _context) => { 31 | let filename = args.name; 32 | let results = await axios.get(`http://localhost:8081/assets/${filename}`); 33 | return results.data; 34 | } 35 | } 36 | } 37 | }) -------------------------------------------------------------------------------- /models/index.ts: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import fs from 'fs'; 4 | import path from 'path'; 5 | import {Sequelize, Op} from 'sequelize'; 6 | const basename = path.basename(__filename); 7 | const env = process.env.NODE_ENV || 'development'; 8 | const config = JSON.parse(fs.readFileSync(__dirname + '/../../config/config.json').toString())[env]; 9 | export const db: any = {}; 10 | 11 | const operatorsAliases = { 12 | 'and': Op.and, 13 | 'or': Op.or, 14 | 'gt': Op.gt, 15 | 'gte': Op.gte, 16 | 'lt': Op.lt, 17 | 'lte': Op.lte, 18 | 'ne': Op.ne, 19 | 'eq': Op.eq 20 | } 21 | 22 | let sequelize: Sequelize; 23 | if (config.use_env_variable) { 24 | sequelize = new Sequelize(process.env[config.use_env_variable] as string, {operatorsAliases, ...config}); 25 | } else { 26 | sequelize = new Sequelize(config.database, config.username, config.password, {operatorsAliases, ...config}); 27 | } 28 | 29 | fs 30 | .readdirSync(__dirname) 31 | .filter(file => { 32 | return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js'); 33 | }) 34 | .forEach(file => { 35 | const model = sequelize['import'](path.join(__dirname, file)); 36 | db[model.name] = model; 37 | }); 38 | 39 | Object.keys(db).forEach(modelName => { 40 | if (db[modelName].associate) { 41 | db[modelName].associate(db); 42 | } 43 | }); 44 | 45 | db.sequelize = sequelize; 46 | db.Sequelize = Sequelize; -------------------------------------------------------------------------------- /seeders/20190514203133-seed_posts.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var faker = require('faker'); 4 | 5 | function getRandomInt(min, max) { 6 | min = Math.ceil(min); 7 | max = Math.floor(max); 8 | return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive 9 | } 10 | 11 | module.exports = { 12 | up: (queryInterface, Sequelize) => { 13 | /* 14 | Add altering commands here. 15 | Return a promise to correctly handle asynchronicity. 16 | 17 | Example: 18 | return queryInterface.bulkInsert('People', [{ 19 | name: 'John Doe', 20 | isBetaMember: false 21 | }], {}); 22 | */ 23 | faker.seed(0xC0FFEE) 24 | 25 | var posts = [ 26 | { 27 | UserId: 1, 28 | title: "Secret private post", 29 | content: "This is a private post. Go away.", 30 | public: false 31 | } 32 | ]; 33 | for (var i = 0; i < 250; i++) { 34 | var user_id = getRandomInt(1, 51); 35 | var post = { 36 | UserId: user_id, 37 | title: faker.lorem.sentence(), 38 | content: faker.lorem.paragraphs(), 39 | public: getRandomInt(0, 5) != 0, 40 | } 41 | posts.push(post) 42 | } 43 | 44 | return queryInterface.bulkInsert('Posts', posts, {}) 45 | }, 46 | 47 | down: (queryInterface, Sequelize) => { 48 | /* 49 | Add reverting commands here. 50 | Return a promise to correctly handle asynchronicity. 51 | 52 | Example: 53 | return queryInterface.bulkDelete('People', null, {}); 54 | */ 55 | } 56 | }; 57 | -------------------------------------------------------------------------------- /lib/gql/types/post.ts: -------------------------------------------------------------------------------- 1 | import { GraphQLObjectType, GraphQLString, GraphQLBoolean, GraphQLID, GraphQLFieldConfig, GraphQLList } from 'graphql' 2 | import { UserType } from './user'; 3 | import { db } from '../../../models'; 4 | 5 | async function resolveAuthor(root: any) { 6 | let user = await root.getUser(); 7 | return user; 8 | } 9 | 10 | export var PostType: GraphQLObjectType = new GraphQLObjectType({ 11 | name: 'Post', 12 | fields: () => ({ 13 | id: { 14 | type: GraphQLID 15 | }, 16 | title: { 17 | type: GraphQLString 18 | }, 19 | content: { 20 | type: GraphQLString 21 | }, 22 | public: { 23 | type: GraphQLBoolean 24 | }, 25 | 26 | author: { 27 | type: UserType, 28 | resolve: resolveAuthor 29 | } 30 | }) 31 | }); 32 | 33 | 34 | export var GetPostById: GraphQLFieldConfig = { 35 | type: PostType, 36 | args: { 37 | id: { 38 | type: GraphQLID 39 | } 40 | }, 41 | resolve: async (_root, args, _info) => { 42 | let post = await db.Post.findByPk(args.id); 43 | return post; 44 | } 45 | } 46 | 47 | export var Search: GraphQLFieldConfig = { 48 | type: new GraphQLList(PostType), 49 | args: { 50 | query: { 51 | type: GraphQLString 52 | } 53 | }, 54 | resolve: async (_root, args, _context) => { 55 | let arg = args.query; 56 | let query = `SELECT * FROM posts WHERE public=1 AND content LIKE '%${arg}%'` 57 | let posts = db.sequelize.query(query, {model: db.Post, mapToModel: true}) 58 | return posts; 59 | } 60 | } -------------------------------------------------------------------------------- /app.ts: -------------------------------------------------------------------------------- 1 | import express, { NextFunction, Request, Response } from 'express'; 2 | import graphqlHTTP from 'express-graphql'; 3 | 4 | import {schema} from './lib/gql/schema'; 5 | 6 | import {db} from './models' 7 | 8 | import session from 'express-session'; 9 | 10 | import rateLimit from 'express-rate-limit'; 11 | 12 | import cors from 'cors'; 13 | 14 | 15 | const app = express(); 16 | const port = 3000; 17 | 18 | app.use(cors()); 19 | 20 | var user_id = 2; 21 | 22 | async function GetCurrentUser(req: any, res: Response, next: NextFunction) { 23 | 24 | // No need for a real login system for this demo API. 25 | // Just assign a user to each session on first visit... 26 | if (!req.session.user_id) { 27 | req.session.user_id = user_id; 28 | console.log("Assigned user ID", user_id); 29 | if (user_id == 50){ 30 | user_id = 2; 31 | } 32 | else { 33 | user_id++; 34 | } 35 | } 36 | 37 | let user = await db.User.findByPk(req.session.user_id); 38 | req.user = user; 39 | next(); 40 | } 41 | 42 | app.use(session( 43 | { 44 | secret: "a very good and secure secret", 45 | resave: false, 46 | saveUninitialized: false 47 | } 48 | )); 49 | 50 | app.use(GetCurrentUser); 51 | 52 | // Set up rate-limiting. 53 | // We wouldn't want anyone brute-forcing password reset tokens! 54 | const limiter = rateLimit({ 55 | windowMs:60 * 1000, // one minute 56 | max: 100 // limit to 100 requests/minute 57 | }); 58 | app.use(limiter); 59 | 60 | app.get('/', (_req,res) => { 61 | return res.redirect('/graphql'); 62 | }) 63 | 64 | app.use('/graphql', graphqlHTTP({ 65 | schema: schema, 66 | graphiql: true 67 | })) 68 | 69 | app.listen(port, () => console.log("API started.")); 70 | -------------------------------------------------------------------------------- /lib/gql/types/user.ts: -------------------------------------------------------------------------------- 1 | import { GraphQLObjectType, GraphQLString, GraphQLFieldConfig, GraphQLList, GraphQLID } from 'graphql'; 2 | 3 | import { db } from '../../../models' 4 | import { PostType } from './post'; 5 | 6 | async function resolvePosts(root: any, _args: any, context: any) { 7 | var posts; 8 | 9 | // Check if we're authorized to see this user's private posts. 10 | if (root.id == context.user.id) { 11 | // We're getting our own posts. Read them all. 12 | posts = await root.getPosts(); 13 | } 14 | else { 15 | // We're reading someone else. Get only their public posts. 16 | posts = await root.getPosts({ where: { public: true } }); 17 | } 18 | return posts; 19 | } 20 | 21 | export var UserType: GraphQLObjectType = new GraphQLObjectType({ 22 | name: "User", 23 | fields: () => ({ 24 | id: { 25 | type: GraphQLID 26 | }, 27 | username: { 28 | type: GraphQLString 29 | }, 30 | firstName: { 31 | type: GraphQLString 32 | }, 33 | lastName: { 34 | type: GraphQLString 35 | }, 36 | 37 | posts: { 38 | type: new GraphQLList(PostType), 39 | resolve: resolvePosts 40 | } 41 | }) 42 | }) 43 | 44 | 45 | export var GetAllUsers: GraphQLFieldConfig = { 46 | type: new GraphQLList(UserType), 47 | resolve: async () => { 48 | let users = await db.User.findAll(); 49 | return users; 50 | } 51 | } 52 | 53 | export var GetUserById: GraphQLFieldConfig = { 54 | type: UserType, 55 | args: { 56 | id: { 57 | type: GraphQLID 58 | } 59 | }, 60 | resolve: async (_root, args, _context) => { 61 | let user = await db.User.findByPk(args.id); 62 | return user; 63 | } 64 | } 65 | 66 | export var Me: GraphQLFieldConfig = { 67 | type: UserType, 68 | resolve: async (_root, _args, context) => { 69 | // pull the current user out of the context 70 | return context.user; 71 | } 72 | } -------------------------------------------------------------------------------- /lib/gql/mutations/authentication.ts: -------------------------------------------------------------------------------- 1 | import { GraphQLFieldConfig, GraphQLString } from 'graphql' 2 | import { GraphQLJSON } from 'graphql-type-json' 3 | 4 | import { UserType } from '../types/user'; 5 | 6 | import {db} from '../../../models' 7 | import { AnySoaRecord } from 'dns'; 8 | 9 | import argon2 from 'argon2'; 10 | import faker from 'faker'; 11 | 12 | export const Register: GraphQLFieldConfig = { 13 | type: UserType, 14 | args: { 15 | username: { 16 | type: GraphQLString 17 | }, 18 | password: { 19 | type: GraphQLString 20 | }, 21 | firstName: { 22 | type: GraphQLString 23 | }, 24 | lastName: { 25 | type: GraphQLString 26 | } 27 | }, 28 | resolve: async (_root, args, context) => { 29 | let token = faker.random.number(99999).toString().padStart(5, '0'); 30 | let hash = await argon2.hash(args.password); 31 | let user = await db.User.create({ 32 | username: args.username, 33 | password: hash, 34 | firstName: args.firstName, 35 | lastName: args.lastName, 36 | resetToken: token 37 | }, {}); 38 | return user; 39 | } 40 | } 41 | 42 | export const Login: GraphQLFieldConfig = { 43 | type: UserType, 44 | args: { 45 | username: { 46 | type: GraphQLString 47 | }, 48 | password: { 49 | type: GraphQLString 50 | } 51 | }, 52 | resolve: async(_root, args, context) => { 53 | if (args.username === undefined || args.password === undefined) { 54 | throw new Error("`username` and `password` must be given."); 55 | } 56 | let user = await db.User.findOne({where: {username: args.username}}) 57 | if (user) { 58 | if (!await argon2.verify(user.password, args.password)) { 59 | throw new Error("Incorrect username or password.") 60 | } 61 | context.user = user; 62 | context.session.user_id = user.id; 63 | } 64 | throw new Error("Given username does not exist."); 65 | } 66 | } 67 | 68 | export const PasswordReset: GraphQLFieldConfig = { 69 | type: UserType, 70 | args: { 71 | input: { 72 | type: GraphQLJSON 73 | }, 74 | }, 75 | resolve: async(_root, args, context) => { 76 | console.log(args); 77 | if (args.input.username === undefined || args.input.reset_token === undefined || args.input.new_password === undefined) { 78 | throw new Error("Must provide username, new_password, and reset_token.") 79 | } 80 | let user = await db.User.findOne({where: {username: args.input.username, resetToken: args.input.reset_token}}) 81 | if (user) { 82 | // Update the user in the database first. 83 | user.password = await argon2.hash(args.input.new_password); 84 | user.save(); 85 | 86 | // Now, return it. 87 | context.user = user; 88 | context.session.user_id = user.id; 89 | return user; 90 | } 91 | else { 92 | throw new Error('The password reset token you submitted was incorrect.') 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ 5 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ 6 | // "lib": [], /* Specify library files to be included in the compilation. */ 7 | "allowJs": true, /* Allow javascript files to be compiled. */ 8 | // "checkJs": true, /* Report errors in .js files. */ 9 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ 10 | // "declaration": true, /* Generates corresponding '.d.ts' file. */ 11 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ 12 | // "sourceMap": true, /* Generates corresponding '.map' file. */ 13 | // "outFile": "./", /* Concatenate and emit output to single file. */ 14 | "outDir": "./build", /* Redirect output structure to the directory. */ 15 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 16 | // "composite": true, /* Enable project compilation */ 17 | // "incremental": true, /* Enable incremental compilation */ 18 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ 19 | // "removeComments": true, /* Do not emit comments to output. */ 20 | // "noEmit": true, /* Do not emit outputs. */ 21 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 22 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 23 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 24 | 25 | /* Strict Type-Checking Options */ 26 | "strict": true, /* Enable all strict type-checking options. */ 27 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 28 | // "strictNullChecks": true, /* Enable strict null checks. */ 29 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 30 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ 31 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ 32 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 33 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 34 | 35 | /* Additional Checks */ 36 | // "noUnusedLocals": true, /* Report errors on unused locals. */ 37 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 38 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 39 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 40 | 41 | /* Module Resolution Options */ 42 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 43 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 44 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 45 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 46 | // "typeRoots": [], /* List of folders to include type definitions from. */ 47 | // "types": [], /* Type declaration files to be included in compilation. */ 48 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 49 | "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 50 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 51 | 52 | /* Source Map Options */ 53 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 54 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 55 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 56 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 57 | 58 | /* Experimental Options */ 59 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 60 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@phc/format@^0.5.0": 6 | version "0.5.0" 7 | resolved "https://registry.yarnpkg.com/@phc/format/-/format-0.5.0.tgz#a99d27a83d78b3100a191412adda04315e2e3aba" 8 | integrity sha512-JWtZ5P1bfXU0bAtTzCpOLYHDXuxSVdtL/oqz4+xa97h8w9E5IlVN333wugXVFv8vZ1hbXObKQf1ptXmFFcMByg== 9 | dependencies: 10 | safe-buffer "^5.1.2" 11 | 12 | "@types/bluebird@^3.5.26": 13 | version "3.5.29" 14 | resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.29.tgz#7cd933c902c4fc83046517a1bef973886d00bdb6" 15 | integrity sha512-kmVtnxTuUuhCET669irqQmPAez4KFnFVKvpleVRyfC3g+SHD1hIkFZcWLim9BVcwUBLO59o8VZE4yGCmTif8Yw== 16 | 17 | "@types/body-parser@*": 18 | version "1.17.1" 19 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.1.tgz#18fcf61768fb5c30ccc508c21d6fd2e8b3bf7897" 20 | integrity sha512-RoX2EZjMiFMjZh9lmYrwgoP9RTpAjSHiJxdp4oidAQVO02T7HER3xj9UKue5534ULWeqVEkujhWcyvUce+d68w== 21 | dependencies: 22 | "@types/connect" "*" 23 | "@types/node" "*" 24 | 25 | "@types/connect@*": 26 | version "3.4.33" 27 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" 28 | integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== 29 | dependencies: 30 | "@types/node" "*" 31 | 32 | "@types/cors@^2.8.5": 33 | version "2.8.6" 34 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.6.tgz#cfaab33c49c15b1ded32f235111ce9123009bd02" 35 | integrity sha512-invOmosX0DqbpA+cE2yoHGUlF/blyf7nB0OGYBBiH27crcVm5NmFaZkLP4Ta1hGaesckCi5lVLlydNJCxkTOSg== 36 | dependencies: 37 | "@types/express" "*" 38 | 39 | "@types/express-graphql@^0.8.0": 40 | version "0.8.2" 41 | resolved "https://registry.yarnpkg.com/@types/express-graphql/-/express-graphql-0.8.2.tgz#fef9f46ae6ef636f6b02fcedcc099e5e1551c59a" 42 | integrity sha512-cc6LZEvHufd8C+6o+p+LYbaxSHKTlkU7AxAS6nLXOe7I4JMj3xEKJ57QjbQrbQ3zgt9rwRxmyWWj2Pb/YeX66Q== 43 | dependencies: 44 | "@types/express" "*" 45 | graphql "^14.5.3" 46 | 47 | "@types/express-rate-limit@^3.3.3": 48 | version "3.3.3" 49 | resolved "https://registry.yarnpkg.com/@types/express-rate-limit/-/express-rate-limit-3.3.3.tgz#1be5c551be1615d243e3eec14dca091009c61113" 50 | integrity sha512-Ys93gQSxRTTvIvUOvGk1dYeHTLqnRfLbZzSu+np6fViL/R3veFyCimMz9bjAWnfzR6InP8LphMnB/p3d7ZkSiQ== 51 | dependencies: 52 | "@types/express" "*" 53 | 54 | "@types/express-serve-static-core@*": 55 | version "4.17.2" 56 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz#f6f41fa35d42e79dbf6610eccbb2637e6008a0cf" 57 | integrity sha512-El9yMpctM6tORDAiBwZVLMcxoTMcqqRO9dVyYcn7ycLWbvR8klrDn8CAOwRfZujZtWD7yS/mshTdz43jMOejbg== 58 | dependencies: 59 | "@types/node" "*" 60 | "@types/range-parser" "*" 61 | 62 | "@types/express-session@^1.15.12": 63 | version "1.15.16" 64 | resolved "https://registry.yarnpkg.com/@types/express-session/-/express-session-1.15.16.tgz#91ba1f47a2fc2088811e8d7c17702ec92d8a8b23" 65 | integrity sha512-vWQpNt9t/zc4bTX+Ow5powZb9n3NwOM0SYsAJ7PYj5vliB6FA40ye5sW5fZTw8+ekbzJf/sgvtQocf7IryJBJw== 66 | dependencies: 67 | "@types/express" "*" 68 | "@types/node" "*" 69 | 70 | "@types/express@*", "@types/express@^4.16.1": 71 | version "4.17.2" 72 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.2.tgz#a0fb7a23d8855bac31bc01d5a58cadd9b2173e6c" 73 | integrity sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA== 74 | dependencies: 75 | "@types/body-parser" "*" 76 | "@types/express-serve-static-core" "*" 77 | "@types/serve-static" "*" 78 | 79 | "@types/faker@^4.1.9": 80 | version "4.1.9" 81 | resolved "https://registry.yarnpkg.com/@types/faker/-/faker-4.1.9.tgz#5539f331eb66fc40f06ad307e52ed83f2a3fe1bb" 82 | integrity sha512-4ZFqA3CEXB6MgT8sDV8E5LhW+O9ndONsHeQXMbEwfOsjoQ4UXKqTJKru+BjDBUfobYEpQz1WYF9/uzQsvbY2wA== 83 | 84 | "@types/graphql@^14.2.0": 85 | version "14.5.0" 86 | resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-14.5.0.tgz#a545fb3bc8013a3547cf2f07f5e13a33642b75d6" 87 | integrity sha512-MOkzsEp1Jk5bXuAsHsUi6BVv0zCO+7/2PTiZMXWDSsMXvNU6w/PLMQT2vHn8hy2i0JqojPz1Sz6rsFjHtsU0lA== 88 | dependencies: 89 | graphql "*" 90 | 91 | "@types/mime@*": 92 | version "2.0.1" 93 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" 94 | integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== 95 | 96 | "@types/node@*": 97 | version "13.7.0" 98 | resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.0.tgz#b417deda18cf8400f278733499ad5547ed1abec4" 99 | integrity sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ== 100 | 101 | "@types/node@^12.0.1": 102 | version "12.12.26" 103 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.26.tgz#213e153babac0ed169d44a6d919501e68f59dea9" 104 | integrity sha512-UmUm94/QZvU5xLcUlNR8hA7Ac+fGpO1EG/a8bcWVz0P0LqtxFmun9Y2bbtuckwGboWJIT70DoWq1r3hb56n3DA== 105 | 106 | "@types/range-parser@*": 107 | version "1.2.3" 108 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" 109 | integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== 110 | 111 | "@types/serve-static@*": 112 | version "1.13.3" 113 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" 114 | integrity sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g== 115 | dependencies: 116 | "@types/express-serve-static-core" "*" 117 | "@types/mime" "*" 118 | 119 | "@types/validator@^10.11.0": 120 | version "10.11.3" 121 | resolved "https://registry.yarnpkg.com/@types/validator/-/validator-10.11.3.tgz#945799bef24a953c5bc02011ca8ad79331a3ef25" 122 | integrity sha512-GKF2VnEkMmEeEGvoo03ocrP9ySMuX1ypKazIYMlsjfslfBMhOAtC5dmEWKdJioW4lJN7MZRS88kalTsVClyQ9w== 123 | 124 | abbrev@1: 125 | version "1.1.1" 126 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 127 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 128 | 129 | accepts@^1.3.5, accepts@~1.3.7: 130 | version "1.3.7" 131 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 132 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 133 | dependencies: 134 | mime-types "~2.1.24" 135 | negotiator "0.6.2" 136 | 137 | ajv@^6.5.5: 138 | version "6.11.0" 139 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" 140 | integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== 141 | dependencies: 142 | fast-deep-equal "^3.1.1" 143 | fast-json-stable-stringify "^2.0.0" 144 | json-schema-traverse "^0.4.1" 145 | uri-js "^4.2.2" 146 | 147 | ansi-regex@^2.0.0, ansi-regex@^2.1.1: 148 | version "2.1.1" 149 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 150 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 151 | 152 | ansi-regex@^3.0.0: 153 | version "3.0.0" 154 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 155 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 156 | 157 | ansi-regex@^4.1.0: 158 | version "4.1.0" 159 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 160 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 161 | 162 | ansi-styles@^3.2.0: 163 | version "3.2.1" 164 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 165 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 166 | dependencies: 167 | color-convert "^1.9.0" 168 | 169 | any-promise@^1.3.0: 170 | version "1.3.0" 171 | resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" 172 | integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= 173 | 174 | aproba@^1.0.3: 175 | version "1.2.0" 176 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 177 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== 178 | 179 | are-we-there-yet@~1.1.2: 180 | version "1.1.5" 181 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 182 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== 183 | dependencies: 184 | delegates "^1.0.0" 185 | readable-stream "^2.0.6" 186 | 187 | argon2@^0.25.1: 188 | version "0.25.1" 189 | resolved "https://registry.yarnpkg.com/argon2/-/argon2-0.25.1.tgz#7c6b1d41d8bca66ac966a8703131503ee830171b" 190 | integrity sha512-DGm6Wp6csT7Xmlny1gB5qHW+f6aNlEFzhfNaEH2HMmUT7Eymf+68HznvZH4cW9+8fdyBmkoIC+GDV74P14k1zw== 191 | dependencies: 192 | "@phc/format" "^0.5.0" 193 | node-addon-api "^1.7.1" 194 | node-pre-gyp "^0.13.0" 195 | 196 | array-flatten@1.1.1: 197 | version "1.1.1" 198 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 199 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 200 | 201 | asn1@~0.2.3: 202 | version "0.2.4" 203 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 204 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 205 | dependencies: 206 | safer-buffer "~2.1.0" 207 | 208 | assert-plus@1.0.0, assert-plus@^1.0.0: 209 | version "1.0.0" 210 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 211 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 212 | 213 | asynckit@^0.4.0: 214 | version "0.4.0" 215 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 216 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 217 | 218 | aws-sign2@~0.7.0: 219 | version "0.7.0" 220 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 221 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 222 | 223 | aws4@^1.8.0: 224 | version "1.9.1" 225 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" 226 | integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== 227 | 228 | axios@^0.18.0: 229 | version "0.18.1" 230 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" 231 | integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== 232 | dependencies: 233 | follow-redirects "1.5.10" 234 | is-buffer "^2.0.2" 235 | 236 | babel-runtime@^6.23.0: 237 | version "6.26.0" 238 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 239 | integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= 240 | dependencies: 241 | core-js "^2.4.0" 242 | regenerator-runtime "^0.11.0" 243 | 244 | balanced-match@^1.0.0: 245 | version "1.0.0" 246 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 247 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 248 | 249 | bcrypt-pbkdf@^1.0.0: 250 | version "1.0.2" 251 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 252 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 253 | dependencies: 254 | tweetnacl "^0.14.3" 255 | 256 | bluebird@^3.5.0, bluebird@^3.5.3: 257 | version "3.7.2" 258 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" 259 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== 260 | 261 | body-parser@1.19.0: 262 | version "1.19.0" 263 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 264 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 265 | dependencies: 266 | bytes "3.1.0" 267 | content-type "~1.0.4" 268 | debug "2.6.9" 269 | depd "~1.1.2" 270 | http-errors "1.7.2" 271 | iconv-lite "0.4.24" 272 | on-finished "~2.3.0" 273 | qs "6.7.0" 274 | raw-body "2.4.0" 275 | type-is "~1.6.17" 276 | 277 | brace-expansion@^1.1.7: 278 | version "1.1.11" 279 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 280 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 281 | dependencies: 282 | balanced-match "^1.0.0" 283 | concat-map "0.0.1" 284 | 285 | bytes@3.1.0: 286 | version "3.1.0" 287 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 288 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 289 | 290 | camelcase@^5.0.0: 291 | version "5.3.1" 292 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 293 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 294 | 295 | caseless@~0.12.0: 296 | version "0.12.0" 297 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 298 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 299 | 300 | chownr@^1.1.1: 301 | version "1.1.3" 302 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" 303 | integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== 304 | 305 | cli-color@^1.4.0: 306 | version "1.4.0" 307 | resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.4.0.tgz#7d10738f48526824f8fe7da51857cb0f572fe01f" 308 | integrity sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w== 309 | dependencies: 310 | ansi-regex "^2.1.1" 311 | d "1" 312 | es5-ext "^0.10.46" 313 | es6-iterator "^2.0.3" 314 | memoizee "^0.4.14" 315 | timers-ext "^0.1.5" 316 | 317 | cliui@^5.0.0: 318 | version "5.0.0" 319 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 320 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 321 | dependencies: 322 | string-width "^3.1.0" 323 | strip-ansi "^5.2.0" 324 | wrap-ansi "^5.1.0" 325 | 326 | cls-bluebird@^2.1.0: 327 | version "2.1.0" 328 | resolved "https://registry.yarnpkg.com/cls-bluebird/-/cls-bluebird-2.1.0.tgz#37ef1e080a8ffb55c2f4164f536f1919e7968aee" 329 | integrity sha1-N+8eCAqP+1XC9BZPU28ZGeeWiu4= 330 | dependencies: 331 | is-bluebird "^1.0.2" 332 | shimmer "^1.1.0" 333 | 334 | code-point-at@^1.0.0: 335 | version "1.1.0" 336 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 337 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 338 | 339 | color-convert@^1.9.0: 340 | version "1.9.3" 341 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 342 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 343 | dependencies: 344 | color-name "1.1.3" 345 | 346 | color-name@1.1.3: 347 | version "1.1.3" 348 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 349 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 350 | 351 | combined-stream@^1.0.6, combined-stream@~1.0.6: 352 | version "1.0.8" 353 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 354 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 355 | dependencies: 356 | delayed-stream "~1.0.0" 357 | 358 | commander@^2.19.0: 359 | version "2.20.3" 360 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 361 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 362 | 363 | concat-map@0.0.1: 364 | version "0.0.1" 365 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 366 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 367 | 368 | config-chain@^1.1.12: 369 | version "1.1.12" 370 | resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" 371 | integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== 372 | dependencies: 373 | ini "^1.3.4" 374 | proto-list "~1.2.1" 375 | 376 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 377 | version "1.1.0" 378 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 379 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 380 | 381 | content-disposition@0.5.3: 382 | version "0.5.3" 383 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 384 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 385 | dependencies: 386 | safe-buffer "5.1.2" 387 | 388 | content-type@^1.0.4, content-type@~1.0.4: 389 | version "1.0.4" 390 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 391 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 392 | 393 | cookie-signature@1.0.6: 394 | version "1.0.6" 395 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 396 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 397 | 398 | cookie@0.4.0: 399 | version "0.4.0" 400 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 401 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 402 | 403 | core-js@^2.4.0: 404 | version "2.6.11" 405 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" 406 | integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== 407 | 408 | core-util-is@1.0.2, core-util-is@~1.0.0: 409 | version "1.0.2" 410 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 411 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 412 | 413 | cors@^2.8.5: 414 | version "2.8.5" 415 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 416 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 417 | dependencies: 418 | object-assign "^4" 419 | vary "^1" 420 | 421 | d@1, d@^1.0.1: 422 | version "1.0.1" 423 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" 424 | integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== 425 | dependencies: 426 | es5-ext "^0.10.50" 427 | type "^1.0.1" 428 | 429 | dashdash@^1.12.0: 430 | version "1.14.1" 431 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 432 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 433 | dependencies: 434 | assert-plus "^1.0.0" 435 | 436 | debug@2.6.9: 437 | version "2.6.9" 438 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 439 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 440 | dependencies: 441 | ms "2.0.0" 442 | 443 | debug@=3.1.0: 444 | version "3.1.0" 445 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 446 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 447 | dependencies: 448 | ms "2.0.0" 449 | 450 | debug@^3.2.6: 451 | version "3.2.6" 452 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 453 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 454 | dependencies: 455 | ms "^2.1.1" 456 | 457 | debug@^4.1.1: 458 | version "4.1.1" 459 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 460 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 461 | dependencies: 462 | ms "^2.1.1" 463 | 464 | decamelize@^1.2.0: 465 | version "1.2.0" 466 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 467 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 468 | 469 | deep-extend@^0.6.0: 470 | version "0.6.0" 471 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 472 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 473 | 474 | delayed-stream@~1.0.0: 475 | version "1.0.0" 476 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 477 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 478 | 479 | delegates@^1.0.0: 480 | version "1.0.0" 481 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 482 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 483 | 484 | depd@~1.1.2: 485 | version "1.1.2" 486 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 487 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 488 | 489 | depd@~2.0.0: 490 | version "2.0.0" 491 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 492 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 493 | 494 | destroy@~1.0.4: 495 | version "1.0.4" 496 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 497 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 498 | 499 | detect-libc@^1.0.2: 500 | version "1.0.3" 501 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 502 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= 503 | 504 | dottie@^2.0.0: 505 | version "2.0.2" 506 | resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.2.tgz#cc91c0726ce3a054ebf11c55fbc92a7f266dd154" 507 | integrity sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg== 508 | 509 | ecc-jsbn@~0.1.1: 510 | version "0.1.2" 511 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 512 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 513 | dependencies: 514 | jsbn "~0.1.0" 515 | safer-buffer "^2.1.0" 516 | 517 | editorconfig@^0.15.3: 518 | version "0.15.3" 519 | resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" 520 | integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== 521 | dependencies: 522 | commander "^2.19.0" 523 | lru-cache "^4.1.5" 524 | semver "^5.6.0" 525 | sigmund "^1.0.1" 526 | 527 | ee-first@1.1.1: 528 | version "1.1.1" 529 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 530 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 531 | 532 | emoji-regex@^7.0.1: 533 | version "7.0.3" 534 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 535 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 536 | 537 | encodeurl@~1.0.2: 538 | version "1.0.2" 539 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 540 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 541 | 542 | es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: 543 | version "0.10.53" 544 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" 545 | integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== 546 | dependencies: 547 | es6-iterator "~2.0.3" 548 | es6-symbol "~3.1.3" 549 | next-tick "~1.0.0" 550 | 551 | es6-iterator@^2.0.3, es6-iterator@~2.0.3: 552 | version "2.0.3" 553 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" 554 | integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= 555 | dependencies: 556 | d "1" 557 | es5-ext "^0.10.35" 558 | es6-symbol "^3.1.1" 559 | 560 | es6-symbol@^3.1.1, es6-symbol@~3.1.3: 561 | version "3.1.3" 562 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" 563 | integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== 564 | dependencies: 565 | d "^1.0.1" 566 | ext "^1.1.2" 567 | 568 | es6-weak-map@^2.0.2: 569 | version "2.0.3" 570 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" 571 | integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== 572 | dependencies: 573 | d "1" 574 | es5-ext "^0.10.46" 575 | es6-iterator "^2.0.3" 576 | es6-symbol "^3.1.1" 577 | 578 | escape-html@~1.0.3: 579 | version "1.0.3" 580 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 581 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 582 | 583 | etag@~1.8.1: 584 | version "1.8.1" 585 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 586 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 587 | 588 | event-emitter@^0.3.5: 589 | version "0.3.5" 590 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" 591 | integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= 592 | dependencies: 593 | d "1" 594 | es5-ext "~0.10.14" 595 | 596 | express-graphql@^0.8.0: 597 | version "0.8.0" 598 | resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.8.0.tgz#5d434709bcabe6d5527751730376d8265a197976" 599 | integrity sha512-yjFFLTw9J/7QbLBs/SRX1IykEnJHIdaAeDTiw1yC+zPHoQSCijKdPZYhe+B0SC0sFJydAXW6RSqqnERGgKPH7g== 600 | dependencies: 601 | accepts "^1.3.5" 602 | content-type "^1.0.4" 603 | http-errors "^1.7.2" 604 | raw-body "^2.3.3" 605 | 606 | express-rate-limit@^5.0.0: 607 | version "5.0.0" 608 | resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-5.0.0.tgz#9a6f4cacc388c1a1da7ba2f65db69f7395e9b04e" 609 | integrity sha512-dhT57wqxfqmkOi4HM7NuT4Gd7gbUgSK2ocG27Y6lwm8lbOAw9XQfeANawGq8wLDtlGPO1ZgDj0HmKsykTxfFAg== 610 | 611 | express-session@^1.16.1: 612 | version "1.17.0" 613 | resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.17.0.tgz#9b50dbb5e8a03c3537368138f072736150b7f9b3" 614 | integrity sha512-t4oX2z7uoSqATbMfsxWMbNjAL0T5zpvcJCk3Z9wnPPN7ibddhnmDZXHfEcoBMG2ojKXZoCyPMc5FbtK+G7SoDg== 615 | dependencies: 616 | cookie "0.4.0" 617 | cookie-signature "1.0.6" 618 | debug "2.6.9" 619 | depd "~2.0.0" 620 | on-headers "~1.0.2" 621 | parseurl "~1.3.3" 622 | safe-buffer "5.2.0" 623 | uid-safe "~2.1.5" 624 | 625 | express@^4.16.4: 626 | version "4.17.1" 627 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 628 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 629 | dependencies: 630 | accepts "~1.3.7" 631 | array-flatten "1.1.1" 632 | body-parser "1.19.0" 633 | content-disposition "0.5.3" 634 | content-type "~1.0.4" 635 | cookie "0.4.0" 636 | cookie-signature "1.0.6" 637 | debug "2.6.9" 638 | depd "~1.1.2" 639 | encodeurl "~1.0.2" 640 | escape-html "~1.0.3" 641 | etag "~1.8.1" 642 | finalhandler "~1.1.2" 643 | fresh "0.5.2" 644 | merge-descriptors "1.0.1" 645 | methods "~1.1.2" 646 | on-finished "~2.3.0" 647 | parseurl "~1.3.3" 648 | path-to-regexp "0.1.7" 649 | proxy-addr "~2.0.5" 650 | qs "6.7.0" 651 | range-parser "~1.2.1" 652 | safe-buffer "5.1.2" 653 | send "0.17.1" 654 | serve-static "1.14.1" 655 | setprototypeof "1.1.1" 656 | statuses "~1.5.0" 657 | type-is "~1.6.18" 658 | utils-merge "1.0.1" 659 | vary "~1.1.2" 660 | 661 | ext@^1.1.2: 662 | version "1.4.0" 663 | resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" 664 | integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== 665 | dependencies: 666 | type "^2.0.0" 667 | 668 | extend@~3.0.2: 669 | version "3.0.2" 670 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 671 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 672 | 673 | extsprintf@1.3.0: 674 | version "1.3.0" 675 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 676 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 677 | 678 | extsprintf@^1.2.0: 679 | version "1.4.0" 680 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 681 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 682 | 683 | faker@^4.1.0: 684 | version "4.1.0" 685 | resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" 686 | integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8= 687 | 688 | fast-deep-equal@^3.1.1: 689 | version "3.1.1" 690 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 691 | integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 692 | 693 | fast-json-stable-stringify@^2.0.0: 694 | version "2.1.0" 695 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 696 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 697 | 698 | finalhandler@~1.1.2: 699 | version "1.1.2" 700 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 701 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 702 | dependencies: 703 | debug "2.6.9" 704 | encodeurl "~1.0.2" 705 | escape-html "~1.0.3" 706 | on-finished "~2.3.0" 707 | parseurl "~1.3.3" 708 | statuses "~1.5.0" 709 | unpipe "~1.0.0" 710 | 711 | find-up@^3.0.0: 712 | version "3.0.0" 713 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 714 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 715 | dependencies: 716 | locate-path "^3.0.0" 717 | 718 | follow-redirects@1.5.10: 719 | version "1.5.10" 720 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" 721 | integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== 722 | dependencies: 723 | debug "=3.1.0" 724 | 725 | forever-agent@~0.6.1: 726 | version "0.6.1" 727 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 728 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 729 | 730 | form-data@~2.3.2: 731 | version "2.3.3" 732 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 733 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 734 | dependencies: 735 | asynckit "^0.4.0" 736 | combined-stream "^1.0.6" 737 | mime-types "^2.1.12" 738 | 739 | forwarded@~0.1.2: 740 | version "0.1.2" 741 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 742 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 743 | 744 | fresh@0.5.2: 745 | version "0.5.2" 746 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 747 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 748 | 749 | fs-extra@^7.0.1: 750 | version "7.0.1" 751 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" 752 | integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== 753 | dependencies: 754 | graceful-fs "^4.1.2" 755 | jsonfile "^4.0.0" 756 | universalify "^0.1.0" 757 | 758 | fs-minipass@^1.2.5: 759 | version "1.2.7" 760 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" 761 | integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== 762 | dependencies: 763 | minipass "^2.6.0" 764 | 765 | fs.realpath@^1.0.0: 766 | version "1.0.0" 767 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 768 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 769 | 770 | gauge@~2.7.3: 771 | version "2.7.4" 772 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 773 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 774 | dependencies: 775 | aproba "^1.0.3" 776 | console-control-strings "^1.0.0" 777 | has-unicode "^2.0.0" 778 | object-assign "^4.1.0" 779 | signal-exit "^3.0.0" 780 | string-width "^1.0.1" 781 | strip-ansi "^3.0.1" 782 | wide-align "^1.1.0" 783 | 784 | get-caller-file@^2.0.1: 785 | version "2.0.5" 786 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 787 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 788 | 789 | getpass@^0.1.1: 790 | version "0.1.7" 791 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 792 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 793 | dependencies: 794 | assert-plus "^1.0.0" 795 | 796 | glob@^7.1.3: 797 | version "7.1.6" 798 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 799 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 800 | dependencies: 801 | fs.realpath "^1.0.0" 802 | inflight "^1.0.4" 803 | inherits "2" 804 | minimatch "^3.0.4" 805 | once "^1.3.0" 806 | path-is-absolute "^1.0.0" 807 | 808 | graceful-fs@^4.1.2, graceful-fs@^4.1.6: 809 | version "4.2.3" 810 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 811 | integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== 812 | 813 | graphql-type-json@^0.3.0: 814 | version "0.3.1" 815 | resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.3.1.tgz#47fca2b1fa7adc0758d165b33580d7be7a6cf548" 816 | integrity sha512-1lPkUXQ2L8o+ERLzVAuc3rzc/E6pGF+6HnjihCVTK0VzR0jCuUd92FqNxoHdfILXqOn2L6b4y47TBxiPyieUVA== 817 | 818 | graphql@*, graphql@^14.3.0, graphql@^14.5.3: 819 | version "14.6.0" 820 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.6.0.tgz#57822297111e874ea12f5cd4419616930cd83e49" 821 | integrity sha512-VKzfvHEKybTKjQVpTFrA5yUq2S9ihcZvfJAtsDBBCuV6wauPu1xl/f9ehgVf0FcEJJs4vz6ysb/ZMkGigQZseg== 822 | dependencies: 823 | iterall "^1.2.2" 824 | 825 | har-schema@^2.0.0: 826 | version "2.0.0" 827 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 828 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 829 | 830 | har-validator@~5.1.0: 831 | version "5.1.3" 832 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 833 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 834 | dependencies: 835 | ajv "^6.5.5" 836 | har-schema "^2.0.0" 837 | 838 | has-unicode@^2.0.0: 839 | version "2.0.1" 840 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 841 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 842 | 843 | http-errors@1.7.2: 844 | version "1.7.2" 845 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 846 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 847 | dependencies: 848 | depd "~1.1.2" 849 | inherits "2.0.3" 850 | setprototypeof "1.1.1" 851 | statuses ">= 1.5.0 < 2" 852 | toidentifier "1.0.0" 853 | 854 | http-errors@1.7.3, http-errors@^1.7.2, http-errors@~1.7.2: 855 | version "1.7.3" 856 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 857 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 858 | dependencies: 859 | depd "~1.1.2" 860 | inherits "2.0.4" 861 | setprototypeof "1.1.1" 862 | statuses ">= 1.5.0 < 2" 863 | toidentifier "1.0.0" 864 | 865 | http-signature@~1.2.0: 866 | version "1.2.0" 867 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 868 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 869 | dependencies: 870 | assert-plus "^1.0.0" 871 | jsprim "^1.2.2" 872 | sshpk "^1.7.0" 873 | 874 | iconv-lite@0.4.24, iconv-lite@^0.4.4: 875 | version "0.4.24" 876 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 877 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 878 | dependencies: 879 | safer-buffer ">= 2.1.2 < 3" 880 | 881 | ignore-walk@^3.0.1: 882 | version "3.0.3" 883 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" 884 | integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== 885 | dependencies: 886 | minimatch "^3.0.4" 887 | 888 | inflection@1.12.0: 889 | version "1.12.0" 890 | resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" 891 | integrity sha1-ogCTVlbW9fa8TcdQLhrstwMihBY= 892 | 893 | inflight@^1.0.4: 894 | version "1.0.6" 895 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 896 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 897 | dependencies: 898 | once "^1.3.0" 899 | wrappy "1" 900 | 901 | inherits@2, inherits@2.0.4, inherits@~2.0.3: 902 | version "2.0.4" 903 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 904 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 905 | 906 | inherits@2.0.3: 907 | version "2.0.3" 908 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 909 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 910 | 911 | ini@^1.3.4, ini@~1.3.0: 912 | version "1.3.5" 913 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 914 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 915 | 916 | ipaddr.js@1.9.0: 917 | version "1.9.0" 918 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" 919 | integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== 920 | 921 | is-bluebird@^1.0.2: 922 | version "1.0.2" 923 | resolved "https://registry.yarnpkg.com/is-bluebird/-/is-bluebird-1.0.2.tgz#096439060f4aa411abee19143a84d6a55346d6e2" 924 | integrity sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI= 925 | 926 | is-buffer@^2.0.2: 927 | version "2.0.4" 928 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" 929 | integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== 930 | 931 | is-fullwidth-code-point@^1.0.0: 932 | version "1.0.0" 933 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 934 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 935 | dependencies: 936 | number-is-nan "^1.0.0" 937 | 938 | is-fullwidth-code-point@^2.0.0: 939 | version "2.0.0" 940 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 941 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 942 | 943 | is-promise@^2.1: 944 | version "2.1.0" 945 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 946 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 947 | 948 | is-typedarray@~1.0.0: 949 | version "1.0.0" 950 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 951 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 952 | 953 | isarray@~1.0.0: 954 | version "1.0.0" 955 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 956 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 957 | 958 | isstream@~0.1.2: 959 | version "0.1.2" 960 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 961 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 962 | 963 | iterall@^1.2.2: 964 | version "1.3.0" 965 | resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" 966 | integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== 967 | 968 | js-beautify@^1.8.8: 969 | version "1.10.3" 970 | resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.10.3.tgz#c73fa10cf69d3dfa52d8ed624f23c64c0a6a94c1" 971 | integrity sha512-wfk/IAWobz1TfApSdivH5PJ0miIHgDoYb1ugSqHcODPmaYu46rYe5FVuIEkhjg8IQiv6rDNPyhsqbsohI/C2vQ== 972 | dependencies: 973 | config-chain "^1.1.12" 974 | editorconfig "^0.15.3" 975 | glob "^7.1.3" 976 | mkdirp "~0.5.1" 977 | nopt "~4.0.1" 978 | 979 | jsbn@~0.1.0: 980 | version "0.1.1" 981 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 982 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 983 | 984 | json-schema-traverse@^0.4.1: 985 | version "0.4.1" 986 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 987 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 988 | 989 | json-schema@0.2.3: 990 | version "0.2.3" 991 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 992 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 993 | 994 | json-stringify-safe@~5.0.1: 995 | version "5.0.1" 996 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 997 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 998 | 999 | jsonfile@^4.0.0: 1000 | version "4.0.0" 1001 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1002 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 1003 | optionalDependencies: 1004 | graceful-fs "^4.1.6" 1005 | 1006 | jsprim@^1.2.2: 1007 | version "1.4.1" 1008 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 1009 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 1010 | dependencies: 1011 | assert-plus "1.0.0" 1012 | extsprintf "1.3.0" 1013 | json-schema "0.2.3" 1014 | verror "1.10.0" 1015 | 1016 | locate-path@^3.0.0: 1017 | version "3.0.0" 1018 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1019 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1020 | dependencies: 1021 | p-locate "^3.0.0" 1022 | path-exists "^3.0.0" 1023 | 1024 | lodash@^4.17.15, lodash@^4.17.5: 1025 | version "4.17.15" 1026 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 1027 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 1028 | 1029 | lru-cache@^4.1.5: 1030 | version "4.1.5" 1031 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 1032 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 1033 | dependencies: 1034 | pseudomap "^1.0.2" 1035 | yallist "^2.1.2" 1036 | 1037 | lru-queue@0.1: 1038 | version "0.1.0" 1039 | resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" 1040 | integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= 1041 | dependencies: 1042 | es5-ext "~0.10.2" 1043 | 1044 | media-typer@0.3.0: 1045 | version "0.3.0" 1046 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1047 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 1048 | 1049 | memoizee@^0.4.14: 1050 | version "0.4.14" 1051 | resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" 1052 | integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== 1053 | dependencies: 1054 | d "1" 1055 | es5-ext "^0.10.45" 1056 | es6-weak-map "^2.0.2" 1057 | event-emitter "^0.3.5" 1058 | is-promise "^2.1" 1059 | lru-queue "0.1" 1060 | next-tick "1" 1061 | timers-ext "^0.1.5" 1062 | 1063 | merge-descriptors@1.0.1: 1064 | version "1.0.1" 1065 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1066 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 1067 | 1068 | methods@~1.1.2: 1069 | version "1.1.2" 1070 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1071 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 1072 | 1073 | mime-db@1.43.0: 1074 | version "1.43.0" 1075 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" 1076 | integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== 1077 | 1078 | mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: 1079 | version "2.1.26" 1080 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" 1081 | integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== 1082 | dependencies: 1083 | mime-db "1.43.0" 1084 | 1085 | mime@1.6.0: 1086 | version "1.6.0" 1087 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1088 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1089 | 1090 | minimatch@^3.0.4: 1091 | version "3.0.4" 1092 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1093 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1094 | dependencies: 1095 | brace-expansion "^1.1.7" 1096 | 1097 | minimist@0.0.8: 1098 | version "0.0.8" 1099 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1100 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1101 | 1102 | minimist@^1.2.0: 1103 | version "1.2.0" 1104 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1105 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 1106 | 1107 | minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: 1108 | version "2.9.0" 1109 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" 1110 | integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== 1111 | dependencies: 1112 | safe-buffer "^5.1.2" 1113 | yallist "^3.0.0" 1114 | 1115 | minizlib@^1.2.1: 1116 | version "1.3.3" 1117 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" 1118 | integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== 1119 | dependencies: 1120 | minipass "^2.9.0" 1121 | 1122 | mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: 1123 | version "0.5.1" 1124 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1125 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1126 | dependencies: 1127 | minimist "0.0.8" 1128 | 1129 | moment-timezone@^0.5.21: 1130 | version "0.5.27" 1131 | resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.27.tgz#73adec8139b6fe30452e78f210f27b1f346b8877" 1132 | integrity sha512-EIKQs7h5sAsjhPCqN6ggx6cEbs94GK050254TIJySD1bzoM5JTYDwAU1IoVOeTOL6Gm27kYJ51/uuvq1kIlrbw== 1133 | dependencies: 1134 | moment ">= 2.9.0" 1135 | 1136 | "moment@>= 2.9.0", moment@^2.24.0: 1137 | version "2.24.0" 1138 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" 1139 | integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== 1140 | 1141 | ms@2.0.0: 1142 | version "2.0.0" 1143 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1144 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1145 | 1146 | ms@2.1.1: 1147 | version "2.1.1" 1148 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1149 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 1150 | 1151 | ms@^2.1.1: 1152 | version "2.1.2" 1153 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1154 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1155 | 1156 | nan@^2.12.1: 1157 | version "2.14.0" 1158 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" 1159 | integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== 1160 | 1161 | needle@^2.2.1: 1162 | version "2.3.2" 1163 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.2.tgz#3342dea100b7160960a450dc8c22160ac712a528" 1164 | integrity sha512-DUzITvPVDUy6vczKKYTnWc/pBZ0EnjMJnQ3y+Jo5zfKFimJs7S3HFCxCRZYB9FUZcrzUQr3WsmvZgddMEIZv6w== 1165 | dependencies: 1166 | debug "^3.2.6" 1167 | iconv-lite "^0.4.4" 1168 | sax "^1.2.4" 1169 | 1170 | negotiator@0.6.2: 1171 | version "0.6.2" 1172 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 1173 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 1174 | 1175 | next-tick@1, next-tick@~1.0.0: 1176 | version "1.0.0" 1177 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" 1178 | integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= 1179 | 1180 | node-addon-api@^1.7.1: 1181 | version "1.7.1" 1182 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.1.tgz#cf813cd69bb8d9100f6bdca6755fc268f54ac492" 1183 | integrity sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ== 1184 | 1185 | node-pre-gyp@^0.11.0: 1186 | version "0.11.0" 1187 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" 1188 | integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== 1189 | dependencies: 1190 | detect-libc "^1.0.2" 1191 | mkdirp "^0.5.1" 1192 | needle "^2.2.1" 1193 | nopt "^4.0.1" 1194 | npm-packlist "^1.1.6" 1195 | npmlog "^4.0.2" 1196 | rc "^1.2.7" 1197 | rimraf "^2.6.1" 1198 | semver "^5.3.0" 1199 | tar "^4" 1200 | 1201 | node-pre-gyp@^0.13.0: 1202 | version "0.13.0" 1203 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz#df9ab7b68dd6498137717838e4f92a33fc9daa42" 1204 | integrity sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ== 1205 | dependencies: 1206 | detect-libc "^1.0.2" 1207 | mkdirp "^0.5.1" 1208 | needle "^2.2.1" 1209 | nopt "^4.0.1" 1210 | npm-packlist "^1.1.6" 1211 | npmlog "^4.0.2" 1212 | rc "^1.2.7" 1213 | rimraf "^2.6.1" 1214 | semver "^5.3.0" 1215 | tar "^4" 1216 | 1217 | nopt@^4.0.1, nopt@~4.0.1: 1218 | version "4.0.1" 1219 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1220 | integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= 1221 | dependencies: 1222 | abbrev "1" 1223 | osenv "^0.1.4" 1224 | 1225 | npm-bundled@^1.0.1: 1226 | version "1.1.1" 1227 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" 1228 | integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== 1229 | dependencies: 1230 | npm-normalize-package-bin "^1.0.1" 1231 | 1232 | npm-normalize-package-bin@^1.0.1: 1233 | version "1.0.1" 1234 | resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" 1235 | integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== 1236 | 1237 | npm-packlist@^1.1.6: 1238 | version "1.4.8" 1239 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" 1240 | integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== 1241 | dependencies: 1242 | ignore-walk "^3.0.1" 1243 | npm-bundled "^1.0.1" 1244 | npm-normalize-package-bin "^1.0.1" 1245 | 1246 | npmlog@^4.0.2: 1247 | version "4.1.2" 1248 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1249 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== 1250 | dependencies: 1251 | are-we-there-yet "~1.1.2" 1252 | console-control-strings "~1.1.0" 1253 | gauge "~2.7.3" 1254 | set-blocking "~2.0.0" 1255 | 1256 | number-is-nan@^1.0.0: 1257 | version "1.0.1" 1258 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1259 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 1260 | 1261 | oauth-sign@~0.9.0: 1262 | version "0.9.0" 1263 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 1264 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 1265 | 1266 | object-assign@^4, object-assign@^4.1.0: 1267 | version "4.1.1" 1268 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1269 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1270 | 1271 | on-finished@~2.3.0: 1272 | version "2.3.0" 1273 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1274 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 1275 | dependencies: 1276 | ee-first "1.1.1" 1277 | 1278 | on-headers@~1.0.2: 1279 | version "1.0.2" 1280 | resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" 1281 | integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== 1282 | 1283 | once@^1.3.0: 1284 | version "1.4.0" 1285 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1286 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1287 | dependencies: 1288 | wrappy "1" 1289 | 1290 | os-homedir@^1.0.0: 1291 | version "1.0.2" 1292 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1293 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 1294 | 1295 | os-tmpdir@^1.0.0: 1296 | version "1.0.2" 1297 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1298 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1299 | 1300 | osenv@^0.1.4: 1301 | version "0.1.5" 1302 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 1303 | integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== 1304 | dependencies: 1305 | os-homedir "^1.0.0" 1306 | os-tmpdir "^1.0.0" 1307 | 1308 | p-limit@^2.0.0: 1309 | version "2.2.2" 1310 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" 1311 | integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== 1312 | dependencies: 1313 | p-try "^2.0.0" 1314 | 1315 | p-locate@^3.0.0: 1316 | version "3.0.0" 1317 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1318 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1319 | dependencies: 1320 | p-limit "^2.0.0" 1321 | 1322 | p-try@^2.0.0: 1323 | version "2.2.0" 1324 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1325 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1326 | 1327 | parseurl@~1.3.3: 1328 | version "1.3.3" 1329 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1330 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1331 | 1332 | path-exists@^3.0.0: 1333 | version "3.0.0" 1334 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1335 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1336 | 1337 | path-is-absolute@^1.0.0: 1338 | version "1.0.1" 1339 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1340 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1341 | 1342 | path-parse@^1.0.6: 1343 | version "1.0.6" 1344 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1345 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1346 | 1347 | path-to-regexp@0.1.7: 1348 | version "0.1.7" 1349 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1350 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 1351 | 1352 | performance-now@^2.1.0: 1353 | version "2.1.0" 1354 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 1355 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 1356 | 1357 | process-nextick-args@~2.0.0: 1358 | version "2.0.1" 1359 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1360 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1361 | 1362 | proto-list@~1.2.1: 1363 | version "1.2.4" 1364 | resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" 1365 | integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= 1366 | 1367 | proxy-addr@~2.0.5: 1368 | version "2.0.5" 1369 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" 1370 | integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== 1371 | dependencies: 1372 | forwarded "~0.1.2" 1373 | ipaddr.js "1.9.0" 1374 | 1375 | pseudomap@^1.0.2: 1376 | version "1.0.2" 1377 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1378 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 1379 | 1380 | psl@^1.1.24: 1381 | version "1.7.0" 1382 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" 1383 | integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== 1384 | 1385 | punycode@^1.4.1: 1386 | version "1.4.1" 1387 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1388 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 1389 | 1390 | punycode@^2.1.0: 1391 | version "2.1.1" 1392 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1393 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1394 | 1395 | qs@6.7.0: 1396 | version "6.7.0" 1397 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 1398 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 1399 | 1400 | qs@~6.5.2: 1401 | version "6.5.2" 1402 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 1403 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 1404 | 1405 | random-bytes@~1.0.0: 1406 | version "1.0.0" 1407 | resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" 1408 | integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs= 1409 | 1410 | range-parser@~1.2.1: 1411 | version "1.2.1" 1412 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1413 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1414 | 1415 | raw-body@2.4.0: 1416 | version "2.4.0" 1417 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 1418 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 1419 | dependencies: 1420 | bytes "3.1.0" 1421 | http-errors "1.7.2" 1422 | iconv-lite "0.4.24" 1423 | unpipe "1.0.0" 1424 | 1425 | raw-body@^2.3.3: 1426 | version "2.4.1" 1427 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" 1428 | integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== 1429 | dependencies: 1430 | bytes "3.1.0" 1431 | http-errors "1.7.3" 1432 | iconv-lite "0.4.24" 1433 | unpipe "1.0.0" 1434 | 1435 | rc@^1.2.7: 1436 | version "1.2.8" 1437 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1438 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1439 | dependencies: 1440 | deep-extend "^0.6.0" 1441 | ini "~1.3.0" 1442 | minimist "^1.2.0" 1443 | strip-json-comments "~2.0.1" 1444 | 1445 | readable-stream@^2.0.6: 1446 | version "2.3.7" 1447 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1448 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1449 | dependencies: 1450 | core-util-is "~1.0.0" 1451 | inherits "~2.0.3" 1452 | isarray "~1.0.0" 1453 | process-nextick-args "~2.0.0" 1454 | safe-buffer "~5.1.1" 1455 | string_decoder "~1.1.1" 1456 | util-deprecate "~1.0.1" 1457 | 1458 | regenerator-runtime@^0.11.0: 1459 | version "0.11.1" 1460 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" 1461 | integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== 1462 | 1463 | request@^2.87.0: 1464 | version "2.88.0" 1465 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 1466 | integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== 1467 | dependencies: 1468 | aws-sign2 "~0.7.0" 1469 | aws4 "^1.8.0" 1470 | caseless "~0.12.0" 1471 | combined-stream "~1.0.6" 1472 | extend "~3.0.2" 1473 | forever-agent "~0.6.1" 1474 | form-data "~2.3.2" 1475 | har-validator "~5.1.0" 1476 | http-signature "~1.2.0" 1477 | is-typedarray "~1.0.0" 1478 | isstream "~0.1.2" 1479 | json-stringify-safe "~5.0.1" 1480 | mime-types "~2.1.19" 1481 | oauth-sign "~0.9.0" 1482 | performance-now "^2.1.0" 1483 | qs "~6.5.2" 1484 | safe-buffer "^5.1.2" 1485 | tough-cookie "~2.4.3" 1486 | tunnel-agent "^0.6.0" 1487 | uuid "^3.3.2" 1488 | 1489 | require-directory@^2.1.1: 1490 | version "2.1.1" 1491 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1492 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1493 | 1494 | require-main-filename@^2.0.0: 1495 | version "2.0.0" 1496 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 1497 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 1498 | 1499 | resolve@^1.5.0: 1500 | version "1.15.0" 1501 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" 1502 | integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== 1503 | dependencies: 1504 | path-parse "^1.0.6" 1505 | 1506 | retry-as-promised@^3.2.0: 1507 | version "3.2.0" 1508 | resolved "https://registry.yarnpkg.com/retry-as-promised/-/retry-as-promised-3.2.0.tgz#769f63d536bec4783549db0777cb56dadd9d8543" 1509 | integrity sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg== 1510 | dependencies: 1511 | any-promise "^1.3.0" 1512 | 1513 | rimraf@^2.6.1: 1514 | version "2.7.1" 1515 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 1516 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 1517 | dependencies: 1518 | glob "^7.1.3" 1519 | 1520 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1521 | version "5.1.2" 1522 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1523 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1524 | 1525 | safe-buffer@5.2.0, safe-buffer@^5.0.1, safe-buffer@^5.1.2: 1526 | version "5.2.0" 1527 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 1528 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 1529 | 1530 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 1531 | version "2.1.2" 1532 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1533 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1534 | 1535 | sax@^1.2.4: 1536 | version "1.2.4" 1537 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 1538 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1539 | 1540 | semver@^5.3.0, semver@^5.6.0: 1541 | version "5.7.1" 1542 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1543 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1544 | 1545 | semver@^6.3.0: 1546 | version "6.3.0" 1547 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1548 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1549 | 1550 | send@0.17.1: 1551 | version "0.17.1" 1552 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 1553 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 1554 | dependencies: 1555 | debug "2.6.9" 1556 | depd "~1.1.2" 1557 | destroy "~1.0.4" 1558 | encodeurl "~1.0.2" 1559 | escape-html "~1.0.3" 1560 | etag "~1.8.1" 1561 | fresh "0.5.2" 1562 | http-errors "~1.7.2" 1563 | mime "1.6.0" 1564 | ms "2.1.1" 1565 | on-finished "~2.3.0" 1566 | range-parser "~1.2.1" 1567 | statuses "~1.5.0" 1568 | 1569 | sequelize-cli@^5.5.1: 1570 | version "5.5.1" 1571 | resolved "https://registry.yarnpkg.com/sequelize-cli/-/sequelize-cli-5.5.1.tgz#0b9c2fc04d082cc8ae0a8fe270b96bb606152bab" 1572 | integrity sha512-ZM4kUZvY3y14y+Rq3cYxGH7YDJz11jWHcN2p2x7rhAIemouu4CEXr5ebw30lzTBtyXV4j2kTO+nUjZOqzG7k+Q== 1573 | dependencies: 1574 | bluebird "^3.5.3" 1575 | cli-color "^1.4.0" 1576 | fs-extra "^7.0.1" 1577 | js-beautify "^1.8.8" 1578 | lodash "^4.17.5" 1579 | resolve "^1.5.0" 1580 | umzug "^2.1.0" 1581 | yargs "^13.1.0" 1582 | 1583 | sequelize-pool@^2.3.0: 1584 | version "2.3.0" 1585 | resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-2.3.0.tgz#64f1fe8744228172c474f530604b6133be64993d" 1586 | integrity sha512-Ibz08vnXvkZ8LJTiUOxRcj1Ckdn7qafNZ2t59jYHMX1VIebTAOYefWdRYFt6z6+hy52WGthAHAoLc9hvk3onqA== 1587 | 1588 | sequelize@^5.21.5: 1589 | version "5.21.5" 1590 | resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-5.21.5.tgz#44056f3ab8862ccbfeebd5e03ce041c570477ea2" 1591 | integrity sha512-n9hR5K4uQGmBGK/Y/iqewCeSFmKVsd0TRnh0tfoLoAkmXbKC4tpeK96RhKs7d+TTMtrJlgt2TNLVBaAxEwC4iw== 1592 | dependencies: 1593 | bluebird "^3.5.0" 1594 | cls-bluebird "^2.1.0" 1595 | debug "^4.1.1" 1596 | dottie "^2.0.0" 1597 | inflection "1.12.0" 1598 | lodash "^4.17.15" 1599 | moment "^2.24.0" 1600 | moment-timezone "^0.5.21" 1601 | retry-as-promised "^3.2.0" 1602 | semver "^6.3.0" 1603 | sequelize-pool "^2.3.0" 1604 | toposort-class "^1.0.1" 1605 | uuid "^3.3.3" 1606 | validator "^10.11.0" 1607 | wkx "^0.4.8" 1608 | 1609 | serve-static@1.14.1: 1610 | version "1.14.1" 1611 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 1612 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 1613 | dependencies: 1614 | encodeurl "~1.0.2" 1615 | escape-html "~1.0.3" 1616 | parseurl "~1.3.3" 1617 | send "0.17.1" 1618 | 1619 | set-blocking@^2.0.0, set-blocking@~2.0.0: 1620 | version "2.0.0" 1621 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1622 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1623 | 1624 | setprototypeof@1.1.1: 1625 | version "1.1.1" 1626 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1627 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1628 | 1629 | shimmer@^1.1.0: 1630 | version "1.2.1" 1631 | resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" 1632 | integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== 1633 | 1634 | sigmund@^1.0.1: 1635 | version "1.0.1" 1636 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" 1637 | integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= 1638 | 1639 | signal-exit@^3.0.0: 1640 | version "3.0.2" 1641 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1642 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 1643 | 1644 | sql-template-strings@^2.2.2: 1645 | version "2.2.2" 1646 | resolved "https://registry.yarnpkg.com/sql-template-strings/-/sql-template-strings-2.2.2.tgz#3f11508a25addfce217a3042a9d300c3193b96ff" 1647 | integrity sha1-PxFQiiWt384hejBCqdMAwxk7lv8= 1648 | 1649 | sqlite3@^4.0.0, sqlite3@^4.1.1: 1650 | version "4.1.1" 1651 | resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.1.1.tgz#539a42e476640796578e22d589b3283c28055242" 1652 | integrity sha512-CvT5XY+MWnn0HkbwVKJAyWEMfzpAPwnTiB3TobA5Mri44SrTovmmh499NPQP+gatkeOipqPlBLel7rn4E/PCQg== 1653 | dependencies: 1654 | nan "^2.12.1" 1655 | node-pre-gyp "^0.11.0" 1656 | request "^2.87.0" 1657 | 1658 | sqlite@^3.0.3: 1659 | version "3.0.3" 1660 | resolved "https://registry.yarnpkg.com/sqlite/-/sqlite-3.0.3.tgz#3f519cfc599ffa3270d76f3567bf2abb2ac18742" 1661 | integrity sha512-DpofdtBibbiOObtdADGZYE6bvnLpjRG4ut/MDTDau2nK40htOLj1E0c55aOkvbnRVqQ0ZPtjj7PJuKKyS0Ypww== 1662 | dependencies: 1663 | sqlite3 "^4.0.0" 1664 | optionalDependencies: 1665 | sql-template-strings "^2.2.2" 1666 | 1667 | sshpk@^1.7.0: 1668 | version "1.16.1" 1669 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 1670 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 1671 | dependencies: 1672 | asn1 "~0.2.3" 1673 | assert-plus "^1.0.0" 1674 | bcrypt-pbkdf "^1.0.0" 1675 | dashdash "^1.12.0" 1676 | ecc-jsbn "~0.1.1" 1677 | getpass "^0.1.1" 1678 | jsbn "~0.1.0" 1679 | safer-buffer "^2.0.2" 1680 | tweetnacl "~0.14.0" 1681 | 1682 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 1683 | version "1.5.0" 1684 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1685 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1686 | 1687 | string-width@^1.0.1: 1688 | version "1.0.2" 1689 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1690 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 1691 | dependencies: 1692 | code-point-at "^1.0.0" 1693 | is-fullwidth-code-point "^1.0.0" 1694 | strip-ansi "^3.0.0" 1695 | 1696 | "string-width@^1.0.2 || 2": 1697 | version "2.1.1" 1698 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1699 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1700 | dependencies: 1701 | is-fullwidth-code-point "^2.0.0" 1702 | strip-ansi "^4.0.0" 1703 | 1704 | string-width@^3.0.0, string-width@^3.1.0: 1705 | version "3.1.0" 1706 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1707 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1708 | dependencies: 1709 | emoji-regex "^7.0.1" 1710 | is-fullwidth-code-point "^2.0.0" 1711 | strip-ansi "^5.1.0" 1712 | 1713 | string_decoder@~1.1.1: 1714 | version "1.1.1" 1715 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1716 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1717 | dependencies: 1718 | safe-buffer "~5.1.0" 1719 | 1720 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1721 | version "3.0.1" 1722 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1723 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 1724 | dependencies: 1725 | ansi-regex "^2.0.0" 1726 | 1727 | strip-ansi@^4.0.0: 1728 | version "4.0.0" 1729 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1730 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1731 | dependencies: 1732 | ansi-regex "^3.0.0" 1733 | 1734 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1735 | version "5.2.0" 1736 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1737 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1738 | dependencies: 1739 | ansi-regex "^4.1.0" 1740 | 1741 | strip-json-comments@~2.0.1: 1742 | version "2.0.1" 1743 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1744 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1745 | 1746 | tar@^4: 1747 | version "4.4.13" 1748 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" 1749 | integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== 1750 | dependencies: 1751 | chownr "^1.1.1" 1752 | fs-minipass "^1.2.5" 1753 | minipass "^2.8.6" 1754 | minizlib "^1.2.1" 1755 | mkdirp "^0.5.0" 1756 | safe-buffer "^5.1.2" 1757 | yallist "^3.0.3" 1758 | 1759 | timers-ext@^0.1.5: 1760 | version "0.1.7" 1761 | resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" 1762 | integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== 1763 | dependencies: 1764 | es5-ext "~0.10.46" 1765 | next-tick "1" 1766 | 1767 | toidentifier@1.0.0: 1768 | version "1.0.0" 1769 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1770 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 1771 | 1772 | toposort-class@^1.0.1: 1773 | version "1.0.1" 1774 | resolved "https://registry.yarnpkg.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988" 1775 | integrity sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg= 1776 | 1777 | tough-cookie@~2.4.3: 1778 | version "2.4.3" 1779 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 1780 | integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== 1781 | dependencies: 1782 | psl "^1.1.24" 1783 | punycode "^1.4.1" 1784 | 1785 | tunnel-agent@^0.6.0: 1786 | version "0.6.0" 1787 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1788 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 1789 | dependencies: 1790 | safe-buffer "^5.0.1" 1791 | 1792 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1793 | version "0.14.5" 1794 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 1795 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 1796 | 1797 | type-is@~1.6.17, type-is@~1.6.18: 1798 | version "1.6.18" 1799 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1800 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1801 | dependencies: 1802 | media-typer "0.3.0" 1803 | mime-types "~2.1.24" 1804 | 1805 | type@^1.0.1: 1806 | version "1.2.0" 1807 | resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" 1808 | integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== 1809 | 1810 | type@^2.0.0: 1811 | version "2.0.0" 1812 | resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" 1813 | integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== 1814 | 1815 | typescript@^3.4.5: 1816 | version "3.7.5" 1817 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" 1818 | integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== 1819 | 1820 | uid-safe@~2.1.5: 1821 | version "2.1.5" 1822 | resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" 1823 | integrity sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA== 1824 | dependencies: 1825 | random-bytes "~1.0.0" 1826 | 1827 | umzug@^2.1.0: 1828 | version "2.2.0" 1829 | resolved "https://registry.yarnpkg.com/umzug/-/umzug-2.2.0.tgz#6160bdc1817e4a63a625946775063c638623e62e" 1830 | integrity sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw== 1831 | dependencies: 1832 | babel-runtime "^6.23.0" 1833 | bluebird "^3.5.3" 1834 | 1835 | universalify@^0.1.0: 1836 | version "0.1.2" 1837 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1838 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1839 | 1840 | unpipe@1.0.0, unpipe@~1.0.0: 1841 | version "1.0.0" 1842 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1843 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1844 | 1845 | uri-js@^4.2.2: 1846 | version "4.2.2" 1847 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1848 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1849 | dependencies: 1850 | punycode "^2.1.0" 1851 | 1852 | util-deprecate@~1.0.1: 1853 | version "1.0.2" 1854 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1855 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1856 | 1857 | utils-merge@1.0.1: 1858 | version "1.0.1" 1859 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1860 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1861 | 1862 | uuid@^3.3.2, uuid@^3.3.3: 1863 | version "3.4.0" 1864 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 1865 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 1866 | 1867 | validator@^10.11.0: 1868 | version "10.11.0" 1869 | resolved "https://registry.yarnpkg.com/validator/-/validator-10.11.0.tgz#003108ea6e9a9874d31ccc9e5006856ccd76b228" 1870 | integrity sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw== 1871 | 1872 | vary@^1, vary@~1.1.2: 1873 | version "1.1.2" 1874 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1875 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1876 | 1877 | verror@1.10.0: 1878 | version "1.10.0" 1879 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 1880 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 1881 | dependencies: 1882 | assert-plus "^1.0.0" 1883 | core-util-is "1.0.2" 1884 | extsprintf "^1.2.0" 1885 | 1886 | which-module@^2.0.0: 1887 | version "2.0.0" 1888 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 1889 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 1890 | 1891 | wide-align@^1.1.0: 1892 | version "1.1.3" 1893 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1894 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 1895 | dependencies: 1896 | string-width "^1.0.2 || 2" 1897 | 1898 | wkx@^0.4.8: 1899 | version "0.4.8" 1900 | resolved "https://registry.yarnpkg.com/wkx/-/wkx-0.4.8.tgz#a092cf088d112683fdc7182fd31493b2c5820003" 1901 | integrity sha512-ikPXMM9IR/gy/LwiOSqWlSL3X/J5uk9EO2hHNRXS41eTLXaUFEVw9fn/593jW/tE5tedNg8YjT5HkCa4FqQZyQ== 1902 | dependencies: 1903 | "@types/node" "*" 1904 | 1905 | wrap-ansi@^5.1.0: 1906 | version "5.1.0" 1907 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 1908 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 1909 | dependencies: 1910 | ansi-styles "^3.2.0" 1911 | string-width "^3.0.0" 1912 | strip-ansi "^5.0.0" 1913 | 1914 | wrappy@1: 1915 | version "1.0.2" 1916 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1917 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1918 | 1919 | y18n@^4.0.0: 1920 | version "4.0.0" 1921 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 1922 | integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 1923 | 1924 | yallist@^2.1.2: 1925 | version "2.1.2" 1926 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 1927 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 1928 | 1929 | yallist@^3.0.0, yallist@^3.0.3: 1930 | version "3.1.1" 1931 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 1932 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 1933 | 1934 | yargs-parser@^13.1.1: 1935 | version "13.1.1" 1936 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" 1937 | integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== 1938 | dependencies: 1939 | camelcase "^5.0.0" 1940 | decamelize "^1.2.0" 1941 | 1942 | yargs@^13.1.0: 1943 | version "13.3.0" 1944 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" 1945 | integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== 1946 | dependencies: 1947 | cliui "^5.0.0" 1948 | find-up "^3.0.0" 1949 | get-caller-file "^2.0.1" 1950 | require-directory "^2.1.1" 1951 | require-main-filename "^2.0.0" 1952 | set-blocking "^2.0.0" 1953 | string-width "^3.0.0" 1954 | which-module "^2.0.0" 1955 | y18n "^4.0.0" 1956 | yargs-parser "^13.1.1" 1957 | --------------------------------------------------------------------------------