├── test ├── index.spec.js ├── service.spec.js ├── controller.spec.js ├── db.spec.js ├── route.spec.js └── cache.spec.js ├── .eslintignore ├── .vscode └── settings.json ├── .gitignore ├── Dockerfile ├── images ├── image1.png ├── image2.png ├── image3.png ├── image4.png └── image5.png ├── .eslintrc.json ├── .travis.yml ├── config.js ├── .editorconfig ├── services.js ├── .snyk ├── docker-compose.yml ├── index.js ├── controller.js ├── db.js ├── LICENSE ├── route.js ├── package.json ├── cache.js ├── README.md └── yarn.lock /test/index.spec.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | coverage/** 2 | node_modules/** 3 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "eslint.enable": true 3 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | lcov-report 2 | node_modules 3 | coverage 4 | npm* 5 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:boron 2 | 3 | RUN mkdir /app 4 | 5 | WORKDIR /app 6 | 7 | -------------------------------------------------------------------------------- /images/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kirmayrtomaz/cache_redis_node/HEAD/images/image1.png -------------------------------------------------------------------------------- /images/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kirmayrtomaz/cache_redis_node/HEAD/images/image2.png -------------------------------------------------------------------------------- /images/image3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kirmayrtomaz/cache_redis_node/HEAD/images/image3.png -------------------------------------------------------------------------------- /images/image4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kirmayrtomaz/cache_redis_node/HEAD/images/image4.png -------------------------------------------------------------------------------- /images/image5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kirmayrtomaz/cache_redis_node/HEAD/images/image5.png -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "airbnb-base", 3 | "plugins": [ 4 | "import" 5 | ], 6 | "globals": { 7 | "describe": true, 8 | "it": true 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "6.0" 4 | cache: 5 | directories: 6 | - node_modules 7 | git: 8 | depth: 3 9 | script: 10 | - npm test 11 | -------------------------------------------------------------------------------- /config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | APP_PORT: process.env.APP_PORT || 3000, 3 | GITHUB_URL: process.env.GITHUB_URL || 'https://api.github.com', 4 | REDIS_PORT: process.env.REDIS_PORT || 6379, 5 | REDIS_HOST: process.env.REDIS_HOST || 'redis', 6 | }; 7 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | end_of_line = lf 10 | # editorconfig-tools is unable to ignore longs strings or urls 11 | max_line_length = null -------------------------------------------------------------------------------- /services.js: -------------------------------------------------------------------------------- 1 | const rp = require('request-promise'); 2 | const { GITHUB_URL } = require('./config'); 3 | 4 | function getOrgByGithub(repo) { 5 | return rp.get({ 6 | uri: `${GITHUB_URL}/orgs/${repo}`, 7 | headers: { 8 | 'User-Agent': 'Request-Promise', 9 | }, 10 | json: true, 11 | }); 12 | } 13 | 14 | module.exports = { 15 | getOrgByGithub, 16 | }; 17 | 18 | -------------------------------------------------------------------------------- /.snyk: -------------------------------------------------------------------------------- 1 | # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. 2 | version: v1.7.1 3 | ignore: {} 4 | # patches apply the minimum changes required to fix a vulnerability 5 | patch: 6 | 'npm:debug:20170905': 7 | - mocha > debug: 8 | patched: '2017-09-27T00:10:05.749Z' 9 | - mongoose > mquery > debug: 10 | patched: '2017-09-27T00:10:05.749Z' 11 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | 5 | redis: 6 | container_name: redis 7 | image: redis:latest 8 | mongo: 9 | container_name: mongo 10 | image: mongo 11 | node: 12 | build: . 13 | container_name: api 14 | command: npm start 15 | ports: 16 | - "3000:3000" 17 | volumes: 18 | - .:/app 19 | restart: always 20 | links: 21 | - redis 22 | - mongo 23 | 24 | volumes: 25 | node: 26 | 27 | -------------------------------------------------------------------------------- /test/service.spec.js: -------------------------------------------------------------------------------- 1 | const Promise = require('bluebird'); 2 | 3 | const sinon = require('sinon'); 4 | const proxyquire = require('proxyquire'); 5 | require('should-sinon'); 6 | 7 | 8 | describe('Service', () => { 9 | it('Service', (done) => { 10 | const service = proxyquire('./../services', { 11 | 'request-promise':{ 12 | get: sinon.stub().resolves( 13 | { 14 | login: 'repo', 15 | name: 'Concrete Solutions', 16 | description: '', 17 | html_url: 'https://github.com/concretesolutions', 18 | avatar_url: 'https://avatars1.githubusercontent.com/u/858781?v=3', 19 | public_repos: 25, 20 | }), 21 | }, 22 | }); 23 | 24 | Promise.coroutine(function* () { 25 | yield service.getOrgByGithub(); 26 | done(); 27 | })(); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const http = require('http'); 2 | const express = require('express'); 3 | const Promise = require('bluebird'); 4 | 5 | 6 | const { dbConnect } = require('./db'); 7 | const { APP_PORT } = require('./config'); 8 | const { getOrg, getAllOrgs } = require('./route'); 9 | const { cacheConnect, cacheMiddleware } = require('./cache'); 10 | 11 | let httpServer; 12 | 13 | function init() { 14 | httpServer.listen(APP_PORT, () => { 15 | console.log(`APP executado na porta ${APP_PORT}`); 16 | }); 17 | } 18 | 19 | 20 | Promise.coroutine(function* () { 21 | yield cacheConnect(); 22 | yield dbConnect(); 23 | 24 | const app = express(APP_PORT); 25 | httpServer = http.Server(app); 26 | app.use(cacheMiddleware); 27 | 28 | app.get('/', (req, res) => { 29 | res.json({ status: 'The NODE_REDIS XD' }); 30 | }); 31 | app.get('/orgs/:organization', getOrg); 32 | app.get('/orgs/', getAllOrgs); 33 | 34 | 35 | init(); 36 | })(); 37 | 38 | 39 | -------------------------------------------------------------------------------- /controller.js: -------------------------------------------------------------------------------- 1 | const Promise = require('bluebird'); 2 | const { getOrgByGithub } = require('./services'); 3 | const { Orgs } = require('./db'); 4 | const { publish, setCache } = require('./cache'); 5 | 6 | 7 | function getOrganization(organization, cacheURL) { 8 | return Promise.coroutine(function* () { 9 | let org = yield Orgs.findOne(organization); 10 | 11 | if (org) { 12 | return org; 13 | } 14 | 15 | org = yield getOrgByGithub(organization); 16 | 17 | yield Orgs.save({ name: org.login }); 18 | yield setCache(cacheURL, org, 10); 19 | publish('clean_cache'); 20 | 21 | return org; 22 | })(); 23 | } 24 | 25 | function getAllOrganizations() { 26 | return Promise.coroutine(function* () { 27 | const orgs = yield Orgs.find(); 28 | 29 | yield setCache('orgs', orgs, 10); 30 | 31 | return orgs.map(org => org.name, []); 32 | })(); 33 | } 34 | 35 | module.exports = { 36 | getOrganization, 37 | getAllOrganizations, 38 | }; 39 | -------------------------------------------------------------------------------- /db.js: -------------------------------------------------------------------------------- 1 | 2 | const mongoose = require('mongoose'); 3 | const Promise = require('bluebird'); 4 | 5 | const schema = new mongoose.Schema({ name: 'string' }); 6 | const Organization = mongoose.model('Org', schema); 7 | 8 | function dbConnect() { 9 | return new Promise((resolve, reject) => { 10 | mongoose.connect('mongodb://mongo:27017/org'); 11 | 12 | mongoose.connection.on('error', (e) => { 13 | reject(e); 14 | }); 15 | mongoose.connection.once('open', (e) => { 16 | resolve(e); 17 | }); 18 | }); 19 | } 20 | 21 | const Orgs = (function () { 22 | const save = (data = {}) => Promise.coroutine(function* () { 23 | const orgsave = new Organization(data); 24 | yield orgsave.save(); 25 | })(); 26 | 27 | const findOne = organization => Organization.findOne({ name: organization }).exec(); 28 | const find = () => Organization.find().exec(); 29 | 30 | return { 31 | save, 32 | findOne, 33 | find, 34 | }; 35 | })(); 36 | 37 | module.exports = { 38 | dbConnect, 39 | Orgs, 40 | }; 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Kirmayr Tomaz 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /route.js: -------------------------------------------------------------------------------- 1 | const Promise = require('bluebird'); 2 | const { getOrganization, getAllOrganizations } = require('./controller'); 3 | const { setCache } = require('./cache'); 4 | 5 | const getOrg = (req, res) => Promise.coroutine(function* () { 6 | const organization = req.params.organization; 7 | const cacheURL = req.originalUrl; 8 | try { 9 | const org = yield getOrganization(organization, cacheURL); 10 | 11 | if (org) { 12 | yield setCache(cacheURL, org, 10); 13 | return res.json(org); 14 | } 15 | 16 | return res.sendStatus(404); 17 | } catch (e) { 18 | res.status(500); 19 | return res.send(e.message); 20 | } 21 | })(); 22 | 23 | const getAllOrgs = (req, res) => Promise.coroutine(function* () { 24 | const cacheKey = req.originalUrl; 25 | 26 | try { 27 | const allOrganizations = yield getAllOrganizations(); 28 | if (allOrganizations && allOrganizations.length > 0) { 29 | yield setCache(cacheKey, allOrganizations, 10); 30 | return res.json(allOrganizations); 31 | } 32 | return res.sendStatus(404); 33 | } catch (e) { 34 | res.status(500); 35 | return res.send(e.message); 36 | } 37 | })(); 38 | 39 | module.exports = { 40 | getOrg, 41 | getAllOrgs, 42 | }; 43 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node_redis", 3 | "version": "1.0.0", 4 | "description": "Tutorial de como criar cache com o redis", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "./node_modules/.bin/pm2 start index.js --no-daemon --watch", 8 | "test": "./node_modules/mocha/bin/_mocha --recursive **/*.spec.js", 9 | "coverage": "node_modules/.bin/istanbul cover node_modules/mocha/bin/_mocha **/*.spec.js -- -u exports -R spec -b --recursive", 10 | "lint": "eslint '**/*.js'", 11 | "lint:fix": "eslint '**/*.js'", 12 | "snyk-protect": "snyk protect", 13 | "prepublish": "npm run snyk-protect" 14 | }, 15 | "author": "", 16 | "license": "ISC", 17 | "dependencies": { 18 | "axios": "^0.16.2", 19 | "bluebird": "^3.5.0", 20 | "express": "^4.15.3", 21 | "mocha": "^4.0.0", 22 | "mongoose": "^4.10.8", 23 | "pm2": "^2.5.0", 24 | "redis": "^2.7.1", 25 | "request": "^2.81.0", 26 | "request-promise": "^4.2.1", 27 | "snyk": "^1.41.1" 28 | }, 29 | "devDependencies": { 30 | "eslint": "^4.1.1", 31 | "eslint-config-airbnb": "^15.0.1", 32 | "eslint-config-airbnb-base": "^11.2.0", 33 | "eslint-plugin-import": "^2.5.0", 34 | "eslint-plugin-jsx-a11y": "^6.0.2", 35 | "eslint-plugin-react": "^7.1.0", 36 | "istanbul": "^0.4.5", 37 | "jest": "^20.0.4", 38 | "proxyquire": "^1.8.0", 39 | "should": "^11.2.1", 40 | "should-sinon": "0.0.5", 41 | "sinon": "^2.3.5" 42 | }, 43 | "snyk": true 44 | } 45 | -------------------------------------------------------------------------------- /cache.js: -------------------------------------------------------------------------------- 1 | const redis = require('redis'); 2 | const Promise = require('bluebird'); 3 | const { REDIS_PORT, REDIS_HOST } = require('./config'); 4 | 5 | 6 | Promise.promisifyAll(redis.RedisClient.prototype);// promissificando redis 7 | 8 | let cache; 9 | 10 | 11 | 12 | function cacheConnect() { 13 | cache = redis.createClient(REDIS_PORT, REDIS_HOST); 14 | const sub = redis.createClient(REDIS_PORT, REDIS_HOST); 15 | 16 | sub.on('message', () => { 17 | cache.del('/orgs'); 18 | }); 19 | 20 | sub.subscribe('clean_cache'); 21 | return new Promise((resolve, reject) => { 22 | cache.on('connect', () => { 23 | resolve('Sucess'); 24 | }); 25 | 26 | cache.on('error', () => { 27 | reject('Error'); 28 | }); 29 | }); 30 | } 31 | 32 | function publish(canal) { 33 | const pub = redis.createClient(REDIS_PORT, REDIS_HOST); 34 | pub.publish(canal, 'clean'); 35 | } 36 | 37 | function getCache(keyName) { 38 | return Promise.coroutine(function* () { 39 | const cacheResult = yield cache.getAsync(keyName); 40 | return cacheResult ? JSON.parse(cacheResult) : cacheResult; 41 | })(); 42 | } 43 | 44 | function setCache(keyName, value, time) { 45 | return cache.setAsync(keyName, JSON.stringify(value), 'EX', time); 46 | } 47 | 48 | 49 | function cacheMiddleware(req, res, next) { 50 | return Promise.coroutine(function* () { 51 | const keyName = req.originalUrl; 52 | const cacheRes = yield getCache(keyName); 53 | if (cacheRes) { 54 | return res.json(cacheRes); 55 | } 56 | next(); 57 | })(); 58 | } 59 | 60 | module.exports = { 61 | cacheConnect, 62 | cache, 63 | publish, 64 | getCache, 65 | setCache, 66 | cacheMiddleware, 67 | }; 68 | -------------------------------------------------------------------------------- /test/controller.spec.js: -------------------------------------------------------------------------------- 1 | const Promise = require('bluebird'); 2 | 3 | const sinon = require('sinon'); 4 | const proxyquire = require('proxyquire'); 5 | require('should-sinon'); 6 | 7 | 8 | describe('Controller', () => { 9 | it('get organization when not exist in database XD', (done) => { 10 | const controller = proxyquire('../controller', { 11 | './db': { 12 | Orgs: { 13 | findOne: sinon.stub().resolves(), 14 | save: sinon.stub().resolves(), 15 | }, 16 | }, 17 | './services': { 18 | getOrgByGithub: sinon.stub().resolves({ login: 'organization' }), 19 | }, 20 | './cache': { 21 | setCache: sinon.stub().resolves(), 22 | publish() { }, 23 | }, 24 | }); 25 | 26 | Promise.coroutine(function* () { 27 | const result = yield controller.getOrganization('org'); 28 | result.should.deepEqual({ login: 'organization' }); 29 | done(); 30 | })(); 31 | }); 32 | 33 | it('get organization when the exist in database', (done) => { 34 | const controller = proxyquire('../controller', { 35 | './db': { 36 | Orgs: { 37 | findOne: sinon.stub().resolves({ login: 'organization' }), 38 | save: sinon.stub().resolves(), 39 | }, 40 | }, 41 | './services': { 42 | getOrgByGithub: sinon.stub().resolves({ login: 'organization' }), 43 | }, 44 | './cache': { 45 | publish() { }, 46 | }, 47 | }); 48 | 49 | Promise.coroutine(function* () { 50 | const result = yield controller.getOrganization('org'); 51 | result.should.deepEqual({ login: 'organization' }); 52 | done(); 53 | })(); 54 | }); 55 | 56 | it('get all organizations in database', (done) => { 57 | const controller = proxyquire('../controller', { 58 | './db': { 59 | Orgs: { 60 | find: sinon.stub().resolves([{ name: 'org1' }, { name: 'org2' }]), 61 | }, 62 | }, 63 | './cache': { 64 | setCache: sinon.stub().resolves(), 65 | }, 66 | }); 67 | 68 | Promise.coroutine(function* () { 69 | const result = yield controller.getAllOrganizations('org'); 70 | result.should.deepEqual(['org1', 'org2']); 71 | done(); 72 | })(); 73 | }); 74 | }); 75 | -------------------------------------------------------------------------------- /test/db.spec.js: -------------------------------------------------------------------------------- 1 | const Promise = require('bluebird'); 2 | 3 | const sinon = require('sinon'); 4 | const proxyquire = require('proxyquire'); 5 | require('should-sinon'); 6 | 7 | 8 | describe('DB', () => { 9 | it('Db Connect when has sucess', (done) => { 10 | const mongoose = { 11 | Schema: function () { }, 12 | model: () => { }, 13 | connect: () => { }, 14 | connection: { 15 | on: () => { }, 16 | once: (open, callback) => { 17 | callback(); 18 | }, 19 | }, 20 | }; 21 | 22 | const db = proxyquire('./../db.js', { 23 | mongoose, 24 | }); 25 | 26 | Promise.coroutine(function* () { 27 | yield db.dbConnect(); 28 | done(); 29 | })(); 30 | }); 31 | 32 | it('Db Connect when has error', (done) => { 33 | const mongoose = { 34 | Schema: function () { }, 35 | model: () => { }, 36 | connect: () => { }, 37 | connection: { 38 | on: (error, callback) => { 39 | callback(); 40 | }, 41 | once: () => {}, 42 | }, 43 | }; 44 | 45 | const db = proxyquire('./../db.js', { 46 | mongoose, 47 | }); 48 | 49 | 50 | Promise.coroutine(function* () { 51 | try { 52 | yield db.dbConnect(); 53 | } catch (e) { 54 | done(); 55 | } 56 | })(); 57 | }); 58 | 59 | 60 | it('Db find organizations when has sucess', (done) => { 61 | const mongoose = { 62 | Schema: function () { }, 63 | model() { 64 | return { 65 | findOne() { 66 | return { 67 | exec: sinon.stub().resolves({ login: 'organization' }) 68 | }; 69 | }, 70 | }; 71 | }, 72 | 73 | }; 74 | 75 | const db = proxyquire('./../db.js', { 76 | mongoose, 77 | }); 78 | Promise.coroutine(function* () { 79 | const result = yield db.Orgs.findOne('organization'); 80 | result.should.deepEqual({ login: 'organization' }); 81 | done(); 82 | })(); 83 | }); 84 | 85 | it('Db find organizations when has sucess', (done) => { 86 | const mongoose = { 87 | Schema: function () {}, 88 | model() { 89 | return { 90 | find() { 91 | return { 92 | exec: sinon.stub().resolves([{ login: 'organization' }]) 93 | }; 94 | }, 95 | }; 96 | }, 97 | 98 | }; 99 | 100 | const db = proxyquire('./../db.js', { 101 | mongoose, 102 | }); 103 | Promise.coroutine(function* () { 104 | const result = yield db.Orgs.find('organization'); 105 | result.should.deepEqual([{ login: 'organization' }]); 106 | done(); 107 | })(); 108 | }); 109 | }); 110 | -------------------------------------------------------------------------------- /test/route.spec.js: -------------------------------------------------------------------------------- 1 | const sinon = require('sinon'); 2 | const proxyquire = require('proxyquire'); 3 | require('should-sinon'); 4 | 5 | 6 | describe('getOrg', () => { 7 | it('Route get Organization when has results', (done) => { 8 | const result = { login: 'organization' }; 9 | const getOrganization = sinon.stub().resolves(result); 10 | const setCache = sinon.stub().resolves(); 11 | const req = { 12 | params: { 13 | organization: 'org', 14 | }, 15 | }; 16 | 17 | const res = { 18 | json: (response) => { 19 | response.should.deepEqual(result); 20 | done(); 21 | }, 22 | }; 23 | 24 | const route = proxyquire('./../route', { 25 | './controller': { getOrganization }, 26 | './cache': { setCache }, 27 | }); 28 | 29 | route.getOrg(req, res); 30 | }); 31 | it('Route get Organization when not exist result', (done) => { 32 | const getOrganization = sinon.stub().resolves(null); 33 | const setCache = sinon.stub().resolves(); 34 | const req = { 35 | params: { 36 | organization: 'org', 37 | }, 38 | }; 39 | 40 | const res = { 41 | json: () => { 42 | }, 43 | sendStatus: (status) => { 44 | status.should.equal(404); 45 | done(); 46 | }, 47 | }; 48 | 49 | const route = proxyquire('./../route', { 50 | './controller': { getOrganization }, 51 | './cache': { setCache }, 52 | }); 53 | 54 | route.getOrg(req, res); 55 | }); 56 | 57 | it('Route get Organization when has Error', (done) => { 58 | const error = Error('Redis generic error'); 59 | const getOrganization = sinon.stub().rejects(error); 60 | const setCache = sinon.stub().resolves(); 61 | const req = { 62 | params: { 63 | organization: 'org', 64 | }, 65 | }; 66 | 67 | const res = { 68 | send: (response) => { 69 | response.should.equal('Redis generic error'); 70 | done(); 71 | }, 72 | status: (status) => { 73 | status.should.equal(500); 74 | }, 75 | }; 76 | 77 | const route = proxyquire('./../route', { 78 | './controller': { getOrganization }, 79 | './cache': { setCache }, 80 | }); 81 | 82 | route.getOrg(req, res); 83 | }); 84 | }); 85 | 86 | 87 | 88 | describe('getAllorgs', () => { 89 | it('Route get All Organizations when has results', (done) => { 90 | const result = ['org1', 'org2']; 91 | const getAllOrganizations = sinon.stub().resolves(result); 92 | const setCache = sinon.stub().resolves(); 93 | const req = { 94 | originalUrl: 'url', 95 | }; 96 | 97 | const res = { 98 | json: (response) => { 99 | response.should.deepEqual(result); 100 | done(); 101 | }, 102 | }; 103 | 104 | const route = proxyquire('./../route', { 105 | './controller': { getAllOrganizations }, 106 | './cache': { setCache }, 107 | }); 108 | 109 | route.getAllOrgs(req, res); 110 | }); 111 | it('Route get All Organization when not exist result', (done) => { 112 | const getAllOrganizations = sinon.stub().resolves([]); 113 | const setCache = sinon.stub().resolves(); 114 | const req = { 115 | originalUrl: 'url', 116 | }; 117 | 118 | const res = { 119 | json: () => {}, 120 | sendStatus: (status) => { 121 | status.should.equal(404); 122 | done(); 123 | }, 124 | }; 125 | 126 | const route = proxyquire('../route', { 127 | './controller': { getAllOrganizations }, 128 | './cache': { setCache }, 129 | }); 130 | 131 | route.getAllOrgs(req, res); 132 | }); 133 | 134 | it('Route get Organization when has Error', (done) => { 135 | const error = Error('Redis generic error'); 136 | const getAllOrganizations = sinon.stub().rejects(error); 137 | const setCache = sinon.stub().resolves(); 138 | const req = { 139 | originalUrl: 'url', 140 | }; 141 | 142 | const res = { 143 | send: (response) => { 144 | response.should.equal('Redis generic error'); 145 | done(); 146 | }, 147 | status: (status) => { 148 | status.should.equal(500); 149 | }, 150 | }; 151 | 152 | const route = proxyquire('./../route', { 153 | './controller': { getAllOrganizations }, 154 | './cache': { setCache }, 155 | }); 156 | 157 | route.getAllOrgs(req, res); 158 | }); 159 | }); 160 | -------------------------------------------------------------------------------- /test/cache.spec.js: -------------------------------------------------------------------------------- 1 | const Promise = require('bluebird'); 2 | 3 | const sinon = require('sinon'); 4 | const proxyquire = require('proxyquire'); 5 | require('should-sinon'); 6 | 7 | describe('Cache', () => { 8 | it('Cache connect sucess', (done) => { 9 | const RedisClient = { 10 | prototype: {}, 11 | }; 12 | 13 | const createClient = function () { 14 | return { 15 | on: (mensagem, callback) => { 16 | if (mensagem === 'connect') { 17 | callback(); 18 | } else if (mensagem === 'message') { 19 | callback(); 20 | } 21 | }, 22 | subscribe: () => { }, 23 | del: () => { }, 24 | }; 25 | }; 26 | const cache = proxyquire('./../cache.js', { 27 | redis: { createClient, RedisClient }, 28 | }); 29 | 30 | Promise.coroutine(function* () { 31 | const teste = yield cache.cacheConnect(); 32 | teste.should.be.equal('Sucess'); 33 | done(); 34 | })(); 35 | }); 36 | 37 | it('Cache connect has Error', (done) => { 38 | const RedisClient = { 39 | prototype: {}, 40 | }; 41 | 42 | const createClient = function () { 43 | return { 44 | on: (mensagem, callback) => { 45 | if (mensagem === 'error') { 46 | callback(); 47 | } else if (mensagem === 'message') { 48 | callback(); 49 | } 50 | }, 51 | subscribe: () => { }, 52 | del: () => { }, 53 | }; 54 | }; 55 | const cache = proxyquire('./../cache.js', { 56 | redis: { createClient, RedisClient }, 57 | console: { 58 | log: () => { }, 59 | }, 60 | }); 61 | 62 | Promise.coroutine(function* () { 63 | try { 64 | yield cache.cacheConnect(); 65 | } catch (e) { 66 | done(); 67 | } 68 | })(); 69 | }); 70 | 71 | it('Cache getCache', (done) => { 72 | const RedisClient = { 73 | prototype: {}, 74 | }; 75 | 76 | const createClient = function () { 77 | return { 78 | on: (mensagem, callback) => { 79 | if (mensagem === 'connect') { 80 | callback(); 81 | } else if (mensagem === 'message') { 82 | callback(); 83 | } 84 | }, 85 | subscribe: () => { }, 86 | getAsync: sinon.stub().resolves(JSON.stringify({ teste: 1 })), 87 | del: () => { }, 88 | }; 89 | }; 90 | 91 | const cache = proxyquire('./../cache.js', { 92 | redis: { createClient, RedisClient }, 93 | }); 94 | 95 | Promise.coroutine(function* () { 96 | yield cache.cacheConnect(); 97 | const teste = yield cache.getCache('keyName'); 98 | 99 | teste.should.be.deepEqual({ teste: 1 }); 100 | done(); 101 | })(); 102 | }); 103 | 104 | it('Cache setCache with not exist', (done) => { 105 | const RedisClient = { 106 | prototype: {}, 107 | }; 108 | 109 | const createClient = function () { 110 | return { 111 | on: (mensagem, callback) => { 112 | if (mensagem === 'connect') { 113 | callback(); 114 | } else if (mensagem === 'message') { 115 | callback(); 116 | } 117 | }, 118 | subscribe: () => { }, 119 | setAsync: sinon.stub().resolves(), 120 | del: () => { }, 121 | 122 | }; 123 | }; 124 | const cache = proxyquire('./../cache.js', { 125 | redis: { createClient, RedisClient }, 126 | }); 127 | 128 | Promise.coroutine(function* () { 129 | yield cache.cacheConnect(); 130 | yield cache.setCache('keyName'); 131 | done(); 132 | })(); 133 | }); 134 | 135 | 136 | it('Cache cacheMiddleware exists', (done) => { 137 | const RedisClient = { 138 | prototype: {}, 139 | }; 140 | 141 | const createClient = function () { 142 | return { 143 | on: (mensagem, callback) => { 144 | if (mensagem === 'connect') { 145 | callback(); 146 | } else if (mensagem === 'message') { 147 | callback(); 148 | } 149 | }, 150 | subscribe: () => { }, 151 | del: () => { }, 152 | getAsync: sinon.stub().resolves(JSON.stringify({ teste: 1 })), 153 | 154 | 155 | }; 156 | }; 157 | const cache = proxyquire('./../cache.js', { 158 | redis: { createClient, RedisClient }, 159 | }); 160 | 161 | const res = { 162 | json: () => { 163 | done(); 164 | }, 165 | }; 166 | 167 | const req = {}; 168 | const next = {}; 169 | 170 | Promise.coroutine(function* () { 171 | yield cache.cacheConnect(); 172 | cache.cacheMiddleware(req, res, next); 173 | })(); 174 | }); 175 | 176 | 177 | it('Cache cacheMiddleware not exists', (done) => { 178 | const RedisClient = { 179 | prototype: {}, 180 | }; 181 | 182 | const createClient = function () { 183 | return { 184 | on: (mensagem, callback) => { 185 | if (mensagem === 'connect') { 186 | callback(); 187 | } else if (mensagem === 'message') { 188 | callback(); 189 | } 190 | }, 191 | subscribe: () => { }, 192 | del: () => { }, 193 | getAsync: sinon.stub().resolves(), 194 | 195 | 196 | }; 197 | }; 198 | const cache = proxyquire('./../cache.js', { 199 | redis: { createClient, RedisClient }, 200 | }); 201 | 202 | const res = { 203 | json: () => { 204 | 205 | }, 206 | }; 207 | 208 | const req = {}; 209 | 210 | const next = () => { 211 | done(); 212 | }; 213 | Promise.coroutine(function* () { 214 | yield cache.cacheConnect(); 215 | cache.cacheMiddleware(req, res, next); 216 | })(); 217 | }); 218 | 219 | 220 | it('Cache publish mensage and has sucess', (done) => { 221 | const RedisClient = { 222 | prototype: {}, 223 | }; 224 | 225 | const createClient = function () { 226 | return { 227 | on: (mensagem, callback) => { 228 | if (mensagem === 'connect') { 229 | callback(); 230 | } else if (mensagem === 'message') { 231 | callback(); 232 | } 233 | }, 234 | subscribe: () => { }, 235 | setAsync: sinon.stub().resolves(), 236 | del: () => { }, 237 | publish: () => { }, 238 | }; 239 | }; 240 | const cache = proxyquire('./../cache.js', { 241 | redis: { createClient, RedisClient }, 242 | }); 243 | 244 | cache.publish(); 245 | done(); 246 | }); 247 | }); 248 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Utilizando Cache com Redis e Node.js 2 | 3 | 4 | [![Travis](https://travis-ci.org/Kirmayrtomaz/cache_redis_node.svg?branch=master)](https://travis-ci.org/Kirmayrtomaz/cache_redis_node) 5 | [![codecov.io](https://codecov.io/github/Kirmayrtomaz/cache_redis_node/coverage.svg?branch=master)](https://codecov.io/github/Kirmayrtomaz/cache_redis_node) [![Dependenceso](https://david-dm.org/Kirmayrtomaz/cache_redis_node/status.svg)](https://david-dm.org/Kirmayrtomaz/cache_redis_node) 6 | [![Dev Dependences](https://david-dm.org/Kirmayrtomaz/cache_redis_node/dev-status.svg)](https://david-dm.org/Kirmayrtomaz/cache_redis_node/dev-status) 7 | [![License](https://img.shields.io/badge/licence-MIT-blue.svg)](LICENSE) 8 | 9 | 10 | # Sumário 11 | 12 | * Cache 13 | * [Introdução](#introducao) 14 | * Tipos de Cache 15 | * Cache no cliente(Browser) 16 | * Cache no Servidor web 17 | * Cache na Aplicação 18 | * Vantagens e desvagens de cachear em cada cenário 19 | * Utilizando cache como um serviço 20 | * Redis 21 | * Comparando Redis com memcached 22 | * Instalando e utilizando Redis e Node.js para cache 23 | * Cliando um middleware para ser utilizado no express 24 | * Criando um PUB/SUB para eliminar cache antigos 25 | 26 | 27 | # Introdução 28 | 29 | Atualmente, existem várias APIs em Node.js que trabalham com muito processamento, consulta em banco de dados relacionais e não relacionais, acesso em disco, serviços legado e inclusive outras APIs. Diversos fatores que geram tempo de requisição, banda, e processamento, nos deixam sujeitos a estruturas que, se mal planejadas, podem gerar um débito técnico no futuro, requerendo mudanças na arquitetura para melhorar a performance da Aplicação. Outras vezes ficamos presos a serviços impostos pelo cliente e seus requisitos, o que nos impede de implementar algo mais estruturado. 30 | 31 | Quando você para pra perceber todos os detalhes da sua aplicação, entende que podem existir processos que são realizados várias vezes e retornam dados que não são alterados com tanta frequência. A cada solicitação feita, como a leitura de arquivo, serviços de terceiros ou banco, caímos em uma série de fatores que implicam em tempo, processamento e banda. 32 | 33 | Uma situação, por exemplo, seria eu ter que acessar um arquivo e retorná-lo para o usuário. Nesse caso, como já apresentado na literatura, a leitura de um arquivo é lenta, e depende de diversas condições, entre tempo de Seek, o quão espalhado esse arquivo está no seu HD, e outras. 34 | 35 | Agora, imagine outra situação. Sua API precisa fazer uma requisição para 5 outros serviços que vão desde a uma request SOAP, consulta ao banco, serviços de terceiros e uma busca no Elasticsearch. Supondo que cada requisição demore 1000ms, precisaríamos de um tempo total de 5000ms para retornar a requisição. No caso do Node.js, poderíamos utilizar algum pacote npm para que as requisições fossem chamadas em paralelo. Mesmo assim, se eu fizer a mesma requisição várias vezes na minha API e os dados dos outros serviços não forem alteradas com constância, nossa aplicação realizará o mesmo procedimento várias vezes. 36 | ![](images/image5.png) 37 | 38 | Não seria mais fácil nossa aplicação conseguir identificar que essa solicitação já foi feita e retornar os dados salvos em algum lugar, sem a necessidade de realizar tudo novamente? 39 | 40 | Exatamente, podemos realizar isso de várias formas, mas o padrão mais conhecido é utilizando cache. 41 | 42 | 43 | O uso do cache pode ir de a ponta a ponta do nosso sistema, seja na camada do cliente, do servidor web e depois na aplicação. 44 | 45 | Na camada do cliente, como um Browser por exemplo, deve-se criar uma forma capaz de coletar esses dados e salvar em alguma API do Browser, como as mais antigas utilizando cookie, ou tecnologias um pouco mais novas como cache com Service Works, tecnologia muito utilizada atualmente com PWA. 46 | 47 | Na camada do servidor web, no caso do Ngnix, poderia ser adicionado o ETAG que ajudaria a identificar quando houve uma alteração naquela requisição e Expires/cache-control para tempo de vida que pode ser utilizado aquele conteúdo; 48 | 49 | Na camada da aplicação, podemos fazer uma análise mais sucinta dos pontos que são possíveis de serem cacheados e o tempo de vida que cada requisição externa pode ter, garantindo melhor a integridade dos dados que serão repassados para o cliente. Podemos armazenar o cache na memória ou utilizar um serviço para isso. 50 | ![](images/image2.png) 51 | 52 | Pontos Negativos 53 | 54 | Na camada do cliente, mesmo criando estruturas que salvem esses dados, seria no mínimo necessário criar uma interface com a aplicação para identificar quando os dados ainda podem ser utilizados. Outro fator também é que possuímos vários tipos de clientes. Falando somente de Browser, temos os mais antigos, que são difíceis de depurar, browsers de dispositivos móveis de versões antigas, além do suporte às APIs que cada um possui. 55 | 56 | Na camada de servidor web, podemos ter um outro problema, como um controle generalizado de cache. Num trabalho que participei, tínhamos scripts de coleta de dados em e-commerces do brasil, porém toda vez que atualizamos esse script, que estava salvo nos CDNs da Akamai, o mesmo demorava cerca de um dia para ser propagado em todos os servidores, por conta do cache. Se caso ocorresse um erro, em épocas como a black friday, isso poderia ser uma problema gravíssimo para a coleta dos dados que realizamos. Tudo seria perdido nesse dia. 57 | 58 | Na camada da aplicação, utilizar cache em memória também não é um ideia tão favorável, pois uma boa prática é não salvar o estado de nada na api (Stateless). Seria uma complicação precisar escalar horizontalmente e conseguir manter a integridade desse cache. 59 | 60 | 61 | # Redis 62 | Uma das formas mais robustas de se tratar esses empecilhos é ter uma qualidade melhor no cache, utilizando um servidor ou serviço. O mais comum atualmente é o Redis, que é um banco de dados NoSQL - de chave e valor. Segundo um survey realizado pelo RisingStack com mais de 1000 desenvolvedores, essa ferramenta é adota por quase 50% dos desenvolvedores que trabalham com Node.js, o que mostra a confiança deles nesse ecossistema. 63 | ![](images/image4.png) 64 | 65 | 66 | Mas por que escolher o Redis em vez do Memcached, plataforma que já está a muito tempo no mercado ? Comparando os dois, os mesmos conseguem executar tarefas de cache com alta performance alocando tudo na memória. 67 | Agora se ocorrer um problema no servidor do memcached e for reiniciado o seu cached pois estava salvo numa memória volátil. Com o redis o caso já é diferente, pois este tem um fallback e salva tudo em disco e ao ser reiniciando seu cache voltará normalmente. 68 | Outro ponto é se se o Memcached não estiver aguentando a quantidade de dados alocados na memória , será necessário aumentar o servidor verticalmente. No caso do redis, este tem a capacidade de trabalhar com cluster de até 1000 nós crescendo tanto verticalmente como horizontalmente. 69 | Outro ponto interessante é que o redis também trabalha com PUB/SUB. Por exemplo, imagine que vc tem o serviço A que faz uma chamada para o microserviço B, o serviço A recebe os dados e depois cachea. No caso do serviço B for atualizado, este iria avisar o serviço A que houve uma alteração e que era necessário limpar o cache através de um canal de PUB/SUB. Todos os que estivessem escrito nessa canal seriam capaz de receber essa mensagem e limpar o cache. 70 | 71 | 72 | De acordo com o site oficial do Redis, ele é um Banco Open-Source que possui seu armazenamento de estrutura de dados em memória e realiza persistência em disco que pode ser utilizado também como fallback, caso ocorra algum problema no servidor. 73 | Possui também estrutura de chave e valor, e consegue salvar vários tipos de dados, desde uma simples string, como hash, numeros, lista e outros 74 | Possui a função tempo de vida para invalidar dados com um período de tempo 75 | Suporte a transações, oriunda dos bancos de dados relacionais, que respeitam o ACID 76 | 77 | ![](images/image1.png) 78 | 79 | O survey mencionado anteriormente mostra que 43% dos desenvolvedores de Node.js não utilizam nenhuma das ferramentas de cache citadas. Isso pode ser um indício de que muitos desenvolvedores não conhecem ferramentas de cache ou acham que a complexidade de inserir isso na sua stack pode comprometer o projeto. 80 | 81 | Depois da a explicação, vamos agora criar uma aplicação Node.js que consome um banco de dados e a API do github e cria o cache com o Redis, tudo dockerizado que você poderá acessar nesse link do github. 82 | 83 | ![](images/image5.png) 84 | 85 | # Instalando dependencias 86 | 87 | Esse projeto, mostra um exemplo em que consultaremos as organizações do github e salvaremos no banco de dados, e retornar a consulta caso já esteja cacheado. 88 | 89 | Possuiremos duas rotas 90 | * **/orgs/{nomeDaOrganizacao}** -> que irá retornar dados da organização 91 | * **/orgs** -> que irá retornar todas as organizações que já foram consultadas 92 | 93 | 94 | 95 | ## Biblioteca do redis para instalar 96 | 97 | ``` 98 | npm i --save redis 99 | ``` 100 | or 101 | 102 | ``` 103 | yarn add redis 104 | ``` 105 | 106 | ## Inicializando no projeto 107 | 108 | ``` 109 | const redis = require('redis'); 110 | const cache = redis.createClient(); 111 | 112 | ``` 113 | ## Verificando se a conexão ocorreu com sucesso 114 | 115 | ``` 116 | cache.on('connect', () => { 117 | console.log('REDIS READY'); 118 | }); 119 | 120 | cache.on('error', (e) => { 121 | console.log('REDIS ERROR', e); 122 | }); 123 | 124 | ``` 125 | 126 | 127 | ## função para setar o cache 128 | 129 | ``` 130 | const timeInSecond = 'EX'; 131 | const time = 10; 132 | cache.set(keyName, value, timeInSecond, time) 133 | ``` 134 | * KeyName => será a chave onde será salvo o valor 135 | * value => será o valor que será salvo, no geral pode ser string, inteiro ou objeto de primeira ordem 136 | * timeInSecond => tipo de temporizador que irá utilizar 137 | * 'EX' => Tempo em segundos 138 | * 'PX' => Tempo em milisegundos 139 | * 'NX' => Inserir se não existir 140 | * 'EX' => Inserir se existir 141 | 142 | 143 | [123123123](#dependencia) 144 | ## função para setar dados de cache 145 | 146 | ``` 147 | cache.get(keyName); 148 | ``` 149 | 150 | teste 151 | 152 | ## Criando um middleware para o express 153 | 154 | ``` 155 | const http = require('http'); 156 | const express = require('express'); 157 | const Promise = require('bluebird'); 158 | 159 | function cacheMiddleware(req, res, next) { 160 | return Promise.coroutine(function* () { 161 | const keyName = req.originalUrl; 162 | 163 | const cacheRes = yield getCache(keyName); 164 | 165 | if (cacheRes) { 166 | return res.json(cacheRes); 167 | } 168 | next(); 169 | })(); 170 | } 171 | 172 | 173 | const app = express(APP_PORT); 174 | httpServer = http.Server(app); 175 | app.use(cacheMiddleware); 176 | 177 | app.get('/', (req, res) => { 178 | res.json({ status: 'The NODE_REDIS XD' }); 179 | }); 180 | 181 | ``` 182 | 183 | 184 | ## Criando um canal de PUB/SUB 185 | 186 | 187 | ``` 188 | const sub = redis.createClient(REDIS_PORT, REDIS_HOST); 189 | const sub = redis.createClient(REDIS_PORT, REDIS_HOST); 190 | 191 | sub.on('message', () => { 192 | 193 | }); 194 | 195 | sub.subscribe('clean_cache'); 196 | 197 | pub.publish(canal, 'clean'); 198 | 199 | ``` 200 | 201 | 202 | com `express.js` `mongo` `redis` que irá salv 203 | 204 | Estas vão rodar em dos cenários, é criando um middleware simples para verificar se já existe cache e retornar os dados 205 | 206 | E na outra etapa iremos setar o cache caso necessário, e limpar uma key através de um canal de **PUB/SUB** 207 | 208 | 209 | 210 | 211 | 212 | Para subir as dependências externas do projeto 213 | * Redis 214 | * MongoDb 215 | 216 | basta utilizar esse comando abaixo 217 | 218 | ``` 219 | docker-compose up 220 | ``` 221 | 222 | 223 | # Referências 224 | 225 | Referência 226 | 227 | * [https://redis.io/topics/introduction](https://redis.io/topics/introduction) 228 | * [http://www.sohamkamani.com/blog/2016/10/14/make-your-node-server-faster-with-redis-cache/](http://www.sohamkamani.com/blog/2016/10/14/make-your-node-server-faster-with-redis-cache/) 229 | * [https://goenning.net/2016/02/10/simple-server-side-cache-for-expressjs/](https://goenning.net/2016/02/10/simple-server-side-cache-for-expressjs/) 230 | 231 | * [https://community.risingstack.com/redis-node-js-introduction-to-caching/ 232 | ](https://community.risingstack.com/redis-node-js-introduction-to-caching/) 233 | 234 | * [https://blog.risingstack.com/node-js-developer-survey-results-2016/](https://blog.risingstack.com/node-js-developer-survey-results-2016/) 235 | 236 | * [https://www.sitepoint.com/using-redis-node-js/ 237 | ](https://www.sitepoint.com/using-redis-node-js/) 238 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | abab@^1.0.3: 6 | version "1.0.3" 7 | resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" 8 | 9 | abbrev@1, abbrev@1.0.x: 10 | version "1.0.9" 11 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" 12 | 13 | accepts@~1.3.3: 14 | version "1.3.3" 15 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" 16 | dependencies: 17 | mime-types "~2.1.11" 18 | negotiator "0.6.1" 19 | 20 | acorn-globals@^3.1.0: 21 | version "3.1.0" 22 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" 23 | dependencies: 24 | acorn "^4.0.4" 25 | 26 | acorn-jsx@^3.0.0: 27 | version "3.0.1" 28 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 29 | dependencies: 30 | acorn "^3.0.4" 31 | 32 | acorn@^3.0.4: 33 | version "3.3.0" 34 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 35 | 36 | acorn@^4.0.4: 37 | version "4.0.13" 38 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" 39 | 40 | acorn@^5.0.1: 41 | version "5.1.1" 42 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" 43 | 44 | ajv-keywords@^1.0.0: 45 | version "1.5.1" 46 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" 47 | 48 | ajv@^4.7.0, ajv@^4.9.1: 49 | version "4.11.8" 50 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" 51 | dependencies: 52 | co "^4.6.0" 53 | json-stable-stringify "^1.0.1" 54 | 55 | align-text@^0.1.1, align-text@^0.1.3: 56 | version "0.1.4" 57 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 58 | dependencies: 59 | kind-of "^3.0.2" 60 | longest "^1.0.1" 61 | repeat-string "^1.5.2" 62 | 63 | amdefine@>=0.0.4: 64 | version "1.0.1" 65 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 66 | 67 | amp-message@~0.1.1: 68 | version "0.1.2" 69 | resolved "https://registry.yarnpkg.com/amp-message/-/amp-message-0.1.2.tgz#a78f1c98995087ad36192a41298e4db49e3dfc45" 70 | dependencies: 71 | amp "0.3.1" 72 | 73 | amp@0.3.1, amp@~0.3.1: 74 | version "0.3.1" 75 | resolved "https://registry.yarnpkg.com/amp/-/amp-0.3.1.tgz#6adf8d58a74f361e82c1fa8d389c079e139fc47d" 76 | 77 | ansi-escapes@^1.4.0: 78 | version "1.4.0" 79 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" 80 | 81 | ansi-escapes@^2.0.0: 82 | version "2.0.0" 83 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b" 84 | 85 | ansi-regex@^2.0.0, ansi-regex@^2.1.1: 86 | version "2.1.1" 87 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 88 | 89 | ansi-regex@^3.0.0: 90 | version "3.0.0" 91 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 92 | 93 | ansi-styles@^2.2.1: 94 | version "2.2.1" 95 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 96 | 97 | ansi-styles@^3.0.0: 98 | version "3.1.0" 99 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750" 100 | dependencies: 101 | color-convert "^1.0.0" 102 | 103 | anymatch@^1.3.0: 104 | version "1.3.0" 105 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" 106 | dependencies: 107 | arrify "^1.0.0" 108 | micromatch "^2.1.5" 109 | 110 | append-transform@^0.4.0: 111 | version "0.4.0" 112 | resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" 113 | dependencies: 114 | default-require-extensions "^1.0.0" 115 | 116 | aproba@^1.0.3: 117 | version "1.1.2" 118 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" 119 | 120 | are-we-there-yet@~1.1.2: 121 | version "1.1.4" 122 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" 123 | dependencies: 124 | delegates "^1.0.0" 125 | readable-stream "^2.0.6" 126 | 127 | argparse@^1.0.7: 128 | version "1.0.9" 129 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 130 | dependencies: 131 | sprintf-js "~1.0.2" 132 | 133 | aria-query@^0.7.0: 134 | version "0.7.0" 135 | resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.0.tgz#4af10a1e61573ddea0cf3b99b51c52c05b424d24" 136 | dependencies: 137 | ast-types-flow "0.0.7" 138 | 139 | arr-diff@^2.0.0: 140 | version "2.0.0" 141 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 142 | dependencies: 143 | arr-flatten "^1.0.1" 144 | 145 | arr-flatten@^1.0.1: 146 | version "1.1.0" 147 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 148 | 149 | array-equal@^1.0.0: 150 | version "1.0.0" 151 | resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" 152 | 153 | array-flatten@1.1.1: 154 | version "1.1.1" 155 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 156 | 157 | array-includes@^3.0.3: 158 | version "3.0.3" 159 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" 160 | dependencies: 161 | define-properties "^1.1.2" 162 | es-abstract "^1.7.0" 163 | 164 | array-union@^1.0.1: 165 | version "1.0.2" 166 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 167 | dependencies: 168 | array-uniq "^1.0.1" 169 | 170 | array-uniq@^1.0.1: 171 | version "1.0.3" 172 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 173 | 174 | array-unique@^0.2.1: 175 | version "0.2.1" 176 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 177 | 178 | arrify@^1.0.0, arrify@^1.0.1: 179 | version "1.0.1" 180 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 181 | 182 | asn1@~0.2.3: 183 | version "0.2.3" 184 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 185 | 186 | assert-plus@1.0.0, assert-plus@^1.0.0: 187 | version "1.0.0" 188 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 189 | 190 | assert-plus@^0.2.0: 191 | version "0.2.0" 192 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 193 | 194 | ast-types-flow@0.0.7: 195 | version "0.0.7" 196 | resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" 197 | 198 | async-each@^1.0.0: 199 | version "1.0.1" 200 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 201 | 202 | async-listener@^0.6.0: 203 | version "0.6.7" 204 | resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.7.tgz#793971ce6f431e41f75cef6c0a1706b9053e4d5b" 205 | dependencies: 206 | semver "^5.3.0" 207 | shimmer "^1.1.0" 208 | 209 | async@1.5, async@1.x, async@^1.4.0, async@^1.5: 210 | version "1.5.2" 211 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 212 | 213 | async@2.1.4, async@^2.1.4: 214 | version "2.1.4" 215 | resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" 216 | dependencies: 217 | lodash "^4.14.0" 218 | 219 | asynckit@^0.4.0: 220 | version "0.4.0" 221 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 222 | 223 | aws-sign2@~0.6.0: 224 | version "0.6.0" 225 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 226 | 227 | aws4@^1.2.1: 228 | version "1.6.0" 229 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 230 | 231 | axios@^0.16.2: 232 | version "0.16.2" 233 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz#ba4f92f17167dfbab40983785454b9ac149c3c6d" 234 | dependencies: 235 | follow-redirects "^1.2.3" 236 | is-buffer "^1.1.5" 237 | 238 | axobject-query@^0.1.0: 239 | version "0.1.0" 240 | resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0" 241 | dependencies: 242 | ast-types-flow "0.0.7" 243 | 244 | babel-code-frame@^6.22.0: 245 | version "6.22.0" 246 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" 247 | dependencies: 248 | chalk "^1.1.0" 249 | esutils "^2.0.2" 250 | js-tokens "^3.0.0" 251 | 252 | babel-core@^6.0.0, babel-core@^6.24.1: 253 | version "6.25.0" 254 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729" 255 | dependencies: 256 | babel-code-frame "^6.22.0" 257 | babel-generator "^6.25.0" 258 | babel-helpers "^6.24.1" 259 | babel-messages "^6.23.0" 260 | babel-register "^6.24.1" 261 | babel-runtime "^6.22.0" 262 | babel-template "^6.25.0" 263 | babel-traverse "^6.25.0" 264 | babel-types "^6.25.0" 265 | babylon "^6.17.2" 266 | convert-source-map "^1.1.0" 267 | debug "^2.1.1" 268 | json5 "^0.5.0" 269 | lodash "^4.2.0" 270 | minimatch "^3.0.2" 271 | path-is-absolute "^1.0.0" 272 | private "^0.1.6" 273 | slash "^1.0.0" 274 | source-map "^0.5.0" 275 | 276 | babel-generator@^6.18.0, babel-generator@^6.25.0: 277 | version "6.25.0" 278 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.25.0.tgz#33a1af70d5f2890aeb465a4a7793c1df6a9ea9fc" 279 | dependencies: 280 | babel-messages "^6.23.0" 281 | babel-runtime "^6.22.0" 282 | babel-types "^6.25.0" 283 | detect-indent "^4.0.0" 284 | jsesc "^1.3.0" 285 | lodash "^4.2.0" 286 | source-map "^0.5.0" 287 | trim-right "^1.0.1" 288 | 289 | babel-helpers@^6.24.1: 290 | version "6.24.1" 291 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" 292 | dependencies: 293 | babel-runtime "^6.22.0" 294 | babel-template "^6.24.1" 295 | 296 | babel-jest@^20.0.3: 297 | version "20.0.3" 298 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-20.0.3.tgz#e4a03b13dc10389e140fc645d09ffc4ced301671" 299 | dependencies: 300 | babel-core "^6.0.0" 301 | babel-plugin-istanbul "^4.0.0" 302 | babel-preset-jest "^20.0.3" 303 | 304 | babel-messages@^6.23.0: 305 | version "6.23.0" 306 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 307 | dependencies: 308 | babel-runtime "^6.22.0" 309 | 310 | babel-plugin-istanbul@^4.0.0: 311 | version "4.1.4" 312 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz#18dde84bf3ce329fddf3f4103fae921456d8e587" 313 | dependencies: 314 | find-up "^2.1.0" 315 | istanbul-lib-instrument "^1.7.2" 316 | test-exclude "^4.1.1" 317 | 318 | babel-plugin-jest-hoist@^20.0.3: 319 | version "20.0.3" 320 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz#afedc853bd3f8dc3548ea671fbe69d03cc2c1767" 321 | 322 | babel-preset-jest@^20.0.3: 323 | version "20.0.3" 324 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz#cbacaadecb5d689ca1e1de1360ebfc66862c178a" 325 | dependencies: 326 | babel-plugin-jest-hoist "^20.0.3" 327 | 328 | babel-register@^6.24.1: 329 | version "6.24.1" 330 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" 331 | dependencies: 332 | babel-core "^6.24.1" 333 | babel-runtime "^6.22.0" 334 | core-js "^2.4.0" 335 | home-or-tmp "^2.0.0" 336 | lodash "^4.2.0" 337 | mkdirp "^0.5.1" 338 | source-map-support "^0.4.2" 339 | 340 | babel-runtime@^6.22.0: 341 | version "6.23.0" 342 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" 343 | dependencies: 344 | core-js "^2.4.0" 345 | regenerator-runtime "^0.10.0" 346 | 347 | babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0: 348 | version "6.25.0" 349 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" 350 | dependencies: 351 | babel-runtime "^6.22.0" 352 | babel-traverse "^6.25.0" 353 | babel-types "^6.25.0" 354 | babylon "^6.17.2" 355 | lodash "^4.2.0" 356 | 357 | babel-traverse@^6.18.0, babel-traverse@^6.25.0: 358 | version "6.25.0" 359 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" 360 | dependencies: 361 | babel-code-frame "^6.22.0" 362 | babel-messages "^6.23.0" 363 | babel-runtime "^6.22.0" 364 | babel-types "^6.25.0" 365 | babylon "^6.17.2" 366 | debug "^2.2.0" 367 | globals "^9.0.0" 368 | invariant "^2.2.0" 369 | lodash "^4.2.0" 370 | 371 | babel-types@^6.18.0, babel-types@^6.25.0: 372 | version "6.25.0" 373 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" 374 | dependencies: 375 | babel-runtime "^6.22.0" 376 | esutils "^2.0.2" 377 | lodash "^4.2.0" 378 | to-fast-properties "^1.0.1" 379 | 380 | babylon@^6.17.2, babylon@^6.17.4: 381 | version "6.17.4" 382 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" 383 | 384 | balanced-match@^1.0.0: 385 | version "1.0.0" 386 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 387 | 388 | bcrypt-pbkdf@^1.0.0: 389 | version "1.0.1" 390 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 391 | dependencies: 392 | tweetnacl "^0.14.3" 393 | 394 | binary-extensions@^1.0.0: 395 | version "1.8.0" 396 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" 397 | 398 | blessed@^0.1.81: 399 | version "0.1.81" 400 | resolved "https://registry.yarnpkg.com/blessed/-/blessed-0.1.81.tgz#f962d687ec2c369570ae71af843256e6d0ca1129" 401 | 402 | block-stream@*: 403 | version "0.0.9" 404 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 405 | dependencies: 406 | inherits "~2.0.0" 407 | 408 | bluebird@2.10.2: 409 | version "2.10.2" 410 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.10.2.tgz#024a5517295308857f14f91f1106fc3b555f446b" 411 | 412 | bluebird@^3.5.0: 413 | version "3.5.0" 414 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" 415 | 416 | boom@2.x.x: 417 | version "2.10.1" 418 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 419 | dependencies: 420 | hoek "2.x.x" 421 | 422 | brace-expansion@^1.1.7: 423 | version "1.1.8" 424 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 425 | dependencies: 426 | balanced-match "^1.0.0" 427 | concat-map "0.0.1" 428 | 429 | braces@^1.8.2: 430 | version "1.8.5" 431 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 432 | dependencies: 433 | expand-range "^1.8.1" 434 | preserve "^0.2.0" 435 | repeat-element "^1.1.2" 436 | 437 | browser-resolve@^1.11.2: 438 | version "1.11.2" 439 | resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" 440 | dependencies: 441 | resolve "1.1.7" 442 | 443 | browser-stdout@1.3.0: 444 | version "1.3.0" 445 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" 446 | 447 | bser@1.0.2: 448 | version "1.0.2" 449 | resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169" 450 | dependencies: 451 | node-int64 "^0.4.0" 452 | 453 | bser@^2.0.0: 454 | version "2.0.0" 455 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" 456 | dependencies: 457 | node-int64 "^0.4.0" 458 | 459 | bson@~1.0.4: 460 | version "1.0.4" 461 | resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.4.tgz#93c10d39eaa5b58415cbc4052f3e53e562b0b72c" 462 | 463 | buffer-shims@~1.0.0: 464 | version "1.0.0" 465 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 466 | 467 | builtin-modules@^1.0.0, builtin-modules@^1.1.1: 468 | version "1.1.1" 469 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 470 | 471 | caller-path@^0.1.0: 472 | version "0.1.0" 473 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 474 | dependencies: 475 | callsites "^0.2.0" 476 | 477 | callsites@^0.2.0: 478 | version "0.2.0" 479 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 480 | 481 | callsites@^2.0.0: 482 | version "2.0.0" 483 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" 484 | 485 | camelcase@^1.0.2: 486 | version "1.2.1" 487 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 488 | 489 | camelcase@^3.0.0: 490 | version "3.0.0" 491 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" 492 | 493 | caseless@~0.12.0: 494 | version "0.12.0" 495 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 496 | 497 | center-align@^0.1.1: 498 | version "0.1.3" 499 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 500 | dependencies: 501 | align-text "^0.1.3" 502 | lazy-cache "^1.0.3" 503 | 504 | chalk@^1.0.0, chalk@^1.1, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: 505 | version "1.1.3" 506 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 507 | dependencies: 508 | ansi-styles "^2.2.1" 509 | escape-string-regexp "^1.0.2" 510 | has-ansi "^2.0.0" 511 | strip-ansi "^3.0.0" 512 | supports-color "^2.0.0" 513 | 514 | charm@~0.1.1: 515 | version "0.1.2" 516 | resolved "https://registry.yarnpkg.com/charm/-/charm-0.1.2.tgz#06c21eed1a1b06aeb67553cdc53e23274bac2296" 517 | 518 | chokidar@^1.4.3, chokidar@^1.7: 519 | version "1.7.0" 520 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" 521 | dependencies: 522 | anymatch "^1.3.0" 523 | async-each "^1.0.0" 524 | glob-parent "^2.0.0" 525 | inherits "^2.0.1" 526 | is-binary-path "^1.0.0" 527 | is-glob "^2.0.0" 528 | path-is-absolute "^1.0.0" 529 | readdirp "^2.0.0" 530 | optionalDependencies: 531 | fsevents "^1.0.0" 532 | 533 | ci-info@^1.0.0: 534 | version "1.0.0" 535 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" 536 | 537 | circular-json@^0.3.1: 538 | version "0.3.1" 539 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" 540 | 541 | cli-cursor@^2.1.0: 542 | version "2.1.0" 543 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 544 | dependencies: 545 | restore-cursor "^2.0.0" 546 | 547 | cli-table@0.3.1: 548 | version "0.3.1" 549 | resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" 550 | dependencies: 551 | colors "1.0.3" 552 | 553 | cli-width@^2.0.0: 554 | version "2.1.0" 555 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" 556 | 557 | cliui@^2.1.0: 558 | version "2.1.0" 559 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 560 | dependencies: 561 | center-align "^0.1.1" 562 | right-align "^0.1.1" 563 | wordwrap "0.0.2" 564 | 565 | cliui@^3.2.0: 566 | version "3.2.0" 567 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" 568 | dependencies: 569 | string-width "^1.0.1" 570 | strip-ansi "^3.0.1" 571 | wrap-ansi "^2.0.0" 572 | 573 | co@^4.6.0: 574 | version "4.6.0" 575 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 576 | 577 | code-point-at@^1.0.0: 578 | version "1.1.0" 579 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 580 | 581 | color-convert@^1.0.0: 582 | version "1.9.0" 583 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" 584 | dependencies: 585 | color-name "^1.1.1" 586 | 587 | color-name@^1.1.1: 588 | version "1.1.2" 589 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.2.tgz#5c8ab72b64bd2215d617ae9559ebb148475cf98d" 590 | 591 | colors@1.0.3: 592 | version "1.0.3" 593 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" 594 | 595 | combined-stream@^1.0.5, combined-stream@~1.0.5: 596 | version "1.0.5" 597 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 598 | dependencies: 599 | delayed-stream "~1.0.0" 600 | 601 | commander@2.9.0, commander@^2.9: 602 | version "2.9.0" 603 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 604 | dependencies: 605 | graceful-readlink ">= 1.0.0" 606 | 607 | concat-map@0.0.1: 608 | version "0.0.1" 609 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 610 | 611 | concat-stream@^1.6.0: 612 | version "1.6.0" 613 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 614 | dependencies: 615 | inherits "^2.0.3" 616 | readable-stream "^2.2.2" 617 | typedarray "^0.0.6" 618 | 619 | configstore@^1.0.0: 620 | version "1.4.0" 621 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-1.4.0.tgz#c35781d0501d268c25c54b8b17f6240e8a4fb021" 622 | dependencies: 623 | graceful-fs "^4.1.2" 624 | mkdirp "^0.5.0" 625 | object-assign "^4.0.1" 626 | os-tmpdir "^1.0.0" 627 | osenv "^0.1.0" 628 | uuid "^2.0.1" 629 | write-file-atomic "^1.1.2" 630 | xdg-basedir "^2.0.0" 631 | 632 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 633 | version "1.1.0" 634 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 635 | 636 | contains-path@^0.1.0: 637 | version "0.1.0" 638 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 639 | 640 | content-disposition@0.5.2: 641 | version "0.5.2" 642 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" 643 | 644 | content-type-parser@^1.0.1: 645 | version "1.0.1" 646 | resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" 647 | 648 | content-type@~1.0.2: 649 | version "1.0.2" 650 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" 651 | 652 | continuation-local-storage@^3.1.4: 653 | version "3.2.0" 654 | resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.0.tgz#e19fc36b597090a5d4e4a3b2ea3ebc5e29694a24" 655 | dependencies: 656 | async-listener "^0.6.0" 657 | emitter-listener "^1.0.1" 658 | 659 | convert-source-map@^1.1.0, convert-source-map@^1.4.0: 660 | version "1.5.0" 661 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" 662 | 663 | cookie-signature@1.0.6: 664 | version "1.0.6" 665 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 666 | 667 | cookie@0.3.1: 668 | version "0.3.1" 669 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 670 | 671 | core-js@^2.4.0: 672 | version "2.4.1" 673 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" 674 | 675 | core-util-is@~1.0.0: 676 | version "1.0.2" 677 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 678 | 679 | cron@1.2.1: 680 | version "1.2.1" 681 | resolved "https://registry.yarnpkg.com/cron/-/cron-1.2.1.tgz#3a86c09b41b8f261ac863a7cc85ea4735857eab2" 682 | dependencies: 683 | moment-timezone "^0.5.x" 684 | 685 | cryptiles@2.x.x: 686 | version "2.0.5" 687 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 688 | dependencies: 689 | boom "2.x.x" 690 | 691 | cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": 692 | version "0.3.2" 693 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" 694 | 695 | "cssstyle@>= 0.2.37 < 0.3.0": 696 | version "0.2.37" 697 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" 698 | dependencies: 699 | cssom "0.3.x" 700 | 701 | damerau-levenshtein@^1.0.0: 702 | version "1.0.4" 703 | resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" 704 | 705 | dashdash@^1.12.0: 706 | version "1.14.1" 707 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 708 | dependencies: 709 | assert-plus "^1.0.0" 710 | 711 | debug@*, debug@2.6.8, debug@^2.1.1, debug@^2.1.2, debug@^2.3.2, debug@^2.4.5, debug@^2.6, debug@^2.6.3, debug@^2.6.8: 712 | version "2.6.8" 713 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" 714 | dependencies: 715 | ms "2.0.0" 716 | 717 | debug@2.6.0: 718 | version "2.6.0" 719 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" 720 | dependencies: 721 | ms "0.7.2" 722 | 723 | debug@2.6.7, debug@^2.2.0: 724 | version "2.6.7" 725 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" 726 | dependencies: 727 | ms "2.0.0" 728 | 729 | debug@~2.2.0: 730 | version "2.2.0" 731 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 732 | dependencies: 733 | ms "0.7.1" 734 | 735 | decamelize@^1.0.0, decamelize@^1.1.1: 736 | version "1.2.0" 737 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 738 | 739 | deep-extend@~0.4.0: 740 | version "0.4.2" 741 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" 742 | 743 | deep-is@~0.1.3: 744 | version "0.1.3" 745 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 746 | 747 | default-require-extensions@^1.0.0: 748 | version "1.0.0" 749 | resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" 750 | dependencies: 751 | strip-bom "^2.0.0" 752 | 753 | define-properties@^1.1.2: 754 | version "1.1.2" 755 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" 756 | dependencies: 757 | foreach "^2.0.5" 758 | object-keys "^1.0.8" 759 | 760 | del@^2.0.2: 761 | version "2.2.2" 762 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 763 | dependencies: 764 | globby "^5.0.0" 765 | is-path-cwd "^1.0.0" 766 | is-path-in-cwd "^1.0.0" 767 | object-assign "^4.0.1" 768 | pify "^2.0.0" 769 | pinkie-promise "^2.0.0" 770 | rimraf "^2.2.8" 771 | 772 | delayed-stream@~1.0.0: 773 | version "1.0.0" 774 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 775 | 776 | delegates@^1.0.0: 777 | version "1.0.0" 778 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 779 | 780 | depd@1.1.0, depd@~1.1.0: 781 | version "1.1.0" 782 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" 783 | 784 | destroy@~1.0.4: 785 | version "1.0.4" 786 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 787 | 788 | detect-indent@^4.0.0: 789 | version "4.0.0" 790 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 791 | dependencies: 792 | repeating "^2.0.0" 793 | 794 | diff@3.2.0, diff@^3.1.0, diff@^3.2.0: 795 | version "3.2.0" 796 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" 797 | 798 | doctrine@1.5.0: 799 | version "1.5.0" 800 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 801 | dependencies: 802 | esutils "^2.0.2" 803 | isarray "^1.0.0" 804 | 805 | doctrine@^2.0.0: 806 | version "2.0.0" 807 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" 808 | dependencies: 809 | esutils "^2.0.2" 810 | isarray "^1.0.0" 811 | 812 | double-ended-queue@^2.1.0-0: 813 | version "2.1.0-0" 814 | resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" 815 | 816 | duplexer@~0.1.1: 817 | version "0.1.1" 818 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" 819 | 820 | duplexify@^3.2.0: 821 | version "3.5.0" 822 | resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.0.tgz#1aa773002e1578457e9d9d4a50b0ccaaebcbd604" 823 | dependencies: 824 | end-of-stream "1.0.0" 825 | inherits "^2.0.1" 826 | readable-stream "^2.0.0" 827 | stream-shift "^1.0.0" 828 | 829 | ecc-jsbn@~0.1.1: 830 | version "0.1.1" 831 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 832 | dependencies: 833 | jsbn "~0.1.0" 834 | 835 | ee-first@1.1.1: 836 | version "1.1.1" 837 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 838 | 839 | emitter-listener@^1.0.1: 840 | version "1.0.1" 841 | resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.0.1.tgz#b2499ea6e58230a52c268d5df261eecd9f10fe97" 842 | dependencies: 843 | shimmer "1.0.0" 844 | 845 | emoji-regex@^6.1.0: 846 | version "6.4.3" 847 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.4.3.tgz#6ac2ac58d4b78def5e39b33fcbf395688af3076c" 848 | 849 | encodeurl@~1.0.1: 850 | version "1.0.1" 851 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" 852 | 853 | end-of-stream@1.0.0: 854 | version "1.0.0" 855 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.0.0.tgz#d4596e702734a93e40e9af864319eabd99ff2f0e" 856 | dependencies: 857 | once "~1.3.0" 858 | 859 | errno@^0.1.4: 860 | version "0.1.4" 861 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" 862 | dependencies: 863 | prr "~0.0.0" 864 | 865 | error-ex@^1.2.0: 866 | version "1.3.1" 867 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 868 | dependencies: 869 | is-arrayish "^0.2.1" 870 | 871 | es-abstract@^1.7.0: 872 | version "1.7.0" 873 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" 874 | dependencies: 875 | es-to-primitive "^1.1.1" 876 | function-bind "^1.1.0" 877 | is-callable "^1.1.3" 878 | is-regex "^1.0.3" 879 | 880 | es-to-primitive@^1.1.1: 881 | version "1.1.1" 882 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" 883 | dependencies: 884 | is-callable "^1.1.1" 885 | is-date-object "^1.0.1" 886 | is-symbol "^1.0.1" 887 | 888 | es6-promise@3.2.1, es6-promise@^3.0.2: 889 | version "3.2.1" 890 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.2.1.tgz#ec56233868032909207170c39448e24449dd1fc4" 891 | 892 | escape-html@~1.0.3: 893 | version "1.0.3" 894 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 895 | 896 | escape-regexp@0.0.1: 897 | version "0.0.1" 898 | resolved "https://registry.yarnpkg.com/escape-regexp/-/escape-regexp-0.0.1.tgz#f44bda12d45bbdf9cb7f862ee7e4827b3dd32254" 899 | 900 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 901 | version "1.0.5" 902 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 903 | 904 | escodegen@1.8.x, escodegen@^1.6.1: 905 | version "1.8.1" 906 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" 907 | dependencies: 908 | esprima "^2.7.1" 909 | estraverse "^1.9.1" 910 | esutils "^2.0.2" 911 | optionator "^0.8.1" 912 | optionalDependencies: 913 | source-map "~0.2.0" 914 | 915 | eslint-config-airbnb-base@^11.2.0: 916 | version "11.2.0" 917 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.2.0.tgz#19a9dc4481a26f70904545ec040116876018f853" 918 | 919 | eslint-config-airbnb@^15.0.1: 920 | version "15.0.2" 921 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-15.0.2.tgz#7b99fa421d0c15aee3310d647644315b02ea24da" 922 | dependencies: 923 | eslint-config-airbnb-base "^11.2.0" 924 | 925 | eslint-import-resolver-node@^0.3.1: 926 | version "0.3.1" 927 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" 928 | dependencies: 929 | debug "^2.6.8" 930 | resolve "^1.2.0" 931 | 932 | eslint-module-utils@^2.1.1: 933 | version "2.1.1" 934 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" 935 | dependencies: 936 | debug "^2.6.8" 937 | pkg-dir "^1.0.0" 938 | 939 | eslint-plugin-import@^2.5.0: 940 | version "2.7.0" 941 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" 942 | dependencies: 943 | builtin-modules "^1.1.1" 944 | contains-path "^0.1.0" 945 | debug "^2.6.8" 946 | doctrine "1.5.0" 947 | eslint-import-resolver-node "^0.3.1" 948 | eslint-module-utils "^2.1.1" 949 | has "^1.0.1" 950 | lodash.cond "^4.3.0" 951 | minimatch "^3.0.3" 952 | read-pkg-up "^2.0.0" 953 | 954 | eslint-plugin-jsx-a11y@^6.0.2: 955 | version "6.0.2" 956 | resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.2.tgz#659277a758b036c305a7e4a13057c301cd3be73f" 957 | dependencies: 958 | aria-query "^0.7.0" 959 | array-includes "^3.0.3" 960 | ast-types-flow "0.0.7" 961 | axobject-query "^0.1.0" 962 | damerau-levenshtein "^1.0.0" 963 | emoji-regex "^6.1.0" 964 | jsx-ast-utils "^1.4.0" 965 | 966 | eslint-plugin-react@^7.1.0: 967 | version "7.1.0" 968 | resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.1.0.tgz#27770acf39f5fd49cd0af4083ce58104eb390d4c" 969 | dependencies: 970 | doctrine "^2.0.0" 971 | has "^1.0.1" 972 | jsx-ast-utils "^1.4.1" 973 | 974 | eslint-scope@^3.7.1: 975 | version "3.7.1" 976 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" 977 | dependencies: 978 | esrecurse "^4.1.0" 979 | estraverse "^4.1.1" 980 | 981 | eslint@^4.1.1: 982 | version "4.1.1" 983 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.1.1.tgz#facbdfcfe3e0facd3a8b80dc98c4e6c13ae582df" 984 | dependencies: 985 | babel-code-frame "^6.22.0" 986 | chalk "^1.1.3" 987 | concat-stream "^1.6.0" 988 | debug "^2.6.8" 989 | doctrine "^2.0.0" 990 | eslint-scope "^3.7.1" 991 | espree "^3.4.3" 992 | esquery "^1.0.0" 993 | estraverse "^4.2.0" 994 | esutils "^2.0.2" 995 | file-entry-cache "^2.0.0" 996 | glob "^7.1.2" 997 | globals "^9.17.0" 998 | ignore "^3.3.3" 999 | imurmurhash "^0.1.4" 1000 | inquirer "^3.0.6" 1001 | is-my-json-valid "^2.16.0" 1002 | is-resolvable "^1.0.0" 1003 | js-yaml "^3.8.4" 1004 | json-stable-stringify "^1.0.1" 1005 | levn "^0.3.0" 1006 | lodash "^4.17.4" 1007 | minimatch "^3.0.2" 1008 | mkdirp "^0.5.1" 1009 | natural-compare "^1.4.0" 1010 | optionator "^0.8.2" 1011 | path-is-inside "^1.0.2" 1012 | pluralize "^4.0.0" 1013 | progress "^2.0.0" 1014 | require-uncached "^1.0.3" 1015 | strip-json-comments "~2.0.1" 1016 | table "^4.0.1" 1017 | text-table "~0.2.0" 1018 | 1019 | espree@^3.4.3: 1020 | version "3.4.3" 1021 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374" 1022 | dependencies: 1023 | acorn "^5.0.1" 1024 | acorn-jsx "^3.0.0" 1025 | 1026 | esprima@2.7.x, esprima@^2.7.1: 1027 | version "2.7.3" 1028 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" 1029 | 1030 | esprima@^3.1.1: 1031 | version "3.1.3" 1032 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 1033 | 1034 | esquery@^1.0.0: 1035 | version "1.0.0" 1036 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" 1037 | dependencies: 1038 | estraverse "^4.0.0" 1039 | 1040 | esrecurse@^4.1.0: 1041 | version "4.2.0" 1042 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" 1043 | dependencies: 1044 | estraverse "^4.1.0" 1045 | object-assign "^4.0.1" 1046 | 1047 | estraverse@^1.9.1: 1048 | version "1.9.3" 1049 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" 1050 | 1051 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: 1052 | version "4.2.0" 1053 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 1054 | 1055 | esutils@^2.0.2: 1056 | version "2.0.2" 1057 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1058 | 1059 | etag@~1.8.0: 1060 | version "1.8.0" 1061 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" 1062 | 1063 | event-stream@~3.3.0: 1064 | version "3.3.4" 1065 | resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" 1066 | dependencies: 1067 | duplexer "~0.1.1" 1068 | from "~0" 1069 | map-stream "~0.1.0" 1070 | pause-stream "0.0.11" 1071 | split "0.3" 1072 | stream-combiner "~0.0.4" 1073 | through "~2.3.1" 1074 | 1075 | eventemitter2@1.0.5: 1076 | version "1.0.5" 1077 | resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-1.0.5.tgz#f983610517b1737c0b9dc643beca93893c04df18" 1078 | 1079 | eventemitter2@~0.4.14: 1080 | version "0.4.14" 1081 | resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" 1082 | 1083 | exec-sh@^0.2.0: 1084 | version "0.2.0" 1085 | resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.0.tgz#14f75de3f20d286ef933099b2ce50a90359cef10" 1086 | dependencies: 1087 | merge "^1.1.3" 1088 | 1089 | expand-brackets@^0.1.4: 1090 | version "0.1.5" 1091 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 1092 | dependencies: 1093 | is-posix-bracket "^0.1.0" 1094 | 1095 | expand-range@^1.8.1: 1096 | version "1.8.2" 1097 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 1098 | dependencies: 1099 | fill-range "^2.1.0" 1100 | 1101 | express@^4.15.3: 1102 | version "4.15.3" 1103 | resolved "https://registry.yarnpkg.com/express/-/express-4.15.3.tgz#bab65d0f03aa80c358408972fc700f916944b662" 1104 | dependencies: 1105 | accepts "~1.3.3" 1106 | array-flatten "1.1.1" 1107 | content-disposition "0.5.2" 1108 | content-type "~1.0.2" 1109 | cookie "0.3.1" 1110 | cookie-signature "1.0.6" 1111 | debug "2.6.7" 1112 | depd "~1.1.0" 1113 | encodeurl "~1.0.1" 1114 | escape-html "~1.0.3" 1115 | etag "~1.8.0" 1116 | finalhandler "~1.0.3" 1117 | fresh "0.5.0" 1118 | merge-descriptors "1.0.1" 1119 | methods "~1.1.2" 1120 | on-finished "~2.3.0" 1121 | parseurl "~1.3.1" 1122 | path-to-regexp "0.1.7" 1123 | proxy-addr "~1.1.4" 1124 | qs "6.4.0" 1125 | range-parser "~1.2.0" 1126 | send "0.15.3" 1127 | serve-static "1.12.3" 1128 | setprototypeof "1.0.3" 1129 | statuses "~1.3.1" 1130 | type-is "~1.6.15" 1131 | utils-merge "1.0.0" 1132 | vary "~1.1.1" 1133 | 1134 | extend@^3.0.0, extend@~3.0.0: 1135 | version "3.0.1" 1136 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 1137 | 1138 | external-editor@^2.0.4: 1139 | version "2.0.4" 1140 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972" 1141 | dependencies: 1142 | iconv-lite "^0.4.17" 1143 | jschardet "^1.4.2" 1144 | tmp "^0.0.31" 1145 | 1146 | extglob@^0.3.1: 1147 | version "0.3.2" 1148 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 1149 | dependencies: 1150 | is-extglob "^1.0.0" 1151 | 1152 | extsprintf@1.0.2: 1153 | version "1.0.2" 1154 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" 1155 | 1156 | fast-levenshtein@~2.0.4: 1157 | version "2.0.6" 1158 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1159 | 1160 | fb-watchman@^1.8.0: 1161 | version "1.9.2" 1162 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.2.tgz#a24cf47827f82d38fb59a69ad70b76e3b6ae7383" 1163 | dependencies: 1164 | bser "1.0.2" 1165 | 1166 | fb-watchman@^2.0.0: 1167 | version "2.0.0" 1168 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" 1169 | dependencies: 1170 | bser "^2.0.0" 1171 | 1172 | fclone@1.0.11: 1173 | version "1.0.11" 1174 | resolved "https://registry.yarnpkg.com/fclone/-/fclone-1.0.11.tgz#10e85da38bfea7fc599341c296ee1d77266ee640" 1175 | 1176 | fclone@1.0.8: 1177 | version "1.0.8" 1178 | resolved "https://registry.yarnpkg.com/fclone/-/fclone-1.0.8.tgz#a0d4a73d983249978c0e0671a161520b996467eb" 1179 | 1180 | figures@^2.0.0: 1181 | version "2.0.0" 1182 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 1183 | dependencies: 1184 | escape-string-regexp "^1.0.5" 1185 | 1186 | file-entry-cache@^2.0.0: 1187 | version "2.0.0" 1188 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 1189 | dependencies: 1190 | flat-cache "^1.2.1" 1191 | object-assign "^4.0.1" 1192 | 1193 | filename-regex@^2.0.0: 1194 | version "2.0.1" 1195 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 1196 | 1197 | fileset@^2.0.2: 1198 | version "2.0.3" 1199 | resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" 1200 | dependencies: 1201 | glob "^7.0.3" 1202 | minimatch "^3.0.3" 1203 | 1204 | fill-keys@^1.0.2: 1205 | version "1.0.2" 1206 | resolved "https://registry.yarnpkg.com/fill-keys/-/fill-keys-1.0.2.tgz#9a8fa36f4e8ad634e3bf6b4f3c8882551452eb20" 1207 | dependencies: 1208 | is-object "~1.0.1" 1209 | merge-descriptors "~1.0.0" 1210 | 1211 | fill-range@^2.1.0: 1212 | version "2.2.3" 1213 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 1214 | dependencies: 1215 | is-number "^2.1.0" 1216 | isobject "^2.0.0" 1217 | randomatic "^1.1.3" 1218 | repeat-element "^1.1.2" 1219 | repeat-string "^1.5.2" 1220 | 1221 | finalhandler@~1.0.3: 1222 | version "1.0.3" 1223 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89" 1224 | dependencies: 1225 | debug "2.6.7" 1226 | encodeurl "~1.0.1" 1227 | escape-html "~1.0.3" 1228 | on-finished "~2.3.0" 1229 | parseurl "~1.3.1" 1230 | statuses "~1.3.1" 1231 | unpipe "~1.0.0" 1232 | 1233 | find-up@^1.0.0: 1234 | version "1.1.2" 1235 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 1236 | dependencies: 1237 | path-exists "^2.0.0" 1238 | pinkie-promise "^2.0.0" 1239 | 1240 | find-up@^2.0.0, find-up@^2.1.0: 1241 | version "2.1.0" 1242 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 1243 | dependencies: 1244 | locate-path "^2.0.0" 1245 | 1246 | flat-cache@^1.2.1: 1247 | version "1.2.2" 1248 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" 1249 | dependencies: 1250 | circular-json "^0.3.1" 1251 | del "^2.0.2" 1252 | graceful-fs "^4.1.2" 1253 | write "^0.2.1" 1254 | 1255 | follow-redirects@^1.2.3: 1256 | version "1.2.4" 1257 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.4.tgz#355e8f4d16876b43f577b0d5ce2668b9723214ea" 1258 | dependencies: 1259 | debug "^2.4.5" 1260 | 1261 | for-in@^1.0.1: 1262 | version "1.0.2" 1263 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1264 | 1265 | for-own@^0.1.4: 1266 | version "0.1.5" 1267 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 1268 | dependencies: 1269 | for-in "^1.0.1" 1270 | 1271 | foreach@^2.0.5: 1272 | version "2.0.5" 1273 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 1274 | 1275 | forever-agent@~0.6.1: 1276 | version "0.6.1" 1277 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1278 | 1279 | form-data@~2.1.1: 1280 | version "2.1.4" 1281 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" 1282 | dependencies: 1283 | asynckit "^0.4.0" 1284 | combined-stream "^1.0.5" 1285 | mime-types "^2.1.12" 1286 | 1287 | formatio@1.2.0: 1288 | version "1.2.0" 1289 | resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.2.0.tgz#f3b2167d9068c4698a8d51f4f760a39a54d818eb" 1290 | dependencies: 1291 | samsam "1.x" 1292 | 1293 | forwarded@~0.1.0: 1294 | version "0.1.0" 1295 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" 1296 | 1297 | fresh@0.5.0: 1298 | version "0.5.0" 1299 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" 1300 | 1301 | from@~0: 1302 | version "0.1.7" 1303 | resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" 1304 | 1305 | fs.realpath@^1.0.0: 1306 | version "1.0.0" 1307 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1308 | 1309 | fsevents@^1.0.0: 1310 | version "1.1.2" 1311 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" 1312 | dependencies: 1313 | nan "^2.3.0" 1314 | node-pre-gyp "^0.6.36" 1315 | 1316 | fstream-ignore@^1.0.5: 1317 | version "1.0.5" 1318 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 1319 | dependencies: 1320 | fstream "^1.0.0" 1321 | inherits "2" 1322 | minimatch "^3.0.0" 1323 | 1324 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: 1325 | version "1.0.11" 1326 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 1327 | dependencies: 1328 | graceful-fs "^4.1.2" 1329 | inherits "~2.0.0" 1330 | mkdirp ">=0.5 0" 1331 | rimraf "2" 1332 | 1333 | function-bind@^1.0.2, function-bind@^1.1.0: 1334 | version "1.1.0" 1335 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" 1336 | 1337 | gauge@~2.7.3: 1338 | version "2.7.4" 1339 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 1340 | dependencies: 1341 | aproba "^1.0.3" 1342 | console-control-strings "^1.0.0" 1343 | has-unicode "^2.0.0" 1344 | object-assign "^4.1.0" 1345 | signal-exit "^3.0.0" 1346 | string-width "^1.0.1" 1347 | strip-ansi "^3.0.1" 1348 | wide-align "^1.1.0" 1349 | 1350 | generate-function@^2.0.0: 1351 | version "2.0.0" 1352 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 1353 | 1354 | generate-object-property@^1.1.0: 1355 | version "1.2.0" 1356 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 1357 | dependencies: 1358 | is-property "^1.0.0" 1359 | 1360 | get-caller-file@^1.0.1: 1361 | version "1.0.2" 1362 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 1363 | 1364 | getpass@^0.1.1: 1365 | version "0.1.7" 1366 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1367 | dependencies: 1368 | assert-plus "^1.0.0" 1369 | 1370 | "gkt@https://tgz.pm2.io/gkt-1.0.0.tgz": 1371 | version "1.0.0" 1372 | resolved "https://tgz.pm2.io/gkt-1.0.0.tgz#405502b007f319c3f47175c4474527300f2ab5ad" 1373 | 1374 | glob-base@^0.3.0: 1375 | version "0.3.0" 1376 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1377 | dependencies: 1378 | glob-parent "^2.0.0" 1379 | is-glob "^2.0.0" 1380 | 1381 | glob-parent@^2.0.0: 1382 | version "2.0.0" 1383 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1384 | dependencies: 1385 | is-glob "^2.0.0" 1386 | 1387 | glob@7.1.1: 1388 | version "7.1.1" 1389 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 1390 | dependencies: 1391 | fs.realpath "^1.0.0" 1392 | inflight "^1.0.4" 1393 | inherits "2" 1394 | minimatch "^3.0.2" 1395 | once "^1.3.0" 1396 | path-is-absolute "^1.0.0" 1397 | 1398 | glob@^5.0.15: 1399 | version "5.0.15" 1400 | resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" 1401 | dependencies: 1402 | inflight "^1.0.4" 1403 | inherits "2" 1404 | minimatch "2 || 3" 1405 | once "^1.3.0" 1406 | path-is-absolute "^1.0.0" 1407 | 1408 | glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: 1409 | version "7.1.2" 1410 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 1411 | dependencies: 1412 | fs.realpath "^1.0.0" 1413 | inflight "^1.0.4" 1414 | inherits "2" 1415 | minimatch "^3.0.4" 1416 | once "^1.3.0" 1417 | path-is-absolute "^1.0.0" 1418 | 1419 | globals@^9.0.0, globals@^9.17.0: 1420 | version "9.18.0" 1421 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 1422 | 1423 | globby@^5.0.0: 1424 | version "5.0.0" 1425 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 1426 | dependencies: 1427 | array-union "^1.0.1" 1428 | arrify "^1.0.0" 1429 | glob "^7.0.3" 1430 | object-assign "^4.0.1" 1431 | pify "^2.0.0" 1432 | pinkie-promise "^2.0.0" 1433 | 1434 | got@^3.2.0: 1435 | version "3.3.1" 1436 | resolved "https://registry.yarnpkg.com/got/-/got-3.3.1.tgz#e5d0ed4af55fc3eef4d56007769d98192bcb2eca" 1437 | dependencies: 1438 | duplexify "^3.2.0" 1439 | infinity-agent "^2.0.0" 1440 | is-redirect "^1.0.0" 1441 | is-stream "^1.0.0" 1442 | lowercase-keys "^1.0.0" 1443 | nested-error-stacks "^1.0.0" 1444 | object-assign "^3.0.0" 1445 | prepend-http "^1.0.0" 1446 | read-all-stream "^3.0.0" 1447 | timed-out "^2.0.0" 1448 | 1449 | graceful-fs@^4.1.11, graceful-fs@^4.1.2: 1450 | version "4.1.11" 1451 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1452 | 1453 | "graceful-readlink@>= 1.0.0": 1454 | version "1.0.1" 1455 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 1456 | 1457 | growl@1.9.2: 1458 | version "1.9.2" 1459 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" 1460 | 1461 | growly@^1.3.0: 1462 | version "1.3.0" 1463 | resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" 1464 | 1465 | handlebars@^4.0.1, handlebars@^4.0.3: 1466 | version "4.0.10" 1467 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" 1468 | dependencies: 1469 | async "^1.4.0" 1470 | optimist "^0.6.1" 1471 | source-map "^0.4.4" 1472 | optionalDependencies: 1473 | uglify-js "^2.6" 1474 | 1475 | har-schema@^1.0.5: 1476 | version "1.0.5" 1477 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" 1478 | 1479 | har-validator@~4.2.1: 1480 | version "4.2.1" 1481 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" 1482 | dependencies: 1483 | ajv "^4.9.1" 1484 | har-schema "^1.0.5" 1485 | 1486 | has-ansi@^2.0.0: 1487 | version "2.0.0" 1488 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1489 | dependencies: 1490 | ansi-regex "^2.0.0" 1491 | 1492 | has-flag@^1.0.0: 1493 | version "1.0.0" 1494 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 1495 | 1496 | has-unicode@^2.0.0: 1497 | version "2.0.1" 1498 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1499 | 1500 | has@^1.0.1: 1501 | version "1.0.1" 1502 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 1503 | dependencies: 1504 | function-bind "^1.0.2" 1505 | 1506 | hawk@~3.1.3: 1507 | version "3.1.3" 1508 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 1509 | dependencies: 1510 | boom "2.x.x" 1511 | cryptiles "2.x.x" 1512 | hoek "2.x.x" 1513 | sntp "1.x.x" 1514 | 1515 | hoek@2.x.x: 1516 | version "2.16.3" 1517 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 1518 | 1519 | home-or-tmp@^2.0.0: 1520 | version "2.0.0" 1521 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" 1522 | dependencies: 1523 | os-homedir "^1.0.0" 1524 | os-tmpdir "^1.0.1" 1525 | 1526 | hooks-fixed@2.0.0: 1527 | version "2.0.0" 1528 | resolved "https://registry.yarnpkg.com/hooks-fixed/-/hooks-fixed-2.0.0.tgz#a01d894d52ac7f6599bbb1f63dfc9c411df70cba" 1529 | 1530 | hosted-git-info@^2.1.4: 1531 | version "2.5.0" 1532 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" 1533 | 1534 | html-encoding-sniffer@^1.0.1: 1535 | version "1.0.1" 1536 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da" 1537 | dependencies: 1538 | whatwg-encoding "^1.0.1" 1539 | 1540 | http-errors@~1.6.1: 1541 | version "1.6.1" 1542 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" 1543 | dependencies: 1544 | depd "1.1.0" 1545 | inherits "2.0.3" 1546 | setprototypeof "1.0.3" 1547 | statuses ">= 1.3.1 < 2" 1548 | 1549 | http-signature@~1.1.0: 1550 | version "1.1.1" 1551 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 1552 | dependencies: 1553 | assert-plus "^0.2.0" 1554 | jsprim "^1.2.2" 1555 | sshpk "^1.7.0" 1556 | 1557 | iconv-lite@0.4.13: 1558 | version "0.4.13" 1559 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" 1560 | 1561 | iconv-lite@^0.4.17, iconv-lite@^0.4.4: 1562 | version "0.4.18" 1563 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" 1564 | 1565 | ignore-by-default@^1.0.0: 1566 | version "1.0.1" 1567 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 1568 | 1569 | ignore@^3.3.3: 1570 | version "3.3.3" 1571 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" 1572 | 1573 | imurmurhash@^0.1.4: 1574 | version "0.1.4" 1575 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1576 | 1577 | infinity-agent@^2.0.0: 1578 | version "2.0.3" 1579 | resolved "https://registry.yarnpkg.com/infinity-agent/-/infinity-agent-2.0.3.tgz#45e0e2ff7a9eb030b27d62b74b3744b7a7ac4216" 1580 | 1581 | inflight@^1.0.4: 1582 | version "1.0.6" 1583 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1584 | dependencies: 1585 | once "^1.3.0" 1586 | wrappy "1" 1587 | 1588 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: 1589 | version "2.0.3" 1590 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1591 | 1592 | ini@~1.3.0: 1593 | version "1.3.4" 1594 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 1595 | 1596 | inquirer@^3.0.6: 1597 | version "3.1.1" 1598 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.1.1.tgz#87621c4fba4072f48a8dd71c9f9df6f100b2d534" 1599 | dependencies: 1600 | ansi-escapes "^2.0.0" 1601 | chalk "^1.0.0" 1602 | cli-cursor "^2.1.0" 1603 | cli-width "^2.0.0" 1604 | external-editor "^2.0.4" 1605 | figures "^2.0.0" 1606 | lodash "^4.3.0" 1607 | mute-stream "0.0.7" 1608 | run-async "^2.2.0" 1609 | rx-lite "^4.0.8" 1610 | rx-lite-aggregates "^4.0.8" 1611 | string-width "^2.0.0" 1612 | strip-ansi "^3.0.0" 1613 | through "^2.3.6" 1614 | 1615 | interpret@^1.0.0: 1616 | version "1.0.3" 1617 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" 1618 | 1619 | invariant@^2.2.0: 1620 | version "2.2.2" 1621 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" 1622 | dependencies: 1623 | loose-envify "^1.0.0" 1624 | 1625 | invert-kv@^1.0.0: 1626 | version "1.0.0" 1627 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 1628 | 1629 | ipaddr.js@1.3.0: 1630 | version "1.3.0" 1631 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec" 1632 | 1633 | is-arrayish@^0.2.1: 1634 | version "0.2.1" 1635 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1636 | 1637 | is-binary-path@^1.0.0: 1638 | version "1.0.1" 1639 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1640 | dependencies: 1641 | binary-extensions "^1.0.0" 1642 | 1643 | is-buffer@^1.1.5: 1644 | version "1.1.5" 1645 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" 1646 | 1647 | is-builtin-module@^1.0.0: 1648 | version "1.0.0" 1649 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1650 | dependencies: 1651 | builtin-modules "^1.0.0" 1652 | 1653 | is-callable@^1.1.1, is-callable@^1.1.3: 1654 | version "1.1.3" 1655 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" 1656 | 1657 | is-ci@^1.0.10: 1658 | version "1.0.10" 1659 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" 1660 | dependencies: 1661 | ci-info "^1.0.0" 1662 | 1663 | is-date-object@^1.0.1: 1664 | version "1.0.1" 1665 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 1666 | 1667 | is-dotfile@^1.0.0: 1668 | version "1.0.3" 1669 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 1670 | 1671 | is-equal-shallow@^0.1.3: 1672 | version "0.1.3" 1673 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1674 | dependencies: 1675 | is-primitive "^2.0.0" 1676 | 1677 | is-extendable@^0.1.1: 1678 | version "0.1.1" 1679 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1680 | 1681 | is-extglob@^1.0.0: 1682 | version "1.0.0" 1683 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1684 | 1685 | is-finite@^1.0.0: 1686 | version "1.0.2" 1687 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1688 | dependencies: 1689 | number-is-nan "^1.0.0" 1690 | 1691 | is-fullwidth-code-point@^1.0.0: 1692 | version "1.0.0" 1693 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1694 | dependencies: 1695 | number-is-nan "^1.0.0" 1696 | 1697 | is-fullwidth-code-point@^2.0.0: 1698 | version "2.0.0" 1699 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1700 | 1701 | is-glob@^2.0.0, is-glob@^2.0.1: 1702 | version "2.0.1" 1703 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1704 | dependencies: 1705 | is-extglob "^1.0.0" 1706 | 1707 | is-my-json-valid@^2.16.0: 1708 | version "2.16.0" 1709 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" 1710 | dependencies: 1711 | generate-function "^2.0.0" 1712 | generate-object-property "^1.1.0" 1713 | jsonpointer "^4.0.0" 1714 | xtend "^4.0.0" 1715 | 1716 | is-npm@^1.0.0: 1717 | version "1.0.0" 1718 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" 1719 | 1720 | is-number@^2.1.0: 1721 | version "2.1.0" 1722 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1723 | dependencies: 1724 | kind-of "^3.0.2" 1725 | 1726 | is-number@^3.0.0: 1727 | version "3.0.0" 1728 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1729 | dependencies: 1730 | kind-of "^3.0.2" 1731 | 1732 | is-object@~1.0.1: 1733 | version "1.0.1" 1734 | resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" 1735 | 1736 | is-path-cwd@^1.0.0: 1737 | version "1.0.0" 1738 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 1739 | 1740 | is-path-in-cwd@^1.0.0: 1741 | version "1.0.0" 1742 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 1743 | dependencies: 1744 | is-path-inside "^1.0.0" 1745 | 1746 | is-path-inside@^1.0.0: 1747 | version "1.0.0" 1748 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 1749 | dependencies: 1750 | path-is-inside "^1.0.1" 1751 | 1752 | is-posix-bracket@^0.1.0: 1753 | version "0.1.1" 1754 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1755 | 1756 | is-primitive@^2.0.0: 1757 | version "2.0.0" 1758 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1759 | 1760 | is-promise@^2.1.0: 1761 | version "2.1.0" 1762 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1763 | 1764 | is-property@^1.0.0: 1765 | version "1.0.2" 1766 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 1767 | 1768 | is-redirect@^1.0.0: 1769 | version "1.0.0" 1770 | resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" 1771 | 1772 | is-regex@^1.0.3: 1773 | version "1.0.4" 1774 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 1775 | dependencies: 1776 | has "^1.0.1" 1777 | 1778 | is-resolvable@^1.0.0: 1779 | version "1.0.0" 1780 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 1781 | dependencies: 1782 | tryit "^1.0.1" 1783 | 1784 | is-stream@^1.0.0: 1785 | version "1.1.0" 1786 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1787 | 1788 | is-symbol@^1.0.1: 1789 | version "1.0.1" 1790 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" 1791 | 1792 | is-typedarray@~1.0.0: 1793 | version "1.0.0" 1794 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1795 | 1796 | is-utf8@^0.2.0: 1797 | version "0.2.1" 1798 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1799 | 1800 | is@^3.2.0: 1801 | version "3.2.1" 1802 | resolved "https://registry.yarnpkg.com/is/-/is-3.2.1.tgz#d0ac2ad55eb7b0bec926a5266f6c662aaa83dca5" 1803 | 1804 | isarray@0.0.1: 1805 | version "0.0.1" 1806 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1807 | 1808 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 1809 | version "1.0.0" 1810 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1811 | 1812 | isexe@^2.0.0: 1813 | version "2.0.0" 1814 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1815 | 1816 | isobject@^2.0.0: 1817 | version "2.1.0" 1818 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1819 | dependencies: 1820 | isarray "1.0.0" 1821 | 1822 | isstream@~0.1.2: 1823 | version "0.1.2" 1824 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1825 | 1826 | istanbul-api@^1.1.1: 1827 | version "1.1.10" 1828 | resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.10.tgz#f27e5e7125c8de13f6a80661af78f512e5439b2b" 1829 | dependencies: 1830 | async "^2.1.4" 1831 | fileset "^2.0.2" 1832 | istanbul-lib-coverage "^1.1.1" 1833 | istanbul-lib-hook "^1.0.7" 1834 | istanbul-lib-instrument "^1.7.3" 1835 | istanbul-lib-report "^1.1.1" 1836 | istanbul-lib-source-maps "^1.2.1" 1837 | istanbul-reports "^1.1.1" 1838 | js-yaml "^3.7.0" 1839 | mkdirp "^0.5.1" 1840 | once "^1.4.0" 1841 | 1842 | istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1: 1843 | version "1.1.1" 1844 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" 1845 | 1846 | istanbul-lib-hook@^1.0.7: 1847 | version "1.0.7" 1848 | resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" 1849 | dependencies: 1850 | append-transform "^0.4.0" 1851 | 1852 | istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.2, istanbul-lib-instrument@^1.7.3: 1853 | version "1.7.3" 1854 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.3.tgz#925b239163eabdd68cc4048f52c2fa4f899ecfa7" 1855 | dependencies: 1856 | babel-generator "^6.18.0" 1857 | babel-template "^6.16.0" 1858 | babel-traverse "^6.18.0" 1859 | babel-types "^6.18.0" 1860 | babylon "^6.17.4" 1861 | istanbul-lib-coverage "^1.1.1" 1862 | semver "^5.3.0" 1863 | 1864 | istanbul-lib-report@^1.1.1: 1865 | version "1.1.1" 1866 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" 1867 | dependencies: 1868 | istanbul-lib-coverage "^1.1.1" 1869 | mkdirp "^0.5.1" 1870 | path-parse "^1.0.5" 1871 | supports-color "^3.1.2" 1872 | 1873 | istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.1: 1874 | version "1.2.1" 1875 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" 1876 | dependencies: 1877 | debug "^2.6.3" 1878 | istanbul-lib-coverage "^1.1.1" 1879 | mkdirp "^0.5.1" 1880 | rimraf "^2.6.1" 1881 | source-map "^0.5.3" 1882 | 1883 | istanbul-reports@^1.1.1: 1884 | version "1.1.1" 1885 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.1.tgz#042be5c89e175bc3f86523caab29c014e77fee4e" 1886 | dependencies: 1887 | handlebars "^4.0.3" 1888 | 1889 | istanbul@^0.4.5: 1890 | version "0.4.5" 1891 | resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" 1892 | dependencies: 1893 | abbrev "1.0.x" 1894 | async "1.x" 1895 | escodegen "1.8.x" 1896 | esprima "2.7.x" 1897 | glob "^5.0.15" 1898 | handlebars "^4.0.1" 1899 | js-yaml "3.x" 1900 | mkdirp "0.5.x" 1901 | nopt "3.x" 1902 | once "1.x" 1903 | resolve "1.1.x" 1904 | supports-color "^3.1.0" 1905 | which "^1.1.1" 1906 | wordwrap "^1.0.0" 1907 | 1908 | jest-changed-files@^20.0.3: 1909 | version "20.0.3" 1910 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.3.tgz#9394d5cc65c438406149bef1bf4d52b68e03e3f8" 1911 | 1912 | jest-cli@^20.0.4: 1913 | version "20.0.4" 1914 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-20.0.4.tgz#e532b19d88ae5bc6c417e8b0593a6fe954b1dc93" 1915 | dependencies: 1916 | ansi-escapes "^1.4.0" 1917 | callsites "^2.0.0" 1918 | chalk "^1.1.3" 1919 | graceful-fs "^4.1.11" 1920 | is-ci "^1.0.10" 1921 | istanbul-api "^1.1.1" 1922 | istanbul-lib-coverage "^1.0.1" 1923 | istanbul-lib-instrument "^1.4.2" 1924 | istanbul-lib-source-maps "^1.1.0" 1925 | jest-changed-files "^20.0.3" 1926 | jest-config "^20.0.4" 1927 | jest-docblock "^20.0.3" 1928 | jest-environment-jsdom "^20.0.3" 1929 | jest-haste-map "^20.0.4" 1930 | jest-jasmine2 "^20.0.4" 1931 | jest-message-util "^20.0.3" 1932 | jest-regex-util "^20.0.3" 1933 | jest-resolve-dependencies "^20.0.3" 1934 | jest-runtime "^20.0.4" 1935 | jest-snapshot "^20.0.3" 1936 | jest-util "^20.0.3" 1937 | micromatch "^2.3.11" 1938 | node-notifier "^5.0.2" 1939 | pify "^2.3.0" 1940 | slash "^1.0.0" 1941 | string-length "^1.0.1" 1942 | throat "^3.0.0" 1943 | which "^1.2.12" 1944 | worker-farm "^1.3.1" 1945 | yargs "^7.0.2" 1946 | 1947 | jest-config@^20.0.4: 1948 | version "20.0.4" 1949 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-20.0.4.tgz#e37930ab2217c913605eff13e7bd763ec48faeea" 1950 | dependencies: 1951 | chalk "^1.1.3" 1952 | glob "^7.1.1" 1953 | jest-environment-jsdom "^20.0.3" 1954 | jest-environment-node "^20.0.3" 1955 | jest-jasmine2 "^20.0.4" 1956 | jest-matcher-utils "^20.0.3" 1957 | jest-regex-util "^20.0.3" 1958 | jest-resolve "^20.0.4" 1959 | jest-validate "^20.0.3" 1960 | pretty-format "^20.0.3" 1961 | 1962 | jest-diff@^20.0.3: 1963 | version "20.0.3" 1964 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-20.0.3.tgz#81f288fd9e675f0fb23c75f1c2b19445fe586617" 1965 | dependencies: 1966 | chalk "^1.1.3" 1967 | diff "^3.2.0" 1968 | jest-matcher-utils "^20.0.3" 1969 | pretty-format "^20.0.3" 1970 | 1971 | jest-docblock@^20.0.3: 1972 | version "20.0.3" 1973 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.0.3.tgz#17bea984342cc33d83c50fbe1545ea0efaa44712" 1974 | 1975 | jest-environment-jsdom@^20.0.3: 1976 | version "20.0.3" 1977 | resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz#048a8ac12ee225f7190417713834bb999787de99" 1978 | dependencies: 1979 | jest-mock "^20.0.3" 1980 | jest-util "^20.0.3" 1981 | jsdom "^9.12.0" 1982 | 1983 | jest-environment-node@^20.0.3: 1984 | version "20.0.3" 1985 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-20.0.3.tgz#d488bc4612af2c246e986e8ae7671a099163d403" 1986 | dependencies: 1987 | jest-mock "^20.0.3" 1988 | jest-util "^20.0.3" 1989 | 1990 | jest-haste-map@^20.0.4: 1991 | version "20.0.4" 1992 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.0.4.tgz#653eb55c889ce3c021f7b94693f20a4159badf03" 1993 | dependencies: 1994 | fb-watchman "^2.0.0" 1995 | graceful-fs "^4.1.11" 1996 | jest-docblock "^20.0.3" 1997 | micromatch "^2.3.11" 1998 | sane "~1.6.0" 1999 | worker-farm "^1.3.1" 2000 | 2001 | jest-jasmine2@^20.0.4: 2002 | version "20.0.4" 2003 | resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz#fcc5b1411780d911d042902ef1859e852e60d5e1" 2004 | dependencies: 2005 | chalk "^1.1.3" 2006 | graceful-fs "^4.1.11" 2007 | jest-diff "^20.0.3" 2008 | jest-matcher-utils "^20.0.3" 2009 | jest-matchers "^20.0.3" 2010 | jest-message-util "^20.0.3" 2011 | jest-snapshot "^20.0.3" 2012 | once "^1.4.0" 2013 | p-map "^1.1.1" 2014 | 2015 | jest-matcher-utils@^20.0.3: 2016 | version "20.0.3" 2017 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz#b3a6b8e37ca577803b0832a98b164f44b7815612" 2018 | dependencies: 2019 | chalk "^1.1.3" 2020 | pretty-format "^20.0.3" 2021 | 2022 | jest-matchers@^20.0.3: 2023 | version "20.0.3" 2024 | resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-20.0.3.tgz#ca69db1c32db5a6f707fa5e0401abb55700dfd60" 2025 | dependencies: 2026 | jest-diff "^20.0.3" 2027 | jest-matcher-utils "^20.0.3" 2028 | jest-message-util "^20.0.3" 2029 | jest-regex-util "^20.0.3" 2030 | 2031 | jest-message-util@^20.0.3: 2032 | version "20.0.3" 2033 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-20.0.3.tgz#6aec2844306fcb0e6e74d5796c1006d96fdd831c" 2034 | dependencies: 2035 | chalk "^1.1.3" 2036 | micromatch "^2.3.11" 2037 | slash "^1.0.0" 2038 | 2039 | jest-mock@^20.0.3: 2040 | version "20.0.3" 2041 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-20.0.3.tgz#8bc070e90414aa155c11a8d64c869a0d5c71da59" 2042 | 2043 | jest-regex-util@^20.0.3: 2044 | version "20.0.3" 2045 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-20.0.3.tgz#85bbab5d133e44625b19faf8c6aa5122d085d762" 2046 | 2047 | jest-resolve-dependencies@^20.0.3: 2048 | version "20.0.3" 2049 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz#6e14a7b717af0f2cb3667c549de40af017b1723a" 2050 | dependencies: 2051 | jest-regex-util "^20.0.3" 2052 | 2053 | jest-resolve@^20.0.4: 2054 | version "20.0.4" 2055 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-20.0.4.tgz#9448b3e8b6bafc15479444c6499045b7ffe597a5" 2056 | dependencies: 2057 | browser-resolve "^1.11.2" 2058 | is-builtin-module "^1.0.0" 2059 | resolve "^1.3.2" 2060 | 2061 | jest-runtime@^20.0.4: 2062 | version "20.0.4" 2063 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-20.0.4.tgz#a2c802219c4203f754df1404e490186169d124d8" 2064 | dependencies: 2065 | babel-core "^6.0.0" 2066 | babel-jest "^20.0.3" 2067 | babel-plugin-istanbul "^4.0.0" 2068 | chalk "^1.1.3" 2069 | convert-source-map "^1.4.0" 2070 | graceful-fs "^4.1.11" 2071 | jest-config "^20.0.4" 2072 | jest-haste-map "^20.0.4" 2073 | jest-regex-util "^20.0.3" 2074 | jest-resolve "^20.0.4" 2075 | jest-util "^20.0.3" 2076 | json-stable-stringify "^1.0.1" 2077 | micromatch "^2.3.11" 2078 | strip-bom "3.0.0" 2079 | yargs "^7.0.2" 2080 | 2081 | jest-snapshot@^20.0.3: 2082 | version "20.0.3" 2083 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-20.0.3.tgz#5b847e1adb1a4d90852a7f9f125086e187c76566" 2084 | dependencies: 2085 | chalk "^1.1.3" 2086 | jest-diff "^20.0.3" 2087 | jest-matcher-utils "^20.0.3" 2088 | jest-util "^20.0.3" 2089 | natural-compare "^1.4.0" 2090 | pretty-format "^20.0.3" 2091 | 2092 | jest-util@^20.0.3: 2093 | version "20.0.3" 2094 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-20.0.3.tgz#0c07f7d80d82f4e5a67c6f8b9c3fe7f65cfd32ad" 2095 | dependencies: 2096 | chalk "^1.1.3" 2097 | graceful-fs "^4.1.11" 2098 | jest-message-util "^20.0.3" 2099 | jest-mock "^20.0.3" 2100 | jest-validate "^20.0.3" 2101 | leven "^2.1.0" 2102 | mkdirp "^0.5.1" 2103 | 2104 | jest-validate@^20.0.3: 2105 | version "20.0.3" 2106 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-20.0.3.tgz#d0cfd1de4f579f298484925c280f8f1d94ec3cab" 2107 | dependencies: 2108 | chalk "^1.1.3" 2109 | jest-matcher-utils "^20.0.3" 2110 | leven "^2.1.0" 2111 | pretty-format "^20.0.3" 2112 | 2113 | jest@^20.0.4: 2114 | version "20.0.4" 2115 | resolved "https://registry.yarnpkg.com/jest/-/jest-20.0.4.tgz#3dd260c2989d6dad678b1e9cc4d91944f6d602ac" 2116 | dependencies: 2117 | jest-cli "^20.0.4" 2118 | 2119 | js-tokens@^3.0.0: 2120 | version "3.0.2" 2121 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 2122 | 2123 | js-yaml@3.x, js-yaml@^3.7.0, js-yaml@^3.8.4: 2124 | version "3.8.4" 2125 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" 2126 | dependencies: 2127 | argparse "^1.0.7" 2128 | esprima "^3.1.1" 2129 | 2130 | jsbn@~0.1.0: 2131 | version "0.1.1" 2132 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 2133 | 2134 | jschardet@^1.4.2: 2135 | version "1.4.2" 2136 | resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.4.2.tgz#2aa107f142af4121d145659d44f50830961e699a" 2137 | 2138 | jsdom@^9.12.0: 2139 | version "9.12.0" 2140 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" 2141 | dependencies: 2142 | abab "^1.0.3" 2143 | acorn "^4.0.4" 2144 | acorn-globals "^3.1.0" 2145 | array-equal "^1.0.0" 2146 | content-type-parser "^1.0.1" 2147 | cssom ">= 0.3.2 < 0.4.0" 2148 | cssstyle ">= 0.2.37 < 0.3.0" 2149 | escodegen "^1.6.1" 2150 | html-encoding-sniffer "^1.0.1" 2151 | nwmatcher ">= 1.3.9 < 2.0.0" 2152 | parse5 "^1.5.1" 2153 | request "^2.79.0" 2154 | sax "^1.2.1" 2155 | symbol-tree "^3.2.1" 2156 | tough-cookie "^2.3.2" 2157 | webidl-conversions "^4.0.0" 2158 | whatwg-encoding "^1.0.1" 2159 | whatwg-url "^4.3.0" 2160 | xml-name-validator "^2.0.1" 2161 | 2162 | jsesc@^1.3.0: 2163 | version "1.3.0" 2164 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 2165 | 2166 | json-schema@0.2.3: 2167 | version "0.2.3" 2168 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 2169 | 2170 | json-stable-stringify@^1.0.1: 2171 | version "1.0.1" 2172 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 2173 | dependencies: 2174 | jsonify "~0.0.0" 2175 | 2176 | json-stringify-safe@^5.0, json-stringify-safe@~5.0.1: 2177 | version "5.0.1" 2178 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 2179 | 2180 | json3@3.3.2: 2181 | version "3.3.2" 2182 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" 2183 | 2184 | json5@^0.5.0: 2185 | version "0.5.1" 2186 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 2187 | 2188 | jsonify@~0.0.0: 2189 | version "0.0.0" 2190 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 2191 | 2192 | jsonpointer@^4.0.0: 2193 | version "4.0.1" 2194 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 2195 | 2196 | jsprim@^1.2.2: 2197 | version "1.4.0" 2198 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" 2199 | dependencies: 2200 | assert-plus "1.0.0" 2201 | extsprintf "1.0.2" 2202 | json-schema "0.2.3" 2203 | verror "1.3.6" 2204 | 2205 | jsx-ast-utils@^1.4.0, jsx-ast-utils@^1.4.1: 2206 | version "1.4.1" 2207 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" 2208 | 2209 | kareem@1.4.1: 2210 | version "1.4.1" 2211 | resolved "https://registry.yarnpkg.com/kareem/-/kareem-1.4.1.tgz#ed76200044fa041ef32b4da8261e2553f1173531" 2212 | 2213 | kind-of@^3.0.2: 2214 | version "3.2.2" 2215 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 2216 | dependencies: 2217 | is-buffer "^1.1.5" 2218 | 2219 | kind-of@^4.0.0: 2220 | version "4.0.0" 2221 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 2222 | dependencies: 2223 | is-buffer "^1.1.5" 2224 | 2225 | latest-version@^1.0.0: 2226 | version "1.0.1" 2227 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-1.0.1.tgz#72cfc46e3e8d1be651e1ebb54ea9f6ea96f374bb" 2228 | dependencies: 2229 | package-json "^1.0.0" 2230 | 2231 | lazy-cache@^1.0.3: 2232 | version "1.0.4" 2233 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 2234 | 2235 | lazy@~1.0.11: 2236 | version "1.0.11" 2237 | resolved "https://registry.yarnpkg.com/lazy/-/lazy-1.0.11.tgz#daa068206282542c088288e975c297c1ae77b690" 2238 | 2239 | lcid@^1.0.0: 2240 | version "1.0.0" 2241 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 2242 | dependencies: 2243 | invert-kv "^1.0.0" 2244 | 2245 | leven@^2.1.0: 2246 | version "2.1.0" 2247 | resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" 2248 | 2249 | levn@^0.3.0, levn@~0.3.0: 2250 | version "0.3.0" 2251 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 2252 | dependencies: 2253 | prelude-ls "~1.1.2" 2254 | type-check "~0.3.2" 2255 | 2256 | load-json-file@^1.0.0: 2257 | version "1.1.0" 2258 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 2259 | dependencies: 2260 | graceful-fs "^4.1.2" 2261 | parse-json "^2.2.0" 2262 | pify "^2.0.0" 2263 | pinkie-promise "^2.0.0" 2264 | strip-bom "^2.0.0" 2265 | 2266 | load-json-file@^2.0.0: 2267 | version "2.0.0" 2268 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 2269 | dependencies: 2270 | graceful-fs "^4.1.2" 2271 | parse-json "^2.2.0" 2272 | pify "^2.0.0" 2273 | strip-bom "^3.0.0" 2274 | 2275 | locate-path@^2.0.0: 2276 | version "2.0.0" 2277 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 2278 | dependencies: 2279 | p-locate "^2.0.0" 2280 | path-exists "^3.0.0" 2281 | 2282 | lodash._baseassign@^3.0.0: 2283 | version "3.2.0" 2284 | resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" 2285 | dependencies: 2286 | lodash._basecopy "^3.0.0" 2287 | lodash.keys "^3.0.0" 2288 | 2289 | lodash._basecopy@^3.0.0: 2290 | version "3.0.1" 2291 | resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" 2292 | 2293 | lodash._basecreate@^3.0.0: 2294 | version "3.0.3" 2295 | resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" 2296 | 2297 | lodash._bindcallback@^3.0.0: 2298 | version "3.0.1" 2299 | resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" 2300 | 2301 | lodash._createassigner@^3.0.0: 2302 | version "3.1.1" 2303 | resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" 2304 | dependencies: 2305 | lodash._bindcallback "^3.0.0" 2306 | lodash._isiterateecall "^3.0.0" 2307 | lodash.restparam "^3.0.0" 2308 | 2309 | lodash._getnative@^3.0.0: 2310 | version "3.9.1" 2311 | resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" 2312 | 2313 | lodash._isiterateecall@^3.0.0: 2314 | version "3.0.9" 2315 | resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" 2316 | 2317 | lodash.assign@^3.0.0: 2318 | version "3.2.0" 2319 | resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" 2320 | dependencies: 2321 | lodash._baseassign "^3.0.0" 2322 | lodash._createassigner "^3.0.0" 2323 | lodash.keys "^3.0.0" 2324 | 2325 | lodash.cond@^4.3.0: 2326 | version "4.5.2" 2327 | resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" 2328 | 2329 | lodash.create@3.1.1: 2330 | version "3.1.1" 2331 | resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" 2332 | dependencies: 2333 | lodash._baseassign "^3.0.0" 2334 | lodash._basecreate "^3.0.0" 2335 | lodash._isiterateecall "^3.0.0" 2336 | 2337 | lodash.defaults@^3.1.2: 2338 | version "3.1.2" 2339 | resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" 2340 | dependencies: 2341 | lodash.assign "^3.0.0" 2342 | lodash.restparam "^3.0.0" 2343 | 2344 | lodash.findindex@^4.4.0: 2345 | version "4.6.0" 2346 | resolved "https://registry.yarnpkg.com/lodash.findindex/-/lodash.findindex-4.6.0.tgz#a3245dee61fb9b6e0624b535125624bb69c11106" 2347 | 2348 | lodash.isarguments@^3.0.0: 2349 | version "3.1.0" 2350 | resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" 2351 | 2352 | lodash.isarray@^3.0.0: 2353 | version "3.0.4" 2354 | resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" 2355 | 2356 | lodash.isequal@^4.0.0: 2357 | version "4.5.0" 2358 | resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" 2359 | 2360 | lodash.keys@^3.0.0: 2361 | version "3.1.2" 2362 | resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" 2363 | dependencies: 2364 | lodash._getnative "^3.0.0" 2365 | lodash.isarguments "^3.0.0" 2366 | lodash.isarray "^3.0.0" 2367 | 2368 | lodash.merge@^4.6.0: 2369 | version "4.6.0" 2370 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" 2371 | 2372 | lodash.restparam@^3.0.0: 2373 | version "3.6.1" 2374 | resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" 2375 | 2376 | lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0: 2377 | version "4.17.4" 2378 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 2379 | 2380 | lolex@^1.6.0: 2381 | version "1.6.0" 2382 | resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.6.0.tgz#3a9a0283452a47d7439e72731b9e07d7386e49f6" 2383 | 2384 | longest@^1.0.1: 2385 | version "1.0.1" 2386 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 2387 | 2388 | loose-envify@^1.0.0: 2389 | version "1.3.1" 2390 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 2391 | dependencies: 2392 | js-tokens "^3.0.0" 2393 | 2394 | lowercase-keys@^1.0.0: 2395 | version "1.0.0" 2396 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" 2397 | 2398 | makeerror@1.0.x: 2399 | version "1.0.11" 2400 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" 2401 | dependencies: 2402 | tmpl "1.0.x" 2403 | 2404 | map-stream@~0.1.0: 2405 | version "0.1.0" 2406 | resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" 2407 | 2408 | media-typer@0.3.0: 2409 | version "0.3.0" 2410 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 2411 | 2412 | merge-descriptors@1.0.1, merge-descriptors@~1.0.0: 2413 | version "1.0.1" 2414 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 2415 | 2416 | merge@^1.1.3: 2417 | version "1.2.0" 2418 | resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" 2419 | 2420 | methods@^1.1.1, methods@~1.1.2: 2421 | version "1.1.2" 2422 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 2423 | 2424 | micromatch@^2.1.5, micromatch@^2.3.11: 2425 | version "2.3.11" 2426 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 2427 | dependencies: 2428 | arr-diff "^2.0.0" 2429 | array-unique "^0.2.1" 2430 | braces "^1.8.2" 2431 | expand-brackets "^0.1.4" 2432 | extglob "^0.3.1" 2433 | filename-regex "^2.0.0" 2434 | is-extglob "^1.0.0" 2435 | is-glob "^2.0.1" 2436 | kind-of "^3.0.2" 2437 | normalize-path "^2.0.1" 2438 | object.omit "^2.0.0" 2439 | parse-glob "^3.0.4" 2440 | regex-cache "^0.4.2" 2441 | 2442 | mime-db@~1.27.0: 2443 | version "1.27.0" 2444 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" 2445 | 2446 | mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: 2447 | version "2.1.15" 2448 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" 2449 | dependencies: 2450 | mime-db "~1.27.0" 2451 | 2452 | mime@1.3.4: 2453 | version "1.3.4" 2454 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" 2455 | 2456 | mimic-fn@^1.0.0: 2457 | version "1.1.0" 2458 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" 2459 | 2460 | "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: 2461 | version "3.0.4" 2462 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2463 | dependencies: 2464 | brace-expansion "^1.1.7" 2465 | 2466 | minimist@0.0.8, minimist@~0.0.1: 2467 | version "0.0.8" 2468 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 2469 | 2470 | minimist@^1.1.1, minimist@^1.2.0: 2471 | version "1.2.0" 2472 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 2473 | 2474 | mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: 2475 | version "0.5.1" 2476 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 2477 | dependencies: 2478 | minimist "0.0.8" 2479 | 2480 | mocha@^3.4.2: 2481 | version "3.4.2" 2482 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.4.2.tgz#d0ef4d332126dbf18d0d640c9b382dd48be97594" 2483 | dependencies: 2484 | browser-stdout "1.3.0" 2485 | commander "2.9.0" 2486 | debug "2.6.0" 2487 | diff "3.2.0" 2488 | escape-string-regexp "1.0.5" 2489 | glob "7.1.1" 2490 | growl "1.9.2" 2491 | json3 "3.3.2" 2492 | lodash.create "3.1.1" 2493 | mkdirp "0.5.1" 2494 | supports-color "3.1.2" 2495 | 2496 | module-not-found-error@^1.0.0: 2497 | version "1.0.1" 2498 | resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0" 2499 | 2500 | moment-timezone@^0.5.x: 2501 | version "0.5.13" 2502 | resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.13.tgz#99ce5c7d827262eb0f1f702044177f60745d7b90" 2503 | dependencies: 2504 | moment ">= 2.9.0" 2505 | 2506 | "moment@>= 2.9.0", moment@^2.15: 2507 | version "2.18.1" 2508 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" 2509 | 2510 | mongodb-core@2.1.11: 2511 | version "2.1.11" 2512 | resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.11.tgz#1c38776ceb174997a99c28860eed9028da9b3e1a" 2513 | dependencies: 2514 | bson "~1.0.4" 2515 | require_optional "~1.0.0" 2516 | 2517 | mongodb@2.2.27: 2518 | version "2.2.27" 2519 | resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.27.tgz#34122034db66d983bcf6ab5adb26a24a70fef6e6" 2520 | dependencies: 2521 | es6-promise "3.2.1" 2522 | mongodb-core "2.1.11" 2523 | readable-stream "2.2.7" 2524 | 2525 | mongoose@^4.10.8: 2526 | version "4.11.1" 2527 | resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-4.11.1.tgz#2560b6d89e744b05857d024cab8b316066716e3e" 2528 | dependencies: 2529 | async "2.1.4" 2530 | bson "~1.0.4" 2531 | hooks-fixed "2.0.0" 2532 | kareem "1.4.1" 2533 | mongodb "2.2.27" 2534 | mpath "0.3.0" 2535 | mpromise "0.5.5" 2536 | mquery "2.3.1" 2537 | ms "2.0.0" 2538 | muri "1.2.1" 2539 | regexp-clone "0.0.1" 2540 | sliced "1.0.1" 2541 | 2542 | mpath@0.3.0: 2543 | version "0.3.0" 2544 | resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.3.0.tgz#7a58f789e9b5fd3c94520634157960f26bd5ef44" 2545 | 2546 | mpromise@0.5.5: 2547 | version "0.5.5" 2548 | resolved "https://registry.yarnpkg.com/mpromise/-/mpromise-0.5.5.tgz#f5b24259d763acc2257b0a0c8c6d866fd51732e6" 2549 | 2550 | mquery@2.3.1: 2551 | version "2.3.1" 2552 | resolved "https://registry.yarnpkg.com/mquery/-/mquery-2.3.1.tgz#9ab36749714800ff0bb53a681ce4bc4d5f07c87b" 2553 | dependencies: 2554 | bluebird "2.10.2" 2555 | debug "2.6.8" 2556 | regexp-clone "0.0.1" 2557 | sliced "0.0.5" 2558 | 2559 | ms@0.7.1: 2560 | version "0.7.1" 2561 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 2562 | 2563 | ms@0.7.2: 2564 | version "0.7.2" 2565 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 2566 | 2567 | ms@2.0.0: 2568 | version "2.0.0" 2569 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2570 | 2571 | muri@1.2.1: 2572 | version "1.2.1" 2573 | resolved "https://registry.yarnpkg.com/muri/-/muri-1.2.1.tgz#ec7ea5ce6ca6a523eb1ab35bacda5fa816c9aa3c" 2574 | 2575 | mute-stream@0.0.7, mute-stream@~0.0.4: 2576 | version "0.0.7" 2577 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 2578 | 2579 | nan@^2.3.0: 2580 | version "2.6.2" 2581 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" 2582 | 2583 | native-promise-only@^0.8.1: 2584 | version "0.8.1" 2585 | resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" 2586 | 2587 | natural-compare@^1.4.0: 2588 | version "1.4.0" 2589 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2590 | 2591 | needle@1.6.0: 2592 | version "1.6.0" 2593 | resolved "https://registry.yarnpkg.com/needle/-/needle-1.6.0.tgz#f52a5858972121618e002f8e6384cadac22d624f" 2594 | dependencies: 2595 | debug "^2.1.2" 2596 | iconv-lite "^0.4.4" 2597 | 2598 | negotiator@0.6.1: 2599 | version "0.6.1" 2600 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 2601 | 2602 | nested-error-stacks@^1.0.0: 2603 | version "1.0.2" 2604 | resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz#19f619591519f096769a5ba9a86e6eeec823c3cf" 2605 | dependencies: 2606 | inherits "~2.0.1" 2607 | 2608 | node-int64@^0.4.0: 2609 | version "0.4.0" 2610 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" 2611 | 2612 | node-notifier@^5.0.2: 2613 | version "5.1.2" 2614 | resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff" 2615 | dependencies: 2616 | growly "^1.3.0" 2617 | semver "^5.3.0" 2618 | shellwords "^0.1.0" 2619 | which "^1.2.12" 2620 | 2621 | node-pre-gyp@^0.6.36: 2622 | version "0.6.36" 2623 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786" 2624 | dependencies: 2625 | mkdirp "^0.5.1" 2626 | nopt "^4.0.1" 2627 | npmlog "^4.0.2" 2628 | rc "^1.1.7" 2629 | request "^2.81.0" 2630 | rimraf "^2.6.1" 2631 | semver "^5.3.0" 2632 | tar "^2.2.1" 2633 | tar-pack "^3.4.0" 2634 | 2635 | nodemon@^1.11.0: 2636 | version "1.11.0" 2637 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.11.0.tgz#226c562bd2a7b13d3d7518b49ad4828a3623d06c" 2638 | dependencies: 2639 | chokidar "^1.4.3" 2640 | debug "^2.2.0" 2641 | es6-promise "^3.0.2" 2642 | ignore-by-default "^1.0.0" 2643 | lodash.defaults "^3.1.2" 2644 | minimatch "^3.0.0" 2645 | ps-tree "^1.0.1" 2646 | touch "1.0.0" 2647 | undefsafe "0.0.3" 2648 | update-notifier "0.5.0" 2649 | 2650 | nopt@3.x: 2651 | version "3.0.6" 2652 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 2653 | dependencies: 2654 | abbrev "1" 2655 | 2656 | nopt@^4.0.1: 2657 | version "4.0.1" 2658 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 2659 | dependencies: 2660 | abbrev "1" 2661 | osenv "^0.1.4" 2662 | 2663 | nopt@~1.0.10: 2664 | version "1.0.10" 2665 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 2666 | dependencies: 2667 | abbrev "1" 2668 | 2669 | normalize-package-data@^2.3.2: 2670 | version "2.4.0" 2671 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 2672 | dependencies: 2673 | hosted-git-info "^2.1.4" 2674 | is-builtin-module "^1.0.0" 2675 | semver "2 || 3 || 4 || 5" 2676 | validate-npm-package-license "^3.0.1" 2677 | 2678 | normalize-path@^2.0.1: 2679 | version "2.1.1" 2680 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 2681 | dependencies: 2682 | remove-trailing-separator "^1.0.1" 2683 | 2684 | npmlog@^4.0.2: 2685 | version "4.1.2" 2686 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 2687 | dependencies: 2688 | are-we-there-yet "~1.1.2" 2689 | console-control-strings "~1.1.0" 2690 | gauge "~2.7.3" 2691 | set-blocking "~2.0.0" 2692 | 2693 | nssocket@0.6.0: 2694 | version "0.6.0" 2695 | resolved "https://registry.yarnpkg.com/nssocket/-/nssocket-0.6.0.tgz#59f96f6ff321566f33c70f7dbeeecdfdc07154fa" 2696 | dependencies: 2697 | eventemitter2 "~0.4.14" 2698 | lazy "~1.0.11" 2699 | 2700 | number-is-nan@^1.0.0: 2701 | version "1.0.1" 2702 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 2703 | 2704 | "nwmatcher@>= 1.3.9 < 2.0.0": 2705 | version "1.4.1" 2706 | resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.1.tgz#7ae9b07b0ea804db7e25f05cb5fe4097d4e4949f" 2707 | 2708 | oauth-sign@~0.8.1: 2709 | version "0.8.2" 2710 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 2711 | 2712 | object-assign@^3.0.0: 2713 | version "3.0.0" 2714 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" 2715 | 2716 | object-assign@^4.0.1, object-assign@^4.1.0: 2717 | version "4.1.1" 2718 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2719 | 2720 | object-keys@^1.0.8: 2721 | version "1.0.11" 2722 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" 2723 | 2724 | object.omit@^2.0.0: 2725 | version "2.0.1" 2726 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 2727 | dependencies: 2728 | for-own "^0.1.4" 2729 | is-extendable "^0.1.1" 2730 | 2731 | on-finished@~2.3.0: 2732 | version "2.3.0" 2733 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 2734 | dependencies: 2735 | ee-first "1.1.1" 2736 | 2737 | once@1.x, once@^1.3.0, once@^1.3.3, once@^1.4.0: 2738 | version "1.4.0" 2739 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2740 | dependencies: 2741 | wrappy "1" 2742 | 2743 | once@~1.3.0: 2744 | version "1.3.3" 2745 | resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" 2746 | dependencies: 2747 | wrappy "1" 2748 | 2749 | onetime@^2.0.0: 2750 | version "2.0.1" 2751 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 2752 | dependencies: 2753 | mimic-fn "^1.0.0" 2754 | 2755 | optimist@^0.6.1: 2756 | version "0.6.1" 2757 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 2758 | dependencies: 2759 | minimist "~0.0.1" 2760 | wordwrap "~0.0.2" 2761 | 2762 | optionator@^0.8.1, optionator@^0.8.2: 2763 | version "0.8.2" 2764 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 2765 | dependencies: 2766 | deep-is "~0.1.3" 2767 | fast-levenshtein "~2.0.4" 2768 | levn "~0.3.0" 2769 | prelude-ls "~1.1.2" 2770 | type-check "~0.3.2" 2771 | wordwrap "~1.0.0" 2772 | 2773 | os-homedir@^1.0.0: 2774 | version "1.0.2" 2775 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2776 | 2777 | os-locale@^1.4.0: 2778 | version "1.4.0" 2779 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" 2780 | dependencies: 2781 | lcid "^1.0.0" 2782 | 2783 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: 2784 | version "1.0.2" 2785 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2786 | 2787 | osenv@^0.1.0, osenv@^0.1.4: 2788 | version "0.1.4" 2789 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" 2790 | dependencies: 2791 | os-homedir "^1.0.0" 2792 | os-tmpdir "^1.0.0" 2793 | 2794 | p-limit@^1.1.0: 2795 | version "1.1.0" 2796 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" 2797 | 2798 | p-locate@^2.0.0: 2799 | version "2.0.0" 2800 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 2801 | dependencies: 2802 | p-limit "^1.1.0" 2803 | 2804 | p-map@^1.1.1: 2805 | version "1.1.1" 2806 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.1.1.tgz#05f5e4ae97a068371bc2a5cc86bfbdbc19c4ae7a" 2807 | 2808 | package-json@^1.0.0: 2809 | version "1.2.0" 2810 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-1.2.0.tgz#c8ecac094227cdf76a316874ed05e27cc939a0e0" 2811 | dependencies: 2812 | got "^3.2.0" 2813 | registry-url "^3.0.0" 2814 | 2815 | parse-glob@^3.0.4: 2816 | version "3.0.4" 2817 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 2818 | dependencies: 2819 | glob-base "^0.3.0" 2820 | is-dotfile "^1.0.0" 2821 | is-extglob "^1.0.0" 2822 | is-glob "^2.0.0" 2823 | 2824 | parse-json@^2.2.0: 2825 | version "2.2.0" 2826 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 2827 | dependencies: 2828 | error-ex "^1.2.0" 2829 | 2830 | parse5@^1.5.1: 2831 | version "1.5.1" 2832 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" 2833 | 2834 | parseurl@~1.3.1: 2835 | version "1.3.1" 2836 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" 2837 | 2838 | path-exists@^2.0.0: 2839 | version "2.1.0" 2840 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 2841 | dependencies: 2842 | pinkie-promise "^2.0.0" 2843 | 2844 | path-exists@^3.0.0: 2845 | version "3.0.0" 2846 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 2847 | 2848 | path-is-absolute@^1.0.0: 2849 | version "1.0.1" 2850 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2851 | 2852 | path-is-inside@^1.0.1, path-is-inside@^1.0.2: 2853 | version "1.0.2" 2854 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 2855 | 2856 | path-parse@^1.0.5: 2857 | version "1.0.5" 2858 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 2859 | 2860 | path-to-regexp@0.1.7: 2861 | version "0.1.7" 2862 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 2863 | 2864 | path-to-regexp@^1.7.0: 2865 | version "1.7.0" 2866 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" 2867 | dependencies: 2868 | isarray "0.0.1" 2869 | 2870 | path-type@^1.0.0: 2871 | version "1.1.0" 2872 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 2873 | dependencies: 2874 | graceful-fs "^4.1.2" 2875 | pify "^2.0.0" 2876 | pinkie-promise "^2.0.0" 2877 | 2878 | path-type@^2.0.0: 2879 | version "2.0.0" 2880 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 2881 | dependencies: 2882 | pify "^2.0.0" 2883 | 2884 | pause-stream@0.0.11: 2885 | version "0.0.11" 2886 | resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" 2887 | dependencies: 2888 | through "~2.3" 2889 | 2890 | performance-now@^0.2.0: 2891 | version "0.2.0" 2892 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 2893 | 2894 | pidusage@^1.1.0: 2895 | version "1.1.5" 2896 | resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-1.1.5.tgz#b8c8d32bdfaf36212ca9e741028876ea33217e66" 2897 | 2898 | pify@^2.0.0, pify@^2.3.0: 2899 | version "2.3.0" 2900 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2901 | 2902 | pinkie-promise@^2.0.0: 2903 | version "2.0.1" 2904 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2905 | dependencies: 2906 | pinkie "^2.0.0" 2907 | 2908 | pinkie@^2.0.0: 2909 | version "2.0.4" 2910 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2911 | 2912 | pkg-dir@^1.0.0: 2913 | version "1.0.0" 2914 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" 2915 | dependencies: 2916 | find-up "^1.0.0" 2917 | 2918 | pluralize@^4.0.0: 2919 | version "4.0.0" 2920 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762" 2921 | 2922 | pm2-axon-rpc@0.4.5: 2923 | version "0.4.5" 2924 | resolved "https://registry.yarnpkg.com/pm2-axon-rpc/-/pm2-axon-rpc-0.4.5.tgz#fb62e9a53f3e2b7bed1afe16e3b0d1b06fe8ba69" 2925 | dependencies: 2926 | debug "*" 2927 | fclone "1.0.8" 2928 | 2929 | pm2-axon@3.0.2: 2930 | version "3.0.2" 2931 | resolved "https://registry.yarnpkg.com/pm2-axon/-/pm2-axon-3.0.2.tgz#53de1d34edbf266d58f6b1dea2d8244c71ad24b9" 2932 | dependencies: 2933 | amp "~0.3.1" 2934 | amp-message "~0.1.1" 2935 | debug "~2.2.0" 2936 | escape-regexp "0.0.1" 2937 | 2938 | pm2-deploy@^0.3.5: 2939 | version "0.3.5" 2940 | resolved "https://registry.yarnpkg.com/pm2-deploy/-/pm2-deploy-0.3.5.tgz#d434bec7bcb1d3c8386a1234af5a3b6794016c1c" 2941 | dependencies: 2942 | async "^1.5" 2943 | tv4 "^1.2" 2944 | 2945 | pm2-multimeter@^0.1.2: 2946 | version "0.1.2" 2947 | resolved "https://registry.yarnpkg.com/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz#1a1e55153d41a05534cea23cfe860abaa0eb4ace" 2948 | dependencies: 2949 | charm "~0.1.1" 2950 | 2951 | pm2@^2.5.0: 2952 | version "2.5.0" 2953 | resolved "https://registry.yarnpkg.com/pm2/-/pm2-2.5.0.tgz#11c0ff3497c22923e6221e9d78008b1cb4584bd1" 2954 | dependencies: 2955 | async "1.5" 2956 | blessed "^0.1.81" 2957 | chalk "^1.1" 2958 | chokidar "^1.7" 2959 | cli-table "0.3.1" 2960 | commander "^2.9" 2961 | cron "1.2.1" 2962 | debug "^2.3.2" 2963 | eventemitter2 "1.0.5" 2964 | fclone "1.0.11" 2965 | mkdirp "0.5.1" 2966 | moment "^2.15" 2967 | needle "1.6.0" 2968 | nssocket "0.6.0" 2969 | pidusage "^1.1.0" 2970 | pm2-axon "3.0.2" 2971 | pm2-axon-rpc "0.4.5" 2972 | pm2-deploy "^0.3.5" 2973 | pm2-multimeter "^0.1.2" 2974 | pmx "^1.2.0" 2975 | promptly "2.2.0" 2976 | semver "^5.2" 2977 | shelljs "0.7.8" 2978 | source-map-support "^0.4.6" 2979 | sprintf-js "1.1.1" 2980 | vizion "^0.2" 2981 | yamljs "0.2.10" 2982 | optionalDependencies: 2983 | gkt "https://tgz.pm2.io/gkt-1.0.0.tgz" 2984 | 2985 | pmx@^1.2.0: 2986 | version "1.2.0" 2987 | resolved "https://registry.yarnpkg.com/pmx/-/pmx-1.2.0.tgz#712a9e1fdea53a9b061169cc7676b14838c87585" 2988 | dependencies: 2989 | debug "^2.6" 2990 | json-stringify-safe "^5.0" 2991 | vxx "^1.2.0" 2992 | 2993 | prelude-ls@~1.1.2: 2994 | version "1.1.2" 2995 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2996 | 2997 | prepend-http@^1.0.0: 2998 | version "1.0.4" 2999 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 3000 | 3001 | preserve@^0.2.0: 3002 | version "0.2.0" 3003 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 3004 | 3005 | pretty-format@^20.0.3: 3006 | version "20.0.3" 3007 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14" 3008 | dependencies: 3009 | ansi-regex "^2.1.1" 3010 | ansi-styles "^3.0.0" 3011 | 3012 | private@^0.1.6: 3013 | version "0.1.7" 3014 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" 3015 | 3016 | process-nextick-args@~1.0.6: 3017 | version "1.0.7" 3018 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 3019 | 3020 | progress@^2.0.0: 3021 | version "2.0.0" 3022 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" 3023 | 3024 | promptly@2.2.0: 3025 | version "2.2.0" 3026 | resolved "https://registry.yarnpkg.com/promptly/-/promptly-2.2.0.tgz#2a13fa063688a2a5983b161fff0108a07d26fc74" 3027 | dependencies: 3028 | read "^1.0.4" 3029 | 3030 | proxy-addr@~1.1.4: 3031 | version "1.1.4" 3032 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" 3033 | dependencies: 3034 | forwarded "~0.1.0" 3035 | ipaddr.js "1.3.0" 3036 | 3037 | proxyquire@^1.8.0: 3038 | version "1.8.0" 3039 | resolved "https://registry.yarnpkg.com/proxyquire/-/proxyquire-1.8.0.tgz#02d514a5bed986f04cbb2093af16741535f79edc" 3040 | dependencies: 3041 | fill-keys "^1.0.2" 3042 | module-not-found-error "^1.0.0" 3043 | resolve "~1.1.7" 3044 | 3045 | prr@~0.0.0: 3046 | version "0.0.0" 3047 | resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" 3048 | 3049 | ps-tree@^1.0.1: 3050 | version "1.1.0" 3051 | resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" 3052 | dependencies: 3053 | event-stream "~3.3.0" 3054 | 3055 | punycode@^1.4.1: 3056 | version "1.4.1" 3057 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 3058 | 3059 | qs@6.4.0, qs@~6.4.0: 3060 | version "6.4.0" 3061 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 3062 | 3063 | randomatic@^1.1.3: 3064 | version "1.1.7" 3065 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" 3066 | dependencies: 3067 | is-number "^3.0.0" 3068 | kind-of "^4.0.0" 3069 | 3070 | range-parser@~1.2.0: 3071 | version "1.2.0" 3072 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 3073 | 3074 | rc@^1.0.1, rc@^1.1.7: 3075 | version "1.2.1" 3076 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" 3077 | dependencies: 3078 | deep-extend "~0.4.0" 3079 | ini "~1.3.0" 3080 | minimist "^1.2.0" 3081 | strip-json-comments "~2.0.1" 3082 | 3083 | read-all-stream@^3.0.0: 3084 | version "3.1.0" 3085 | resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" 3086 | dependencies: 3087 | pinkie-promise "^2.0.0" 3088 | readable-stream "^2.0.0" 3089 | 3090 | read-pkg-up@^1.0.1: 3091 | version "1.0.1" 3092 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 3093 | dependencies: 3094 | find-up "^1.0.0" 3095 | read-pkg "^1.0.0" 3096 | 3097 | read-pkg-up@^2.0.0: 3098 | version "2.0.0" 3099 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 3100 | dependencies: 3101 | find-up "^2.0.0" 3102 | read-pkg "^2.0.0" 3103 | 3104 | read-pkg@^1.0.0: 3105 | version "1.1.0" 3106 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 3107 | dependencies: 3108 | load-json-file "^1.0.0" 3109 | normalize-package-data "^2.3.2" 3110 | path-type "^1.0.0" 3111 | 3112 | read-pkg@^2.0.0: 3113 | version "2.0.0" 3114 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 3115 | dependencies: 3116 | load-json-file "^2.0.0" 3117 | normalize-package-data "^2.3.2" 3118 | path-type "^2.0.0" 3119 | 3120 | read@^1.0.4: 3121 | version "1.0.7" 3122 | resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" 3123 | dependencies: 3124 | mute-stream "~0.0.4" 3125 | 3126 | readable-stream@2.2.7, readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2: 3127 | version "2.2.7" 3128 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.7.tgz#07057acbe2467b22042d36f98c5ad507054e95b1" 3129 | dependencies: 3130 | buffer-shims "~1.0.0" 3131 | core-util-is "~1.0.0" 3132 | inherits "~2.0.1" 3133 | isarray "~1.0.0" 3134 | process-nextick-args "~1.0.6" 3135 | string_decoder "~1.0.0" 3136 | util-deprecate "~1.0.1" 3137 | 3138 | readdirp@^2.0.0: 3139 | version "2.1.0" 3140 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 3141 | dependencies: 3142 | graceful-fs "^4.1.2" 3143 | minimatch "^3.0.2" 3144 | readable-stream "^2.0.2" 3145 | set-immediate-shim "^1.0.1" 3146 | 3147 | rechoir@^0.6.2: 3148 | version "0.6.2" 3149 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 3150 | dependencies: 3151 | resolve "^1.1.6" 3152 | 3153 | redis-commands@^1.2.0: 3154 | version "1.3.1" 3155 | resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.1.tgz#81d826f45fa9c8b2011f4cd7a0fe597d241d442b" 3156 | 3157 | redis-parser@^2.5.0: 3158 | version "2.6.0" 3159 | resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" 3160 | 3161 | redis@^2.7.1: 3162 | version "2.7.1" 3163 | resolved "https://registry.yarnpkg.com/redis/-/redis-2.7.1.tgz#7d56f7875b98b20410b71539f1d878ed58ebf46a" 3164 | dependencies: 3165 | double-ended-queue "^2.1.0-0" 3166 | redis-commands "^1.2.0" 3167 | redis-parser "^2.5.0" 3168 | 3169 | regenerator-runtime@^0.10.0: 3170 | version "0.10.5" 3171 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" 3172 | 3173 | regex-cache@^0.4.2: 3174 | version "0.4.3" 3175 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 3176 | dependencies: 3177 | is-equal-shallow "^0.1.3" 3178 | is-primitive "^2.0.0" 3179 | 3180 | regexp-clone@0.0.1: 3181 | version "0.0.1" 3182 | resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-0.0.1.tgz#a7c2e09891fdbf38fbb10d376fb73003e68ac589" 3183 | 3184 | registry-url@^3.0.0: 3185 | version "3.1.0" 3186 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" 3187 | dependencies: 3188 | rc "^1.0.1" 3189 | 3190 | remove-trailing-separator@^1.0.1: 3191 | version "1.0.2" 3192 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511" 3193 | 3194 | repeat-element@^1.1.2: 3195 | version "1.1.2" 3196 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 3197 | 3198 | repeat-string@^1.5.2: 3199 | version "1.6.1" 3200 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 3201 | 3202 | repeating@^1.1.2: 3203 | version "1.1.3" 3204 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-1.1.3.tgz#3d4114218877537494f97f77f9785fab810fa4ac" 3205 | dependencies: 3206 | is-finite "^1.0.0" 3207 | 3208 | repeating@^2.0.0: 3209 | version "2.0.1" 3210 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 3211 | dependencies: 3212 | is-finite "^1.0.0" 3213 | 3214 | request-promise-core@1.1.1: 3215 | version "1.1.1" 3216 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" 3217 | dependencies: 3218 | lodash "^4.13.1" 3219 | 3220 | request-promise@^4.2.1: 3221 | version "4.2.1" 3222 | resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.1.tgz#7eec56c89317a822cbfea99b039ce543c2e15f67" 3223 | dependencies: 3224 | bluebird "^3.5.0" 3225 | request-promise-core "1.1.1" 3226 | stealthy-require "^1.1.0" 3227 | tough-cookie ">=2.3.0" 3228 | 3229 | request@^2.79.0, request@^2.81.0: 3230 | version "2.81.0" 3231 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" 3232 | dependencies: 3233 | aws-sign2 "~0.6.0" 3234 | aws4 "^1.2.1" 3235 | caseless "~0.12.0" 3236 | combined-stream "~1.0.5" 3237 | extend "~3.0.0" 3238 | forever-agent "~0.6.1" 3239 | form-data "~2.1.1" 3240 | har-validator "~4.2.1" 3241 | hawk "~3.1.3" 3242 | http-signature "~1.1.0" 3243 | is-typedarray "~1.0.0" 3244 | isstream "~0.1.2" 3245 | json-stringify-safe "~5.0.1" 3246 | mime-types "~2.1.7" 3247 | oauth-sign "~0.8.1" 3248 | performance-now "^0.2.0" 3249 | qs "~6.4.0" 3250 | safe-buffer "^5.0.1" 3251 | stringstream "~0.0.4" 3252 | tough-cookie "~2.3.0" 3253 | tunnel-agent "^0.6.0" 3254 | uuid "^3.0.0" 3255 | 3256 | require-directory@^2.1.1: 3257 | version "2.1.1" 3258 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 3259 | 3260 | require-main-filename@^1.0.1: 3261 | version "1.0.1" 3262 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 3263 | 3264 | require-uncached@^1.0.3: 3265 | version "1.0.3" 3266 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 3267 | dependencies: 3268 | caller-path "^0.1.0" 3269 | resolve-from "^1.0.0" 3270 | 3271 | require_optional@~1.0.0: 3272 | version "1.0.1" 3273 | resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" 3274 | dependencies: 3275 | resolve-from "^2.0.0" 3276 | semver "^5.1.0" 3277 | 3278 | resolve-from@^1.0.0: 3279 | version "1.0.1" 3280 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 3281 | 3282 | resolve-from@^2.0.0: 3283 | version "2.0.0" 3284 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" 3285 | 3286 | resolve@1.1.7, resolve@1.1.x, resolve@~1.1.7: 3287 | version "1.1.7" 3288 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" 3289 | 3290 | resolve@^1.1.6, resolve@^1.2.0, resolve@^1.3.2: 3291 | version "1.3.3" 3292 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" 3293 | dependencies: 3294 | path-parse "^1.0.5" 3295 | 3296 | restore-cursor@^2.0.0: 3297 | version "2.0.0" 3298 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 3299 | dependencies: 3300 | onetime "^2.0.0" 3301 | signal-exit "^3.0.2" 3302 | 3303 | right-align@^0.1.1: 3304 | version "0.1.3" 3305 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 3306 | dependencies: 3307 | align-text "^0.1.1" 3308 | 3309 | rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: 3310 | version "2.6.1" 3311 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 3312 | dependencies: 3313 | glob "^7.0.5" 3314 | 3315 | run-async@^2.2.0: 3316 | version "2.3.0" 3317 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 3318 | dependencies: 3319 | is-promise "^2.1.0" 3320 | 3321 | rx-lite-aggregates@^4.0.8: 3322 | version "4.0.8" 3323 | resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" 3324 | dependencies: 3325 | rx-lite "*" 3326 | 3327 | rx-lite@*, rx-lite@^4.0.8: 3328 | version "4.0.8" 3329 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" 3330 | 3331 | safe-buffer@^5.0.1, safe-buffer@~5.1.0: 3332 | version "5.1.1" 3333 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 3334 | 3335 | samsam@1.x, samsam@^1.1.3: 3336 | version "1.2.1" 3337 | resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.2.1.tgz#edd39093a3184370cb859243b2bdf255e7d8ea67" 3338 | 3339 | sane@~1.6.0: 3340 | version "1.6.0" 3341 | resolved "https://registry.yarnpkg.com/sane/-/sane-1.6.0.tgz#9610c452307a135d29c1fdfe2547034180c46775" 3342 | dependencies: 3343 | anymatch "^1.3.0" 3344 | exec-sh "^0.2.0" 3345 | fb-watchman "^1.8.0" 3346 | minimatch "^3.0.2" 3347 | minimist "^1.1.1" 3348 | walker "~1.0.5" 3349 | watch "~0.10.0" 3350 | 3351 | sax@^1.2.1: 3352 | version "1.2.4" 3353 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 3354 | 3355 | semver-diff@^2.0.0: 3356 | version "2.1.0" 3357 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" 3358 | dependencies: 3359 | semver "^5.0.3" 3360 | 3361 | "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.2, semver@^5.3.0: 3362 | version "5.3.0" 3363 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 3364 | 3365 | send@0.15.3: 3366 | version "0.15.3" 3367 | resolved "https://registry.yarnpkg.com/send/-/send-0.15.3.tgz#5013f9f99023df50d1bd9892c19e3defd1d53309" 3368 | dependencies: 3369 | debug "2.6.7" 3370 | depd "~1.1.0" 3371 | destroy "~1.0.4" 3372 | encodeurl "~1.0.1" 3373 | escape-html "~1.0.3" 3374 | etag "~1.8.0" 3375 | fresh "0.5.0" 3376 | http-errors "~1.6.1" 3377 | mime "1.3.4" 3378 | ms "2.0.0" 3379 | on-finished "~2.3.0" 3380 | range-parser "~1.2.0" 3381 | statuses "~1.3.1" 3382 | 3383 | serve-static@1.12.3: 3384 | version "1.12.3" 3385 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.3.tgz#9f4ba19e2f3030c547f8af99107838ec38d5b1e2" 3386 | dependencies: 3387 | encodeurl "~1.0.1" 3388 | escape-html "~1.0.3" 3389 | parseurl "~1.3.1" 3390 | send "0.15.3" 3391 | 3392 | set-blocking@^2.0.0, set-blocking@~2.0.0: 3393 | version "2.0.0" 3394 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 3395 | 3396 | set-immediate-shim@^1.0.1: 3397 | version "1.0.1" 3398 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 3399 | 3400 | setprototypeof@1.0.3: 3401 | version "1.0.3" 3402 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" 3403 | 3404 | shelljs@0.7.8: 3405 | version "0.7.8" 3406 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" 3407 | dependencies: 3408 | glob "^7.0.0" 3409 | interpret "^1.0.0" 3410 | rechoir "^0.6.2" 3411 | 3412 | shellwords@^0.1.0: 3413 | version "0.1.0" 3414 | resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14" 3415 | 3416 | shimmer@1.0.0: 3417 | version "1.0.0" 3418 | resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.0.0.tgz#49c2d71c678360b802be18b278382d1cbb805c39" 3419 | 3420 | shimmer@^1.0.0, shimmer@^1.1.0: 3421 | version "1.1.0" 3422 | resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.1.0.tgz#97d7377137ffbbab425522e429fe0aa89a488b35" 3423 | 3424 | should-equal@^1.0.0: 3425 | version "1.0.1" 3426 | resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-1.0.1.tgz#0b6e9516f2601a9fb0bb2dcc369afa1c7e200af7" 3427 | dependencies: 3428 | should-type "^1.0.0" 3429 | 3430 | should-format@^3.0.2: 3431 | version "3.0.3" 3432 | resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" 3433 | dependencies: 3434 | should-type "^1.3.0" 3435 | should-type-adaptors "^1.0.1" 3436 | 3437 | should-sinon@0.0.5: 3438 | version "0.0.5" 3439 | resolved "https://registry.yarnpkg.com/should-sinon/-/should-sinon-0.0.5.tgz#ffc8a851bf450767e7d0ad22ff8715650be950e4" 3440 | 3441 | should-type-adaptors@^1.0.1: 3442 | version "1.0.1" 3443 | resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.0.1.tgz#efe5553cdf68cff66e5c5f51b712dc351c77beaa" 3444 | dependencies: 3445 | should-type "^1.3.0" 3446 | should-util "^1.0.0" 3447 | 3448 | should-type@^1.0.0, should-type@^1.3.0, should-type@^1.4.0: 3449 | version "1.4.0" 3450 | resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" 3451 | 3452 | should-util@^1.0.0: 3453 | version "1.0.0" 3454 | resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.0.tgz#c98cda374aa6b190df8ba87c9889c2b4db620063" 3455 | 3456 | should@^11.2.1: 3457 | version "11.2.1" 3458 | resolved "https://registry.yarnpkg.com/should/-/should-11.2.1.tgz#90f55145552d01cfc200666e4e818a1c9670eda2" 3459 | dependencies: 3460 | should-equal "^1.0.0" 3461 | should-format "^3.0.2" 3462 | should-type "^1.4.0" 3463 | should-type-adaptors "^1.0.1" 3464 | should-util "^1.0.0" 3465 | 3466 | signal-exit@^3.0.0, signal-exit@^3.0.2: 3467 | version "3.0.2" 3468 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 3469 | 3470 | sinon@^2.3.5: 3471 | version "2.3.6" 3472 | resolved "https://registry.yarnpkg.com/sinon/-/sinon-2.3.6.tgz#95378e7e0f976a9712e9b4591ff5b39e73dc3dde" 3473 | dependencies: 3474 | diff "^3.1.0" 3475 | formatio "1.2.0" 3476 | lolex "^1.6.0" 3477 | native-promise-only "^0.8.1" 3478 | path-to-regexp "^1.7.0" 3479 | samsam "^1.1.3" 3480 | text-encoding "0.6.4" 3481 | type-detect "^4.0.0" 3482 | 3483 | slash@^1.0.0: 3484 | version "1.0.0" 3485 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 3486 | 3487 | slice-ansi@0.0.4: 3488 | version "0.0.4" 3489 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 3490 | 3491 | sliced@0.0.5: 3492 | version "0.0.5" 3493 | resolved "https://registry.yarnpkg.com/sliced/-/sliced-0.0.5.tgz#5edc044ca4eb6f7816d50ba2fc63e25d8fe4707f" 3494 | 3495 | sliced@1.0.1: 3496 | version "1.0.1" 3497 | resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" 3498 | 3499 | slide@^1.1.5: 3500 | version "1.1.6" 3501 | resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" 3502 | 3503 | sntp@1.x.x: 3504 | version "1.0.9" 3505 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 3506 | dependencies: 3507 | hoek "2.x.x" 3508 | 3509 | source-map-support@^0.4.2, source-map-support@^0.4.6: 3510 | version "0.4.15" 3511 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" 3512 | dependencies: 3513 | source-map "^0.5.6" 3514 | 3515 | source-map@^0.4.4: 3516 | version "0.4.4" 3517 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" 3518 | dependencies: 3519 | amdefine ">=0.0.4" 3520 | 3521 | source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: 3522 | version "0.5.6" 3523 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 3524 | 3525 | source-map@~0.2.0: 3526 | version "0.2.0" 3527 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" 3528 | dependencies: 3529 | amdefine ">=0.0.4" 3530 | 3531 | spdx-correct@~1.0.0: 3532 | version "1.0.2" 3533 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 3534 | dependencies: 3535 | spdx-license-ids "^1.0.2" 3536 | 3537 | spdx-expression-parse@~1.0.0: 3538 | version "1.0.4" 3539 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 3540 | 3541 | spdx-license-ids@^1.0.2: 3542 | version "1.2.2" 3543 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 3544 | 3545 | split@0.3: 3546 | version "0.3.3" 3547 | resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" 3548 | dependencies: 3549 | through "2" 3550 | 3551 | sprintf-js@1.1.1: 3552 | version "1.1.1" 3553 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" 3554 | 3555 | sprintf-js@~1.0.2: 3556 | version "1.0.3" 3557 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 3558 | 3559 | sshpk@^1.7.0: 3560 | version "1.13.1" 3561 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 3562 | dependencies: 3563 | asn1 "~0.2.3" 3564 | assert-plus "^1.0.0" 3565 | dashdash "^1.12.0" 3566 | getpass "^0.1.1" 3567 | optionalDependencies: 3568 | bcrypt-pbkdf "^1.0.0" 3569 | ecc-jsbn "~0.1.1" 3570 | jsbn "~0.1.0" 3571 | tweetnacl "~0.14.0" 3572 | 3573 | "statuses@>= 1.3.1 < 2", statuses@~1.3.1: 3574 | version "1.3.1" 3575 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" 3576 | 3577 | stealthy-require@^1.1.0: 3578 | version "1.1.1" 3579 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 3580 | 3581 | stream-combiner@~0.0.4: 3582 | version "0.0.4" 3583 | resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" 3584 | dependencies: 3585 | duplexer "~0.1.1" 3586 | 3587 | stream-shift@^1.0.0: 3588 | version "1.0.0" 3589 | resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" 3590 | 3591 | string-length@^1.0.0, string-length@^1.0.1: 3592 | version "1.0.1" 3593 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" 3594 | dependencies: 3595 | strip-ansi "^3.0.0" 3596 | 3597 | string-width@^1.0.1, string-width@^1.0.2: 3598 | version "1.0.2" 3599 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 3600 | dependencies: 3601 | code-point-at "^1.0.0" 3602 | is-fullwidth-code-point "^1.0.0" 3603 | strip-ansi "^3.0.0" 3604 | 3605 | string-width@^2.0.0: 3606 | version "2.1.0" 3607 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.0.tgz#030664561fc146c9423ec7d978fe2457437fe6d0" 3608 | dependencies: 3609 | is-fullwidth-code-point "^2.0.0" 3610 | strip-ansi "^4.0.0" 3611 | 3612 | string_decoder@~1.0.0: 3613 | version "1.0.3" 3614 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 3615 | dependencies: 3616 | safe-buffer "~5.1.0" 3617 | 3618 | stringstream@~0.0.4: 3619 | version "0.0.5" 3620 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 3621 | 3622 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 3623 | version "3.0.1" 3624 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 3625 | dependencies: 3626 | ansi-regex "^2.0.0" 3627 | 3628 | strip-ansi@^4.0.0: 3629 | version "4.0.0" 3630 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 3631 | dependencies: 3632 | ansi-regex "^3.0.0" 3633 | 3634 | strip-bom@3.0.0, strip-bom@^3.0.0: 3635 | version "3.0.0" 3636 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 3637 | 3638 | strip-bom@^2.0.0: 3639 | version "2.0.0" 3640 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 3641 | dependencies: 3642 | is-utf8 "^0.2.0" 3643 | 3644 | strip-json-comments@~2.0.1: 3645 | version "2.0.1" 3646 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 3647 | 3648 | supports-color@3.1.2, supports-color@^3.1.0, supports-color@^3.1.2: 3649 | version "3.1.2" 3650 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" 3651 | dependencies: 3652 | has-flag "^1.0.0" 3653 | 3654 | supports-color@^2.0.0: 3655 | version "2.0.0" 3656 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 3657 | 3658 | symbol-tree@^3.2.1: 3659 | version "3.2.2" 3660 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" 3661 | 3662 | table@^4.0.1: 3663 | version "4.0.1" 3664 | resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" 3665 | dependencies: 3666 | ajv "^4.7.0" 3667 | ajv-keywords "^1.0.0" 3668 | chalk "^1.1.1" 3669 | lodash "^4.0.0" 3670 | slice-ansi "0.0.4" 3671 | string-width "^2.0.0" 3672 | 3673 | tar-pack@^3.4.0: 3674 | version "3.4.0" 3675 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" 3676 | dependencies: 3677 | debug "^2.2.0" 3678 | fstream "^1.0.10" 3679 | fstream-ignore "^1.0.5" 3680 | once "^1.3.3" 3681 | readable-stream "^2.1.4" 3682 | rimraf "^2.5.1" 3683 | tar "^2.2.1" 3684 | uid-number "^0.0.6" 3685 | 3686 | tar@^2.2.1: 3687 | version "2.2.1" 3688 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 3689 | dependencies: 3690 | block-stream "*" 3691 | fstream "^1.0.2" 3692 | inherits "2" 3693 | 3694 | test-exclude@^4.1.1: 3695 | version "4.1.1" 3696 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" 3697 | dependencies: 3698 | arrify "^1.0.1" 3699 | micromatch "^2.3.11" 3700 | object-assign "^4.1.0" 3701 | read-pkg-up "^1.0.1" 3702 | require-main-filename "^1.0.1" 3703 | 3704 | text-encoding@0.6.4: 3705 | version "0.6.4" 3706 | resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" 3707 | 3708 | text-table@~0.2.0: 3709 | version "0.2.0" 3710 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 3711 | 3712 | throat@^3.0.0: 3713 | version "3.2.0" 3714 | resolved "https://registry.yarnpkg.com/throat/-/throat-3.2.0.tgz#50cb0670edbc40237b9e347d7e1f88e4620af836" 3715 | 3716 | through@2, through@^2.3.6, through@~2.3, through@~2.3.1: 3717 | version "2.3.8" 3718 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 3719 | 3720 | timed-out@^2.0.0: 3721 | version "2.0.0" 3722 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-2.0.0.tgz#f38b0ae81d3747d628001f41dafc652ace671c0a" 3723 | 3724 | tmp@^0.0.31: 3725 | version "0.0.31" 3726 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" 3727 | dependencies: 3728 | os-tmpdir "~1.0.1" 3729 | 3730 | tmpl@1.0.x: 3731 | version "1.0.4" 3732 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" 3733 | 3734 | to-fast-properties@^1.0.1: 3735 | version "1.0.3" 3736 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 3737 | 3738 | touch@1.0.0: 3739 | version "1.0.0" 3740 | resolved "https://registry.yarnpkg.com/touch/-/touch-1.0.0.tgz#449cbe2dbae5a8c8038e30d71fa0ff464947c4de" 3741 | dependencies: 3742 | nopt "~1.0.10" 3743 | 3744 | tough-cookie@>=2.3.0, tough-cookie@^2.3.2, tough-cookie@~2.3.0: 3745 | version "2.3.2" 3746 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 3747 | dependencies: 3748 | punycode "^1.4.1" 3749 | 3750 | tr46@~0.0.3: 3751 | version "0.0.3" 3752 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 3753 | 3754 | trim-right@^1.0.1: 3755 | version "1.0.1" 3756 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 3757 | 3758 | tryit@^1.0.1: 3759 | version "1.0.3" 3760 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" 3761 | 3762 | tunnel-agent@^0.6.0: 3763 | version "0.6.0" 3764 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 3765 | dependencies: 3766 | safe-buffer "^5.0.1" 3767 | 3768 | tv4@^1.2: 3769 | version "1.3.0" 3770 | resolved "https://registry.yarnpkg.com/tv4/-/tv4-1.3.0.tgz#d020c846fadd50c855abb25ebaecc68fc10f7963" 3771 | 3772 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 3773 | version "0.14.5" 3774 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 3775 | 3776 | type-check@~0.3.2: 3777 | version "0.3.2" 3778 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 3779 | dependencies: 3780 | prelude-ls "~1.1.2" 3781 | 3782 | type-detect@^4.0.0: 3783 | version "4.0.3" 3784 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.3.tgz#0e3f2670b44099b0b46c284d136a7ef49c74c2ea" 3785 | 3786 | type-is@~1.6.15: 3787 | version "1.6.15" 3788 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" 3789 | dependencies: 3790 | media-typer "0.3.0" 3791 | mime-types "~2.1.15" 3792 | 3793 | typedarray@^0.0.6: 3794 | version "0.0.6" 3795 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 3796 | 3797 | uglify-js@^2.6: 3798 | version "2.8.29" 3799 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" 3800 | dependencies: 3801 | source-map "~0.5.1" 3802 | yargs "~3.10.0" 3803 | optionalDependencies: 3804 | uglify-to-browserify "~1.0.0" 3805 | 3806 | uglify-to-browserify@~1.0.0: 3807 | version "1.0.2" 3808 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 3809 | 3810 | uid-number@^0.0.6: 3811 | version "0.0.6" 3812 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 3813 | 3814 | undefsafe@0.0.3: 3815 | version "0.0.3" 3816 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f" 3817 | 3818 | unpipe@~1.0.0: 3819 | version "1.0.0" 3820 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 3821 | 3822 | update-notifier@0.5.0: 3823 | version "0.5.0" 3824 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-0.5.0.tgz#07b5dc2066b3627ab3b4f530130f7eddda07a4cc" 3825 | dependencies: 3826 | chalk "^1.0.0" 3827 | configstore "^1.0.0" 3828 | is-npm "^1.0.0" 3829 | latest-version "^1.0.0" 3830 | repeating "^1.1.2" 3831 | semver-diff "^2.0.0" 3832 | string-length "^1.0.0" 3833 | 3834 | util-deprecate@~1.0.1: 3835 | version "1.0.2" 3836 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 3837 | 3838 | utils-merge@1.0.0: 3839 | version "1.0.0" 3840 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" 3841 | 3842 | uuid@^2.0.1: 3843 | version "2.0.3" 3844 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" 3845 | 3846 | uuid@^3.0.0, uuid@^3.0.1: 3847 | version "3.1.0" 3848 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" 3849 | 3850 | validate-npm-package-license@^3.0.1: 3851 | version "3.0.1" 3852 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 3853 | dependencies: 3854 | spdx-correct "~1.0.0" 3855 | spdx-expression-parse "~1.0.0" 3856 | 3857 | vary@~1.1.1: 3858 | version "1.1.1" 3859 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" 3860 | 3861 | verror@1.3.6: 3862 | version "1.3.6" 3863 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" 3864 | dependencies: 3865 | extsprintf "1.0.2" 3866 | 3867 | vizion@^0.2: 3868 | version "0.2.13" 3869 | resolved "https://registry.yarnpkg.com/vizion/-/vizion-0.2.13.tgz#1314cdee2b34116f9f5b1248536f95dbfcd6ef5f" 3870 | dependencies: 3871 | async "1.5" 3872 | 3873 | vxx@^1.2.0: 3874 | version "1.2.2" 3875 | resolved "https://registry.yarnpkg.com/vxx/-/vxx-1.2.2.tgz#741fb51c6f11d3383da6f9b92018a5d7ba807611" 3876 | dependencies: 3877 | continuation-local-storage "^3.1.4" 3878 | debug "^2.6.3" 3879 | extend "^3.0.0" 3880 | is "^3.2.0" 3881 | lodash.findindex "^4.4.0" 3882 | lodash.isequal "^4.0.0" 3883 | lodash.merge "^4.6.0" 3884 | methods "^1.1.1" 3885 | semver "^5.0.1" 3886 | shimmer "^1.0.0" 3887 | uuid "^3.0.1" 3888 | 3889 | walker@~1.0.5: 3890 | version "1.0.7" 3891 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" 3892 | dependencies: 3893 | makeerror "1.0.x" 3894 | 3895 | watch@~0.10.0: 3896 | version "0.10.0" 3897 | resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" 3898 | 3899 | webidl-conversions@^3.0.0: 3900 | version "3.0.1" 3901 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 3902 | 3903 | webidl-conversions@^4.0.0: 3904 | version "4.0.1" 3905 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0" 3906 | 3907 | whatwg-encoding@^1.0.1: 3908 | version "1.0.1" 3909 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4" 3910 | dependencies: 3911 | iconv-lite "0.4.13" 3912 | 3913 | whatwg-url@^4.3.0: 3914 | version "4.8.0" 3915 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0" 3916 | dependencies: 3917 | tr46 "~0.0.3" 3918 | webidl-conversions "^3.0.0" 3919 | 3920 | which-module@^1.0.0: 3921 | version "1.0.0" 3922 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" 3923 | 3924 | which@^1.1.1, which@^1.2.12: 3925 | version "1.2.14" 3926 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" 3927 | dependencies: 3928 | isexe "^2.0.0" 3929 | 3930 | wide-align@^1.1.0: 3931 | version "1.1.2" 3932 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" 3933 | dependencies: 3934 | string-width "^1.0.2" 3935 | 3936 | window-size@0.1.0: 3937 | version "0.1.0" 3938 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 3939 | 3940 | wordwrap@0.0.2: 3941 | version "0.0.2" 3942 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 3943 | 3944 | wordwrap@^1.0.0, wordwrap@~1.0.0: 3945 | version "1.0.0" 3946 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 3947 | 3948 | wordwrap@~0.0.2: 3949 | version "0.0.3" 3950 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 3951 | 3952 | worker-farm@^1.3.1: 3953 | version "1.4.1" 3954 | resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.4.1.tgz#a438bc993a7a7d133bcb6547c95eca7cff4897d8" 3955 | dependencies: 3956 | errno "^0.1.4" 3957 | xtend "^4.0.1" 3958 | 3959 | wrap-ansi@^2.0.0: 3960 | version "2.1.0" 3961 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 3962 | dependencies: 3963 | string-width "^1.0.1" 3964 | strip-ansi "^3.0.1" 3965 | 3966 | wrappy@1: 3967 | version "1.0.2" 3968 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3969 | 3970 | write-file-atomic@^1.1.2: 3971 | version "1.3.4" 3972 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" 3973 | dependencies: 3974 | graceful-fs "^4.1.11" 3975 | imurmurhash "^0.1.4" 3976 | slide "^1.1.5" 3977 | 3978 | write@^0.2.1: 3979 | version "0.2.1" 3980 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 3981 | dependencies: 3982 | mkdirp "^0.5.1" 3983 | 3984 | xdg-basedir@^2.0.0: 3985 | version "2.0.0" 3986 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" 3987 | dependencies: 3988 | os-homedir "^1.0.0" 3989 | 3990 | xml-name-validator@^2.0.1: 3991 | version "2.0.1" 3992 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" 3993 | 3994 | xtend@^4.0.0, xtend@^4.0.1: 3995 | version "4.0.1" 3996 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 3997 | 3998 | y18n@^3.2.1: 3999 | version "3.2.1" 4000 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 4001 | 4002 | yamljs@0.2.10: 4003 | version "0.2.10" 4004 | resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.2.10.tgz#481cc7c25ca73af59f591f0c96e3ce56c757a40f" 4005 | dependencies: 4006 | argparse "^1.0.7" 4007 | glob "^7.0.5" 4008 | 4009 | yargs-parser@^5.0.0: 4010 | version "5.0.0" 4011 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" 4012 | dependencies: 4013 | camelcase "^3.0.0" 4014 | 4015 | yargs@^7.0.2: 4016 | version "7.1.0" 4017 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" 4018 | dependencies: 4019 | camelcase "^3.0.0" 4020 | cliui "^3.2.0" 4021 | decamelize "^1.1.1" 4022 | get-caller-file "^1.0.1" 4023 | os-locale "^1.4.0" 4024 | read-pkg-up "^1.0.1" 4025 | require-directory "^2.1.1" 4026 | require-main-filename "^1.0.1" 4027 | set-blocking "^2.0.0" 4028 | string-width "^1.0.2" 4029 | which-module "^1.0.0" 4030 | y18n "^3.2.1" 4031 | yargs-parser "^5.0.0" 4032 | 4033 | yargs@~3.10.0: 4034 | version "3.10.0" 4035 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 4036 | dependencies: 4037 | camelcase "^1.0.2" 4038 | cliui "^2.1.0" 4039 | decamelize "^1.0.0" 4040 | window-size "0.1.0" 4041 | --------------------------------------------------------------------------------