├── .gitignore ├── .vscode └── launch.json ├── README.md ├── app ├── Handlers │ ├── Tasks.js │ └── Users.js ├── Helpers │ └── Users.js ├── Middleware │ ├── ApiResponse.js │ ├── Validator.js │ └── VerifyToken.js └── Requests │ ├── Tasks.js │ └── Users.js ├── config ├── dynamodb-offline.yml └── dynamodb.yml ├── database └── seeds │ ├── tasks.json │ └── users.json ├── db.js ├── env.example.yml ├── package.json ├── routes ├── tasks.yml └── users.yml ├── serverless.yml ├── tests └── Helpers │ └── Users.test.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # package directories 2 | node_modules 3 | jspm_packages 4 | .vscode 5 | 6 | # Serverless directories 7 | .serverless 8 | 9 | # Secrets 10 | env.yml 11 | env.*.yml 12 | !env.example.yml 13 | 14 | # DB 15 | .dynamodb 16 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "name": "vscode-jest-tests", 10 | "request": "launch", 11 | "args": [ 12 | "--runInBand" 13 | ], 14 | "cwd": "${workspaceFolder}", 15 | "console": "integratedTerminal", 16 | "internalConsoleOptions": "neverOpen", 17 | "program": "${workspaceFolder}/node_modules/jest/bin/jest" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Serverless JWT Auth Boilerplate (⚠️ Work In Progress) 2 | 3 | A [Serverless](https://serverless.com/) REST API boilerplate for authenticating with email/password over JWT (JSON Web Tokens). 4 | 5 | In production, it uses: 6 | 7 | - [AWS Lambda](https://aws.amazon.com/lambda/) for computing 8 | - [AWS Dynamodb](https://aws.amazon.com/dynamodb‎) for database storage 9 | - [AWS Cloudformation](https://aws.amazon.com/cloudformation/) to provision the AWS resources 10 | - [AWS S3](https://aws.amazon.com/s3/) for object storage (storing the code) 11 | 12 | --- 13 | 14 | ## Installation 15 | 16 | ```bash 17 | # Install the Serverless CLI 18 | yarn global add serverless 19 | 20 | # Clone the repo 21 | git clone https://github.com/mcnamee/serverless-jwt-auth.git serverless-jwt-auth 22 | 23 | # Install dependencies 24 | cd serverless-jwt-auth && yarn install 25 | 26 | # Add your environment variables (and update the JWT secret) 27 | cp env.example.yml env.prod.yml 28 | ``` 29 | 30 | --- 31 | 32 | ## Usage 33 | 34 | ### Development 35 | 36 | You can use Serverless Offline while you develop, which starts a local DynamoDB instance (data is reset on each start) 37 | 38 | ```bash 39 | yarn start 40 | 41 | # OR to use env.staging.yml environment variables: 42 | # yarn start --STAGE staging 43 | ``` 44 | 45 | ### Tests 46 | 47 | ```bash 48 | yarn test 49 | ``` 50 | 51 | ### Production 52 | 53 | __1. Setup your AWS credentials__ 54 | 55 | _Create a new AWS IAM user and assign the `AdministratorAccess` policy to the new user (later, it's best to reduce the permissions this IAM User has for security reasons)._ 56 | 57 | ```bash 58 | serverless config credentials --provider aws --key --secret 59 | ``` 60 | 61 | __2. Then deploy to AWS__ 62 | 63 | ```bash 64 | sls deploy 65 | 66 | # OR to use env.dev.yml environment variables: 67 | # sls deploy --STAGE dev 68 | ``` 69 | 70 | --- 71 | 72 | ## Endpoints 73 | 74 | ### Register 75 | 76 | ```json 77 | Request: POST /register 78 | 79 | { 80 | "firstname": "John", 81 | "lastname": "Smith", 82 | "email": "john@smith.co", 83 | "password": "123Abc123" 84 | } 85 | 86 | # Response 87 | 88 | { 89 | "message": "Success - you are now registered", 90 | "data": { 91 | "token": "", 92 | "firstName": "John", 93 | "lastName": "Smith", 94 | "createdAt": 1536717884934, 95 | "level": "standard", 96 | "id": "37ff3e00-b630-11e8-b87d-85b1d165e421", 97 | "email": "john@doe.com", 98 | "updatedAt": 1536717884934 99 | } 100 | } 101 | ``` 102 | 103 | ### Login 104 | 105 | ```json 106 | # Request: POST /login 107 | 108 | { 109 | "email": "john@smith.co", 110 | "password": "123Abc123" 111 | } 112 | 113 | # Response 114 | 115 | { 116 | "message": "Success - you are now logged in", 117 | "data": { 118 | "token": "", 119 | "firstName": "John", 120 | "lastName": "Doe", 121 | "createdAt": 1536134110955, 122 | "level": "standard", 123 | "id": "03969310-b0e1-11e8-a48b-efa31124d46c", 124 | "email": "john@doe.com", 125 | "updatedAt": 1536134110955 126 | } 127 | } 128 | ``` 129 | 130 | ### My Details 131 | 132 | ```json 133 | # Request: GET /user 134 | 135 | # Response 136 | 137 | { 138 | "message": "Success - user data retrieved", 139 | "data": { 140 | "firstName": "John", 141 | "lastName": "Doe", 142 | "createdAt": 1536134110955, 143 | "level": "standard", 144 | "id": "03969310-b0e1-11e8-a48b-efa31124d46c", 145 | "email": "john@doe.com", 146 | "updatedAt": 1536276034130 147 | } 148 | } 149 | ``` 150 | 151 | 152 | ### Update User 153 | 154 | ```json 155 | Request: PUT /user 156 | 157 | { 158 | "firstName": "Jane", 159 | "lastName": "Doe", 160 | "email": "jane@doe.com", 161 | "password": "123Abc" 162 | } 163 | 164 | # Response 165 | 166 | { 167 | "message": "Success - user updated", 168 | "data": { 169 | "firstName": "Jane", 170 | "lastName": "Doe", 171 | "createdAt": 1536134110955, 172 | "level": "standard", 173 | "id": "03969310-b0e1-11e8-a48b-efa31124d46c", 174 | "email": "john@doe.com", 175 | "updatedAt": 1536276156160 176 | } 177 | } 178 | ``` 179 | -------------------------------------------------------------------------------- /app/Handlers/Tasks.js: -------------------------------------------------------------------------------- 1 | const connectToDatabase = require('../../db'); 2 | const TaskModel = require('../TaskModel'); 3 | const TaskRequest = require('../Requests/Tasks'); 4 | const sanitizer = require('validator'); 5 | 6 | /** 7 | * GET /tasks 8 | * Return a list of all tasks 9 | * @param event 10 | * @param context 11 | * @return obj 12 | */ 13 | module.exports.list = (event, context) => { 14 | context.callbackWaitsForEmptyEventLoop = false; 15 | 16 | return connectToDatabase() 17 | .then(() => list(event.requestContext.authorizer.principalId)) 18 | .then(tasks => ({ 19 | statusCode: 200, 20 | body: JSON.stringify(tasks) 21 | })).catch(err => ({ 22 | statusCode: err.statusCode || 500, 23 | headers: { 'Content-Type': 'text/plain' }, 24 | body: JSON.stringify({ message: err.message }) 25 | })); 26 | }; 27 | 28 | /** 29 | * Return a list of all tasks 30 | * @return arr 31 | */ 32 | function list(userId) { 33 | return TaskModel.find({ userId }) 34 | .then(tasks => !tasks ? Promise.reject('No tasks found.') : tasks) 35 | .catch(err => Promise.reject(new Error(err))); 36 | } 37 | 38 | 39 | /** 40 | * POST /task ---------------------------------------------------- 41 | * Create New Task 42 | * @param event 43 | * @param context 44 | */ 45 | module.exports.create = (event, context) => { 46 | context.callbackWaitsForEmptyEventLoop = false; 47 | 48 | return connectToDatabase() 49 | .then(() => create(JSON.parse(event.body), event.requestContext.authorizer.principalId)) 50 | .then(session => ({ 51 | statusCode: 200, 52 | body: JSON.stringify(session) 53 | })).catch(err => ({ 54 | statusCode: err.statusCode || 500, 55 | body: JSON.stringify({ message: err.message }) 56 | })); 57 | }; 58 | 59 | /** 60 | * Add the new user to the DB 61 | * @param eventBody 62 | */ 63 | async function create(eventBody, userId) { 64 | const body = { 65 | userId, 66 | name: sanitizer.trim(eventBody.name), 67 | }; 68 | 69 | return TaskRequest.create(body) 70 | .then(() => TaskModel.create(body)); 71 | } 72 | -------------------------------------------------------------------------------- /app/Handlers/Users.js: -------------------------------------------------------------------------------- 1 | const uuid = require('uuid'); 2 | const middy = require('middy'); 3 | const sanitizer = require('validator'); 4 | const bcrypt = require('bcryptjs-then'); 5 | const { jsonBodyParser } = require('middy/middlewares'); 6 | 7 | const DB = require('../../db'); 8 | const requestSchema = require('../Requests/Users'); 9 | const validatorMiddleware = require('../Middleware/Validator'); 10 | const apiResponseMiddleware = require('../Middleware/ApiResponse'); 11 | const { signToken, userByEmail, userById } = require('../Helpers/Users'); 12 | const TableName = process.env.TABLENAME_USERS; 13 | 14 | 15 | /** 16 | * POST /register ---------------------------------------------------- 17 | * User Sign Up 18 | * @param event 19 | * @param context 20 | * @param cb 21 | */ 22 | const register = async (event, context, cb) => { 23 | const { firstName, lastName, email, password } = event.body; 24 | 25 | const params = { 26 | TableName, 27 | Item: { 28 | id: await uuid.v1(), 29 | firstName: sanitizer.trim(firstName), 30 | lastName: sanitizer.trim(lastName), 31 | email: sanitizer.normalizeEmail(sanitizer.trim(email)), 32 | password: await bcrypt.hash(password, 8), 33 | level: 'standard', 34 | createdAt: new Date().getTime(), 35 | updatedAt: new Date().getTime(), 36 | }, 37 | }; 38 | 39 | return userByEmail(params.Item.email) // Does the email already exist? 40 | .then(user => { if (user) throw new Error('User with that email exists') }) 41 | .then(() => DB.put(params).promise()) // Add the data to the DB 42 | .then(() => userById(params.Item.id)) // Get user data from DB 43 | .then(user => cb(null, { 44 | statusCode: 201, 45 | message: 'Success - you are now registered', 46 | data: { token: signToken(params.Item.id), ...user }, 47 | })); 48 | } 49 | 50 | module.exports.register = middy(register) 51 | .use(jsonBodyParser()) 52 | .use(validatorMiddleware({ inputSchema: requestSchema.register })) 53 | .use(apiResponseMiddleware()); 54 | 55 | 56 | /** 57 | * POST /login ---------------------------------------------------- 58 | * Logs a user in - returns a JWT token 59 | * @param event 60 | * @param context 61 | * @param cb 62 | */ 63 | const login = async (event, context, cb) => { 64 | const { email, password } = event.body; 65 | 66 | return userByEmail(email) // Does the email exist? 67 | .then(user => { if (!user) { throw new Error('Username/Password is not correct'); } return user; }) 68 | .then(async (user) => { // Check if passwords match 69 | const passwordIsValid = await bcrypt.compare(password, user.password); 70 | if (!passwordIsValid) throw new Error('Username/Password is not correct'); 71 | return user; 72 | }) 73 | .then(user => cb(null, { 74 | message: 'Success - you are now logged in', 75 | data: { token: signToken(user.id), ...user }, 76 | })); 77 | } 78 | 79 | module.exports.login = middy(login) 80 | .use(jsonBodyParser()) 81 | .use(validatorMiddleware({ inputSchema: requestSchema.login })) 82 | .use(apiResponseMiddleware()); 83 | 84 | 85 | /** 86 | * GET /user ---------------------------------------------------- 87 | * Returns authenticated user's login details 88 | * @param event 89 | * @param context 90 | * @param cb 91 | */ 92 | const user = (event, context, cb) => cb(null, { 93 | message: 'Success - user data retrieved', 94 | data: event.requestContext.authorizer.user, 95 | }); 96 | 97 | module.exports.user = middy(user) 98 | .use(apiResponseMiddleware()); 99 | 100 | 101 | /** 102 | * PUT /user ---------------------------------------------------- 103 | * Update my User account 104 | * @param event 105 | * @param context 106 | * @param cb 107 | */ 108 | const update = async (event, context, cb) => { 109 | const { firstName, lastName, email, password } = event.body; 110 | const id = event.requestContext.authorizer.principalId; 111 | 112 | // Create update query based on user input 113 | let query = 'set firstName=:fn, lastName=:ln, email=:em, updatedAt=:ud'; 114 | const queryValues = { 115 | ':fn': sanitizer.trim(firstName), 116 | ':ln': sanitizer.trim(lastName), 117 | ':em': sanitizer.normalizeEmail(sanitizer.trim(email)), 118 | ':ud': new Date().getTime(), 119 | }; 120 | 121 | // Password is optional, if provided, pass to query 122 | if (password) { 123 | query += ', password=:pw'; 124 | queryValues[':pw'] = await bcrypt.hash(password, 8); 125 | } 126 | 127 | const params = { 128 | TableName, 129 | Key: { id }, 130 | UpdateExpression: query, 131 | ExpressionAttributeValues: queryValues, 132 | ReturnValues: 'ALL_NEW', 133 | } 134 | 135 | return userByEmail(queryValues[':em']) // Check if the new email already exists 136 | .then((foundUser) => { 137 | if (foundUser && foundUser.email) { 138 | // New email exists, and doesn't belong to the current user 139 | if (foundUser.email === queryValues[':em'] && foundUser.id !== id) { 140 | throw new Error('That email belongs to another user'); 141 | } 142 | } 143 | }) 144 | .then(() => DB.update(params).promise()) // Update the data to the DB 145 | .then(user => cb(null, {message: 'Success - user updated', data: user })); 146 | } 147 | 148 | module.exports.update = middy(update) 149 | .use(jsonBodyParser()) 150 | .use(validatorMiddleware({ inputSchema: requestSchema.update })) 151 | .use(apiResponseMiddleware()); 152 | -------------------------------------------------------------------------------- /app/Helpers/Users.js: -------------------------------------------------------------------------------- 1 | const jwt = require('jsonwebtoken'); 2 | const sanitizer = require('validator'); 3 | 4 | const DB = require('../../db'); 5 | const TableName = process.env.TABLENAME_USERS; 6 | 7 | 8 | /** 9 | * Create & Sign a JWT with the user ID for request auth 10 | * @param str id 11 | */ 12 | module.exports.signToken = id => jwt.sign({ id: id }, process.env.JWT_SECRET, { expiresIn: 86400 }); 13 | 14 | 15 | /** 16 | * Does a given email exist as a user? 17 | * @param str email 18 | */ 19 | module.exports.userByEmail = email => DB.scan({ 20 | TableName, 21 | FilterExpression : 'email = :email', 22 | ExpressionAttributeValues : { 23 | ':email': sanitizer.normalizeEmail(sanitizer.trim(email)) 24 | }, 25 | }).promise().then(res => (res && res.Items && res.Items[0]) ? res.Items[0] : null 26 | ).catch(err => null); 27 | 28 | 29 | /** 30 | * Get a user by ID 31 | * @param str id 32 | */ 33 | module.exports.userById = id => DB.get({ TableName, Key: { id } }).promise() 34 | .then((res) => { 35 | // Return the user 36 | if (res && res.Item) { 37 | // We don't want the password shown to users 38 | if (res.Item.password) delete res.Item.password; 39 | return res.Item; 40 | } 41 | 42 | throw new Error('User not found'); 43 | }); 44 | -------------------------------------------------------------------------------- /app/Middleware/ApiResponse.js: -------------------------------------------------------------------------------- 1 | module.exports = () => { 2 | return ({ 3 | after: (handler, next) => { 4 | handler.response = { 5 | statusCode: handler.response.statusCode || 200, 6 | body: JSON.stringify({ 7 | message: handler.response.message || 'Success', 8 | data: handler.response.data, 9 | }), 10 | }; 11 | next(); 12 | }, 13 | onError: (handler, next) => { 14 | handler.response = { 15 | statusCode: handler.response.statusCode || 500, 16 | body: JSON.stringify({ 17 | message: handler.error.message || 'Error', 18 | data: handler.response.body.data || null, 19 | }), 20 | }; 21 | next(); 22 | } 23 | }) 24 | } 25 | -------------------------------------------------------------------------------- /app/Middleware/Validator.js: -------------------------------------------------------------------------------- 1 | const createError = require('http-errors') 2 | const Ajv = require('ajv') 3 | const ajvKeywords = require('ajv-keywords') 4 | const ajvLocalize = require('ajv-i18n') 5 | const { deepStrictEqual } = require('assert') 6 | 7 | let ajv 8 | let previousConstructorOptions 9 | const defaults = { 10 | v5: true, 11 | coerceTypes: 'array', // important for query string params 12 | allErrors: true, 13 | useDefaults: true, 14 | $data: true, // required for ajv-keywords 15 | defaultLanguage: 'en' 16 | } 17 | 18 | const availableLanguages = Object.keys(ajvLocalize) 19 | 20 | /* in ajv-i18n Portuguese is represented as pt-BR */ 21 | const languageNormalizationMap = { 22 | 'pt': 'pt-BR', 23 | 'pt-br': 'pt-BR', 24 | 'pt_BR': 'pt-BR', 25 | 'pt_br': 'pt-BR' 26 | } 27 | 28 | const normalizePreferredLanguage = (lang) => languageNormalizationMap[lang] || lang 29 | 30 | const chooseLanguage = ({ preferredLanguage }, defaultLanguage) => { 31 | if (preferredLanguage) { 32 | const lang = normalizePreferredLanguage(preferredLanguage) 33 | if (availableLanguages.includes(lang)) { 34 | return lang 35 | } 36 | } 37 | 38 | return defaultLanguage 39 | } 40 | 41 | module.exports = ({ inputSchema, outputSchema, ajvOptions }) => { 42 | const options = Object.assign({}, defaults, ajvOptions) 43 | lazyLoadAjv(options) 44 | 45 | const validateInput = inputSchema ? ajv.compile(inputSchema) : null 46 | const validateOutput = outputSchema ? ajv.compile(outputSchema) : null 47 | 48 | return { 49 | before (handler, next) { 50 | if (!inputSchema) { 51 | return next() 52 | } 53 | 54 | const valid = validateInput(handler.event) 55 | 56 | if (!valid) { 57 | // const error = new createError.BadRequest('Event object failed validation') 58 | // handler.event.headers = Object.assign({}, handler.event.headers) 59 | // const language = chooseLanguage(handler.event, options.defaultLanguage) 60 | // ajvLocalize[language](validateInput.errors) 61 | 62 | // error.details = validateInput.errors 63 | // throw error 64 | 65 | handler.response = { 66 | statusCode: 500, 67 | body: { message: 'Input failed validation', data: validateInput.errors } 68 | }; 69 | throw new Error('Input failed validation'); 70 | } 71 | 72 | return next() 73 | }, 74 | after (handler, next) { 75 | if (!outputSchema || (!handler.response && handler.error)) { 76 | return next() 77 | } 78 | 79 | const valid = validateOutput(handler.response) 80 | 81 | if (!valid) { 82 | // const error = new createError.InternalServerError('Response object failed validation') 83 | // error.details = validateOutput.errors 84 | // error.response = handler.response 85 | // throw error 86 | 87 | handler.response = { 88 | statusCode: 500, 89 | body: { message: 'Output failed validation', data: validateOutput.errors } 90 | }; 91 | throw new Error('Output failed validation'); 92 | } 93 | 94 | return next() 95 | } 96 | } 97 | } 98 | 99 | function lazyLoadAjv (options) { 100 | if (shouldInitAjv(options)) { 101 | initAjv(options) 102 | } 103 | 104 | return ajv 105 | } 106 | 107 | function shouldInitAjv (options) { 108 | return !ajv || areConstructorOptionsNew(options) 109 | } 110 | 111 | function areConstructorOptionsNew (options) { 112 | try { 113 | deepStrictEqual(options, previousConstructorOptions) 114 | } catch (e) { 115 | return true 116 | } 117 | 118 | return false 119 | } 120 | 121 | function initAjv (options) { 122 | ajv = new Ajv(options) 123 | ajvKeywords(ajv) 124 | 125 | previousConstructorOptions = options 126 | } 127 | -------------------------------------------------------------------------------- /app/Middleware/VerifyToken.js: -------------------------------------------------------------------------------- 1 | const jwt = require('jsonwebtoken'); 2 | const DB = require('../../db'); 3 | 4 | /** 5 | * Middleware for authorizing requests 6 | * @param event 7 | * @param context 8 | * @param callback 9 | */ 10 | module.exports.auth = (event, context, callback) => { 11 | // Check header or url parameters or post parameters for token 12 | const token = event.authorizationToken; 13 | if (!token) return callback(null, 'Unauthorized'); 14 | 15 | // Verifies secret and checks exp 16 | jwt.verify(token, process.env.JWT_SECRET, (err, decoded) => { 17 | if (err) return callback(null, 'Unauthorized'); 18 | 19 | // Check whether user ID is legit in the DB 20 | return DB.get({ 21 | TableName:process.env.TABLENAME_USERS, 22 | Key: { id: decoded.id } 23 | }).promise().then((res) => { 24 | // If the user id exists in the db, save to request for use in other routes 25 | if (res && res.Item) return callback(null, generatePolicy(res.Item, 'Allow', event.methodArn)) 26 | 27 | // Otherwise return an error 28 | return callback(null, 'Unauthorized'); 29 | }); 30 | }); 31 | }; 32 | 33 | /** 34 | * Generate the JWT Auth Policy 35 | * @param user 36 | * @param effect 37 | * @param resource 38 | */ 39 | const generatePolicy = (user, effect, resource) => { 40 | const authResponse = { 41 | context: { user }, 42 | principalId: user.id, 43 | } 44 | 45 | if (effect && resource) { 46 | const statementOne = { 47 | 'Action': 'execute-api:Invoke', 48 | 'Effect': effect, 49 | 'Resource': resource, 50 | }; 51 | 52 | const policyDocument = { 53 | 'Version': '2012-10-17', 54 | 'Statement': [statementOne], 55 | }; 56 | 57 | authResponse.policyDocument = policyDocument; 58 | } 59 | 60 | return authResponse; 61 | } 62 | -------------------------------------------------------------------------------- /app/Requests/Tasks.js: -------------------------------------------------------------------------------- 1 | const validator = require('validator'); 2 | 3 | /** 4 | * Create a new Task validation 5 | * @param obj eventBody - the user input 6 | */ 7 | module.exports.create = async (eventBody) => { 8 | const errors = []; 9 | 10 | // Name isn't long enough 11 | if (!validator.isLength(eventBody.name, { min: 2 })) { 12 | errors.push('Task name needs to longer than 2 characters'); 13 | } 14 | 15 | if (errors.length > 0) return Promise.reject(new Error(errors.toString())); 16 | return Promise.resolve(); 17 | } 18 | -------------------------------------------------------------------------------- /app/Requests/Users.js: -------------------------------------------------------------------------------- 1 | module.exports.register = { 2 | type: 'object', 3 | properties: { 4 | body: { 5 | required: ['firstName', 'lastName', 'email', 'password'], 6 | type: 'object', 7 | properties: { 8 | firstName: { type: 'string', minLength: 1 }, 9 | lastName: { type: 'string', minLength: 1 }, 10 | email: { type: 'string', format: 'email' }, 11 | password: { type: 'string', minLength: 6 } 12 | } 13 | } 14 | } 15 | } 16 | 17 | module.exports.login = { 18 | type: 'object', 19 | properties: { 20 | body: { 21 | required: ['email', 'password'], 22 | type: 'object', 23 | properties: { 24 | email: { type: 'string', format: 'email' }, 25 | password: { type: 'string' } 26 | } 27 | } 28 | } 29 | } 30 | 31 | module.exports.update = { 32 | type: 'object', 33 | properties: { 34 | body: { 35 | required: ['firstName', 'lastName', 'email'], 36 | type: 'object', 37 | properties: { 38 | firstName: { type: 'string', minLength: 1 }, 39 | lastName: { type: 'string', minLength: 1 }, 40 | email: { type: 'string', format: 'email' }, 41 | password: { type: 'string', minLength: 6 } 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /config/dynamodb-offline.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Sets up the configuration for offline DynamoDB 3 | # 4 | start: 5 | port: 8000 6 | inMemory: true 7 | migrate: true 8 | seed: true 9 | seed: 10 | test: 11 | sources: 12 | - table: ${self:provider.environment.TABLENAME_USERS} 13 | sources: [database/seeds/users.json] 14 | - table: ${self:provider.environment.TABLENAME_TASKS} 15 | sources: [database/seeds/tasks.json] 16 | -------------------------------------------------------------------------------- /config/dynamodb.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Creates the DynamoDB tables 3 | # 4 | # Setup Users Table 5 | UsersDynamoDbTable: 6 | Type: 'AWS::DynamoDB::Table' 7 | DeletionPolicy: Retain 8 | Properties: 9 | TableName: ${self:provider.environment.TABLENAME_USERS} 10 | AttributeDefinitions: 11 | - AttributeName: id 12 | AttributeType: S 13 | KeySchema: 14 | - AttributeName: id 15 | KeyType: HASH 16 | ProvisionedThroughput: 17 | ReadCapacityUnits: 1 18 | WriteCapacityUnits: 1 19 | 20 | # Setup Tasks Table 21 | TasksDynamoDbTable: 22 | Type: 'AWS::DynamoDB::Table' 23 | DeletionPolicy: Retain 24 | Properties: 25 | TableName: ${self:provider.environment.TABLENAME_TASKS} 26 | AttributeDefinitions: 27 | - AttributeName: id 28 | AttributeType: S 29 | KeySchema: 30 | - AttributeName: id 31 | KeyType: HASH 32 | ProvisionedThroughput: 33 | ReadCapacityUnits: 1 34 | WriteCapacityUnits: 1 35 | -------------------------------------------------------------------------------- /database/seeds/tasks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "03969310-b0e1-11e8-a48a-efa31124d46c", 4 | "createdBy": "03969310-b0e1-11e8-a48b-efa31124d46c", 5 | "title": "John's first task", 6 | "completedAt": null, 7 | "createdAt": 1536134110955, 8 | "updatedAt": 1536134110955 9 | }, 10 | { 11 | "id": "03969310-b0e1-11e8-a48c-efa31124d46c", 12 | "createdBy": "03969310-b0e1-11e8-a48b-efa31124d46c", 13 | "title": "A second task by John", 14 | "completedAt": null, 15 | "createdAt": 1536134110955, 16 | "updatedAt": 1536134110955 17 | } 18 | ] 19 | -------------------------------------------------------------------------------- /database/seeds/users.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "03969310-b0e1-11e8-a48b-efa31124d46c", 4 | "firstName": "John", 5 | "lastName": "Doe", 6 | "email": "john@doe.com", 7 | "password": "$2a$08$cL0mUj5pDcZ5T5lkkzFFn.joE.ai7Z5KSXBvc5O2OjzNkAKUs5rim", 8 | "level": "standard", 9 | "createdAt": 1536134110955, 10 | "updatedAt": 1536134110955 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /db.js: -------------------------------------------------------------------------------- 1 | const AWS = require('aws-sdk'); 2 | 3 | const options = (process.env.IS_OFFLINE) 4 | ? { region: 'localhost', endpoint: 'http://localhost:8000' } 5 | : {}; 6 | 7 | const client = new AWS.DynamoDB.DocumentClient(options); 8 | 9 | module.exports = client; 10 | -------------------------------------------------------------------------------- /env.example.yml: -------------------------------------------------------------------------------- 1 | STAGE: production 2 | REGION: ap-southeast-2 3 | JWT_SECRET: "reallystrongsecret" 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "serverless-jwt-auth", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "handler.js", 6 | "scripts": { 7 | "start": "sls offline start --skipCacheInvalidation", 8 | "test": "JWT_SECRET=123Abc789XYZ jest", 9 | "deploy": "sls deploy" 10 | }, 11 | "keywords": [], 12 | "author": "", 13 | "license": "ISC", 14 | "dependencies": { 15 | "aws-sdk": "^2.307.0", 16 | "bcryptjs-then": "^1.0.1", 17 | "jsonwebtoken": "^8.2.1", 18 | "middy": "^0.17.1", 19 | "uuid": "^3.3.2", 20 | "validator": "^10.7.0" 21 | }, 22 | "devDependencies": { 23 | "jest": "^23.5.0", 24 | "serverless-dynamodb-local": "^0.2.33", 25 | "serverless-offline": "^3.20.3" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /routes/tasks.yml: -------------------------------------------------------------------------------- 1 | getTasks: 2 | handler: app/Handlers/Tasks.list 3 | events: 4 | - http: 5 | path: tasks 6 | method: get 7 | cors: true 8 | authorizer: verify-token 9 | createTask: 10 | handler: app/Handlers/Tasks.create 11 | events: 12 | - http: 13 | path: task 14 | method: post 15 | cors: true 16 | authorizer: verify-token 17 | -------------------------------------------------------------------------------- /routes/users.yml: -------------------------------------------------------------------------------- 1 | verify-token: 2 | handler: app/Middleware/VerifyToken.auth 3 | login: 4 | handler: app/Handlers/Users.login 5 | events: 6 | - http: 7 | path: login 8 | method: post 9 | cors: true 10 | register: 11 | handler: app/Handlers/Users.register 12 | events: 13 | - http: 14 | path: register 15 | method: post 16 | cors: true 17 | user: 18 | handler: app/Handlers/Users.user 19 | events: 20 | - http: 21 | path: user 22 | method: get 23 | cors: true 24 | authorizer: verify-token 25 | userUpdate: 26 | handler: app/Handlers/Users.update 27 | events: 28 | - http: 29 | path: user 30 | method: put 31 | cors: true 32 | authorizer: verify-token 33 | -------------------------------------------------------------------------------- /serverless.yml: -------------------------------------------------------------------------------- 1 | service: serverless-jwt-auth 2 | 3 | frameworkVersion: ">=1.1.0 <2.0.0" 4 | 5 | plugins: 6 | - serverless-dynamodb-local 7 | - serverless-offline 8 | 9 | custom: 10 | env: ${file(env.${opt:STAGE, 'prod'}.yml), file(env.yml)} 11 | dynamodb: ${file(config/dynamodb-offline.yml)} 12 | 13 | provider: 14 | name: aws 15 | runtime: nodejs8.10 16 | stage: ${opt:STAGE, self:custom.env.STAGE} 17 | region: ${self:custom.env.REGION} 18 | environment: 19 | JWT_SECRET: ${self:custom.env.JWT_SECRET} 20 | TABLENAME_USERS: ${self:service}-${self:provider.stage}-users 21 | TABLENAME_TASKS: ${self:service}-${self:provider.stage}-tasks 22 | iamRoleStatements: 23 | - Effect: Allow 24 | Action: 25 | - dynamodb:Query 26 | - dynamodb:Scan 27 | - dynamodb:GetItem 28 | - dynamodb:PutItem 29 | - dynamodb:UpdateItem 30 | - dynamodb:DeleteItem 31 | Resource: 32 | # DynamoDB tables to provide access to 33 | - "arn:aws:dynamodb:${opt:region, self:provider.region}:*:table/${self:provider.environment.TABLENAME_USERS}" 34 | - "arn:aws:dynamodb:${opt:region, self:provider.region}:*:table/${self:provider.environment.TABLENAME_TASKS}" 35 | 36 | functions: 37 | - ${file(routes/users.yml)} 38 | - ${file(routes/tasks.yml)} 39 | 40 | resources: 41 | Resources: 42 | - ${file(config/dynamodb.yml)} 43 | -------------------------------------------------------------------------------- /tests/Helpers/Users.test.js: -------------------------------------------------------------------------------- 1 | const jwt = require('jsonwebtoken'); 2 | 3 | const DB = require('../../db'); 4 | const { signToken, userByEmail, userById } = require('../../app/Helpers/Users'); 5 | 6 | const mockUserData = { 7 | id: '03969310-b0e1-11e8-a48b-efa31124d46c', 8 | firstName: 'John', 9 | lastName: 'Doe', 10 | email: 'john@doe.com', 11 | password: '$2a$08$cL0mUj5pDcZ5T5lkkzFFn.joE.ai7Z5KSXBvc5O2OjzNkAKUs5rim', 12 | level: 'standard', 13 | createdAt: 1536134110955, 14 | updatedAt: 1536134110955 15 | }; 16 | 17 | /** 18 | * Tests for signToken() 19 | */ 20 | describe('JWT Tokens', () => { 21 | beforeEach(() => { jest.resetModules(); process.env = { JWT_SECRET: '123Abc123' }; }); 22 | 23 | it('should generate token + when decoded, should be equal to input User ID', async () => { 24 | const userId = '464b5e40-b2fb-11e8-89b6-b5c77595a2ec'; 25 | const token = await signToken(userId); 26 | 27 | jwt.verify(token, process.env.JWT_SECRET, (err, decoded) => { 28 | expect(decoded.id).toEqual(userId); 29 | }); 30 | }); 31 | }); 32 | 33 | /** 34 | * Tests for userByEmail() 35 | */ 36 | describe('User lookup by email', () => { 37 | it('should load correct user', async () => { 38 | // Mock a single user DB response 39 | DB.scan = jest.fn(() => ({ 40 | promise: () => new Promise(resolve => resolve({ Items: [mockUserData] })), 41 | })); 42 | 43 | const res = await userByEmail(mockUserData.email); 44 | expect(res).toBeDefined(); 45 | expect(res.email).toEqual(mockUserData.email); 46 | }); 47 | 48 | it('should return null when not found in DB', async () => { 49 | // Mock an empty DB response 50 | DB.scan = jest.fn(() => ({ promise: () => new Promise(resolve => resolve({})) })); 51 | 52 | const res = await userByEmail('something@else.com'); 53 | expect(res).toBeNull(); 54 | }); 55 | }); 56 | 57 | /** 58 | * Tests for userById() 59 | */ 60 | describe('User lookup by ID', () => { 61 | it('should load correct user', async () => { 62 | // Mock a single user DB response 63 | DB.get = jest.fn(() => ({ 64 | promise: () => new Promise(resolve => resolve({ Item: mockUserData })), 65 | })); 66 | 67 | const res = await userById(mockUserData.id); 68 | 69 | // Should have data 70 | expect(res).toBeDefined(); 71 | expect(res.id).toEqual(mockUserData.id); 72 | 73 | // Password shouldn't be in response 74 | expect(res.password).toBeUndefined(); 75 | }); 76 | 77 | it('should throw an error when not found in DB', async () => { 78 | // Mock an empty DB response 79 | DB.get = jest.fn(() => ({ promise: () => new Promise(resolve => resolve({})) })); 80 | 81 | await expect(userById(123)).rejects.toThrow('User not found'); 82 | }); 83 | }); 84 | 85 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@7.0.0-beta.51": 6 | version "7.0.0-beta.51" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz#bd71d9b192af978df915829d39d4094456439a0c" 8 | dependencies: 9 | "@babel/highlight" "7.0.0-beta.51" 10 | 11 | "@babel/code-frame@^7.0.0-beta.35": 12 | version "7.0.0" 13 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" 14 | dependencies: 15 | "@babel/highlight" "^7.0.0" 16 | 17 | "@babel/generator@7.0.0-beta.51": 18 | version "7.0.0-beta.51" 19 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.51.tgz#6c7575ffde761d07485e04baedc0392c6d9e30f6" 20 | dependencies: 21 | "@babel/types" "7.0.0-beta.51" 22 | jsesc "^2.5.1" 23 | lodash "^4.17.5" 24 | source-map "^0.5.0" 25 | trim-right "^1.0.1" 26 | 27 | "@babel/helper-function-name@7.0.0-beta.51": 28 | version "7.0.0-beta.51" 29 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz#21b4874a227cf99ecafcc30a90302da5a2640561" 30 | dependencies: 31 | "@babel/helper-get-function-arity" "7.0.0-beta.51" 32 | "@babel/template" "7.0.0-beta.51" 33 | "@babel/types" "7.0.0-beta.51" 34 | 35 | "@babel/helper-get-function-arity@7.0.0-beta.51": 36 | version "7.0.0-beta.51" 37 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz#3281b2d045af95c172ce91b20825d85ea4676411" 38 | dependencies: 39 | "@babel/types" "7.0.0-beta.51" 40 | 41 | "@babel/helper-split-export-declaration@7.0.0-beta.51": 42 | version "7.0.0-beta.51" 43 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz#8a6c3f66c4d265352fc077484f9f6e80a51ab978" 44 | dependencies: 45 | "@babel/types" "7.0.0-beta.51" 46 | 47 | "@babel/highlight@7.0.0-beta.51": 48 | version "7.0.0-beta.51" 49 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.51.tgz#e8844ae25a1595ccfd42b89623b4376ca06d225d" 50 | dependencies: 51 | chalk "^2.0.0" 52 | esutils "^2.0.2" 53 | js-tokens "^3.0.0" 54 | 55 | "@babel/highlight@^7.0.0": 56 | version "7.0.0" 57 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" 58 | dependencies: 59 | chalk "^2.0.0" 60 | esutils "^2.0.2" 61 | js-tokens "^4.0.0" 62 | 63 | "@babel/parser@7.0.0-beta.51": 64 | version "7.0.0-beta.51" 65 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-beta.51.tgz#27cec2df409df60af58270ed8f6aa55409ea86f6" 66 | 67 | "@babel/template@7.0.0-beta.51": 68 | version "7.0.0-beta.51" 69 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.51.tgz#9602a40aebcf357ae9677e2532ef5fc810f5fbff" 70 | dependencies: 71 | "@babel/code-frame" "7.0.0-beta.51" 72 | "@babel/parser" "7.0.0-beta.51" 73 | "@babel/types" "7.0.0-beta.51" 74 | lodash "^4.17.5" 75 | 76 | "@babel/traverse@7.0.0-beta.51": 77 | version "7.0.0-beta.51" 78 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.51.tgz#981daf2cec347a6231d3aa1d9e1803b03aaaa4a8" 79 | dependencies: 80 | "@babel/code-frame" "7.0.0-beta.51" 81 | "@babel/generator" "7.0.0-beta.51" 82 | "@babel/helper-function-name" "7.0.0-beta.51" 83 | "@babel/helper-split-export-declaration" "7.0.0-beta.51" 84 | "@babel/parser" "7.0.0-beta.51" 85 | "@babel/types" "7.0.0-beta.51" 86 | debug "^3.1.0" 87 | globals "^11.1.0" 88 | invariant "^2.2.0" 89 | lodash "^4.17.5" 90 | 91 | "@babel/types@7.0.0-beta.51": 92 | version "7.0.0-beta.51" 93 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.51.tgz#d802b7b543b5836c778aa691797abf00f3d97ea9" 94 | dependencies: 95 | esutils "^2.0.2" 96 | lodash "^4.17.5" 97 | to-fast-properties "^2.0.0" 98 | 99 | "@types/aws-lambda@^8.10.1": 100 | version "8.10.11" 101 | resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.11.tgz#2c51a7dacb1abf880d35778aca68ed1075d0b300" 102 | 103 | "@types/http-errors@^1.6.1": 104 | version "1.6.1" 105 | resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.6.1.tgz#367744a6c04b833383f497f647cc3690b0cd4055" 106 | 107 | abab@^2.0.0: 108 | version "2.0.0" 109 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" 110 | 111 | abbrev@1: 112 | version "1.1.1" 113 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 114 | 115 | accept@2.x.x: 116 | version "2.1.4" 117 | resolved "https://registry.yarnpkg.com/accept/-/accept-2.1.4.tgz#887af54ceee5c7f4430461971ec400c61d09acbb" 118 | dependencies: 119 | boom "5.x.x" 120 | hoek "4.x.x" 121 | 122 | acorn-globals@^4.1.0: 123 | version "4.1.0" 124 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538" 125 | dependencies: 126 | acorn "^5.0.0" 127 | 128 | acorn@^5.0.0, acorn@^5.5.3: 129 | version "5.7.2" 130 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5" 131 | 132 | ajv-i18n@^3.1.0: 133 | version "3.3.0" 134 | resolved "https://registry.yarnpkg.com/ajv-i18n/-/ajv-i18n-3.3.0.tgz#bf013c9c8ae199535202cbcafde76cb437812e42" 135 | 136 | ajv-keywords@^3.0.0: 137 | version "3.2.0" 138 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" 139 | 140 | ajv@^5.3.0: 141 | version "5.5.2" 142 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" 143 | dependencies: 144 | co "^4.6.0" 145 | fast-deep-equal "^1.0.0" 146 | fast-json-stable-stringify "^2.0.0" 147 | json-schema-traverse "^0.3.0" 148 | 149 | ajv@^6.0.0: 150 | version "6.5.3" 151 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" 152 | dependencies: 153 | fast-deep-equal "^2.0.1" 154 | fast-json-stable-stringify "^2.0.0" 155 | json-schema-traverse "^0.4.1" 156 | uri-js "^4.2.2" 157 | 158 | align-text@^0.1.1, align-text@^0.1.3: 159 | version "0.1.4" 160 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 161 | dependencies: 162 | kind-of "^3.0.2" 163 | longest "^1.0.1" 164 | repeat-string "^1.5.2" 165 | 166 | amdefine@>=0.0.4: 167 | version "1.0.1" 168 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 169 | 170 | ammo@2.x.x: 171 | version "2.0.4" 172 | resolved "https://registry.yarnpkg.com/ammo/-/ammo-2.0.4.tgz#bf80aab211698ea78f63ef5e7f113dd5d9e8917f" 173 | dependencies: 174 | boom "5.x.x" 175 | hoek "4.x.x" 176 | 177 | ansi-escapes@^3.0.0: 178 | version "3.1.0" 179 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" 180 | 181 | ansi-regex@^2.0.0: 182 | version "2.1.1" 183 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 184 | 185 | ansi-regex@^3.0.0: 186 | version "3.0.0" 187 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 188 | 189 | ansi-styles@^2.2.1: 190 | version "2.2.1" 191 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 192 | 193 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 194 | version "3.2.1" 195 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 196 | dependencies: 197 | color-convert "^1.9.0" 198 | 199 | any-promise@^1.1.0: 200 | version "1.3.0" 201 | resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" 202 | 203 | anymatch@^2.0.0: 204 | version "2.0.0" 205 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" 206 | dependencies: 207 | micromatch "^3.1.4" 208 | normalize-path "^2.1.1" 209 | 210 | append-transform@^1.0.0: 211 | version "1.0.0" 212 | resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" 213 | dependencies: 214 | default-require-extensions "^2.0.0" 215 | 216 | aproba@^1.0.3: 217 | version "1.2.0" 218 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 219 | 220 | are-we-there-yet@~1.1.2: 221 | version "1.1.5" 222 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 223 | dependencies: 224 | delegates "^1.0.0" 225 | readable-stream "^2.0.6" 226 | 227 | argparse@^1.0.7: 228 | version "1.0.10" 229 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 230 | dependencies: 231 | sprintf-js "~1.0.2" 232 | 233 | arr-diff@^2.0.0: 234 | version "2.0.0" 235 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 236 | dependencies: 237 | arr-flatten "^1.0.1" 238 | 239 | arr-diff@^4.0.0: 240 | version "4.0.0" 241 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 242 | 243 | arr-flatten@^1.0.1, arr-flatten@^1.1.0: 244 | version "1.1.0" 245 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 246 | 247 | arr-union@^3.1.0: 248 | version "3.1.0" 249 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 250 | 251 | array-equal@^1.0.0: 252 | version "1.0.0" 253 | resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" 254 | 255 | array-unique@^0.2.1: 256 | version "0.2.1" 257 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 258 | 259 | array-unique@^0.3.2: 260 | version "0.3.2" 261 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 262 | 263 | arrify@^1.0.1: 264 | version "1.0.1" 265 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 266 | 267 | asn1@~0.2.3: 268 | version "0.2.4" 269 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 270 | dependencies: 271 | safer-buffer "~2.1.0" 272 | 273 | assert-plus@1.0.0, assert-plus@^1.0.0: 274 | version "1.0.0" 275 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 276 | 277 | assign-symbols@^1.0.0: 278 | version "1.0.0" 279 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 280 | 281 | astral-regex@^1.0.0: 282 | version "1.0.0" 283 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 284 | 285 | async-limiter@~1.0.0: 286 | version "1.0.0" 287 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" 288 | 289 | async@^1.4.0: 290 | version "1.5.2" 291 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 292 | 293 | async@^2.1.4: 294 | version "2.6.1" 295 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" 296 | dependencies: 297 | lodash "^4.17.10" 298 | 299 | asynckit@^0.4.0: 300 | version "0.4.0" 301 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 302 | 303 | atob@^2.1.1: 304 | version "2.1.2" 305 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 306 | 307 | aws-sdk@^2.307.0, aws-sdk@^2.7.0: 308 | version "2.307.0" 309 | resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.307.0.tgz#53a5906d36061d62e7b2ceb243920c7ef8feac97" 310 | dependencies: 311 | buffer "4.9.1" 312 | events "1.1.1" 313 | ieee754 "1.1.8" 314 | jmespath "0.15.0" 315 | querystring "0.2.0" 316 | sax "1.2.1" 317 | url "0.10.3" 318 | uuid "3.1.0" 319 | xml2js "0.4.19" 320 | 321 | aws-sign2@~0.7.0: 322 | version "0.7.0" 323 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 324 | 325 | aws4@^1.8.0: 326 | version "1.8.0" 327 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" 328 | 329 | b64@3.x.x: 330 | version "3.0.3" 331 | resolved "https://registry.yarnpkg.com/b64/-/b64-3.0.3.tgz#36afeee0d9345f046387ce6de8a6702afe5bb56e" 332 | 333 | babel-code-frame@^6.26.0: 334 | version "6.26.0" 335 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 336 | dependencies: 337 | chalk "^1.1.3" 338 | esutils "^2.0.2" 339 | js-tokens "^3.0.2" 340 | 341 | babel-core@^6.0.0, babel-core@^6.26.0: 342 | version "6.26.3" 343 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" 344 | dependencies: 345 | babel-code-frame "^6.26.0" 346 | babel-generator "^6.26.0" 347 | babel-helpers "^6.24.1" 348 | babel-messages "^6.23.0" 349 | babel-register "^6.26.0" 350 | babel-runtime "^6.26.0" 351 | babel-template "^6.26.0" 352 | babel-traverse "^6.26.0" 353 | babel-types "^6.26.0" 354 | babylon "^6.18.0" 355 | convert-source-map "^1.5.1" 356 | debug "^2.6.9" 357 | json5 "^0.5.1" 358 | lodash "^4.17.4" 359 | minimatch "^3.0.4" 360 | path-is-absolute "^1.0.1" 361 | private "^0.1.8" 362 | slash "^1.0.0" 363 | source-map "^0.5.7" 364 | 365 | babel-generator@^6.18.0, babel-generator@^6.26.0: 366 | version "6.26.1" 367 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" 368 | dependencies: 369 | babel-messages "^6.23.0" 370 | babel-runtime "^6.26.0" 371 | babel-types "^6.26.0" 372 | detect-indent "^4.0.0" 373 | jsesc "^1.3.0" 374 | lodash "^4.17.4" 375 | source-map "^0.5.7" 376 | trim-right "^1.0.1" 377 | 378 | babel-helpers@^6.24.1: 379 | version "6.24.1" 380 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" 381 | dependencies: 382 | babel-runtime "^6.22.0" 383 | babel-template "^6.24.1" 384 | 385 | babel-jest@^23.4.2: 386 | version "23.4.2" 387 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.4.2.tgz#f276de67798a5d68f2d6e87ff518c2f6e1609877" 388 | dependencies: 389 | babel-plugin-istanbul "^4.1.6" 390 | babel-preset-jest "^23.2.0" 391 | 392 | babel-messages@^6.23.0: 393 | version "6.23.0" 394 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 395 | dependencies: 396 | babel-runtime "^6.22.0" 397 | 398 | babel-plugin-istanbul@^4.1.6: 399 | version "4.1.6" 400 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" 401 | dependencies: 402 | babel-plugin-syntax-object-rest-spread "^6.13.0" 403 | find-up "^2.1.0" 404 | istanbul-lib-instrument "^1.10.1" 405 | test-exclude "^4.2.1" 406 | 407 | babel-plugin-jest-hoist@^23.2.0: 408 | version "23.2.0" 409 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" 410 | 411 | babel-plugin-syntax-object-rest-spread@^6.13.0: 412 | version "6.13.0" 413 | resolved "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" 414 | 415 | babel-preset-jest@^23.2.0: 416 | version "23.2.0" 417 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" 418 | dependencies: 419 | babel-plugin-jest-hoist "^23.2.0" 420 | babel-plugin-syntax-object-rest-spread "^6.13.0" 421 | 422 | babel-register@^6.18.0, babel-register@^6.26.0: 423 | version "6.26.0" 424 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" 425 | dependencies: 426 | babel-core "^6.26.0" 427 | babel-runtime "^6.26.0" 428 | core-js "^2.5.0" 429 | home-or-tmp "^2.0.0" 430 | lodash "^4.17.4" 431 | mkdirp "^0.5.1" 432 | source-map-support "^0.4.15" 433 | 434 | babel-runtime@^6.22.0, babel-runtime@^6.26.0: 435 | version "6.26.0" 436 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 437 | dependencies: 438 | core-js "^2.4.0" 439 | regenerator-runtime "^0.11.0" 440 | 441 | babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: 442 | version "6.26.0" 443 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" 444 | dependencies: 445 | babel-runtime "^6.26.0" 446 | babel-traverse "^6.26.0" 447 | babel-types "^6.26.0" 448 | babylon "^6.18.0" 449 | lodash "^4.17.4" 450 | 451 | babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: 452 | version "6.26.0" 453 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" 454 | dependencies: 455 | babel-code-frame "^6.26.0" 456 | babel-messages "^6.23.0" 457 | babel-runtime "^6.26.0" 458 | babel-types "^6.26.0" 459 | babylon "^6.18.0" 460 | debug "^2.6.8" 461 | globals "^9.18.0" 462 | invariant "^2.2.2" 463 | lodash "^4.17.4" 464 | 465 | babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0: 466 | version "6.26.0" 467 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" 468 | dependencies: 469 | babel-runtime "^6.26.0" 470 | esutils "^2.0.2" 471 | lodash "^4.17.4" 472 | to-fast-properties "^1.0.3" 473 | 474 | babylon@^6.18.0: 475 | version "6.18.0" 476 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" 477 | 478 | balanced-match@^1.0.0: 479 | version "1.0.0" 480 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 481 | 482 | base64-js@^1.0.2: 483 | version "1.3.0" 484 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" 485 | 486 | base@^0.11.1: 487 | version "0.11.2" 488 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 489 | dependencies: 490 | cache-base "^1.0.1" 491 | class-utils "^0.3.5" 492 | component-emitter "^1.2.1" 493 | define-property "^1.0.0" 494 | isobject "^3.0.1" 495 | mixin-deep "^1.2.0" 496 | pascalcase "^0.1.1" 497 | 498 | bcrypt-pbkdf@^1.0.0: 499 | version "1.0.2" 500 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 501 | dependencies: 502 | tweetnacl "^0.14.3" 503 | 504 | bcryptjs-then@^1.0.1: 505 | version "1.0.1" 506 | resolved "https://registry.yarnpkg.com/bcryptjs-then/-/bcryptjs-then-1.0.1.tgz#0c03b22a5032dec7e25109faa6ce425eb5015158" 507 | dependencies: 508 | any-promise "^1.1.0" 509 | bcryptjs "^2.3.0" 510 | 511 | bcryptjs@^2.3.0: 512 | version "2.4.3" 513 | resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" 514 | 515 | block-stream@*: 516 | version "0.0.9" 517 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 518 | dependencies: 519 | inherits "~2.0.0" 520 | 521 | bluebird@^3.4.6: 522 | version "3.5.2" 523 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" 524 | 525 | boom@3.X.X, boom@3.x.x: 526 | version "3.2.2" 527 | resolved "https://registry.yarnpkg.com/boom/-/boom-3.2.2.tgz#0f0cc5d04adc5003b8c7d71f42cca7271fef0e78" 528 | dependencies: 529 | hoek "4.x.x" 530 | 531 | boom@4.x.x, boom@^4.2.0: 532 | version "4.3.1" 533 | resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" 534 | dependencies: 535 | hoek "4.x.x" 536 | 537 | boom@5.x.x: 538 | version "5.2.0" 539 | resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" 540 | dependencies: 541 | hoek "4.x.x" 542 | 543 | brace-expansion@^1.1.7: 544 | version "1.1.11" 545 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 546 | dependencies: 547 | balanced-match "^1.0.0" 548 | concat-map "0.0.1" 549 | 550 | braces@^1.8.2: 551 | version "1.8.5" 552 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 553 | dependencies: 554 | expand-range "^1.8.1" 555 | preserve "^0.2.0" 556 | repeat-element "^1.1.2" 557 | 558 | braces@^2.3.1: 559 | version "2.3.2" 560 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 561 | dependencies: 562 | arr-flatten "^1.1.0" 563 | array-unique "^0.3.2" 564 | extend-shallow "^2.0.1" 565 | fill-range "^4.0.0" 566 | isobject "^3.0.1" 567 | repeat-element "^1.1.2" 568 | snapdragon "^0.8.1" 569 | snapdragon-node "^2.0.1" 570 | split-string "^3.0.2" 571 | to-regex "^3.0.1" 572 | 573 | browser-process-hrtime@^0.1.2: 574 | version "0.1.2" 575 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" 576 | 577 | browser-resolve@^1.11.3: 578 | version "1.11.3" 579 | resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" 580 | dependencies: 581 | resolve "1.1.7" 582 | 583 | bser@^2.0.0: 584 | version "2.0.0" 585 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" 586 | dependencies: 587 | node-int64 "^0.4.0" 588 | 589 | buffer-equal-constant-time@1.0.1: 590 | version "1.0.1" 591 | resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" 592 | 593 | buffer-from@^1.0.0: 594 | version "1.1.1" 595 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 596 | 597 | buffer@4.9.1: 598 | version "4.9.1" 599 | resolved "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 600 | dependencies: 601 | base64-js "^1.0.2" 602 | ieee754 "^1.1.4" 603 | isarray "^1.0.0" 604 | 605 | builtin-modules@^1.0.0: 606 | version "1.1.1" 607 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 608 | 609 | cache-base@^1.0.1: 610 | version "1.0.1" 611 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 612 | dependencies: 613 | collection-visit "^1.0.0" 614 | component-emitter "^1.2.1" 615 | get-value "^2.0.6" 616 | has-value "^1.0.0" 617 | isobject "^3.0.1" 618 | set-value "^2.0.0" 619 | to-object-path "^0.3.0" 620 | union-value "^1.0.0" 621 | unset-value "^1.0.0" 622 | 623 | call@3.x.x: 624 | version "3.0.4" 625 | resolved "https://registry.yarnpkg.com/call/-/call-3.0.4.tgz#e380f2f2a491330aa79085355f8be080877d559e" 626 | dependencies: 627 | boom "4.x.x" 628 | hoek "4.x.x" 629 | 630 | callsites@^2.0.0: 631 | version "2.0.0" 632 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" 633 | 634 | camelcase@^1.0.2: 635 | version "1.2.1" 636 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 637 | 638 | camelcase@^4.1.0: 639 | version "4.1.0" 640 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 641 | 642 | capture-exit@^1.2.0: 643 | version "1.2.0" 644 | resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" 645 | dependencies: 646 | rsvp "^3.3.3" 647 | 648 | caseless@~0.12.0: 649 | version "0.12.0" 650 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 651 | 652 | catbox-memory@2.x.x: 653 | version "2.0.4" 654 | resolved "https://registry.yarnpkg.com/catbox-memory/-/catbox-memory-2.0.4.tgz#433e255902caf54233d1286429c8f4df14e822d5" 655 | dependencies: 656 | hoek "4.x.x" 657 | 658 | catbox@7.x.x: 659 | version "7.1.5" 660 | resolved "https://registry.yarnpkg.com/catbox/-/catbox-7.1.5.tgz#c56f7e8e9555d27c0dc038a96ef73e57d186bb1f" 661 | dependencies: 662 | boom "5.x.x" 663 | hoek "4.x.x" 664 | joi "10.x.x" 665 | 666 | center-align@^0.1.1: 667 | version "0.1.3" 668 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 669 | dependencies: 670 | align-text "^0.1.3" 671 | lazy-cache "^1.0.3" 672 | 673 | chalk@^1.1.3: 674 | version "1.1.3" 675 | resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 676 | dependencies: 677 | ansi-styles "^2.2.1" 678 | escape-string-regexp "^1.0.2" 679 | has-ansi "^2.0.0" 680 | strip-ansi "^3.0.0" 681 | supports-color "^2.0.0" 682 | 683 | chalk@^2.0.0, chalk@^2.0.1: 684 | version "2.4.1" 685 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 686 | dependencies: 687 | ansi-styles "^3.2.1" 688 | escape-string-regexp "^1.0.5" 689 | supports-color "^5.3.0" 690 | 691 | chownr@^1.0.1: 692 | version "1.0.1" 693 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" 694 | 695 | ci-info@^1.3.0: 696 | version "1.4.0" 697 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.4.0.tgz#4841d53cad49f11b827b648ebde27a6e189b412f" 698 | 699 | class-utils@^0.3.5: 700 | version "0.3.6" 701 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 702 | dependencies: 703 | arr-union "^3.1.0" 704 | define-property "^0.2.5" 705 | isobject "^3.0.0" 706 | static-extend "^0.1.1" 707 | 708 | cliui@^2.1.0: 709 | version "2.1.0" 710 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 711 | dependencies: 712 | center-align "^0.1.1" 713 | right-align "^0.1.1" 714 | wordwrap "0.0.2" 715 | 716 | cliui@^4.0.0: 717 | version "4.1.0" 718 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" 719 | dependencies: 720 | string-width "^2.1.1" 721 | strip-ansi "^4.0.0" 722 | wrap-ansi "^2.0.0" 723 | 724 | co@^4.6.0: 725 | version "4.6.0" 726 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 727 | 728 | code-point-at@^1.0.0: 729 | version "1.1.0" 730 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 731 | 732 | collection-visit@^1.0.0: 733 | version "1.0.0" 734 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 735 | dependencies: 736 | map-visit "^1.0.0" 737 | object-visit "^1.0.0" 738 | 739 | color-convert@^1.9.0: 740 | version "1.9.3" 741 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 742 | dependencies: 743 | color-name "1.1.3" 744 | 745 | color-name@1.1.3: 746 | version "1.1.3" 747 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 748 | 749 | combined-stream@1.0.6, combined-stream@~1.0.6: 750 | version "1.0.6" 751 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" 752 | dependencies: 753 | delayed-stream "~1.0.0" 754 | 755 | compare-versions@^3.1.0: 756 | version "3.4.0" 757 | resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.4.0.tgz#e0747df5c9cb7f054d6d3dc3e1dbc444f9e92b26" 758 | 759 | component-emitter@^1.2.1: 760 | version "1.2.1" 761 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 762 | 763 | concat-map@0.0.1: 764 | version "0.0.1" 765 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 766 | 767 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 768 | version "1.1.0" 769 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 770 | 771 | content-type@^1.0.4: 772 | version "1.0.4" 773 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 774 | 775 | content@3.x.x: 776 | version "3.0.7" 777 | resolved "https://registry.yarnpkg.com/content/-/content-3.0.7.tgz#0cbb88e82702d35ccf59800b8add609bb5c1dfc2" 778 | dependencies: 779 | boom "5.x.x" 780 | 781 | convert-source-map@^1.4.0, convert-source-map@^1.5.1: 782 | version "1.5.1" 783 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" 784 | 785 | copy-descriptor@^0.1.0: 786 | version "0.1.1" 787 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 788 | 789 | core-js@^2.4.0, core-js@^2.5.0: 790 | version "2.5.7" 791 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" 792 | 793 | core-util-is@1.0.2, core-util-is@~1.0.0: 794 | version "1.0.2" 795 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 796 | 797 | cross-spawn@^5.0.1: 798 | version "5.1.0" 799 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 800 | dependencies: 801 | lru-cache "^4.0.1" 802 | shebang-command "^1.2.0" 803 | which "^1.2.9" 804 | 805 | cryptiles@3.x.x: 806 | version "3.1.2" 807 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" 808 | dependencies: 809 | boom "5.x.x" 810 | 811 | cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": 812 | version "0.3.4" 813 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" 814 | 815 | cssstyle@^1.0.0: 816 | version "1.1.1" 817 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" 818 | dependencies: 819 | cssom "0.3.x" 820 | 821 | dashdash@^1.12.0: 822 | version "1.14.1" 823 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 824 | dependencies: 825 | assert-plus "^1.0.0" 826 | 827 | data-urls@^1.0.0: 828 | version "1.0.1" 829 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.1.tgz#d416ac3896918f29ca84d81085bc3705834da579" 830 | dependencies: 831 | abab "^2.0.0" 832 | whatwg-mimetype "^2.1.0" 833 | whatwg-url "^7.0.0" 834 | 835 | debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: 836 | version "2.6.9" 837 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 838 | dependencies: 839 | ms "2.0.0" 840 | 841 | debug@^3.1.0: 842 | version "3.1.0" 843 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 844 | dependencies: 845 | ms "2.0.0" 846 | 847 | decamelize@^1.0.0, decamelize@^1.1.1: 848 | version "1.2.0" 849 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 850 | 851 | decode-uri-component@^0.2.0: 852 | version "0.2.0" 853 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 854 | 855 | deep-extend@^0.6.0: 856 | version "0.6.0" 857 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 858 | 859 | deep-is@~0.1.3: 860 | version "0.1.3" 861 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 862 | 863 | default-require-extensions@^2.0.0: 864 | version "2.0.0" 865 | resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" 866 | dependencies: 867 | strip-bom "^3.0.0" 868 | 869 | define-properties@^1.1.2: 870 | version "1.1.3" 871 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 872 | dependencies: 873 | object-keys "^1.0.12" 874 | 875 | define-property@^0.2.5: 876 | version "0.2.5" 877 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 878 | dependencies: 879 | is-descriptor "^0.1.0" 880 | 881 | define-property@^1.0.0: 882 | version "1.0.0" 883 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 884 | dependencies: 885 | is-descriptor "^1.0.0" 886 | 887 | define-property@^2.0.2: 888 | version "2.0.2" 889 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 890 | dependencies: 891 | is-descriptor "^1.0.2" 892 | isobject "^3.0.1" 893 | 894 | delayed-stream@~1.0.0: 895 | version "1.0.0" 896 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 897 | 898 | delegates@^1.0.0: 899 | version "1.0.0" 900 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 901 | 902 | depd@~1.1.2: 903 | version "1.1.2" 904 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 905 | 906 | detect-indent@^4.0.0: 907 | version "4.0.0" 908 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 909 | dependencies: 910 | repeating "^2.0.0" 911 | 912 | detect-libc@^1.0.2: 913 | version "1.0.3" 914 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 915 | 916 | detect-newline@^2.1.0: 917 | version "2.1.0" 918 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" 919 | 920 | diff@^3.2.0: 921 | version "3.5.0" 922 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 923 | 924 | domexception@^1.0.1: 925 | version "1.0.1" 926 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" 927 | dependencies: 928 | webidl-conversions "^4.0.2" 929 | 930 | dynamodb-localhost@^0.0.6: 931 | version "0.0.6" 932 | resolved "https://registry.yarnpkg.com/dynamodb-localhost/-/dynamodb-localhost-0.0.6.tgz#0ce83e82caeb04a18246c5d87ce2d23af931b6cf" 933 | dependencies: 934 | mkdirp "^0.5.0" 935 | progress "^1.1.8" 936 | rmdir "^1.2.0" 937 | tar "^2.0.0" 938 | 939 | ecc-jsbn@~0.1.1: 940 | version "0.1.2" 941 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 942 | dependencies: 943 | jsbn "~0.1.0" 944 | safer-buffer "^2.1.0" 945 | 946 | ecdsa-sig-formatter@1.0.10: 947 | version "1.0.10" 948 | resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz#1c595000f04a8897dfb85000892a0f4c33af86c3" 949 | dependencies: 950 | safe-buffer "^5.0.1" 951 | 952 | error-ex@^1.3.1: 953 | version "1.3.2" 954 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 955 | dependencies: 956 | is-arrayish "^0.2.1" 957 | 958 | es-abstract@^1.5.1: 959 | version "1.12.0" 960 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" 961 | dependencies: 962 | es-to-primitive "^1.1.1" 963 | function-bind "^1.1.1" 964 | has "^1.0.1" 965 | is-callable "^1.1.3" 966 | is-regex "^1.0.4" 967 | 968 | es-to-primitive@^1.1.1: 969 | version "1.1.1" 970 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" 971 | dependencies: 972 | is-callable "^1.1.1" 973 | is-date-object "^1.0.1" 974 | is-symbol "^1.0.1" 975 | 976 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 977 | version "1.0.5" 978 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 979 | 980 | escodegen@^1.9.1: 981 | version "1.11.0" 982 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" 983 | dependencies: 984 | esprima "^3.1.3" 985 | estraverse "^4.2.0" 986 | esutils "^2.0.2" 987 | optionator "^0.8.1" 988 | optionalDependencies: 989 | source-map "~0.6.1" 990 | 991 | esprima@^3.1.3: 992 | version "3.1.3" 993 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 994 | 995 | esprima@^4.0.0: 996 | version "4.0.1" 997 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 998 | 999 | estraverse@^4.2.0: 1000 | version "4.2.0" 1001 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 1002 | 1003 | esutils@^2.0.2: 1004 | version "2.0.2" 1005 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1006 | 1007 | events@1.1.1: 1008 | version "1.1.1" 1009 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 1010 | 1011 | exec-sh@^0.2.0: 1012 | version "0.2.2" 1013 | resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" 1014 | dependencies: 1015 | merge "^1.2.0" 1016 | 1017 | execa@^0.7.0: 1018 | version "0.7.0" 1019 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 1020 | dependencies: 1021 | cross-spawn "^5.0.1" 1022 | get-stream "^3.0.0" 1023 | is-stream "^1.1.0" 1024 | npm-run-path "^2.0.0" 1025 | p-finally "^1.0.0" 1026 | signal-exit "^3.0.0" 1027 | strip-eof "^1.0.0" 1028 | 1029 | exit@^0.1.2: 1030 | version "0.1.2" 1031 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1032 | 1033 | expand-brackets@^0.1.4: 1034 | version "0.1.5" 1035 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 1036 | dependencies: 1037 | is-posix-bracket "^0.1.0" 1038 | 1039 | expand-brackets@^2.1.4: 1040 | version "2.1.4" 1041 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 1042 | dependencies: 1043 | debug "^2.3.3" 1044 | define-property "^0.2.5" 1045 | extend-shallow "^2.0.1" 1046 | posix-character-classes "^0.1.0" 1047 | regex-not "^1.0.0" 1048 | snapdragon "^0.8.1" 1049 | to-regex "^3.0.1" 1050 | 1051 | expand-range@^1.8.1: 1052 | version "1.8.2" 1053 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 1054 | dependencies: 1055 | fill-range "^2.1.0" 1056 | 1057 | expect@^23.5.0: 1058 | version "23.5.0" 1059 | resolved "https://registry.yarnpkg.com/expect/-/expect-23.5.0.tgz#18999a0eef8f8acf99023fde766d9c323c2562ed" 1060 | dependencies: 1061 | ansi-styles "^3.2.0" 1062 | jest-diff "^23.5.0" 1063 | jest-get-type "^22.1.0" 1064 | jest-matcher-utils "^23.5.0" 1065 | jest-message-util "^23.4.0" 1066 | jest-regex-util "^23.3.0" 1067 | 1068 | extend-shallow@^2.0.1: 1069 | version "2.0.1" 1070 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 1071 | dependencies: 1072 | is-extendable "^0.1.0" 1073 | 1074 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 1075 | version "3.0.2" 1076 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 1077 | dependencies: 1078 | assign-symbols "^1.0.0" 1079 | is-extendable "^1.0.1" 1080 | 1081 | extend@~3.0.2: 1082 | version "3.0.2" 1083 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 1084 | 1085 | extglob@^0.3.1: 1086 | version "0.3.2" 1087 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 1088 | dependencies: 1089 | is-extglob "^1.0.0" 1090 | 1091 | extglob@^2.0.4: 1092 | version "2.0.4" 1093 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 1094 | dependencies: 1095 | array-unique "^0.3.2" 1096 | define-property "^1.0.0" 1097 | expand-brackets "^2.1.4" 1098 | extend-shallow "^2.0.1" 1099 | fragment-cache "^0.2.1" 1100 | regex-not "^1.0.0" 1101 | snapdragon "^0.8.1" 1102 | to-regex "^3.0.1" 1103 | 1104 | extsprintf@1.3.0: 1105 | version "1.3.0" 1106 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 1107 | 1108 | extsprintf@^1.2.0: 1109 | version "1.4.0" 1110 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 1111 | 1112 | fast-deep-equal@^1.0.0: 1113 | version "1.1.0" 1114 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" 1115 | 1116 | fast-deep-equal@^2.0.1: 1117 | version "2.0.1" 1118 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 1119 | 1120 | fast-json-stable-stringify@^2.0.0: 1121 | version "2.0.0" 1122 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 1123 | 1124 | fast-levenshtein@~2.0.4: 1125 | version "2.0.6" 1126 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1127 | 1128 | fb-watchman@^2.0.0: 1129 | version "2.0.0" 1130 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" 1131 | dependencies: 1132 | bser "^2.0.0" 1133 | 1134 | filename-regex@^2.0.0: 1135 | version "2.0.1" 1136 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 1137 | 1138 | fileset@^2.0.2: 1139 | version "2.0.3" 1140 | resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" 1141 | dependencies: 1142 | glob "^7.0.3" 1143 | minimatch "^3.0.3" 1144 | 1145 | fill-range@^2.1.0: 1146 | version "2.2.4" 1147 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" 1148 | dependencies: 1149 | is-number "^2.1.0" 1150 | isobject "^2.0.0" 1151 | randomatic "^3.0.0" 1152 | repeat-element "^1.1.2" 1153 | repeat-string "^1.5.2" 1154 | 1155 | fill-range@^4.0.0: 1156 | version "4.0.0" 1157 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 1158 | dependencies: 1159 | extend-shallow "^2.0.1" 1160 | is-number "^3.0.0" 1161 | repeat-string "^1.6.1" 1162 | to-regex-range "^2.1.0" 1163 | 1164 | find-up@^2.0.0, find-up@^2.1.0: 1165 | version "2.1.0" 1166 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 1167 | dependencies: 1168 | locate-path "^2.0.0" 1169 | 1170 | for-in@^1.0.1, for-in@^1.0.2: 1171 | version "1.0.2" 1172 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1173 | 1174 | for-own@^0.1.4: 1175 | version "0.1.5" 1176 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 1177 | dependencies: 1178 | for-in "^1.0.1" 1179 | 1180 | forever-agent@~0.6.1: 1181 | version "0.6.1" 1182 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1183 | 1184 | form-data@~2.3.2: 1185 | version "2.3.2" 1186 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" 1187 | dependencies: 1188 | asynckit "^0.4.0" 1189 | combined-stream "1.0.6" 1190 | mime-types "^2.1.12" 1191 | 1192 | fragment-cache@^0.2.1: 1193 | version "0.2.1" 1194 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 1195 | dependencies: 1196 | map-cache "^0.2.2" 1197 | 1198 | fs-minipass@^1.2.5: 1199 | version "1.2.5" 1200 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" 1201 | dependencies: 1202 | minipass "^2.2.1" 1203 | 1204 | fs.realpath@^1.0.0: 1205 | version "1.0.0" 1206 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1207 | 1208 | fsevents@^1.2.3: 1209 | version "1.2.4" 1210 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" 1211 | dependencies: 1212 | nan "^2.9.2" 1213 | node-pre-gyp "^0.10.0" 1214 | 1215 | fstream@^1.0.2: 1216 | version "1.0.11" 1217 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 1218 | dependencies: 1219 | graceful-fs "^4.1.2" 1220 | inherits "~2.0.0" 1221 | mkdirp ">=0.5 0" 1222 | rimraf "2" 1223 | 1224 | function-bind@^1.1.1: 1225 | version "1.1.1" 1226 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1227 | 1228 | gauge@~2.7.3: 1229 | version "2.7.4" 1230 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 1231 | dependencies: 1232 | aproba "^1.0.3" 1233 | console-control-strings "^1.0.0" 1234 | has-unicode "^2.0.0" 1235 | object-assign "^4.1.0" 1236 | signal-exit "^3.0.0" 1237 | string-width "^1.0.1" 1238 | strip-ansi "^3.0.1" 1239 | wide-align "^1.1.0" 1240 | 1241 | get-caller-file@^1.0.1: 1242 | version "1.0.3" 1243 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" 1244 | 1245 | get-stream@^3.0.0: 1246 | version "3.0.0" 1247 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 1248 | 1249 | get-value@^2.0.3, get-value@^2.0.6: 1250 | version "2.0.6" 1251 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 1252 | 1253 | getpass@^0.1.1: 1254 | version "0.1.7" 1255 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1256 | dependencies: 1257 | assert-plus "^1.0.0" 1258 | 1259 | glob-base@^0.3.0: 1260 | version "0.3.0" 1261 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1262 | dependencies: 1263 | glob-parent "^2.0.0" 1264 | is-glob "^2.0.0" 1265 | 1266 | glob-parent@^2.0.0: 1267 | version "2.0.0" 1268 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1269 | dependencies: 1270 | is-glob "^2.0.0" 1271 | 1272 | glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: 1273 | version "7.1.3" 1274 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 1275 | dependencies: 1276 | fs.realpath "^1.0.0" 1277 | inflight "^1.0.4" 1278 | inherits "2" 1279 | minimatch "^3.0.4" 1280 | once "^1.3.0" 1281 | path-is-absolute "^1.0.0" 1282 | 1283 | globals@^11.1.0: 1284 | version "11.7.0" 1285 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" 1286 | 1287 | globals@^9.18.0: 1288 | version "9.18.0" 1289 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 1290 | 1291 | graceful-fs@^4.1.11, graceful-fs@^4.1.2: 1292 | version "4.1.11" 1293 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1294 | 1295 | growly@^1.3.0: 1296 | version "1.3.0" 1297 | resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" 1298 | 1299 | h2o2@^5.4.0: 1300 | version "5.4.0" 1301 | resolved "https://registry.yarnpkg.com/h2o2/-/h2o2-5.4.0.tgz#d6857ca05355200c890b34a66606caba0229ed58" 1302 | dependencies: 1303 | boom "3.X.X" 1304 | hoek "4.X.X" 1305 | joi "9.X.X" 1306 | wreck "9.X.X" 1307 | 1308 | handlebars@^4.0.11: 1309 | version "4.0.11" 1310 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" 1311 | dependencies: 1312 | async "^1.4.0" 1313 | optimist "^0.6.1" 1314 | source-map "^0.4.4" 1315 | optionalDependencies: 1316 | uglify-js "^2.6" 1317 | 1318 | hapi-cors-headers@^1.0.0: 1319 | version "1.0.3" 1320 | resolved "https://registry.yarnpkg.com/hapi-cors-headers/-/hapi-cors-headers-1.0.3.tgz#856b0a9870f435249492c5a52d2744317a8cc1fd" 1321 | 1322 | hapi@14.2.0: 1323 | version "14.2.0" 1324 | resolved "https://registry.yarnpkg.com/hapi/-/hapi-14.2.0.tgz#e4fe2fc182598a0f81e87b41b6be0fbd31c75409" 1325 | dependencies: 1326 | accept "2.x.x" 1327 | ammo "2.x.x" 1328 | boom "3.x.x" 1329 | call "3.x.x" 1330 | catbox "7.x.x" 1331 | catbox-memory "2.x.x" 1332 | cryptiles "3.x.x" 1333 | heavy "4.x.x" 1334 | hoek "4.x.x" 1335 | iron "4.x.x" 1336 | items "2.x.x" 1337 | joi "9.x.x" 1338 | kilt "2.x.x" 1339 | mimos "3.x.x" 1340 | peekaboo "2.x.x" 1341 | shot "3.x.x" 1342 | statehood "4.x.x" 1343 | subtext "4.x.x" 1344 | topo "2.x.x" 1345 | 1346 | har-schema@^2.0.0: 1347 | version "2.0.0" 1348 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 1349 | 1350 | har-validator@~5.1.0: 1351 | version "5.1.0" 1352 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" 1353 | dependencies: 1354 | ajv "^5.3.0" 1355 | har-schema "^2.0.0" 1356 | 1357 | has-ansi@^2.0.0: 1358 | version "2.0.0" 1359 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1360 | dependencies: 1361 | ansi-regex "^2.0.0" 1362 | 1363 | has-flag@^1.0.0: 1364 | version "1.0.0" 1365 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 1366 | 1367 | has-flag@^3.0.0: 1368 | version "3.0.0" 1369 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1370 | 1371 | has-unicode@^2.0.0: 1372 | version "2.0.1" 1373 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1374 | 1375 | has-value@^0.3.1: 1376 | version "0.3.1" 1377 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1378 | dependencies: 1379 | get-value "^2.0.3" 1380 | has-values "^0.1.4" 1381 | isobject "^2.0.0" 1382 | 1383 | has-value@^1.0.0: 1384 | version "1.0.0" 1385 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1386 | dependencies: 1387 | get-value "^2.0.6" 1388 | has-values "^1.0.0" 1389 | isobject "^3.0.0" 1390 | 1391 | has-values@^0.1.4: 1392 | version "0.1.4" 1393 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1394 | 1395 | has-values@^1.0.0: 1396 | version "1.0.0" 1397 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1398 | dependencies: 1399 | is-number "^3.0.0" 1400 | kind-of "^4.0.0" 1401 | 1402 | has@^1.0.1: 1403 | version "1.0.3" 1404 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1405 | dependencies: 1406 | function-bind "^1.1.1" 1407 | 1408 | heavy@4.x.x: 1409 | version "4.0.4" 1410 | resolved "https://registry.yarnpkg.com/heavy/-/heavy-4.0.4.tgz#36c91336c00ccfe852caa4d153086335cd2f00e9" 1411 | dependencies: 1412 | boom "5.x.x" 1413 | hoek "4.x.x" 1414 | joi "10.x.x" 1415 | 1416 | hoek@4.X.X, hoek@4.x.x: 1417 | version "4.2.1" 1418 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" 1419 | 1420 | home-or-tmp@^2.0.0: 1421 | version "2.0.0" 1422 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" 1423 | dependencies: 1424 | os-homedir "^1.0.0" 1425 | os-tmpdir "^1.0.1" 1426 | 1427 | hosted-git-info@^2.1.4: 1428 | version "2.7.1" 1429 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" 1430 | 1431 | html-encoding-sniffer@^1.0.2: 1432 | version "1.0.2" 1433 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" 1434 | dependencies: 1435 | whatwg-encoding "^1.0.1" 1436 | 1437 | http-errors@^1.6.2: 1438 | version "1.7.0" 1439 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.0.tgz#b6d36492a201c7888bdcb5dd0471140423c4ad2a" 1440 | dependencies: 1441 | depd "~1.1.2" 1442 | inherits "2.0.3" 1443 | setprototypeof "1.1.0" 1444 | statuses ">= 1.5.0 < 2" 1445 | toidentifier "1.0.0" 1446 | 1447 | http-signature@~1.2.0: 1448 | version "1.2.0" 1449 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 1450 | dependencies: 1451 | assert-plus "^1.0.0" 1452 | jsprim "^1.2.2" 1453 | sshpk "^1.7.0" 1454 | 1455 | iconv-lite@0.4.23: 1456 | version "0.4.23" 1457 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" 1458 | dependencies: 1459 | safer-buffer ">= 2.1.2 < 3" 1460 | 1461 | iconv-lite@^0.4.4: 1462 | version "0.4.24" 1463 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1464 | dependencies: 1465 | safer-buffer ">= 2.1.2 < 3" 1466 | 1467 | ieee754@1.1.8: 1468 | version "1.1.8" 1469 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" 1470 | 1471 | ieee754@^1.1.4: 1472 | version "1.1.12" 1473 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" 1474 | 1475 | ignore-walk@^3.0.1: 1476 | version "3.0.1" 1477 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" 1478 | dependencies: 1479 | minimatch "^3.0.4" 1480 | 1481 | import-local@^1.0.0: 1482 | version "1.0.0" 1483 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" 1484 | dependencies: 1485 | pkg-dir "^2.0.0" 1486 | resolve-cwd "^2.0.0" 1487 | 1488 | imurmurhash@^0.1.4: 1489 | version "0.1.4" 1490 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1491 | 1492 | inflight@^1.0.4: 1493 | version "1.0.6" 1494 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1495 | dependencies: 1496 | once "^1.3.0" 1497 | wrappy "1" 1498 | 1499 | inherits@2, inherits@2.0.3, inherits@~2.0.0, inherits@~2.0.3: 1500 | version "2.0.3" 1501 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1502 | 1503 | ini@~1.3.0: 1504 | version "1.3.5" 1505 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1506 | 1507 | invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: 1508 | version "2.2.4" 1509 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" 1510 | dependencies: 1511 | loose-envify "^1.0.0" 1512 | 1513 | invert-kv@^1.0.0: 1514 | version "1.0.0" 1515 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 1516 | 1517 | iron@4.x.x: 1518 | version "4.0.5" 1519 | resolved "https://registry.yarnpkg.com/iron/-/iron-4.0.5.tgz#4f042cceb8b9738f346b59aa734c83a89bc31428" 1520 | dependencies: 1521 | boom "5.x.x" 1522 | cryptiles "3.x.x" 1523 | hoek "4.x.x" 1524 | 1525 | is-accessor-descriptor@^0.1.6: 1526 | version "0.1.6" 1527 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1528 | dependencies: 1529 | kind-of "^3.0.2" 1530 | 1531 | is-accessor-descriptor@^1.0.0: 1532 | version "1.0.0" 1533 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1534 | dependencies: 1535 | kind-of "^6.0.0" 1536 | 1537 | is-arrayish@^0.2.1: 1538 | version "0.2.1" 1539 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1540 | 1541 | is-buffer@^1.1.5: 1542 | version "1.1.6" 1543 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1544 | 1545 | is-builtin-module@^1.0.0: 1546 | version "1.0.0" 1547 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1548 | dependencies: 1549 | builtin-modules "^1.0.0" 1550 | 1551 | is-callable@^1.1.1, is-callable@^1.1.3: 1552 | version "1.1.4" 1553 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" 1554 | 1555 | is-ci@^1.0.10: 1556 | version "1.2.0" 1557 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.0.tgz#3f4a08d6303a09882cef3f0fb97439c5f5ce2d53" 1558 | dependencies: 1559 | ci-info "^1.3.0" 1560 | 1561 | is-data-descriptor@^0.1.4: 1562 | version "0.1.4" 1563 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1564 | dependencies: 1565 | kind-of "^3.0.2" 1566 | 1567 | is-data-descriptor@^1.0.0: 1568 | version "1.0.0" 1569 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1570 | dependencies: 1571 | kind-of "^6.0.0" 1572 | 1573 | is-date-object@^1.0.1: 1574 | version "1.0.1" 1575 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 1576 | 1577 | is-descriptor@^0.1.0: 1578 | version "0.1.6" 1579 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1580 | dependencies: 1581 | is-accessor-descriptor "^0.1.6" 1582 | is-data-descriptor "^0.1.4" 1583 | kind-of "^5.0.0" 1584 | 1585 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1586 | version "1.0.2" 1587 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1588 | dependencies: 1589 | is-accessor-descriptor "^1.0.0" 1590 | is-data-descriptor "^1.0.0" 1591 | kind-of "^6.0.2" 1592 | 1593 | is-dotfile@^1.0.0: 1594 | version "1.0.3" 1595 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 1596 | 1597 | is-equal-shallow@^0.1.3: 1598 | version "0.1.3" 1599 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1600 | dependencies: 1601 | is-primitive "^2.0.0" 1602 | 1603 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1604 | version "0.1.1" 1605 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1606 | 1607 | is-extendable@^1.0.1: 1608 | version "1.0.1" 1609 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1610 | dependencies: 1611 | is-plain-object "^2.0.4" 1612 | 1613 | is-extglob@^1.0.0: 1614 | version "1.0.0" 1615 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1616 | 1617 | is-finite@^1.0.0: 1618 | version "1.0.2" 1619 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1620 | dependencies: 1621 | number-is-nan "^1.0.0" 1622 | 1623 | is-fullwidth-code-point@^1.0.0: 1624 | version "1.0.0" 1625 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1626 | dependencies: 1627 | number-is-nan "^1.0.0" 1628 | 1629 | is-fullwidth-code-point@^2.0.0: 1630 | version "2.0.0" 1631 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1632 | 1633 | is-generator-fn@^1.0.0: 1634 | version "1.0.0" 1635 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" 1636 | 1637 | is-glob@^2.0.0, is-glob@^2.0.1: 1638 | version "2.0.1" 1639 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1640 | dependencies: 1641 | is-extglob "^1.0.0" 1642 | 1643 | is-number@^2.1.0: 1644 | version "2.1.0" 1645 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1646 | dependencies: 1647 | kind-of "^3.0.2" 1648 | 1649 | is-number@^3.0.0: 1650 | version "3.0.0" 1651 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1652 | dependencies: 1653 | kind-of "^3.0.2" 1654 | 1655 | is-number@^4.0.0: 1656 | version "4.0.0" 1657 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" 1658 | 1659 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1660 | version "2.0.4" 1661 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1662 | dependencies: 1663 | isobject "^3.0.1" 1664 | 1665 | is-posix-bracket@^0.1.0: 1666 | version "0.1.1" 1667 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1668 | 1669 | is-primitive@^2.0.0: 1670 | version "2.0.0" 1671 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1672 | 1673 | is-regex@^1.0.4: 1674 | version "1.0.4" 1675 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 1676 | dependencies: 1677 | has "^1.0.1" 1678 | 1679 | is-stream@^1.1.0: 1680 | version "1.1.0" 1681 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1682 | 1683 | is-symbol@^1.0.1: 1684 | version "1.0.1" 1685 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" 1686 | 1687 | is-typedarray@~1.0.0: 1688 | version "1.0.0" 1689 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1690 | 1691 | is-windows@^1.0.2: 1692 | version "1.0.2" 1693 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 1694 | 1695 | is@~0.2.6: 1696 | version "0.2.7" 1697 | resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562" 1698 | 1699 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 1700 | version "1.0.0" 1701 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1702 | 1703 | isemail@2.x.x: 1704 | version "2.2.1" 1705 | resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6" 1706 | 1707 | isexe@^2.0.0: 1708 | version "2.0.0" 1709 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1710 | 1711 | isobject@^2.0.0: 1712 | version "2.1.0" 1713 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1714 | dependencies: 1715 | isarray "1.0.0" 1716 | 1717 | isobject@^3.0.0, isobject@^3.0.1: 1718 | version "3.0.1" 1719 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1720 | 1721 | isstream@~0.1.2: 1722 | version "0.1.2" 1723 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1724 | 1725 | istanbul-api@^1.3.1: 1726 | version "1.3.6" 1727 | resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.6.tgz#0c695f17e533131de8c49e0657175dcfd8af8a8f" 1728 | dependencies: 1729 | async "^2.1.4" 1730 | compare-versions "^3.1.0" 1731 | fileset "^2.0.2" 1732 | istanbul-lib-coverage "^1.2.0" 1733 | istanbul-lib-hook "^1.2.0" 1734 | istanbul-lib-instrument "^2.1.0" 1735 | istanbul-lib-report "^1.1.4" 1736 | istanbul-lib-source-maps "^1.2.5" 1737 | istanbul-reports "^1.4.1" 1738 | js-yaml "^3.7.0" 1739 | mkdirp "^0.5.1" 1740 | once "^1.4.0" 1741 | 1742 | istanbul-lib-coverage@^1.2.0: 1743 | version "1.2.0" 1744 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" 1745 | 1746 | istanbul-lib-coverage@^2.0.1: 1747 | version "2.0.1" 1748 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#2aee0e073ad8c5f6a0b00e0dfbf52b4667472eda" 1749 | 1750 | istanbul-lib-hook@^1.2.0: 1751 | version "1.2.1" 1752 | resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805" 1753 | dependencies: 1754 | append-transform "^1.0.0" 1755 | 1756 | istanbul-lib-instrument@^1.10.1: 1757 | version "1.10.1" 1758 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b" 1759 | dependencies: 1760 | babel-generator "^6.18.0" 1761 | babel-template "^6.16.0" 1762 | babel-traverse "^6.18.0" 1763 | babel-types "^6.18.0" 1764 | babylon "^6.18.0" 1765 | istanbul-lib-coverage "^1.2.0" 1766 | semver "^5.3.0" 1767 | 1768 | istanbul-lib-instrument@^2.1.0: 1769 | version "2.3.2" 1770 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz#b287cbae2b5f65f3567b05e2e29b275eaf92d25e" 1771 | dependencies: 1772 | "@babel/generator" "7.0.0-beta.51" 1773 | "@babel/parser" "7.0.0-beta.51" 1774 | "@babel/template" "7.0.0-beta.51" 1775 | "@babel/traverse" "7.0.0-beta.51" 1776 | "@babel/types" "7.0.0-beta.51" 1777 | istanbul-lib-coverage "^2.0.1" 1778 | semver "^5.5.0" 1779 | 1780 | istanbul-lib-report@^1.1.4: 1781 | version "1.1.4" 1782 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5" 1783 | dependencies: 1784 | istanbul-lib-coverage "^1.2.0" 1785 | mkdirp "^0.5.1" 1786 | path-parse "^1.0.5" 1787 | supports-color "^3.1.2" 1788 | 1789 | istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.5: 1790 | version "1.2.5" 1791 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1" 1792 | dependencies: 1793 | debug "^3.1.0" 1794 | istanbul-lib-coverage "^1.2.0" 1795 | mkdirp "^0.5.1" 1796 | rimraf "^2.6.1" 1797 | source-map "^0.5.3" 1798 | 1799 | istanbul-reports@^1.4.1: 1800 | version "1.5.0" 1801 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.0.tgz#c6c2867fa65f59eb7dcedb7f845dfc76aaee70f9" 1802 | dependencies: 1803 | handlebars "^4.0.11" 1804 | 1805 | items@2.x.x: 1806 | version "2.1.1" 1807 | resolved "https://registry.yarnpkg.com/items/-/items-2.1.1.tgz#8bd16d9c83b19529de5aea321acaada78364a198" 1808 | 1809 | jest-changed-files@^23.4.2: 1810 | version "23.4.2" 1811 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" 1812 | dependencies: 1813 | throat "^4.0.0" 1814 | 1815 | jest-cli@^23.5.0: 1816 | version "23.5.0" 1817 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.5.0.tgz#d316b8e34a38a610a1efc4f0403d8ef8a55e4492" 1818 | dependencies: 1819 | ansi-escapes "^3.0.0" 1820 | chalk "^2.0.1" 1821 | exit "^0.1.2" 1822 | glob "^7.1.2" 1823 | graceful-fs "^4.1.11" 1824 | import-local "^1.0.0" 1825 | is-ci "^1.0.10" 1826 | istanbul-api "^1.3.1" 1827 | istanbul-lib-coverage "^1.2.0" 1828 | istanbul-lib-instrument "^1.10.1" 1829 | istanbul-lib-source-maps "^1.2.4" 1830 | jest-changed-files "^23.4.2" 1831 | jest-config "^23.5.0" 1832 | jest-environment-jsdom "^23.4.0" 1833 | jest-get-type "^22.1.0" 1834 | jest-haste-map "^23.5.0" 1835 | jest-message-util "^23.4.0" 1836 | jest-regex-util "^23.3.0" 1837 | jest-resolve-dependencies "^23.5.0" 1838 | jest-runner "^23.5.0" 1839 | jest-runtime "^23.5.0" 1840 | jest-snapshot "^23.5.0" 1841 | jest-util "^23.4.0" 1842 | jest-validate "^23.5.0" 1843 | jest-watcher "^23.4.0" 1844 | jest-worker "^23.2.0" 1845 | micromatch "^2.3.11" 1846 | node-notifier "^5.2.1" 1847 | prompts "^0.1.9" 1848 | realpath-native "^1.0.0" 1849 | rimraf "^2.5.4" 1850 | slash "^1.0.0" 1851 | string-length "^2.0.0" 1852 | strip-ansi "^4.0.0" 1853 | which "^1.2.12" 1854 | yargs "^11.0.0" 1855 | 1856 | jest-config@^23.5.0: 1857 | version "23.5.0" 1858 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.5.0.tgz#3770fba03f7507ee15f3b8867c742e48f31a9773" 1859 | dependencies: 1860 | babel-core "^6.0.0" 1861 | babel-jest "^23.4.2" 1862 | chalk "^2.0.1" 1863 | glob "^7.1.1" 1864 | jest-environment-jsdom "^23.4.0" 1865 | jest-environment-node "^23.4.0" 1866 | jest-get-type "^22.1.0" 1867 | jest-jasmine2 "^23.5.0" 1868 | jest-regex-util "^23.3.0" 1869 | jest-resolve "^23.5.0" 1870 | jest-util "^23.4.0" 1871 | jest-validate "^23.5.0" 1872 | micromatch "^2.3.11" 1873 | pretty-format "^23.5.0" 1874 | 1875 | jest-diff@^23.5.0: 1876 | version "23.5.0" 1877 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.5.0.tgz#250651a433dd0050290a07642946cc9baaf06fba" 1878 | dependencies: 1879 | chalk "^2.0.1" 1880 | diff "^3.2.0" 1881 | jest-get-type "^22.1.0" 1882 | pretty-format "^23.5.0" 1883 | 1884 | jest-docblock@^23.2.0: 1885 | version "23.2.0" 1886 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" 1887 | dependencies: 1888 | detect-newline "^2.1.0" 1889 | 1890 | jest-each@^23.5.0: 1891 | version "23.5.0" 1892 | resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.5.0.tgz#77f7e2afe6132a80954b920006e78239862b10ba" 1893 | dependencies: 1894 | chalk "^2.0.1" 1895 | pretty-format "^23.5.0" 1896 | 1897 | jest-environment-jsdom@^23.4.0: 1898 | version "23.4.0" 1899 | resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023" 1900 | dependencies: 1901 | jest-mock "^23.2.0" 1902 | jest-util "^23.4.0" 1903 | jsdom "^11.5.1" 1904 | 1905 | jest-environment-node@^23.4.0: 1906 | version "23.4.0" 1907 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10" 1908 | dependencies: 1909 | jest-mock "^23.2.0" 1910 | jest-util "^23.4.0" 1911 | 1912 | jest-get-type@^22.1.0: 1913 | version "22.4.3" 1914 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" 1915 | 1916 | jest-haste-map@^23.5.0: 1917 | version "23.5.0" 1918 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.5.0.tgz#d4ca618188bd38caa6cb20349ce6610e194a8065" 1919 | dependencies: 1920 | fb-watchman "^2.0.0" 1921 | graceful-fs "^4.1.11" 1922 | invariant "^2.2.4" 1923 | jest-docblock "^23.2.0" 1924 | jest-serializer "^23.0.1" 1925 | jest-worker "^23.2.0" 1926 | micromatch "^2.3.11" 1927 | sane "^2.0.0" 1928 | 1929 | jest-jasmine2@^23.5.0: 1930 | version "23.5.0" 1931 | resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.5.0.tgz#05fe7f1788e650eeb5a03929e6461ea2e9f3db53" 1932 | dependencies: 1933 | babel-traverse "^6.0.0" 1934 | chalk "^2.0.1" 1935 | co "^4.6.0" 1936 | expect "^23.5.0" 1937 | is-generator-fn "^1.0.0" 1938 | jest-diff "^23.5.0" 1939 | jest-each "^23.5.0" 1940 | jest-matcher-utils "^23.5.0" 1941 | jest-message-util "^23.4.0" 1942 | jest-snapshot "^23.5.0" 1943 | jest-util "^23.4.0" 1944 | pretty-format "^23.5.0" 1945 | 1946 | jest-leak-detector@^23.5.0: 1947 | version "23.5.0" 1948 | resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.5.0.tgz#14ac2a785bd625160a2ea968fd5d98b7dcea3e64" 1949 | dependencies: 1950 | pretty-format "^23.5.0" 1951 | 1952 | jest-matcher-utils@^23.5.0: 1953 | version "23.5.0" 1954 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.5.0.tgz#0e2ea67744cab78c9ab15011c4d888bdd3e49e2a" 1955 | dependencies: 1956 | chalk "^2.0.1" 1957 | jest-get-type "^22.1.0" 1958 | pretty-format "^23.5.0" 1959 | 1960 | jest-message-util@^23.4.0: 1961 | version "23.4.0" 1962 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" 1963 | dependencies: 1964 | "@babel/code-frame" "^7.0.0-beta.35" 1965 | chalk "^2.0.1" 1966 | micromatch "^2.3.11" 1967 | slash "^1.0.0" 1968 | stack-utils "^1.0.1" 1969 | 1970 | jest-mock@^23.2.0: 1971 | version "23.2.0" 1972 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" 1973 | 1974 | jest-regex-util@^23.3.0: 1975 | version "23.3.0" 1976 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" 1977 | 1978 | jest-resolve-dependencies@^23.5.0: 1979 | version "23.5.0" 1980 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.5.0.tgz#10c4d135beb9d2256de1fedc7094916c3ad74af7" 1981 | dependencies: 1982 | jest-regex-util "^23.3.0" 1983 | jest-snapshot "^23.5.0" 1984 | 1985 | jest-resolve@^23.5.0: 1986 | version "23.5.0" 1987 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.5.0.tgz#3b8e7f67e84598f0caf63d1530bd8534a189d0e6" 1988 | dependencies: 1989 | browser-resolve "^1.11.3" 1990 | chalk "^2.0.1" 1991 | realpath-native "^1.0.0" 1992 | 1993 | jest-runner@^23.5.0: 1994 | version "23.5.0" 1995 | resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.5.0.tgz#570f7a044da91648b5bb9b6baacdd511076c71d7" 1996 | dependencies: 1997 | exit "^0.1.2" 1998 | graceful-fs "^4.1.11" 1999 | jest-config "^23.5.0" 2000 | jest-docblock "^23.2.0" 2001 | jest-haste-map "^23.5.0" 2002 | jest-jasmine2 "^23.5.0" 2003 | jest-leak-detector "^23.5.0" 2004 | jest-message-util "^23.4.0" 2005 | jest-runtime "^23.5.0" 2006 | jest-util "^23.4.0" 2007 | jest-worker "^23.2.0" 2008 | source-map-support "^0.5.6" 2009 | throat "^4.0.0" 2010 | 2011 | jest-runtime@^23.5.0: 2012 | version "23.5.0" 2013 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.5.0.tgz#eb503525a196dc32f2f9974e3482d26bdf7b63ce" 2014 | dependencies: 2015 | babel-core "^6.0.0" 2016 | babel-plugin-istanbul "^4.1.6" 2017 | chalk "^2.0.1" 2018 | convert-source-map "^1.4.0" 2019 | exit "^0.1.2" 2020 | fast-json-stable-stringify "^2.0.0" 2021 | graceful-fs "^4.1.11" 2022 | jest-config "^23.5.0" 2023 | jest-haste-map "^23.5.0" 2024 | jest-message-util "^23.4.0" 2025 | jest-regex-util "^23.3.0" 2026 | jest-resolve "^23.5.0" 2027 | jest-snapshot "^23.5.0" 2028 | jest-util "^23.4.0" 2029 | jest-validate "^23.5.0" 2030 | micromatch "^2.3.11" 2031 | realpath-native "^1.0.0" 2032 | slash "^1.0.0" 2033 | strip-bom "3.0.0" 2034 | write-file-atomic "^2.1.0" 2035 | yargs "^11.0.0" 2036 | 2037 | jest-serializer@^23.0.1: 2038 | version "23.0.1" 2039 | resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" 2040 | 2041 | jest-snapshot@^23.5.0: 2042 | version "23.5.0" 2043 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.5.0.tgz#cc368ebd8513e1175e2a7277f37a801b7358ae79" 2044 | dependencies: 2045 | babel-types "^6.0.0" 2046 | chalk "^2.0.1" 2047 | jest-diff "^23.5.0" 2048 | jest-matcher-utils "^23.5.0" 2049 | jest-message-util "^23.4.0" 2050 | jest-resolve "^23.5.0" 2051 | mkdirp "^0.5.1" 2052 | natural-compare "^1.4.0" 2053 | pretty-format "^23.5.0" 2054 | semver "^5.5.0" 2055 | 2056 | jest-util@^23.4.0: 2057 | version "23.4.0" 2058 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" 2059 | dependencies: 2060 | callsites "^2.0.0" 2061 | chalk "^2.0.1" 2062 | graceful-fs "^4.1.11" 2063 | is-ci "^1.0.10" 2064 | jest-message-util "^23.4.0" 2065 | mkdirp "^0.5.1" 2066 | slash "^1.0.0" 2067 | source-map "^0.6.0" 2068 | 2069 | jest-validate@^23.5.0: 2070 | version "23.5.0" 2071 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.5.0.tgz#f5df8f761cf43155e1b2e21d6e9de8a2852d0231" 2072 | dependencies: 2073 | chalk "^2.0.1" 2074 | jest-get-type "^22.1.0" 2075 | leven "^2.1.0" 2076 | pretty-format "^23.5.0" 2077 | 2078 | jest-watcher@^23.4.0: 2079 | version "23.4.0" 2080 | resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" 2081 | dependencies: 2082 | ansi-escapes "^3.0.0" 2083 | chalk "^2.0.1" 2084 | string-length "^2.0.0" 2085 | 2086 | jest-worker@^23.2.0: 2087 | version "23.2.0" 2088 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" 2089 | dependencies: 2090 | merge-stream "^1.0.1" 2091 | 2092 | jest@^23.5.0: 2093 | version "23.5.0" 2094 | resolved "https://registry.yarnpkg.com/jest/-/jest-23.5.0.tgz#80de353d156ea5ea4a7332f7962ac79135fbc62e" 2095 | dependencies: 2096 | import-local "^1.0.0" 2097 | jest-cli "^23.5.0" 2098 | 2099 | jmespath@0.15.0: 2100 | version "0.15.0" 2101 | resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" 2102 | 2103 | joi@10.x.x: 2104 | version "10.6.0" 2105 | resolved "https://registry.yarnpkg.com/joi/-/joi-10.6.0.tgz#52587f02d52b8b75cdb0c74f0b164a191a0e1fc2" 2106 | dependencies: 2107 | hoek "4.x.x" 2108 | isemail "2.x.x" 2109 | items "2.x.x" 2110 | topo "2.x.x" 2111 | 2112 | joi@9.X.X, joi@9.x.x: 2113 | version "9.2.0" 2114 | resolved "https://registry.yarnpkg.com/joi/-/joi-9.2.0.tgz#3385ac790192130cbe230e802ec02c9215bbfeda" 2115 | dependencies: 2116 | hoek "4.x.x" 2117 | isemail "2.x.x" 2118 | items "2.x.x" 2119 | moment "2.x.x" 2120 | topo "2.x.x" 2121 | 2122 | js-string-escape@^1.0.1: 2123 | version "1.0.1" 2124 | resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" 2125 | 2126 | js-tokens@^3.0.0, js-tokens@^3.0.2: 2127 | version "3.0.2" 2128 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 2129 | 2130 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 2131 | version "4.0.0" 2132 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 2133 | 2134 | js-yaml@^3.7.0: 2135 | version "3.12.0" 2136 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" 2137 | dependencies: 2138 | argparse "^1.0.7" 2139 | esprima "^4.0.0" 2140 | 2141 | jsbn@~0.1.0: 2142 | version "0.1.1" 2143 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 2144 | 2145 | jsdom@^11.5.1: 2146 | version "11.12.0" 2147 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" 2148 | dependencies: 2149 | abab "^2.0.0" 2150 | acorn "^5.5.3" 2151 | acorn-globals "^4.1.0" 2152 | array-equal "^1.0.0" 2153 | cssom ">= 0.3.2 < 0.4.0" 2154 | cssstyle "^1.0.0" 2155 | data-urls "^1.0.0" 2156 | domexception "^1.0.1" 2157 | escodegen "^1.9.1" 2158 | html-encoding-sniffer "^1.0.2" 2159 | left-pad "^1.3.0" 2160 | nwsapi "^2.0.7" 2161 | parse5 "4.0.0" 2162 | pn "^1.1.0" 2163 | request "^2.87.0" 2164 | request-promise-native "^1.0.5" 2165 | sax "^1.2.4" 2166 | symbol-tree "^3.2.2" 2167 | tough-cookie "^2.3.4" 2168 | w3c-hr-time "^1.0.1" 2169 | webidl-conversions "^4.0.2" 2170 | whatwg-encoding "^1.0.3" 2171 | whatwg-mimetype "^2.1.0" 2172 | whatwg-url "^6.4.1" 2173 | ws "^5.2.0" 2174 | xml-name-validator "^3.0.0" 2175 | 2176 | jsesc@^1.3.0: 2177 | version "1.3.0" 2178 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 2179 | 2180 | jsesc@^2.5.1: 2181 | version "2.5.1" 2182 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" 2183 | 2184 | json-mask@^0.3.8: 2185 | version "0.3.8" 2186 | resolved "https://registry.yarnpkg.com/json-mask/-/json-mask-0.3.8.tgz#2d66415de14b0e8bc6c1514554a90bfca8356941" 2187 | 2188 | json-parse-better-errors@^1.0.1: 2189 | version "1.0.2" 2190 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 2191 | 2192 | json-schema-traverse@^0.3.0: 2193 | version "0.3.1" 2194 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 2195 | 2196 | json-schema-traverse@^0.4.1: 2197 | version "0.4.1" 2198 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 2199 | 2200 | json-schema@0.2.3: 2201 | version "0.2.3" 2202 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 2203 | 2204 | json-stringify-safe@~5.0.1: 2205 | version "5.0.1" 2206 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 2207 | 2208 | json5@^0.5.1: 2209 | version "0.5.1" 2210 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 2211 | 2212 | jsonpath-plus@^0.16.0: 2213 | version "0.16.0" 2214 | resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-0.16.0.tgz#fe441b23f03ec6979a5603513988cd3edb7db5dc" 2215 | 2216 | jsonwebtoken@^8.2.1: 2217 | version "8.3.0" 2218 | resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.3.0.tgz#056c90eee9a65ed6e6c72ddb0a1d325109aaf643" 2219 | dependencies: 2220 | jws "^3.1.5" 2221 | lodash.includes "^4.3.0" 2222 | lodash.isboolean "^3.0.3" 2223 | lodash.isinteger "^4.0.4" 2224 | lodash.isnumber "^3.0.3" 2225 | lodash.isplainobject "^4.0.6" 2226 | lodash.isstring "^4.0.1" 2227 | lodash.once "^4.0.0" 2228 | ms "^2.1.1" 2229 | 2230 | jsprim@^1.2.2: 2231 | version "1.4.1" 2232 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 2233 | dependencies: 2234 | assert-plus "1.0.0" 2235 | extsprintf "1.3.0" 2236 | json-schema "0.2.3" 2237 | verror "1.10.0" 2238 | 2239 | jwa@^1.1.5: 2240 | version "1.1.6" 2241 | resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.6.tgz#87240e76c9808dbde18783cf2264ef4929ee50e6" 2242 | dependencies: 2243 | buffer-equal-constant-time "1.0.1" 2244 | ecdsa-sig-formatter "1.0.10" 2245 | safe-buffer "^5.0.1" 2246 | 2247 | jws@^3.1.5: 2248 | version "3.1.5" 2249 | resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.5.tgz#80d12d05b293d1e841e7cb8b4e69e561adcf834f" 2250 | dependencies: 2251 | jwa "^1.1.5" 2252 | safe-buffer "^5.0.1" 2253 | 2254 | kilt@2.x.x: 2255 | version "2.0.2" 2256 | resolved "https://registry.yarnpkg.com/kilt/-/kilt-2.0.2.tgz#04d7183c298a1232efddf7ddca5959a8f6301e20" 2257 | dependencies: 2258 | hoek "4.x.x" 2259 | 2260 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 2261 | version "3.2.2" 2262 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 2263 | dependencies: 2264 | is-buffer "^1.1.5" 2265 | 2266 | kind-of@^4.0.0: 2267 | version "4.0.0" 2268 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 2269 | dependencies: 2270 | is-buffer "^1.1.5" 2271 | 2272 | kind-of@^5.0.0: 2273 | version "5.1.0" 2274 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 2275 | 2276 | kind-of@^6.0.0, kind-of@^6.0.2: 2277 | version "6.0.2" 2278 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 2279 | 2280 | kleur@^2.0.1: 2281 | version "2.0.2" 2282 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" 2283 | 2284 | lazy-cache@^1.0.3: 2285 | version "1.0.4" 2286 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 2287 | 2288 | lcid@^1.0.0: 2289 | version "1.0.0" 2290 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 2291 | dependencies: 2292 | invert-kv "^1.0.0" 2293 | 2294 | left-pad@^1.3.0: 2295 | version "1.3.0" 2296 | resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" 2297 | 2298 | leven@^2.1.0: 2299 | version "2.1.0" 2300 | resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" 2301 | 2302 | levn@~0.3.0: 2303 | version "0.3.0" 2304 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 2305 | dependencies: 2306 | prelude-ls "~1.1.2" 2307 | type-check "~0.3.2" 2308 | 2309 | load-json-file@^4.0.0: 2310 | version "4.0.0" 2311 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 2312 | dependencies: 2313 | graceful-fs "^4.1.2" 2314 | parse-json "^4.0.0" 2315 | pify "^3.0.0" 2316 | strip-bom "^3.0.0" 2317 | 2318 | locate-path@^2.0.0: 2319 | version "2.0.0" 2320 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 2321 | dependencies: 2322 | p-locate "^2.0.0" 2323 | path-exists "^3.0.0" 2324 | 2325 | lodash.includes@^4.3.0: 2326 | version "4.3.0" 2327 | resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" 2328 | 2329 | lodash.isboolean@^3.0.3: 2330 | version "3.0.3" 2331 | resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" 2332 | 2333 | lodash.isinteger@^4.0.4: 2334 | version "4.0.4" 2335 | resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" 2336 | 2337 | lodash.isnumber@^3.0.3: 2338 | version "3.0.3" 2339 | resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" 2340 | 2341 | lodash.isplainobject@^4.0.6: 2342 | version "4.0.6" 2343 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 2344 | 2345 | lodash.isstring@^4.0.1: 2346 | version "4.0.1" 2347 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" 2348 | 2349 | lodash.once@^4.0.0: 2350 | version "4.1.1" 2351 | resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" 2352 | 2353 | lodash.sortby@^4.7.0: 2354 | version "4.7.0" 2355 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 2356 | 2357 | lodash@^4.13.1, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5: 2358 | version "4.17.10" 2359 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" 2360 | 2361 | longest@^1.0.1: 2362 | version "1.0.1" 2363 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 2364 | 2365 | loose-envify@^1.0.0: 2366 | version "1.4.0" 2367 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 2368 | dependencies: 2369 | js-tokens "^3.0.0 || ^4.0.0" 2370 | 2371 | lru-cache@^4.0.1: 2372 | version "4.1.3" 2373 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" 2374 | dependencies: 2375 | pseudomap "^1.0.2" 2376 | yallist "^2.1.2" 2377 | 2378 | makeerror@1.0.x: 2379 | version "1.0.11" 2380 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" 2381 | dependencies: 2382 | tmpl "1.0.x" 2383 | 2384 | map-cache@^0.2.2: 2385 | version "0.2.2" 2386 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 2387 | 2388 | map-visit@^1.0.0: 2389 | version "1.0.0" 2390 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 2391 | dependencies: 2392 | object-visit "^1.0.0" 2393 | 2394 | math-random@^1.0.1: 2395 | version "1.0.1" 2396 | resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" 2397 | 2398 | mem@^1.1.0: 2399 | version "1.1.0" 2400 | resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" 2401 | dependencies: 2402 | mimic-fn "^1.0.0" 2403 | 2404 | merge-stream@^1.0.1: 2405 | version "1.0.1" 2406 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" 2407 | dependencies: 2408 | readable-stream "^2.0.1" 2409 | 2410 | merge@^1.2.0: 2411 | version "1.2.0" 2412 | resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" 2413 | 2414 | micromatch@^2.3.11: 2415 | version "2.3.11" 2416 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 2417 | dependencies: 2418 | arr-diff "^2.0.0" 2419 | array-unique "^0.2.1" 2420 | braces "^1.8.2" 2421 | expand-brackets "^0.1.4" 2422 | extglob "^0.3.1" 2423 | filename-regex "^2.0.0" 2424 | is-extglob "^1.0.0" 2425 | is-glob "^2.0.1" 2426 | kind-of "^3.0.2" 2427 | normalize-path "^2.0.1" 2428 | object.omit "^2.0.0" 2429 | parse-glob "^3.0.4" 2430 | regex-cache "^0.4.2" 2431 | 2432 | micromatch@^3.1.4: 2433 | version "3.1.10" 2434 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 2435 | dependencies: 2436 | arr-diff "^4.0.0" 2437 | array-unique "^0.3.2" 2438 | braces "^2.3.1" 2439 | define-property "^2.0.2" 2440 | extend-shallow "^3.0.2" 2441 | extglob "^2.0.4" 2442 | fragment-cache "^0.2.1" 2443 | kind-of "^6.0.2" 2444 | nanomatch "^1.2.9" 2445 | object.pick "^1.3.0" 2446 | regex-not "^1.0.0" 2447 | snapdragon "^0.8.1" 2448 | to-regex "^3.0.2" 2449 | 2450 | middy@^0.17.1: 2451 | version "0.17.1" 2452 | resolved "https://registry.yarnpkg.com/middy/-/middy-0.17.1.tgz#d57ce3376ae26a05a6c161e55adcad2976a03173" 2453 | dependencies: 2454 | "@types/aws-lambda" "^8.10.1" 2455 | "@types/http-errors" "^1.6.1" 2456 | ajv "^6.0.0" 2457 | ajv-i18n "^3.1.0" 2458 | ajv-keywords "^3.0.0" 2459 | content-type "^1.0.4" 2460 | http-errors "^1.6.2" 2461 | json-mask "^0.3.8" 2462 | negotiator "^0.6.1" 2463 | once "^1.4.0" 2464 | qs "^6.5.0" 2465 | querystring "^0.2.0" 2466 | 2467 | mime-db@1.x.x, mime-db@~1.36.0: 2468 | version "1.36.0" 2469 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" 2470 | 2471 | mime-types@^2.1.12, mime-types@~2.1.19: 2472 | version "2.1.20" 2473 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" 2474 | dependencies: 2475 | mime-db "~1.36.0" 2476 | 2477 | mimic-fn@^1.0.0: 2478 | version "1.2.0" 2479 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 2480 | 2481 | mimos@3.x.x: 2482 | version "3.0.3" 2483 | resolved "https://registry.yarnpkg.com/mimos/-/mimos-3.0.3.tgz#b9109072ad378c2b72f6a0101c43ddfb2b36641f" 2484 | dependencies: 2485 | hoek "4.x.x" 2486 | mime-db "1.x.x" 2487 | 2488 | minimatch@^3.0.3, minimatch@^3.0.4: 2489 | version "3.0.4" 2490 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2491 | dependencies: 2492 | brace-expansion "^1.1.7" 2493 | 2494 | minimist@0.0.8: 2495 | version "0.0.8" 2496 | resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 2497 | 2498 | minimist@^1.1.1, minimist@^1.2.0: 2499 | version "1.2.0" 2500 | resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 2501 | 2502 | minimist@~0.0.1: 2503 | version "0.0.10" 2504 | resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 2505 | 2506 | minipass@^2.2.1, minipass@^2.3.3: 2507 | version "2.3.4" 2508 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" 2509 | dependencies: 2510 | safe-buffer "^5.1.2" 2511 | yallist "^3.0.0" 2512 | 2513 | minizlib@^1.1.0: 2514 | version "1.1.0" 2515 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" 2516 | dependencies: 2517 | minipass "^2.2.1" 2518 | 2519 | mixin-deep@^1.2.0: 2520 | version "1.3.1" 2521 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" 2522 | dependencies: 2523 | for-in "^1.0.2" 2524 | is-extendable "^1.0.1" 2525 | 2526 | "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: 2527 | version "0.5.1" 2528 | resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 2529 | dependencies: 2530 | minimist "0.0.8" 2531 | 2532 | moment@2.x.x: 2533 | version "2.22.2" 2534 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" 2535 | 2536 | ms@2.0.0: 2537 | version "2.0.0" 2538 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2539 | 2540 | ms@^2.1.1: 2541 | version "2.1.1" 2542 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 2543 | 2544 | nan@^2.9.2: 2545 | version "2.11.0" 2546 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" 2547 | 2548 | nanomatch@^1.2.9: 2549 | version "1.2.13" 2550 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 2551 | dependencies: 2552 | arr-diff "^4.0.0" 2553 | array-unique "^0.3.2" 2554 | define-property "^2.0.2" 2555 | extend-shallow "^3.0.2" 2556 | fragment-cache "^0.2.1" 2557 | is-windows "^1.0.2" 2558 | kind-of "^6.0.2" 2559 | object.pick "^1.3.0" 2560 | regex-not "^1.0.0" 2561 | snapdragon "^0.8.1" 2562 | to-regex "^3.0.1" 2563 | 2564 | natural-compare@^1.4.0: 2565 | version "1.4.0" 2566 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2567 | 2568 | needle@^2.2.1: 2569 | version "2.2.2" 2570 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.2.tgz#1120ca4c41f2fcc6976fd28a8968afe239929418" 2571 | dependencies: 2572 | debug "^2.1.2" 2573 | iconv-lite "^0.4.4" 2574 | sax "^1.2.4" 2575 | 2576 | negotiator@^0.6.1: 2577 | version "0.6.1" 2578 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 2579 | 2580 | nigel@2.x.x: 2581 | version "2.0.2" 2582 | resolved "https://registry.yarnpkg.com/nigel/-/nigel-2.0.2.tgz#93a1866fb0c52d87390aa75e2b161f4b5c75e5b1" 2583 | dependencies: 2584 | hoek "4.x.x" 2585 | vise "2.x.x" 2586 | 2587 | node-int64@^0.4.0: 2588 | version "0.4.0" 2589 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" 2590 | 2591 | node-notifier@^5.2.1: 2592 | version "5.2.1" 2593 | resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" 2594 | dependencies: 2595 | growly "^1.3.0" 2596 | semver "^5.4.1" 2597 | shellwords "^0.1.1" 2598 | which "^1.3.0" 2599 | 2600 | node-pre-gyp@^0.10.0: 2601 | version "0.10.3" 2602 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" 2603 | dependencies: 2604 | detect-libc "^1.0.2" 2605 | mkdirp "^0.5.1" 2606 | needle "^2.2.1" 2607 | nopt "^4.0.1" 2608 | npm-packlist "^1.1.6" 2609 | npmlog "^4.0.2" 2610 | rc "^1.2.7" 2611 | rimraf "^2.6.1" 2612 | semver "^5.3.0" 2613 | tar "^4" 2614 | 2615 | node.extend@1.0.8: 2616 | version "1.0.8" 2617 | resolved "https://registry.yarnpkg.com/node.extend/-/node.extend-1.0.8.tgz#bab04379f7383f4587990c9df07b6a7f65db772b" 2618 | dependencies: 2619 | is "~0.2.6" 2620 | object-keys "~0.4.0" 2621 | 2622 | node.flow@1.2.3: 2623 | version "1.2.3" 2624 | resolved "https://registry.yarnpkg.com/node.flow/-/node.flow-1.2.3.tgz#e1c44a82aeca8d78b458a77fb3dc642f2eba2649" 2625 | dependencies: 2626 | node.extend "1.0.8" 2627 | 2628 | nopt@^4.0.1: 2629 | version "4.0.1" 2630 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 2631 | dependencies: 2632 | abbrev "1" 2633 | osenv "^0.1.4" 2634 | 2635 | normalize-package-data@^2.3.2: 2636 | version "2.4.0" 2637 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 2638 | dependencies: 2639 | hosted-git-info "^2.1.4" 2640 | is-builtin-module "^1.0.0" 2641 | semver "2 || 3 || 4 || 5" 2642 | validate-npm-package-license "^3.0.1" 2643 | 2644 | normalize-path@^2.0.1, normalize-path@^2.1.1: 2645 | version "2.1.1" 2646 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 2647 | dependencies: 2648 | remove-trailing-separator "^1.0.1" 2649 | 2650 | npm-bundled@^1.0.1: 2651 | version "1.0.5" 2652 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" 2653 | 2654 | npm-packlist@^1.1.6: 2655 | version "1.1.11" 2656 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" 2657 | dependencies: 2658 | ignore-walk "^3.0.1" 2659 | npm-bundled "^1.0.1" 2660 | 2661 | npm-run-path@^2.0.0: 2662 | version "2.0.2" 2663 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 2664 | dependencies: 2665 | path-key "^2.0.0" 2666 | 2667 | npmlog@^4.0.2: 2668 | version "4.1.2" 2669 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 2670 | dependencies: 2671 | are-we-there-yet "~1.1.2" 2672 | console-control-strings "~1.1.0" 2673 | gauge "~2.7.3" 2674 | set-blocking "~2.0.0" 2675 | 2676 | number-is-nan@^1.0.0: 2677 | version "1.0.1" 2678 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 2679 | 2680 | nwsapi@^2.0.7: 2681 | version "2.0.9" 2682 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" 2683 | 2684 | oauth-sign@~0.9.0: 2685 | version "0.9.0" 2686 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 2687 | 2688 | object-assign@^4.1.0: 2689 | version "4.1.1" 2690 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2691 | 2692 | object-copy@^0.1.0: 2693 | version "0.1.0" 2694 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 2695 | dependencies: 2696 | copy-descriptor "^0.1.0" 2697 | define-property "^0.2.5" 2698 | kind-of "^3.0.3" 2699 | 2700 | object-keys@^1.0.12: 2701 | version "1.0.12" 2702 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" 2703 | 2704 | object-keys@~0.4.0: 2705 | version "0.4.0" 2706 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" 2707 | 2708 | object-visit@^1.0.0: 2709 | version "1.0.1" 2710 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 2711 | dependencies: 2712 | isobject "^3.0.0" 2713 | 2714 | object.getownpropertydescriptors@^2.0.3: 2715 | version "2.0.3" 2716 | resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" 2717 | dependencies: 2718 | define-properties "^1.1.2" 2719 | es-abstract "^1.5.1" 2720 | 2721 | object.omit@^2.0.0: 2722 | version "2.0.1" 2723 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 2724 | dependencies: 2725 | for-own "^0.1.4" 2726 | is-extendable "^0.1.1" 2727 | 2728 | object.pick@^1.3.0: 2729 | version "1.3.0" 2730 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 2731 | dependencies: 2732 | isobject "^3.0.1" 2733 | 2734 | once@^1.3.0, once@^1.4.0: 2735 | version "1.4.0" 2736 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2737 | dependencies: 2738 | wrappy "1" 2739 | 2740 | optimist@^0.6.1: 2741 | version "0.6.1" 2742 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 2743 | dependencies: 2744 | minimist "~0.0.1" 2745 | wordwrap "~0.0.2" 2746 | 2747 | optionator@^0.8.1: 2748 | version "0.8.2" 2749 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 2750 | dependencies: 2751 | deep-is "~0.1.3" 2752 | fast-levenshtein "~2.0.4" 2753 | levn "~0.3.0" 2754 | prelude-ls "~1.1.2" 2755 | type-check "~0.3.2" 2756 | wordwrap "~1.0.0" 2757 | 2758 | os-homedir@^1.0.0: 2759 | version "1.0.2" 2760 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2761 | 2762 | os-locale@^2.0.0: 2763 | version "2.1.0" 2764 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" 2765 | dependencies: 2766 | execa "^0.7.0" 2767 | lcid "^1.0.0" 2768 | mem "^1.1.0" 2769 | 2770 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: 2771 | version "1.0.2" 2772 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2773 | 2774 | osenv@^0.1.4: 2775 | version "0.1.5" 2776 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 2777 | dependencies: 2778 | os-homedir "^1.0.0" 2779 | os-tmpdir "^1.0.0" 2780 | 2781 | p-finally@^1.0.0: 2782 | version "1.0.0" 2783 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 2784 | 2785 | p-limit@^1.1.0: 2786 | version "1.3.0" 2787 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 2788 | dependencies: 2789 | p-try "^1.0.0" 2790 | 2791 | p-locate@^2.0.0: 2792 | version "2.0.0" 2793 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 2794 | dependencies: 2795 | p-limit "^1.1.0" 2796 | 2797 | p-try@^1.0.0: 2798 | version "1.0.0" 2799 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 2800 | 2801 | parse-glob@^3.0.4: 2802 | version "3.0.4" 2803 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 2804 | dependencies: 2805 | glob-base "^0.3.0" 2806 | is-dotfile "^1.0.0" 2807 | is-extglob "^1.0.0" 2808 | is-glob "^2.0.0" 2809 | 2810 | parse-json@^4.0.0: 2811 | version "4.0.0" 2812 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 2813 | dependencies: 2814 | error-ex "^1.3.1" 2815 | json-parse-better-errors "^1.0.1" 2816 | 2817 | parse5@4.0.0: 2818 | version "4.0.0" 2819 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" 2820 | 2821 | pascalcase@^0.1.1: 2822 | version "0.1.1" 2823 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 2824 | 2825 | path-exists@^3.0.0: 2826 | version "3.0.0" 2827 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 2828 | 2829 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 2830 | version "1.0.1" 2831 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2832 | 2833 | path-key@^2.0.0: 2834 | version "2.0.1" 2835 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 2836 | 2837 | path-parse@^1.0.5: 2838 | version "1.0.6" 2839 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 2840 | 2841 | path-type@^3.0.0: 2842 | version "3.0.0" 2843 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 2844 | dependencies: 2845 | pify "^3.0.0" 2846 | 2847 | peekaboo@2.x.x: 2848 | version "2.0.2" 2849 | resolved "https://registry.yarnpkg.com/peekaboo/-/peekaboo-2.0.2.tgz#fc42e139efd698c6ff2870a6b20c047cd9aa29ff" 2850 | 2851 | performance-now@^2.1.0: 2852 | version "2.1.0" 2853 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 2854 | 2855 | pez@2.x.x: 2856 | version "2.1.5" 2857 | resolved "https://registry.yarnpkg.com/pez/-/pez-2.1.5.tgz#5ec2cc62500cc3eb4236d4a414cf5a17b5eb5007" 2858 | dependencies: 2859 | b64 "3.x.x" 2860 | boom "5.x.x" 2861 | content "3.x.x" 2862 | hoek "4.x.x" 2863 | nigel "2.x.x" 2864 | 2865 | pify@^3.0.0: 2866 | version "3.0.0" 2867 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 2868 | 2869 | pkg-dir@^2.0.0: 2870 | version "2.0.0" 2871 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 2872 | dependencies: 2873 | find-up "^2.1.0" 2874 | 2875 | pn@^1.1.0: 2876 | version "1.1.0" 2877 | resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" 2878 | 2879 | posix-character-classes@^0.1.0: 2880 | version "0.1.1" 2881 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 2882 | 2883 | prelude-ls@~1.1.2: 2884 | version "1.1.2" 2885 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2886 | 2887 | preserve@^0.2.0: 2888 | version "0.2.0" 2889 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 2890 | 2891 | pretty-format@^23.5.0: 2892 | version "23.5.0" 2893 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.5.0.tgz#0f9601ad9da70fe690a269cd3efca732c210687c" 2894 | dependencies: 2895 | ansi-regex "^3.0.0" 2896 | ansi-styles "^3.2.0" 2897 | 2898 | private@^0.1.8: 2899 | version "0.1.8" 2900 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 2901 | 2902 | process-nextick-args@~2.0.0: 2903 | version "2.0.0" 2904 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 2905 | 2906 | progress@^1.1.8: 2907 | version "1.1.8" 2908 | resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" 2909 | 2910 | prompts@^0.1.9: 2911 | version "0.1.14" 2912 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" 2913 | dependencies: 2914 | kleur "^2.0.1" 2915 | sisteransi "^0.1.1" 2916 | 2917 | pseudomap@^1.0.2: 2918 | version "1.0.2" 2919 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2920 | 2921 | psl@^1.1.24: 2922 | version "1.1.29" 2923 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" 2924 | 2925 | punycode@1.3.2: 2926 | version "1.3.2" 2927 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 2928 | 2929 | punycode@^1.4.1: 2930 | version "1.4.1" 2931 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 2932 | 2933 | punycode@^2.1.0: 2934 | version "2.1.1" 2935 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2936 | 2937 | qs@^6.5.0, qs@~6.5.2: 2938 | version "6.5.2" 2939 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 2940 | 2941 | querystring@0.2.0, querystring@^0.2.0: 2942 | version "0.2.0" 2943 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 2944 | 2945 | randomatic@^3.0.0: 2946 | version "3.1.0" 2947 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" 2948 | dependencies: 2949 | is-number "^4.0.0" 2950 | kind-of "^6.0.0" 2951 | math-random "^1.0.1" 2952 | 2953 | rc@^1.2.7: 2954 | version "1.2.8" 2955 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 2956 | dependencies: 2957 | deep-extend "^0.6.0" 2958 | ini "~1.3.0" 2959 | minimist "^1.2.0" 2960 | strip-json-comments "~2.0.1" 2961 | 2962 | read-pkg-up@^3.0.0: 2963 | version "3.0.0" 2964 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" 2965 | dependencies: 2966 | find-up "^2.0.0" 2967 | read-pkg "^3.0.0" 2968 | 2969 | read-pkg@^3.0.0: 2970 | version "3.0.0" 2971 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 2972 | dependencies: 2973 | load-json-file "^4.0.0" 2974 | normalize-package-data "^2.3.2" 2975 | path-type "^3.0.0" 2976 | 2977 | readable-stream@^2.0.1, readable-stream@^2.0.6: 2978 | version "2.3.6" 2979 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 2980 | dependencies: 2981 | core-util-is "~1.0.0" 2982 | inherits "~2.0.3" 2983 | isarray "~1.0.0" 2984 | process-nextick-args "~2.0.0" 2985 | safe-buffer "~5.1.1" 2986 | string_decoder "~1.1.1" 2987 | util-deprecate "~1.0.1" 2988 | 2989 | realpath-native@^1.0.0: 2990 | version "1.0.1" 2991 | resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.1.tgz#07f40a0cce8f8261e2e8b7ebebf5c95965d7b633" 2992 | dependencies: 2993 | util.promisify "^1.0.0" 2994 | 2995 | regenerator-runtime@^0.11.0: 2996 | version "0.11.1" 2997 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" 2998 | 2999 | regex-cache@^0.4.2: 3000 | version "0.4.4" 3001 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 3002 | dependencies: 3003 | is-equal-shallow "^0.1.3" 3004 | 3005 | regex-not@^1.0.0, regex-not@^1.0.2: 3006 | version "1.0.2" 3007 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 3008 | dependencies: 3009 | extend-shallow "^3.0.2" 3010 | safe-regex "^1.1.0" 3011 | 3012 | remove-trailing-separator@^1.0.1: 3013 | version "1.1.0" 3014 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 3015 | 3016 | repeat-element@^1.1.2: 3017 | version "1.1.3" 3018 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" 3019 | 3020 | repeat-string@^1.5.2, repeat-string@^1.6.1: 3021 | version "1.6.1" 3022 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 3023 | 3024 | repeating@^2.0.0: 3025 | version "2.0.1" 3026 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 3027 | dependencies: 3028 | is-finite "^1.0.0" 3029 | 3030 | request-promise-core@1.1.1: 3031 | version "1.1.1" 3032 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" 3033 | dependencies: 3034 | lodash "^4.13.1" 3035 | 3036 | request-promise-native@^1.0.5: 3037 | version "1.0.5" 3038 | resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" 3039 | dependencies: 3040 | request-promise-core "1.1.1" 3041 | stealthy-require "^1.1.0" 3042 | tough-cookie ">=2.3.3" 3043 | 3044 | request@^2.87.0: 3045 | version "2.88.0" 3046 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 3047 | dependencies: 3048 | aws-sign2 "~0.7.0" 3049 | aws4 "^1.8.0" 3050 | caseless "~0.12.0" 3051 | combined-stream "~1.0.6" 3052 | extend "~3.0.2" 3053 | forever-agent "~0.6.1" 3054 | form-data "~2.3.2" 3055 | har-validator "~5.1.0" 3056 | http-signature "~1.2.0" 3057 | is-typedarray "~1.0.0" 3058 | isstream "~0.1.2" 3059 | json-stringify-safe "~5.0.1" 3060 | mime-types "~2.1.19" 3061 | oauth-sign "~0.9.0" 3062 | performance-now "^2.1.0" 3063 | qs "~6.5.2" 3064 | safe-buffer "^5.1.2" 3065 | tough-cookie "~2.4.3" 3066 | tunnel-agent "^0.6.0" 3067 | uuid "^3.3.2" 3068 | 3069 | require-directory@^2.1.1: 3070 | version "2.1.1" 3071 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 3072 | 3073 | require-main-filename@^1.0.1: 3074 | version "1.0.1" 3075 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 3076 | 3077 | resolve-cwd@^2.0.0: 3078 | version "2.0.0" 3079 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" 3080 | dependencies: 3081 | resolve-from "^3.0.0" 3082 | 3083 | resolve-from@^3.0.0: 3084 | version "3.0.0" 3085 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" 3086 | 3087 | resolve-url@^0.2.1: 3088 | version "0.2.1" 3089 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 3090 | 3091 | resolve@1.1.7: 3092 | version "1.1.7" 3093 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" 3094 | 3095 | ret@~0.1.10: 3096 | version "0.1.15" 3097 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 3098 | 3099 | right-align@^0.1.1: 3100 | version "0.1.3" 3101 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 3102 | dependencies: 3103 | align-text "^0.1.1" 3104 | 3105 | rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1: 3106 | version "2.6.2" 3107 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 3108 | dependencies: 3109 | glob "^7.0.5" 3110 | 3111 | rmdir@^1.2.0: 3112 | version "1.2.0" 3113 | resolved "https://registry.yarnpkg.com/rmdir/-/rmdir-1.2.0.tgz#4fe0357cb06168c258e73e968093dc4e8a0f3253" 3114 | dependencies: 3115 | node.flow "1.2.3" 3116 | 3117 | rsvp@^3.3.3: 3118 | version "3.6.2" 3119 | resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" 3120 | 3121 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 3122 | version "5.1.2" 3123 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 3124 | 3125 | safe-regex@^1.1.0: 3126 | version "1.1.0" 3127 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 3128 | dependencies: 3129 | ret "~0.1.10" 3130 | 3131 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 3132 | version "2.1.2" 3133 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 3134 | 3135 | sane@^2.0.0: 3136 | version "2.5.2" 3137 | resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" 3138 | dependencies: 3139 | anymatch "^2.0.0" 3140 | capture-exit "^1.2.0" 3141 | exec-sh "^0.2.0" 3142 | fb-watchman "^2.0.0" 3143 | micromatch "^3.1.4" 3144 | minimist "^1.1.1" 3145 | walker "~1.0.5" 3146 | watch "~0.18.0" 3147 | optionalDependencies: 3148 | fsevents "^1.2.3" 3149 | 3150 | sax@1.2.1: 3151 | version "1.2.1" 3152 | resolved "http://registry.npmjs.org/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" 3153 | 3154 | sax@>=0.6.0, sax@^1.2.4: 3155 | version "1.2.4" 3156 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 3157 | 3158 | "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: 3159 | version "5.5.1" 3160 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" 3161 | 3162 | serverless-dynamodb-local@^0.2.33: 3163 | version "0.2.33" 3164 | resolved "https://registry.yarnpkg.com/serverless-dynamodb-local/-/serverless-dynamodb-local-0.2.33.tgz#c51eab1c7e9a431c6980e922a66edfa7ffbe722e" 3165 | dependencies: 3166 | aws-sdk "^2.7.0" 3167 | bluebird "^3.4.6" 3168 | dynamodb-localhost "^0.0.6" 3169 | lodash "^4.17.0" 3170 | 3171 | serverless-offline@^3.20.3: 3172 | version "3.25.10" 3173 | resolved "https://registry.yarnpkg.com/serverless-offline/-/serverless-offline-3.25.10.tgz#bc556223999d9c8a02925fa1431cecf70d94e470" 3174 | dependencies: 3175 | babel-register "^6.18.0" 3176 | boom "^4.2.0" 3177 | h2o2 "^5.4.0" 3178 | hapi "14.2.0" 3179 | hapi-cors-headers "^1.0.0" 3180 | js-string-escape "^1.0.1" 3181 | jsonpath-plus "^0.16.0" 3182 | jsonwebtoken "^8.2.1" 3183 | lodash "^4.17.10" 3184 | uuid "^3.2.1" 3185 | velocityjs "^0.9.3" 3186 | 3187 | set-blocking@^2.0.0, set-blocking@~2.0.0: 3188 | version "2.0.0" 3189 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 3190 | 3191 | set-value@^0.4.3: 3192 | version "0.4.3" 3193 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" 3194 | dependencies: 3195 | extend-shallow "^2.0.1" 3196 | is-extendable "^0.1.1" 3197 | is-plain-object "^2.0.1" 3198 | to-object-path "^0.3.0" 3199 | 3200 | set-value@^2.0.0: 3201 | version "2.0.0" 3202 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" 3203 | dependencies: 3204 | extend-shallow "^2.0.1" 3205 | is-extendable "^0.1.1" 3206 | is-plain-object "^2.0.3" 3207 | split-string "^3.0.1" 3208 | 3209 | setprototypeof@1.1.0: 3210 | version "1.1.0" 3211 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" 3212 | 3213 | shebang-command@^1.2.0: 3214 | version "1.2.0" 3215 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 3216 | dependencies: 3217 | shebang-regex "^1.0.0" 3218 | 3219 | shebang-regex@^1.0.0: 3220 | version "1.0.0" 3221 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 3222 | 3223 | shellwords@^0.1.1: 3224 | version "0.1.1" 3225 | resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" 3226 | 3227 | shot@3.x.x: 3228 | version "3.4.2" 3229 | resolved "https://registry.yarnpkg.com/shot/-/shot-3.4.2.tgz#1e5c3f6f2b26649adc42f7eb350214a5a0291d67" 3230 | dependencies: 3231 | hoek "4.x.x" 3232 | joi "10.x.x" 3233 | 3234 | signal-exit@^3.0.0, signal-exit@^3.0.2: 3235 | version "3.0.2" 3236 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 3237 | 3238 | sisteransi@^0.1.1: 3239 | version "0.1.1" 3240 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" 3241 | 3242 | slash@^1.0.0: 3243 | version "1.0.0" 3244 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 3245 | 3246 | snapdragon-node@^2.0.1: 3247 | version "2.1.1" 3248 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 3249 | dependencies: 3250 | define-property "^1.0.0" 3251 | isobject "^3.0.0" 3252 | snapdragon-util "^3.0.1" 3253 | 3254 | snapdragon-util@^3.0.1: 3255 | version "3.0.1" 3256 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 3257 | dependencies: 3258 | kind-of "^3.2.0" 3259 | 3260 | snapdragon@^0.8.1: 3261 | version "0.8.2" 3262 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 3263 | dependencies: 3264 | base "^0.11.1" 3265 | debug "^2.2.0" 3266 | define-property "^0.2.5" 3267 | extend-shallow "^2.0.1" 3268 | map-cache "^0.2.2" 3269 | source-map "^0.5.6" 3270 | source-map-resolve "^0.5.0" 3271 | use "^3.1.0" 3272 | 3273 | source-map-resolve@^0.5.0: 3274 | version "0.5.2" 3275 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" 3276 | dependencies: 3277 | atob "^2.1.1" 3278 | decode-uri-component "^0.2.0" 3279 | resolve-url "^0.2.1" 3280 | source-map-url "^0.4.0" 3281 | urix "^0.1.0" 3282 | 3283 | source-map-support@^0.4.15: 3284 | version "0.4.18" 3285 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" 3286 | dependencies: 3287 | source-map "^0.5.6" 3288 | 3289 | source-map-support@^0.5.6: 3290 | version "0.5.9" 3291 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" 3292 | dependencies: 3293 | buffer-from "^1.0.0" 3294 | source-map "^0.6.0" 3295 | 3296 | source-map-url@^0.4.0: 3297 | version "0.4.0" 3298 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 3299 | 3300 | source-map@^0.4.4: 3301 | version "0.4.4" 3302 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" 3303 | dependencies: 3304 | amdefine ">=0.0.4" 3305 | 3306 | source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: 3307 | version "0.5.7" 3308 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 3309 | 3310 | source-map@^0.6.0, source-map@~0.6.1: 3311 | version "0.6.1" 3312 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 3313 | 3314 | spdx-correct@^3.0.0: 3315 | version "3.0.0" 3316 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" 3317 | dependencies: 3318 | spdx-expression-parse "^3.0.0" 3319 | spdx-license-ids "^3.0.0" 3320 | 3321 | spdx-exceptions@^2.1.0: 3322 | version "2.1.0" 3323 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" 3324 | 3325 | spdx-expression-parse@^3.0.0: 3326 | version "3.0.0" 3327 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 3328 | dependencies: 3329 | spdx-exceptions "^2.1.0" 3330 | spdx-license-ids "^3.0.0" 3331 | 3332 | spdx-license-ids@^3.0.0: 3333 | version "3.0.0" 3334 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" 3335 | 3336 | split-string@^3.0.1, split-string@^3.0.2: 3337 | version "3.1.0" 3338 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 3339 | dependencies: 3340 | extend-shallow "^3.0.0" 3341 | 3342 | sprintf-js@~1.0.2: 3343 | version "1.0.3" 3344 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 3345 | 3346 | sshpk@^1.7.0: 3347 | version "1.14.2" 3348 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" 3349 | dependencies: 3350 | asn1 "~0.2.3" 3351 | assert-plus "^1.0.0" 3352 | dashdash "^1.12.0" 3353 | getpass "^0.1.1" 3354 | safer-buffer "^2.0.2" 3355 | optionalDependencies: 3356 | bcrypt-pbkdf "^1.0.0" 3357 | ecc-jsbn "~0.1.1" 3358 | jsbn "~0.1.0" 3359 | tweetnacl "~0.14.0" 3360 | 3361 | stack-utils@^1.0.1: 3362 | version "1.0.1" 3363 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" 3364 | 3365 | statehood@4.x.x: 3366 | version "4.1.0" 3367 | resolved "https://registry.yarnpkg.com/statehood/-/statehood-4.1.0.tgz#8a2877d13d9850aab6ce877a54b778df0f43acdb" 3368 | dependencies: 3369 | boom "3.x.x" 3370 | cryptiles "3.x.x" 3371 | hoek "4.x.x" 3372 | iron "4.x.x" 3373 | items "2.x.x" 3374 | joi "9.x.x" 3375 | 3376 | static-extend@^0.1.1: 3377 | version "0.1.2" 3378 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 3379 | dependencies: 3380 | define-property "^0.2.5" 3381 | object-copy "^0.1.0" 3382 | 3383 | "statuses@>= 1.5.0 < 2": 3384 | version "1.5.0" 3385 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 3386 | 3387 | stealthy-require@^1.1.0: 3388 | version "1.1.1" 3389 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 3390 | 3391 | string-length@^2.0.0: 3392 | version "2.0.0" 3393 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" 3394 | dependencies: 3395 | astral-regex "^1.0.0" 3396 | strip-ansi "^4.0.0" 3397 | 3398 | string-width@^1.0.1: 3399 | version "1.0.2" 3400 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 3401 | dependencies: 3402 | code-point-at "^1.0.0" 3403 | is-fullwidth-code-point "^1.0.0" 3404 | strip-ansi "^3.0.0" 3405 | 3406 | "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: 3407 | version "2.1.1" 3408 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 3409 | dependencies: 3410 | is-fullwidth-code-point "^2.0.0" 3411 | strip-ansi "^4.0.0" 3412 | 3413 | string_decoder@~1.1.1: 3414 | version "1.1.1" 3415 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 3416 | dependencies: 3417 | safe-buffer "~5.1.0" 3418 | 3419 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 3420 | version "3.0.1" 3421 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 3422 | dependencies: 3423 | ansi-regex "^2.0.0" 3424 | 3425 | strip-ansi@^4.0.0: 3426 | version "4.0.0" 3427 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 3428 | dependencies: 3429 | ansi-regex "^3.0.0" 3430 | 3431 | strip-bom@3.0.0, strip-bom@^3.0.0: 3432 | version "3.0.0" 3433 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 3434 | 3435 | strip-eof@^1.0.0: 3436 | version "1.0.0" 3437 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 3438 | 3439 | strip-json-comments@~2.0.1: 3440 | version "2.0.1" 3441 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 3442 | 3443 | subtext@4.x.x: 3444 | version "4.4.1" 3445 | resolved "https://registry.yarnpkg.com/subtext/-/subtext-4.4.1.tgz#2fcec945de429283c3d18b151ff0fa1f1b87aec9" 3446 | dependencies: 3447 | boom "5.x.x" 3448 | content "3.x.x" 3449 | hoek "4.x.x" 3450 | pez "2.x.x" 3451 | wreck "12.x.x" 3452 | 3453 | supports-color@^2.0.0: 3454 | version "2.0.0" 3455 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 3456 | 3457 | supports-color@^3.1.2: 3458 | version "3.2.3" 3459 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 3460 | dependencies: 3461 | has-flag "^1.0.0" 3462 | 3463 | supports-color@^5.3.0: 3464 | version "5.5.0" 3465 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 3466 | dependencies: 3467 | has-flag "^3.0.0" 3468 | 3469 | symbol-tree@^3.2.2: 3470 | version "3.2.2" 3471 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" 3472 | 3473 | tar@^2.0.0: 3474 | version "2.2.1" 3475 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 3476 | dependencies: 3477 | block-stream "*" 3478 | fstream "^1.0.2" 3479 | inherits "2" 3480 | 3481 | tar@^4: 3482 | version "4.4.6" 3483 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" 3484 | dependencies: 3485 | chownr "^1.0.1" 3486 | fs-minipass "^1.2.5" 3487 | minipass "^2.3.3" 3488 | minizlib "^1.1.0" 3489 | mkdirp "^0.5.0" 3490 | safe-buffer "^5.1.2" 3491 | yallist "^3.0.2" 3492 | 3493 | test-exclude@^4.2.1: 3494 | version "4.2.2" 3495 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.2.tgz#8b67aa8408f84afc225b06669e25c510f8582820" 3496 | dependencies: 3497 | arrify "^1.0.1" 3498 | minimatch "^3.0.4" 3499 | read-pkg-up "^3.0.0" 3500 | require-main-filename "^1.0.1" 3501 | 3502 | throat@^4.0.0: 3503 | version "4.1.0" 3504 | resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" 3505 | 3506 | tmpl@1.0.x: 3507 | version "1.0.4" 3508 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" 3509 | 3510 | to-fast-properties@^1.0.3: 3511 | version "1.0.3" 3512 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 3513 | 3514 | to-fast-properties@^2.0.0: 3515 | version "2.0.0" 3516 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 3517 | 3518 | to-object-path@^0.3.0: 3519 | version "0.3.0" 3520 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 3521 | dependencies: 3522 | kind-of "^3.0.2" 3523 | 3524 | to-regex-range@^2.1.0: 3525 | version "2.1.1" 3526 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 3527 | dependencies: 3528 | is-number "^3.0.0" 3529 | repeat-string "^1.6.1" 3530 | 3531 | to-regex@^3.0.1, to-regex@^3.0.2: 3532 | version "3.0.2" 3533 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 3534 | dependencies: 3535 | define-property "^2.0.2" 3536 | extend-shallow "^3.0.2" 3537 | regex-not "^1.0.2" 3538 | safe-regex "^1.1.0" 3539 | 3540 | toidentifier@1.0.0: 3541 | version "1.0.0" 3542 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 3543 | 3544 | topo@2.x.x: 3545 | version "2.0.2" 3546 | resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" 3547 | dependencies: 3548 | hoek "4.x.x" 3549 | 3550 | tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: 3551 | version "2.4.3" 3552 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 3553 | dependencies: 3554 | psl "^1.1.24" 3555 | punycode "^1.4.1" 3556 | 3557 | tr46@^1.0.1: 3558 | version "1.0.1" 3559 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" 3560 | dependencies: 3561 | punycode "^2.1.0" 3562 | 3563 | trim-right@^1.0.1: 3564 | version "1.0.1" 3565 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 3566 | 3567 | tunnel-agent@^0.6.0: 3568 | version "0.6.0" 3569 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 3570 | dependencies: 3571 | safe-buffer "^5.0.1" 3572 | 3573 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 3574 | version "0.14.5" 3575 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 3576 | 3577 | type-check@~0.3.2: 3578 | version "0.3.2" 3579 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 3580 | dependencies: 3581 | prelude-ls "~1.1.2" 3582 | 3583 | uglify-js@^2.6: 3584 | version "2.8.29" 3585 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" 3586 | dependencies: 3587 | source-map "~0.5.1" 3588 | yargs "~3.10.0" 3589 | optionalDependencies: 3590 | uglify-to-browserify "~1.0.0" 3591 | 3592 | uglify-to-browserify@~1.0.0: 3593 | version "1.0.2" 3594 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 3595 | 3596 | union-value@^1.0.0: 3597 | version "1.0.0" 3598 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" 3599 | dependencies: 3600 | arr-union "^3.1.0" 3601 | get-value "^2.0.6" 3602 | is-extendable "^0.1.1" 3603 | set-value "^0.4.3" 3604 | 3605 | unset-value@^1.0.0: 3606 | version "1.0.0" 3607 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 3608 | dependencies: 3609 | has-value "^0.3.1" 3610 | isobject "^3.0.0" 3611 | 3612 | uri-js@^4.2.2: 3613 | version "4.2.2" 3614 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 3615 | dependencies: 3616 | punycode "^2.1.0" 3617 | 3618 | urix@^0.1.0: 3619 | version "0.1.0" 3620 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 3621 | 3622 | url@0.10.3: 3623 | version "0.10.3" 3624 | resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" 3625 | dependencies: 3626 | punycode "1.3.2" 3627 | querystring "0.2.0" 3628 | 3629 | use@^3.1.0: 3630 | version "3.1.1" 3631 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 3632 | 3633 | util-deprecate@~1.0.1: 3634 | version "1.0.2" 3635 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 3636 | 3637 | util.promisify@^1.0.0: 3638 | version "1.0.0" 3639 | resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" 3640 | dependencies: 3641 | define-properties "^1.1.2" 3642 | object.getownpropertydescriptors "^2.0.3" 3643 | 3644 | uuid@3.1.0: 3645 | version "3.1.0" 3646 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" 3647 | 3648 | uuid@^3.2.1, uuid@^3.3.2: 3649 | version "3.3.2" 3650 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 3651 | 3652 | validate-npm-package-license@^3.0.1: 3653 | version "3.0.4" 3654 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 3655 | dependencies: 3656 | spdx-correct "^3.0.0" 3657 | spdx-expression-parse "^3.0.0" 3658 | 3659 | validator@^10.7.0: 3660 | version "10.7.1" 3661 | resolved "https://registry.yarnpkg.com/validator/-/validator-10.7.1.tgz#dd4cc750c2134ce4a15a2acfc7b233669d659c5b" 3662 | 3663 | velocityjs@^0.9.3: 3664 | version "0.9.6" 3665 | resolved "https://registry.yarnpkg.com/velocityjs/-/velocityjs-0.9.6.tgz#6ec82e99aa27492d2d62360c161afc4f82db89e2" 3666 | 3667 | verror@1.10.0: 3668 | version "1.10.0" 3669 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 3670 | dependencies: 3671 | assert-plus "^1.0.0" 3672 | core-util-is "1.0.2" 3673 | extsprintf "^1.2.0" 3674 | 3675 | vise@2.x.x: 3676 | version "2.0.2" 3677 | resolved "https://registry.yarnpkg.com/vise/-/vise-2.0.2.tgz#6b08e8fb4cb76e3a50cd6dd0ec37338e811a0d39" 3678 | dependencies: 3679 | hoek "4.x.x" 3680 | 3681 | w3c-hr-time@^1.0.1: 3682 | version "1.0.1" 3683 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" 3684 | dependencies: 3685 | browser-process-hrtime "^0.1.2" 3686 | 3687 | walker@~1.0.5: 3688 | version "1.0.7" 3689 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" 3690 | dependencies: 3691 | makeerror "1.0.x" 3692 | 3693 | watch@~0.18.0: 3694 | version "0.18.0" 3695 | resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" 3696 | dependencies: 3697 | exec-sh "^0.2.0" 3698 | minimist "^1.2.0" 3699 | 3700 | webidl-conversions@^4.0.2: 3701 | version "4.0.2" 3702 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" 3703 | 3704 | whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: 3705 | version "1.0.4" 3706 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz#63fb016b7435b795d9025632c086a5209dbd2621" 3707 | dependencies: 3708 | iconv-lite "0.4.23" 3709 | 3710 | whatwg-mimetype@^2.1.0: 3711 | version "2.1.0" 3712 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz#f0f21d76cbba72362eb609dbed2a30cd17fcc7d4" 3713 | 3714 | whatwg-url@^6.4.1: 3715 | version "6.5.0" 3716 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" 3717 | dependencies: 3718 | lodash.sortby "^4.7.0" 3719 | tr46 "^1.0.1" 3720 | webidl-conversions "^4.0.2" 3721 | 3722 | whatwg-url@^7.0.0: 3723 | version "7.0.0" 3724 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" 3725 | dependencies: 3726 | lodash.sortby "^4.7.0" 3727 | tr46 "^1.0.1" 3728 | webidl-conversions "^4.0.2" 3729 | 3730 | which-module@^2.0.0: 3731 | version "2.0.0" 3732 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 3733 | 3734 | which@^1.2.12, which@^1.2.9, which@^1.3.0: 3735 | version "1.3.1" 3736 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 3737 | dependencies: 3738 | isexe "^2.0.0" 3739 | 3740 | wide-align@^1.1.0: 3741 | version "1.1.3" 3742 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 3743 | dependencies: 3744 | string-width "^1.0.2 || 2" 3745 | 3746 | window-size@0.1.0: 3747 | version "0.1.0" 3748 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 3749 | 3750 | wordwrap@0.0.2: 3751 | version "0.0.2" 3752 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 3753 | 3754 | wordwrap@~0.0.2: 3755 | version "0.0.3" 3756 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 3757 | 3758 | wordwrap@~1.0.0: 3759 | version "1.0.0" 3760 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 3761 | 3762 | wrap-ansi@^2.0.0: 3763 | version "2.1.0" 3764 | resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 3765 | dependencies: 3766 | string-width "^1.0.1" 3767 | strip-ansi "^3.0.1" 3768 | 3769 | wrappy@1: 3770 | version "1.0.2" 3771 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3772 | 3773 | wreck@12.x.x: 3774 | version "12.5.1" 3775 | resolved "https://registry.yarnpkg.com/wreck/-/wreck-12.5.1.tgz#cd2ffce167449e1f0242ed9cf80552e20fb6902a" 3776 | dependencies: 3777 | boom "5.x.x" 3778 | hoek "4.x.x" 3779 | 3780 | wreck@9.X.X: 3781 | version "9.0.0" 3782 | resolved "https://registry.yarnpkg.com/wreck/-/wreck-9.0.0.tgz#1de63d49bb07b94fe718864b8be63176e63331ec" 3783 | dependencies: 3784 | boom "3.x.x" 3785 | hoek "4.x.x" 3786 | 3787 | write-file-atomic@^2.1.0: 3788 | version "2.3.0" 3789 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" 3790 | dependencies: 3791 | graceful-fs "^4.1.11" 3792 | imurmurhash "^0.1.4" 3793 | signal-exit "^3.0.2" 3794 | 3795 | ws@^5.2.0: 3796 | version "5.2.2" 3797 | resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" 3798 | dependencies: 3799 | async-limiter "~1.0.0" 3800 | 3801 | xml-name-validator@^3.0.0: 3802 | version "3.0.0" 3803 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" 3804 | 3805 | xml2js@0.4.19: 3806 | version "0.4.19" 3807 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" 3808 | dependencies: 3809 | sax ">=0.6.0" 3810 | xmlbuilder "~9.0.1" 3811 | 3812 | xmlbuilder@~9.0.1: 3813 | version "9.0.7" 3814 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" 3815 | 3816 | y18n@^3.2.1: 3817 | version "3.2.1" 3818 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 3819 | 3820 | yallist@^2.1.2: 3821 | version "2.1.2" 3822 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 3823 | 3824 | yallist@^3.0.0, yallist@^3.0.2: 3825 | version "3.0.2" 3826 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" 3827 | 3828 | yargs-parser@^9.0.2: 3829 | version "9.0.2" 3830 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" 3831 | dependencies: 3832 | camelcase "^4.1.0" 3833 | 3834 | yargs@^11.0.0: 3835 | version "11.1.0" 3836 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" 3837 | dependencies: 3838 | cliui "^4.0.0" 3839 | decamelize "^1.1.1" 3840 | find-up "^2.1.0" 3841 | get-caller-file "^1.0.1" 3842 | os-locale "^2.0.0" 3843 | require-directory "^2.1.1" 3844 | require-main-filename "^1.0.1" 3845 | set-blocking "^2.0.0" 3846 | string-width "^2.0.0" 3847 | which-module "^2.0.0" 3848 | y18n "^3.2.1" 3849 | yargs-parser "^9.0.2" 3850 | 3851 | yargs@~3.10.0: 3852 | version "3.10.0" 3853 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 3854 | dependencies: 3855 | camelcase "^1.0.2" 3856 | cliui "^2.1.0" 3857 | decamelize "^1.0.0" 3858 | window-size "0.1.0" 3859 | --------------------------------------------------------------------------------