├── .eslintrc.json ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── lib ├── bigcommerce.js └── request.js ├── package.json ├── test ├── .eslintrc.json ├── bigcommerce.js └── request.js └── yarn.lock /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "extends": ["conversio"] 4 | } 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # Compiled binary addons (http://nodejs.org/api/addons.html) 20 | build/Release 21 | 22 | # Dependency directory 23 | # Commenting this out is preferred by some people, see 24 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- 25 | node_modules 26 | 27 | # Users Environment Variables 28 | .lock-wscript 29 | 30 | # Sublime project files 31 | node-bigcommerce.sublime-* 32 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '8' 4 | - '10' 5 | deploy: 6 | provider: npm 7 | email: 8 | secure: dsBGPXl1VvR70rJ/UnRuaLwiesvmfxOSeWfuLOlWHU3+2uUA7xLOOIyjHxP3mlz9OLsL3A/tMsYBMj6bM3SrtvbtBwnAQZ+RKWjyIsiBTHYaIrXuJP+kbQIguaDTo8rC45U2VwZRQu50cc2Mln3jeGzlho4iPdZLe4rdRLnbAD0= 9 | api_key: 10 | secure: GPt9SSxfd2gDfd6YfjZtGZghjjT4mtlFhA6Yyojax1frU4gzH2j9sd0XuNI1Q/f0n7WAeo4pFPru5o2uxPJzQUlJzWy3DoLJX3rLrOviXX6zIgF7o4XCtYb3SVFIG7aEpNTxBbh1zQcL8ecHROzs7MFxE+y/dumsCSVFnfT3o8E= 11 | on: 12 | tags: true 13 | repo: getconversio/node-bigcommerce 14 | notifications: 15 | slack: 16 | secure: fyAnH2j56FTfYCRCxhzDpuXKoBJ4DCNMPj7yCsCEr5gvQMl83Quzm+S6Kb+ORxxbvue9PpV0hyAmJlfRmNvYwj6Om0BneEKzKEj3/Useq8jMBzVDroe13s0nOIaAAHXYAfqJdgxNnzhep38WzIiFzS7StufGyYuxpka5ca6RCFQ= 17 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 4.0.0 2 | ===== 3 | - [breaking] Updated to `async/await` 4 | - [breaking] Removed body from error text, added as property in error (#62) 5 | - [breaking] Added gzip support (#60) 6 | 7 | 3.0.0 8 | ===== 9 | 10 | - Removed all callbacks, only Promise is supported now. 11 | - Removed `authorise` method in favor of `authorize`. 12 | - Removed `callback` method, `verify` will now throw an Error. 13 | - Removed the logger, use `DEBUG=node-bigcommerce:*` as an environment variable to get debug messages. 14 | - Dropped support of node-v4 for missing `class` implementation. 15 | - Removed [catalogue](https://github.com/getconversio/node-bigcommerce/pull/18) hack, please use `apiVersion` configuration property. 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Receiptful 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 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Bigcommerce for Node.js 2 | 3 | [![Build Status](https://travis-ci.org/getconversio/node-bigcommerce.svg?branch=master)](https://travis-ci.org/getconversio/node-bigcommerce) 4 | 5 | A node module for authentication and use with the BigCommerce API 6 | 7 | ## Installation 8 | 9 | To install the module using NPM: 10 | 11 | ``` 12 | npm install node-bigcommerce 13 | ``` 14 | 15 | Or Yarn: 16 | ``` 17 | yarn add node-bigcommerce 18 | ``` 19 | 20 | ## Setup 21 | 22 | Include the 'node-bigcommerce' module within your script and instantiate it with a config: 23 | 24 | ```javascript 25 | const BigCommerce = require('node-bigcommerce'); 26 | 27 | const bigCommerce = new BigCommerce({ 28 | logLevel: 'info', 29 | clientId: '128ecf542a35ac5270a87dc740918404', 30 | secret: 'acbd18db4cc2f85cedef654fccc4a4d8', 31 | callback: 'https://myapplication.com/auth', 32 | responseType: 'json', 33 | headers: { 'Accept-Encoding': '*' }, // Override headers (Overriding the default encoding of GZipped is useful in development) 34 | apiVersion: 'v3' // Default is v2 35 | }); 36 | ``` 37 | 38 | ##### Instantiating a BigCommerce instance without a config object will result in an error 39 | 40 | ## Authorization 41 | 42 | Set up your Big Commerce as above and pass the following configuration options in: 43 | 44 | ``` 45 | { 46 | clientId: 'Your application's client ID', 47 | secret: 'Your secret', 48 | callback: 'The location you want the app to return to on success', 49 | responseType: 'json' 50 | } 51 | ``` 52 | 53 | You will be able to get your Client ID and Secret within your application setup. Below is an example using Express' routes: 54 | 55 | ```javascript 56 | const express = require('express'), 57 | router = express.Router(), 58 | BigCommerce = require('node-bigcommerce'); 59 | 60 | const bigCommerce = new BigCommerce({ 61 | clientId: '128ecf542a35ac5270a87dc740918404', 62 | secret: 'acbd18db4cc2f85cedef654fccc4a4d8', 63 | callback: 'https://myapplication.com/auth', 64 | responseType: 'json' 65 | }); 66 | 67 | router.get('/auth', (req, res, next) => { 68 | bigCommerce.authorize(req.query) 69 | .then(data => res.render('integrations/auth', { title: 'Authorized!', data: data }) 70 | .catch(next); 71 | }); 72 | }); 73 | ``` 74 | 75 | The `authorize` method requires the query parameters from the request to be passed. These are required to request a permanent access token which will be passed back in the data object. 76 | 77 | An example data object: 78 | 79 | ``` 80 | { 81 | access_token: '9df3b01c60df20d13843841ff0d4482c', 82 | scope: 'store_v2_orders_read_only store_v2_products_read_only users_basic_information store_v2_default', 83 | user: { 84 | id: 12345, 85 | username: 'John Smith', 86 | email: 'john@success.com' 87 | }, 88 | context: 'stores/x43tqo' 89 | } 90 | ``` 91 | 92 | From this object you can store the `access_token` for re-use when calling the Big Commerce API. 93 | 94 | ## Load & Uninstall 95 | 96 | The only configuration element required to use the `verify` method (used for both load and uninstall endpoints) is `secret`. Below is an example using Express' routes: 97 | 98 | ```javascript 99 | const express = require('express'), 100 | router = express.Router(), 101 | BigCommerce = require('node-bigcommerce'); 102 | 103 | const bigCommerce = new BigCommerce({ 104 | secret: 'acbd18db4cc2f85cedef654fccc4a4d8', 105 | responseType: 'json' 106 | }); 107 | 108 | router.get('/load', (req, res, next) => { 109 | try { 110 | const data = bigCommerce.verify(req.query['signed_payload']); 111 | res.render('integrations/welcome', { title: 'Welcome!', data: data }); 112 | } catch (err) { 113 | next(err); 114 | } 115 | }); 116 | ``` 117 | 118 | The `verify` method requires the `signed_payload` query parameter to be passed from the request. This is used to verify that the request has come from Big Commerce. The `verify` method returns the following object: 119 | 120 | ``` 121 | { 122 | user: { 123 | id: 12345, 124 | email: 'john@success.com' 125 | }, 126 | context: 'stores/x43tqo', 127 | store_hash: 'x43tqo', 128 | timestamp: 1421748597.4395974 129 | } 130 | ``` 131 | 132 | This will allow you to automatically log the user in (if required) when BigCommerce calls the load endpoint or remove/label a user that has uninstalled your application from their Big Commerce account. 133 | 134 | ## Calling the API 135 | 136 | The API can be called once the user has been authorized and has an access token. There is a helper for each type of request available within Big Commerce (GET, POST, PUT, DELETE). 137 | 138 | To make an API Request you will need the following minimum configuration: 139 | 140 | ``` 141 | { 142 | clientId: 'Your application's client ID', 143 | accessToken: 'Token assigned to the user during authorisation', 144 | storeHash: 'The short hash for the store', 145 | responseType: 'json' 146 | } 147 | ``` 148 | Parameters that are added to the url need to be escaped before they are passed as part of the path of any call: 149 | 150 | ```javascript 151 | const path = '/products?name=' + escape('Plain T-Shirt'); 152 | ``` 153 | 154 | 155 | ### GET 156 | 157 | The `Get` call requires a path: get(path): 158 | 159 | ```javascript 160 | const BigCommerce = require('node-bigcommerce'); 161 | 162 | const bigCommerce = new BigCommerce({ 163 | clientId: '128ecf542a35ac5270a87dc740918404' 164 | accessToken: '9df3b01c60df20d13843841ff0d4482c', 165 | responseType: 'json' 166 | }); 167 | 168 | bigCommerce.get('/products') 169 | .then(data => { 170 | // Catch any errors, or handle the data returned 171 | }); 172 | ``` 173 | 174 | ### POST & PUT 175 | 176 | The 'POST' & 'PUT' calls requires a path with optional data to be sent: post(path, data): 177 | 178 | ```javascript 179 | var BigCommerce = require('node-bigcommerce'); 180 | 181 | var bigCommerce = new BigCommerce({ 182 | clientId: '128ecf542a35ac5270a87dc740918404' 183 | accessToken: '9df3b01c60df20d13843841ff0d4482c', 184 | responseType: 'json' 185 | }); 186 | 187 | var product = { 188 | name: 'Plain T-Shirt', 189 | type: 'physical', 190 | description: 'This timeless fashion staple will never go out of style!', 191 | price: '29.99', 192 | categories: [18], 193 | availability: 'available', 194 | weight: '0.5' 195 | } 196 | 197 | // Replace 'post' with 'put' for a put call 198 | bigCommerce.post('/products', product) 199 | .then(data => { 200 | // Catch any errors, or handle the data returned 201 | }); 202 | ``` 203 | 204 | ### DELETE 205 | 206 | The 'DELETE' call requires a path: delete(path). A delete call will not return any data and will return a response status of 204. 207 | 208 | ```javascript 209 | const BigCommerce = require('node-bigcommerce'); 210 | 211 | const bigCommerce = new BigCommerce({ 212 | clientId: '128ecf542a35ac5270a87dc740918404', 213 | accessToken: '9df3b01c60df20d13843841ff0d4482c' 214 | }); 215 | 216 | bigCommerce.delete('/products/' + productId) 217 | .then(() => { 218 | // Catch any errors, data will be null 219 | }); 220 | ``` 221 | 222 | ## Debugging 223 | 224 | We use `debug`, so just run with environment variable DEBUG set to `node-bigcommerce:*` 225 | 226 | ```js 227 | $ DEBUG=node-bigcommerce:* node my_test.js 228 | ``` 229 | 230 | ## Response Type 231 | 232 | You may require the Big Commerce API to return data in a specific format. To return in either JSON or XML just add a 'responseType' to the config: 233 | 234 | ```javascript 235 | const BigCommerce = require('node-bigcommerce'); 236 | 237 | const bigCommerce = new BigCommerce({ 238 | logLevel: 'info', 239 | clientId: '128ecf542a35ac5270a87dc740918404', 240 | accessToken: '9df3b01c60df20d13843841ff0d4482c', 241 | responseType: 'xml' 242 | }); 243 | 244 | bigCommerce.post('/products?name=' + escape('Plain T-Shirt')) 245 | .then(data => { 246 | // Catch any errors, data will be null 247 | }); 248 | ``` 249 | 250 | Note that when returning in JSON the data will be parsed into an object, XML will not, and will return a string. When no response type is given the type will resort to whatever the BigCommerce default is. 251 | 252 | Webhooks can only be JSON so when dealing with the '/hooks' endpoint leave the responseType blank (or null). 253 | 254 | ## Testing 255 | 256 | ``` 257 | yarn test 258 | ``` 259 | 260 | ## Contributing 261 | 262 | This module was originally written to be used with [Conversio](https://conversio.com) and is used in a production environment currently. This will ensure that this module is well maintained, bug free and as up to date as possible. 263 | 264 | Conversio's developers will continue to make updates as often as required to have a consistently bug free platform, but we are happy to review any feature requests or issues and are accepting constructive pull requests. 265 | -------------------------------------------------------------------------------- /lib/bigcommerce.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | /** 4 | * BigCommerce OAuth2 Authentication and API access 5 | * 6 | * @param {Object} config 7 | * @return null 8 | * 9 | * Example Config 10 | * { 11 | * logLevel: 'info', 12 | * clientId: 'hjasdfhj09sasd80dsf04dfhg90rsds', 13 | * secret: 'odpdf83m40fmxcv0345cvfgh73bdwjc', 14 | * callback: 'https://mysite.com/bigcommerce' 15 | * accessToken: 'ly8cl3wwcyj12vpechm34fd20oqpnl', 16 | * storeHash: 'x62tqn', 17 | * responseType: 'json', 18 | * headers: { 'Accept-Encoding': '*' } 19 | * } 20 | */ 21 | 22 | const logger = require('debug')('node-bigcommerce:bigcommerce'), 23 | crypto = require('crypto'), 24 | Request = require('./request'); 25 | 26 | class BigCommerce { 27 | constructor(config) { 28 | if (!config) { 29 | throw new Error( 30 | 'Config missing. The config object is required to make any call to the ' + 31 | 'BigCommerce API' 32 | ); 33 | } 34 | 35 | this.config = config; 36 | this.apiVersion = this.config.apiVersion || 'v2'; 37 | } 38 | 39 | verify(signedRequest) { 40 | if (!signedRequest) { 41 | throw new Error('The signed request is required to verify the call.'); 42 | } 43 | 44 | const splitRequest = signedRequest.split('.'); 45 | if (splitRequest.length < 2) { 46 | throw new Error( 47 | 'The signed request will come in two parts seperated by a .(full stop). ' + 48 | 'this signed request contains less than 2 parts.' 49 | ); 50 | } 51 | 52 | const signature = Buffer.from(splitRequest[1], 'base64').toString('utf8'); 53 | const json = Buffer.from(splitRequest[0], 'base64').toString('utf8'); 54 | const data = JSON.parse(json); 55 | 56 | logger('JSON: ' + json); 57 | logger('Signature: ' + signature); 58 | 59 | const expected = crypto.createHmac('sha256', this.config.secret) 60 | .update(json) 61 | .digest('hex'); 62 | 63 | logger('Expected Signature: ' + expected); 64 | 65 | if ( 66 | expected.length !== signature.length || 67 | !crypto.timingSafeEqual(Buffer.from(expected, 'utf8'), Buffer.from(signature, 'utf8')) 68 | ) { 69 | throw new Error('Signature is invalid'); 70 | } 71 | 72 | logger('Signature is valid'); 73 | return data; 74 | } 75 | 76 | async authorize(query) { 77 | if (!query) throw new Error('The URL query paramaters are required.'); 78 | 79 | const payload = { 80 | client_id: this.config.clientId, 81 | client_secret: this.config.secret, 82 | redirect_uri: this.config.callback, 83 | grant_type: 'authorization_code', 84 | code: query.code, 85 | scope: query.scope, 86 | context: query.context 87 | }; 88 | 89 | const request = new Request('login.bigcommerce.com', { 90 | failOnLimitReached: this.config.failOnLimitReached 91 | }); 92 | 93 | return await request.run('post', '/oauth2/token', payload); 94 | } 95 | 96 | createAPIRequest() { 97 | const accept = this.config.responseType === 'xml' ? 'application/xml' : 'application/json'; 98 | 99 | return new Request('api.bigcommerce.com', { 100 | headers: Object.assign({ 101 | Accept: accept, 102 | 'X-Auth-Client': this.config.clientId, 103 | 'X-Auth-Token': this.config.accessToken 104 | }, this.config.headers || {}), 105 | failOnLimitReached: this.config.failOnLimitReached, 106 | agent: this.config.agent 107 | }); 108 | } 109 | 110 | async request(type, path, data) { 111 | if (!this.config.accessToken || !this.config.storeHash) { 112 | throw new Error( 113 | 'Get request error: the access token and store hash are required to ' + 114 | 'call the BigCommerce API' 115 | ); 116 | } 117 | 118 | const extension = this.config.responseType === 'xml' ? '.xml' : ''; 119 | const version = this.apiVersion; 120 | 121 | const request = this.createAPIRequest(); 122 | 123 | let fullPath = `/stores/${this.config.storeHash}/${version}`; 124 | if (version !== 'v3') { 125 | fullPath += path.replace(/(\?|$)/, extension + '$1'); 126 | } else { 127 | fullPath += path; 128 | } 129 | 130 | return await request.run(type, fullPath, data); 131 | } 132 | 133 | async get(path) { 134 | return await this.request('get', path); 135 | } 136 | 137 | async post(path, data) { 138 | return await this.request('post', path, data); 139 | } 140 | 141 | async put(path, data) { 142 | return await this.request('put', path, data); 143 | } 144 | 145 | async delete(path) { 146 | return await this.request('delete', path); 147 | } 148 | } 149 | 150 | module.exports = BigCommerce; 151 | -------------------------------------------------------------------------------- /lib/request.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | /** 4 | * To make the requests asynchronously 5 | */ 6 | 7 | const logger = require('debug')('node-bigcommerce:request'), 8 | https = require('https'), 9 | zlib = require('zlib'); 10 | 11 | const { version } = require('../package.json'); 12 | 13 | /** 14 | * Parse response 15 | */ 16 | function parseResponse(res, body, resolve, reject) { 17 | try { 18 | if (!/application\/json/.test(res.headers['content-type']) || body.trim() === '') { 19 | return resolve(body); 20 | } 21 | 22 | const json = JSON.parse(body); 23 | 24 | if (json.error || json.errors) { 25 | const err = new Error(json.error || JSON.stringify(json.errors)); 26 | 27 | return reject(err); 28 | } 29 | 30 | return resolve(json); 31 | } catch (e) { 32 | e.responseBody = body; 33 | return reject(e); 34 | } 35 | } 36 | 37 | class Request { 38 | constructor(hostname, { headers = { }, failOnLimitReached = false, agent = null } = { }) { 39 | if (!hostname) throw new Error('The hostname is required to make the call to the server.'); 40 | 41 | this.hostname = hostname; 42 | this.headers = headers; 43 | this.failOnLimitReached = failOnLimitReached; 44 | this.agent = agent; 45 | } 46 | 47 | run(method, path, data) { 48 | logger(`Requesting Data from: https://${this.hostname}${path} Using the ${method} method`); 49 | 50 | const dataString = JSON.stringify(data); 51 | 52 | const options = { 53 | path, 54 | hostname: this.hostname, 55 | method: method.toUpperCase(), 56 | port: 443, 57 | headers: Object.assign({ 58 | 'User-Agent': 'node-bigcommerce/' + version, 59 | 'Content-Type': 'application/json', 60 | 'Accept-Encoding': 'gzip, deflate' 61 | }, this.headers) 62 | }; 63 | 64 | if (this.agent) options.agent = this.agent; 65 | 66 | if (data) { 67 | options.headers['Content-Length'] = Buffer.from(dataString).length; 68 | } 69 | 70 | logger('Starting Request, with options.', options); 71 | 72 | return new Promise((resolve, reject) => { 73 | const req = https.request(options, res => { 74 | logger('Status Returned: ' + res.statusCode); 75 | logger('Headers Returned: ' + JSON.stringify(res.headers)); 76 | 77 | const contentEncoding = res.headers['content-encoding']; 78 | const shouldUnzip = ['deflate', 'gzip'].indexOf(contentEncoding) !== -1; 79 | const encoding = shouldUnzip ? 'binary' : 'utf8'; 80 | let body = ''; 81 | 82 | res.setEncoding(encoding); 83 | 84 | // If the API limit has been reached 85 | if (res.statusCode === 429) { 86 | const timeToWait = res.headers['x-retry-after']; 87 | 88 | if (this.failOnLimitReached) { 89 | const err = new Error(`You have reached the rate limit for the BigCommerce API. Please retry in ${timeToWait} seconds.`); 90 | err.retryAfter = Number(timeToWait); 91 | 92 | return reject(err); 93 | } 94 | 95 | logger(`You have reached the rate limit for the BigCommerce API, we will retry again in ${timeToWait} seconds.`); 96 | 97 | return setTimeout(() => { 98 | logger('Restarting request call after suggested time'); 99 | 100 | this.run(method, path, data) 101 | .then(resolve) 102 | .catch(reject); 103 | }, timeToWait * 1000); 104 | } 105 | 106 | res.on('data', chunk => body += chunk); 107 | 108 | res.on('end', () => { 109 | logger('Request complete'); 110 | 111 | if (res.statusCode >= 400 && res.statusCode <= 600) { 112 | if (shouldUnzip) { 113 | const unzip = contentEncoding === 'deflate' ? zlib.deflate : zlib.gunzip; 114 | return unzip(Buffer.from(body, encoding), (err, data) => { 115 | if (err) { 116 | return reject(err); 117 | } 118 | 119 | const error = new Error(`Request returned error code: ${res.statusCode} and body: ${data.toString('utf8')}`); 120 | error.code = res.statusCode; 121 | error.responseBody = data.toString('utf8'); 122 | 123 | return reject(error); 124 | }); 125 | } 126 | const error = new Error(`Request returned error code: ${res.statusCode} and body: ${body}`); 127 | error.code = res.statusCode; 128 | error.responseBody = body; 129 | 130 | return reject(error); 131 | } 132 | 133 | // Use GZIP decompression if required 134 | if (shouldUnzip) { 135 | const unzip = contentEncoding === 'deflate' ? zlib.deflate : zlib.gunzip; 136 | return unzip(Buffer.from(body, encoding), (err, data) => { 137 | if (err) { 138 | return reject(err); 139 | } 140 | return parseResponse(res, data.toString('utf8'), resolve, reject); 141 | }); 142 | } 143 | 144 | return parseResponse(res, body, resolve, reject); 145 | }); 146 | }); 147 | 148 | req.on('error', e => reject(e)); 149 | 150 | if (data) { 151 | logger('Sending Data: ' + dataString); 152 | req.write(dataString); 153 | } 154 | 155 | req.end(); 156 | }); 157 | } 158 | } 159 | 160 | module.exports = Request; 161 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node-bigcommerce", 3 | "version": "4.1.0", 4 | "description": "A node module for authentication and use with the BigCommerce API", 5 | "main": "./lib/bigcommerce", 6 | "scripts": { 7 | "autotest": "node_modules/.bin/supervisor -q -n exit -x node_modules/.bin/_mocha --", 8 | "exectests": "node_modules/.bin/nyc ./node_modules/.bin/_mocha", 9 | "lint": "node_modules/.bin/eslint lib test", 10 | "test": "npm run exectests && npm run lint" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/getconversio/node-bigcommerce.git" 15 | }, 16 | "keywords": [ 17 | "bigcommerce", 18 | "oauth2.0", 19 | "oauth", 20 | "conversio", 21 | "api", 22 | "ecommerce", 23 | "node", 24 | "npm" 25 | ], 26 | "author": "Rick Craig (https://conversio.com)", 27 | "license": "MIT", 28 | "bugs": "https://github.com/getconversio/node-bigcommerce/issues", 29 | "homepage": "https://github.com/getconversio/node-bigcommerce", 30 | "devDependencies": { 31 | "agentkeepalive": "^3.1.0", 32 | "chai": "^3.5.0", 33 | "eslint": "^4.9.0", 34 | "eslint-config-conversio": "^1.0.4", 35 | "mocha": "^6.1.4", 36 | "nock": "^10.0.1", 37 | "nyc": "^14.1.1", 38 | "sinon": "^1.17.3", 39 | "supervisor": "^0.12.0" 40 | }, 41 | "dependencies": { 42 | "debug": "^3.1.0" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /test/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "mocha": true 4 | }, 5 | "rules": { 6 | "import/no-extraneous-dependencies": ["error", { "devDependencies": true }] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/bigcommerce.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const BigCommerce = require('../lib/bigcommerce'), 4 | Request = require('../lib/request'), 5 | should = require('chai').should(), 6 | sinon = require('sinon'); 7 | 8 | describe('BigCommerce', () => { 9 | const self = { }; 10 | 11 | const bc = new BigCommerce({ 12 | secret: '123456abcdef', 13 | clientId: '123456abcdef', 14 | callback: 'http://foo.com', 15 | accessToken: '123456', 16 | storeHash: '12abc' 17 | }); 18 | 19 | beforeEach(() => self.sandbox = sinon.sandbox.create()); 20 | afterEach(() => self.sandbox.restore()); 21 | 22 | describe('#constructor', () => { 23 | it('should return an error if config is missing', () => { 24 | /* eslint no-new: off */ 25 | should.Throw(() => { 26 | new BigCommerce(); 27 | }, Error); 28 | }); 29 | 30 | it('should save config to the object', () => { 31 | const newBc = new BigCommerce({ test: true }); 32 | newBc.config.should.be.a('object'); 33 | newBc.apiVersion.should.equal('v2'); 34 | }); 35 | 36 | it('should set api version to a default', () => { 37 | new BigCommerce({ apiVersion: 'v3' }).apiVersion.should.equal('v3'); 38 | }); 39 | }); 40 | 41 | describe('#verify', () => { 42 | context('given a null signed request', () => { 43 | it('should return null', () => { 44 | try { 45 | bc.verify(); 46 | } catch (e) { 47 | e.message.should.match(/signed request is required/); 48 | return; 49 | } 50 | 51 | throw new Error('You shall not pass!'); 52 | }); 53 | }); 54 | 55 | context('given a signed request without a full stop', () => { 56 | it('should return null', () => { 57 | try { 58 | bc.verify('12345'); 59 | } catch (e) { 60 | e.message.should.match(/full stop/); 61 | return; 62 | } 63 | 64 | throw new Error('You shall not pass!'); 65 | }); 66 | }); 67 | 68 | context('given an invalid signature', () => { 69 | it('should return null', () => { 70 | try { 71 | bc.verify('eyJmb28iOiJmb28ifQ==.YjMzMTQ2ZGU4ZTUzNWJiOTI3NTI1ODJmNzhiZGM5NzBjNGQ3MjZkZDdkMDY1MjdkZGYxZDA0NGZjNDVjYmNkMQ=='); 72 | } catch (e) { 73 | e.message.should.match(/invalid/); 74 | return; 75 | } 76 | 77 | throw new Error('You shall not pass!'); 78 | }); 79 | }); 80 | 81 | context('given an invalid signature (different length)', () => { 82 | it('should return null', () => { 83 | try { 84 | bc.verify('eyJmb28iOiJmb28ifQ==.Zm9v'); 85 | } catch (e) { 86 | e.message.should.match(/invalid/); 87 | return; 88 | } 89 | 90 | throw new Error('You shall not pass!'); 91 | }); 92 | }); 93 | 94 | it('should return the JSON data', () => { 95 | const verify = bc.verify( 96 | 'eyJmb28iOiJmb28ifQ==.YjMzMTQ2ZGU4ZTUzNWJiOTI3NTI1ODJmNzhiZGM' + 97 | '5NzBjNGQ3MjZkZDdkMDY1MjdkZGYxZDA0NGZjNDVjYmNkMA==' 98 | ); 99 | verify.foo.should.equal('foo'); 100 | }); 101 | }); 102 | 103 | describe('#authorize', () => { 104 | beforeEach(() => { 105 | self.runStub = self.sandbox.stub(Request.prototype, 'run') 106 | .returns(Promise.resolve({ test: true })); 107 | }); 108 | 109 | const query = { code: '', scope: '', context: '' }; 110 | 111 | it('should return an object', () => { 112 | return bc.authorize(query) 113 | .then(data => data.should.not.be.null); 114 | }); 115 | 116 | context('when the query params are missing', () => { 117 | it('should return an error', () => { 118 | return bc.authorize(null) 119 | .then(() => should.fail('You shall not pass!')) 120 | .catch(err => err.message.should.match(/are required/)); 121 | }); 122 | }); 123 | 124 | context('when the authorization fails', () => { 125 | beforeEach(() => { 126 | self.runStub.returns(Promise.reject(new Error('foo'))); 127 | }); 128 | 129 | it('should return and error', () => { 130 | return bc.authorize(query) 131 | .then(() => should.fail('You shall not pass!')) 132 | .catch(err => err.message.should.equal('foo')); 133 | }); 134 | }); 135 | }); 136 | 137 | describe('#createAPIRequest', () => { 138 | it('should create a request object with the correct headers', () => { 139 | const request = bc.createAPIRequest(); 140 | request.headers['X-Auth-Client'].should.equal('123456abcdef'); 141 | request.headers['X-Auth-Token'].should.equal('123456'); 142 | }); 143 | 144 | it('should have the correct API hostname', () => { 145 | const request = bc.createAPIRequest(); 146 | request.hostname.should.equal('api.bigcommerce.com'); 147 | }); 148 | }); 149 | 150 | describe('#request', () => { 151 | beforeEach(() => { 152 | self.requestStub = self.sandbox.stub(Request.prototype, 'run') 153 | .returns(Promise.resolve({ text: '' })); 154 | }); 155 | 156 | it('should make a call to the request object', () => { 157 | return bc.request('get', '/foo') 158 | .then(() => sinon.assert.calledOnce(self.requestStub)); 159 | }); 160 | 161 | it('should use v3 if specified in config', () => { 162 | const bcV3 = new BigCommerce({ 163 | secret: '123456abcdef', 164 | clientId: '123456abcdef', 165 | callback: 'http://foo.com', 166 | accessToken: '123456', 167 | storeHash: '12abc', 168 | apiVersion: 'v3' 169 | }); 170 | 171 | return bcV3.request('get', '/themes') 172 | .then(() => sinon.assert.calledWith(self.requestStub, 'get', '/stores/12abc/v3/themes')); 173 | }); 174 | 175 | context('when the header requirements are not met', () => { 176 | it('should return an error', () => { 177 | const bc = new BigCommerce({ }); 178 | return bc.request('get', '/foo') 179 | .then(() => should.fail('You shall not pass!')) 180 | .catch(e => e.message.should.match(/access token/)); 181 | }); 182 | }); 183 | 184 | context('when the response type is xml', () => { 185 | const xmlBc = new BigCommerce({ 186 | accessToken: '123456', 187 | clientId: 'abcdef', 188 | storeHash: 'abcd/1', 189 | responseType: 'xml' 190 | }); 191 | 192 | it('should call the request object with extension .xml', () => { 193 | return xmlBc.request('get', '/foo') 194 | .then(() => sinon.assert.calledWith(self.requestStub, 'get', '/stores/abcd/1/v2/foo.xml')); 195 | }); 196 | }); 197 | 198 | context('when the response type is json', () => { 199 | it('should make a call to the request object with an empty extension', () => { 200 | const jsonBc = new BigCommerce({ 201 | accessToken: '123456', 202 | clientId: 'abcdef', 203 | storeHash: 'abcd/1', 204 | responseType: 'json' 205 | }); 206 | 207 | return jsonBc.request('get', '/foo') 208 | .then(() => sinon.assert.calledWith(self.requestStub, 'get', '/stores/abcd/1/v2/foo')); 209 | }); 210 | }); 211 | }); 212 | 213 | describe('#get', () => { 214 | beforeEach(() => { 215 | self.requestStub = self.sandbox.stub(Request.prototype, 'run') 216 | .returns(Promise.resolve({ text: '' })); 217 | }); 218 | 219 | it('should make a request with the correct arguments', () => { 220 | return bc.get('/foo') 221 | .then(res => { 222 | res.should.deep.equal({ text: '' }); 223 | sinon.assert.calledWith(self.requestStub, 'get', '/stores/12abc/v2/foo', undefined); 224 | }); 225 | }); 226 | }); 227 | 228 | describe('#post', () => { 229 | beforeEach(() => { 230 | self.requestStub = self.sandbox.stub(Request.prototype, 'run') 231 | .returns(Promise.resolve({ text: '' })); 232 | }); 233 | 234 | it('should make a request with the correct arguments', () => { 235 | return bc.post('/foo', { foo: 'bar' }) 236 | .then(res => { 237 | res.should.deep.equal({ text: '' }); 238 | sinon.assert.calledWith(self.requestStub, 'post', '/stores/12abc/v2/foo', { foo: 'bar' }); 239 | }); 240 | }); 241 | }); 242 | 243 | describe('#put', () => { 244 | beforeEach(() => { 245 | self.requestStub = self.sandbox.stub(Request.prototype, 'run') 246 | .returns(Promise.resolve({ text: '' })); 247 | }); 248 | 249 | it('should make a request with the correct arguments', () => { 250 | return bc.put('/foo', { foo: 'bar' }) 251 | .then(res => { 252 | res.should.deep.equal({ text: '' }); 253 | sinon.assert.calledWith(self.requestStub, 'put', '/stores/12abc/v2/foo', { foo: 'bar' }); 254 | }); 255 | }); 256 | }); 257 | 258 | describe('#delete', () => { 259 | beforeEach(() => { 260 | self.requestStub = self.sandbox.stub(Request.prototype, 'run') 261 | .returns(Promise.resolve({ text: '' })); 262 | }); 263 | 264 | it('should make a request with the correct arguments', () => { 265 | return bc.delete('/foo') 266 | .then(res => { 267 | res.should.deep.equal({ text: '' }); 268 | sinon.assert.calledWith(self.requestStub, 'delete', '/stores/12abc/v2/foo', undefined); 269 | }); 270 | }); 271 | }); 272 | }); 273 | -------------------------------------------------------------------------------- /test/request.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const Request = require('../lib/request'), 4 | should = require('chai').should(), 5 | nock = require('nock'), 6 | HttpsAgent = require('agentkeepalive').HttpsAgent, 7 | zlib = require('zlib'); 8 | 9 | describe('Request', () => { 10 | const self = { }; 11 | 12 | const request = new Request('api.bigcommerce.com', { headers: { 'Content-Type': 'application/json' } }); 13 | 14 | afterEach(() => nock.cleanAll()); 15 | 16 | context('given a missing hostname', () => { 17 | it('should return an error if hostname is missing', () => { 18 | /* eslint no-new: off */ 19 | should.Throw(() => { 20 | new Request(); 21 | }, Error); 22 | }); 23 | }); 24 | 25 | context('given a 429 status code', () => { 26 | beforeEach(() => { 27 | self.ordersCall = nock('https://api.bigcommerce.com') 28 | .post('/orders') 29 | .reply(429, { }, { 'X-Retry-After': 0.1 }) 30 | .post('/orders') 31 | .reply(200, { }); 32 | }); 33 | 34 | it('should retry the request', () => { 35 | return request.run('post', '/orders') 36 | .then(() => self.ordersCall.isDone().should.equal(true)); 37 | }); 38 | 39 | context('given a failOnLimitReached option', () => { 40 | const failRequest = new Request('api.bigcommerce.com', { 41 | headers: { 'Content-Type': 'application/json' }, 42 | failOnLimitReached: true 43 | }); 44 | 45 | it('should return an error', () => { 46 | return failRequest.run('post', '/orders') 47 | .then(() => should.fail('You shall not pass!')) 48 | .catch(e => { 49 | e.message.should.match(/rate limit/); 50 | e.retryAfter.should.equal(0.1); 51 | }); 52 | }); 53 | }); 54 | }); 55 | 56 | context('given a bad request or internal error is returned', () => { 57 | beforeEach(() => { 58 | nock('https://api.bigcommerce.com') 59 | .post('/orders') 60 | .reply(400, {}); 61 | }); 62 | 63 | it('should return an error', () => { 64 | return request.run('post', '/orders', { }) 65 | .then(() => should.fail('You shall not pass!')) 66 | .catch(e => e.message.should.match(/Request returned error code/)); 67 | }); 68 | }); 69 | 70 | context('if "error" are found in the response JSON', () => { 71 | beforeEach(() => { 72 | nock('https://api.bigcommerce.com') 73 | .post('/orders') 74 | .reply(200, { error: 'An error has occurred.' }); 75 | }); 76 | 77 | it('should return an error', () => { 78 | return request.run('post', '/orders', { }) 79 | .then(() => should.fail('You shall not pass!')) 80 | .catch(e => e.message.should.match(/An error has occurred/)); 81 | }); 82 | }); 83 | 84 | context('if "errors" are found in the response JSON', () => { 85 | beforeEach(() => { 86 | nock('https://api.bigcommerce.com') 87 | .post('/orders') 88 | .reply(200, { errors: ['An error has occurred.'] }); 89 | }); 90 | 91 | it('should return an error', () => { 92 | return request.run('post', '/orders', { }) 93 | .then(() => should.fail('You shall not pass!')) 94 | .catch(e => e.message.should.match(/An error has occurred/)); 95 | }); 96 | }); 97 | 98 | context('given a malformed request JSON', () => { 99 | beforeEach(() => { 100 | nock('https://api.bigcommerce.com') 101 | .defaultReplyHeaders({ 'Content-Type': 'application/json' }) 102 | .post('/orders') 103 | .reply(200, ''); 104 | }); 105 | 106 | it('should return an error', () => { 107 | return request.run('post', '/orders', { }) 108 | .then(() => should.fail('You shall not pass!')) 109 | .catch(e => e.message.should.match(/Unexpected token/)); 110 | }); 111 | }); 112 | 113 | context('if json is not returned', () => { 114 | beforeEach(() => { 115 | nock('https://api.bigcommerce.com') 116 | .defaultReplyHeaders({ 'Content-Type': 'application/xml' }) 117 | .post('/orders') 118 | .reply(200, ''); 119 | nock('https://api.bigcommerce.com') 120 | .defaultReplyHeaders({ 'Content-Type': 'application/json' }) 121 | .post('/customers') 122 | .reply(200, ''); 123 | }); 124 | 125 | it('should return the raw response', () => { 126 | return request.run('post', '/orders', { }) 127 | .then(res => res.should.equal('')); 128 | }); 129 | 130 | it('should attach the response if the JSON cannot be parsed', () => { 131 | return request.run('post', '/customers', { }) 132 | .catch(err => err.should.have.property('responseBody')); 133 | }); 134 | }); 135 | 136 | context('timeout', () => { 137 | beforeEach(() => { 138 | nock('https://api.bigcommerce.com') 139 | .post('/orders') 140 | .replyWithError('ECONNRESET'); 141 | }); 142 | 143 | it('should return an error', () => { 144 | return request.run('post', '/orders', { }) 145 | .then(() => should.fail('You shall not pass!')) 146 | .catch(e => e.message.should.match(/ECONNRESET/)); 147 | }); 148 | }); 149 | 150 | it('should attach a keep-alive HTTPS agent', () => { 151 | nock('https://api.bigcommerce.com') 152 | .post('/orders') 153 | .reply(200, { order: true }); 154 | 155 | const request = new Request('api.bigcommerce.com', { 156 | headers: { 'Content-Type': 'application/json' }, 157 | agent: new HttpsAgent({ 158 | maxSockets: 30, 159 | maxFreeSockets: 30, 160 | timeout: 60000, 161 | keepAliveTimeout: 30000 162 | }) 163 | }); 164 | 165 | return request.run('post', '/orders') 166 | .then(res => res.should.be.a('object')); 167 | }); 168 | 169 | it('should return a JSON object on success', () => { 170 | nock('https://api.bigcommerce.com') 171 | .post('/orders') 172 | .reply(200, { order: true }); 173 | 174 | return request.run('post', '/orders') 175 | .then(res => { 176 | res.should.be.a('object'); 177 | res.order.should.equal(true); 178 | }); 179 | }); 180 | 181 | it('should accept and parse a GZIP JSON response', () => { 182 | const data = JSON.stringify({ order: true }); 183 | const buffer = Buffer.from(data); 184 | const zipped = zlib.gzipSync(buffer); 185 | nock('https://api.bigcommerce.com') 186 | .post('/orders') 187 | .reply(200, zipped, { 188 | 'X-Transfer-Length': String(zipped.length), 189 | 'Content-Length': undefined, 190 | 'Content-Encoding': 'gzip', 191 | 'Content-Type': 'application/json' 192 | }); 193 | 194 | const request = new Request('api.bigcommerce.com', { 195 | headers: { 196 | 'Content-Type': 'application/json', 197 | 'Accept-Encoding': 'gzip, deflate' 198 | } 199 | }); 200 | 201 | return request.run('post', '/orders') 202 | .then(res => { 203 | should.exist(res); 204 | res.should.have.property('order', true); 205 | }); 206 | }); 207 | 208 | it('should accept and parse a non-GZIP JSON response', () => { 209 | const data = JSON.stringify({ order: true }); 210 | const buffer = Buffer.from(data); 211 | 212 | nock('https://api.bigcommerce.com') 213 | .post('/orders') 214 | .reply(200, buffer, { 215 | 'X-Transfer-Length': String(buffer.length), 216 | 'Content-Length': undefined, 217 | 'Content-Type': 'application/json' 218 | }); 219 | 220 | const request = new Request('api.bigcommerce.com', { 221 | headers: { 222 | 'Content-Type': 'application/json', 223 | 'Accept-Encoding': '*' 224 | } 225 | }); 226 | 227 | return request.run('post', '/orders') 228 | .then(res => { 229 | should.exist(res); 230 | res.should.have.property('order', true); 231 | }); 232 | }); 233 | }); 234 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.0.0" 7 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" 8 | integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== 9 | dependencies: 10 | "@babel/highlight" "^7.0.0" 11 | 12 | "@babel/generator@^7.4.0", "@babel/generator@^7.4.4": 13 | version "7.4.4" 14 | resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" 15 | integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== 16 | dependencies: 17 | "@babel/types" "^7.4.4" 18 | jsesc "^2.5.1" 19 | lodash "^4.17.11" 20 | source-map "^0.5.0" 21 | trim-right "^1.0.1" 22 | 23 | "@babel/helper-function-name@^7.1.0": 24 | version "7.1.0" 25 | resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" 26 | integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== 27 | dependencies: 28 | "@babel/helper-get-function-arity" "^7.0.0" 29 | "@babel/template" "^7.1.0" 30 | "@babel/types" "^7.0.0" 31 | 32 | "@babel/helper-get-function-arity@^7.0.0": 33 | version "7.0.0" 34 | resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" 35 | integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== 36 | dependencies: 37 | "@babel/types" "^7.0.0" 38 | 39 | "@babel/helper-split-export-declaration@^7.4.4": 40 | version "7.4.4" 41 | resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" 42 | integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== 43 | dependencies: 44 | "@babel/types" "^7.4.4" 45 | 46 | "@babel/highlight@^7.0.0": 47 | version "7.0.0" 48 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" 49 | integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== 50 | dependencies: 51 | chalk "^2.0.0" 52 | esutils "^2.0.2" 53 | js-tokens "^4.0.0" 54 | 55 | "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5": 56 | version "7.4.5" 57 | resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" 58 | integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== 59 | 60 | "@babel/template@^7.1.0", "@babel/template@^7.4.0": 61 | version "7.4.4" 62 | resolved "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" 63 | integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== 64 | dependencies: 65 | "@babel/code-frame" "^7.0.0" 66 | "@babel/parser" "^7.4.4" 67 | "@babel/types" "^7.4.4" 68 | 69 | "@babel/traverse@^7.4.3": 70 | version "7.4.5" 71 | resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216" 72 | integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== 73 | dependencies: 74 | "@babel/code-frame" "^7.0.0" 75 | "@babel/generator" "^7.4.4" 76 | "@babel/helper-function-name" "^7.1.0" 77 | "@babel/helper-split-export-declaration" "^7.4.4" 78 | "@babel/parser" "^7.4.5" 79 | "@babel/types" "^7.4.4" 80 | debug "^4.1.0" 81 | globals "^11.1.0" 82 | lodash "^4.17.11" 83 | 84 | "@babel/types@^7.0.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": 85 | version "7.4.4" 86 | resolved "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" 87 | integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== 88 | dependencies: 89 | esutils "^2.0.2" 90 | lodash "^4.17.11" 91 | to-fast-properties "^2.0.0" 92 | 93 | acorn-jsx@^3.0.0: 94 | version "3.0.1" 95 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 96 | integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= 97 | dependencies: 98 | acorn "^3.0.4" 99 | 100 | acorn@^3.0.4: 101 | version "3.3.0" 102 | resolved "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 103 | integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= 104 | 105 | acorn@^5.5.0: 106 | version "5.7.3" 107 | resolved "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" 108 | integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== 109 | 110 | agentkeepalive@^3.1.0: 111 | version "3.3.0" 112 | resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.3.0.tgz#6d5de5829afd3be2712201a39275fd11c651857c" 113 | dependencies: 114 | humanize-ms "^1.2.1" 115 | 116 | ajv-keywords@^2.1.0: 117 | version "2.1.1" 118 | resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" 119 | integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I= 120 | 121 | ajv@^5.2.3, ajv@^5.3.0: 122 | version "5.5.2" 123 | resolved "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" 124 | integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= 125 | dependencies: 126 | co "^4.6.0" 127 | fast-deep-equal "^1.0.0" 128 | fast-json-stable-stringify "^2.0.0" 129 | json-schema-traverse "^0.3.0" 130 | 131 | ansi-colors@3.2.3: 132 | version "3.2.3" 133 | resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" 134 | integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== 135 | 136 | ansi-escapes@^3.0.0: 137 | version "3.2.0" 138 | resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" 139 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== 140 | 141 | ansi-regex@^2.0.0: 142 | version "2.1.1" 143 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 144 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 145 | 146 | ansi-regex@^3.0.0: 147 | version "3.0.0" 148 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 149 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 150 | 151 | ansi-regex@^4.1.0: 152 | version "4.1.0" 153 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 154 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 155 | 156 | ansi-styles@^2.2.1: 157 | version "2.2.1" 158 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 159 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 160 | 161 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 162 | version "3.2.1" 163 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 164 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 165 | dependencies: 166 | color-convert "^1.9.0" 167 | 168 | append-transform@^1.0.0: 169 | version "1.0.0" 170 | resolved "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" 171 | integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== 172 | dependencies: 173 | default-require-extensions "^2.0.0" 174 | 175 | archy@^1.0.0: 176 | version "1.0.0" 177 | resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" 178 | integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= 179 | 180 | argparse@^1.0.7: 181 | version "1.0.10" 182 | resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 183 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 184 | dependencies: 185 | sprintf-js "~1.0.2" 186 | 187 | assertion-error@^1.0.1: 188 | version "1.0.2" 189 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" 190 | 191 | assertion-error@^1.1.0: 192 | version "1.1.0" 193 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 194 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 195 | 196 | babel-code-frame@^6.22.0: 197 | version "6.26.0" 198 | resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 199 | integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= 200 | dependencies: 201 | chalk "^1.1.3" 202 | esutils "^2.0.2" 203 | js-tokens "^3.0.2" 204 | 205 | balanced-match@^1.0.0: 206 | version "1.0.0" 207 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 208 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 209 | 210 | brace-expansion@^1.1.7: 211 | version "1.1.11" 212 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 213 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 214 | dependencies: 215 | balanced-match "^1.0.0" 216 | concat-map "0.0.1" 217 | 218 | browser-stdout@1.3.1: 219 | version "1.3.1" 220 | resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 221 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 222 | 223 | buffer-from@^1.0.0: 224 | version "1.1.1" 225 | resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 226 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 227 | 228 | builtin-modules@^1.0.0, builtin-modules@^1.1.1: 229 | version "1.1.1" 230 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 231 | 232 | caching-transform@^3.0.2: 233 | version "3.0.2" 234 | resolved "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz#601d46b91eca87687a281e71cef99791b0efca70" 235 | integrity sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w== 236 | dependencies: 237 | hasha "^3.0.0" 238 | make-dir "^2.0.0" 239 | package-hash "^3.0.0" 240 | write-file-atomic "^2.4.2" 241 | 242 | caller-path@^0.1.0: 243 | version "0.1.0" 244 | resolved "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 245 | integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= 246 | dependencies: 247 | callsites "^0.2.0" 248 | 249 | callsites@^0.2.0: 250 | version "0.2.0" 251 | resolved "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 252 | integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= 253 | 254 | camelcase@^5.0.0: 255 | version "5.3.1" 256 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 257 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 258 | 259 | chai@^3.5.0: 260 | version "3.5.0" 261 | resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247" 262 | dependencies: 263 | assertion-error "^1.0.1" 264 | deep-eql "^0.1.3" 265 | type-detect "^1.0.0" 266 | 267 | chai@^4.1.2: 268 | version "4.2.0" 269 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" 270 | integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== 271 | dependencies: 272 | assertion-error "^1.1.0" 273 | check-error "^1.0.2" 274 | deep-eql "^3.0.1" 275 | get-func-name "^2.0.0" 276 | pathval "^1.1.0" 277 | type-detect "^4.0.5" 278 | 279 | chalk@^1.1.3: 280 | version "1.1.3" 281 | resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 282 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 283 | dependencies: 284 | ansi-styles "^2.2.1" 285 | escape-string-regexp "^1.0.2" 286 | has-ansi "^2.0.0" 287 | strip-ansi "^3.0.0" 288 | supports-color "^2.0.0" 289 | 290 | chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: 291 | version "2.4.2" 292 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 293 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 294 | dependencies: 295 | ansi-styles "^3.2.1" 296 | escape-string-regexp "^1.0.5" 297 | supports-color "^5.3.0" 298 | 299 | chardet@^0.4.0: 300 | version "0.4.2" 301 | resolved "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" 302 | integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= 303 | 304 | check-error@^1.0.2: 305 | version "1.0.2" 306 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 307 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 308 | 309 | circular-json@^0.3.1: 310 | version "0.3.3" 311 | resolved "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" 312 | integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== 313 | 314 | cli-cursor@^2.1.0: 315 | version "2.1.0" 316 | resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 317 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= 318 | dependencies: 319 | restore-cursor "^2.0.0" 320 | 321 | cli-width@^2.0.0: 322 | version "2.2.0" 323 | resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 324 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= 325 | 326 | cliui@^4.0.0: 327 | version "4.1.0" 328 | resolved "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" 329 | integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== 330 | dependencies: 331 | string-width "^2.1.1" 332 | strip-ansi "^4.0.0" 333 | wrap-ansi "^2.0.0" 334 | 335 | cliui@^5.0.0: 336 | version "5.0.0" 337 | resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 338 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 339 | dependencies: 340 | string-width "^3.1.0" 341 | strip-ansi "^5.2.0" 342 | wrap-ansi "^5.1.0" 343 | 344 | co@^4.6.0: 345 | version "4.6.0" 346 | resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 347 | integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= 348 | 349 | code-point-at@^1.0.0: 350 | version "1.1.0" 351 | resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 352 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 353 | 354 | color-convert@^1.9.0: 355 | version "1.9.3" 356 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 357 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 358 | dependencies: 359 | color-name "1.1.3" 360 | 361 | color-name@1.1.3: 362 | version "1.1.3" 363 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 364 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 365 | 366 | commander@~2.20.3: 367 | version "2.20.3" 368 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 369 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 370 | 371 | commondir@^1.0.1: 372 | version "1.0.1" 373 | resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 374 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 375 | 376 | concat-map@0.0.1: 377 | version "0.0.1" 378 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 379 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 380 | 381 | concat-stream@^1.6.0: 382 | version "1.6.2" 383 | resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 384 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 385 | dependencies: 386 | buffer-from "^1.0.0" 387 | inherits "^2.0.3" 388 | readable-stream "^2.2.2" 389 | typedarray "^0.0.6" 390 | 391 | contains-path@^0.1.0: 392 | version "0.1.0" 393 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 394 | 395 | convert-source-map@^1.6.0: 396 | version "1.6.0" 397 | resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" 398 | integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== 399 | dependencies: 400 | safe-buffer "~5.1.1" 401 | 402 | core-util-is@~1.0.0: 403 | version "1.0.2" 404 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 405 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 406 | 407 | cp-file@^6.2.0: 408 | version "6.2.0" 409 | resolved "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz#40d5ea4a1def2a9acdd07ba5c0b0246ef73dc10d" 410 | integrity sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA== 411 | dependencies: 412 | graceful-fs "^4.1.2" 413 | make-dir "^2.0.0" 414 | nested-error-stacks "^2.0.0" 415 | pify "^4.0.1" 416 | safe-buffer "^5.0.1" 417 | 418 | cross-spawn@^4: 419 | version "4.0.2" 420 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" 421 | integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= 422 | dependencies: 423 | lru-cache "^4.0.1" 424 | which "^1.2.9" 425 | 426 | cross-spawn@^5.1.0: 427 | version "5.1.0" 428 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 429 | integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= 430 | dependencies: 431 | lru-cache "^4.0.1" 432 | shebang-command "^1.2.0" 433 | which "^1.2.9" 434 | 435 | cross-spawn@^6.0.0: 436 | version "6.0.5" 437 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 438 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 439 | dependencies: 440 | nice-try "^1.0.4" 441 | path-key "^2.0.1" 442 | semver "^5.5.0" 443 | shebang-command "^1.2.0" 444 | which "^1.2.9" 445 | 446 | debug@3.2.6: 447 | version "3.2.6" 448 | resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 449 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 450 | dependencies: 451 | ms "^2.1.1" 452 | 453 | debug@^2.6.8: 454 | version "2.6.9" 455 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 456 | dependencies: 457 | ms "2.0.0" 458 | 459 | debug@^3.1.0: 460 | version "3.1.0" 461 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 462 | dependencies: 463 | ms "2.0.0" 464 | 465 | debug@^4.1.0: 466 | version "4.1.0" 467 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" 468 | integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== 469 | dependencies: 470 | ms "^2.1.1" 471 | 472 | debug@^4.1.1: 473 | version "4.1.1" 474 | resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 475 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 476 | dependencies: 477 | ms "^2.1.1" 478 | 479 | decamelize@^1.2.0: 480 | version "1.2.0" 481 | resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 482 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 483 | 484 | deep-eql@^0.1.3: 485 | version "0.1.3" 486 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" 487 | dependencies: 488 | type-detect "0.1.1" 489 | 490 | deep-eql@^3.0.1: 491 | version "3.0.1" 492 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 493 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 494 | dependencies: 495 | type-detect "^4.0.0" 496 | 497 | deep-equal@^1.0.0: 498 | version "1.0.1" 499 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 500 | 501 | deep-is@~0.1.3: 502 | version "0.1.3" 503 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 504 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 505 | 506 | default-require-extensions@^2.0.0: 507 | version "2.0.0" 508 | resolved "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" 509 | integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= 510 | dependencies: 511 | strip-bom "^3.0.0" 512 | 513 | define-properties@^1.1.2: 514 | version "1.1.3" 515 | resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 516 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 517 | dependencies: 518 | object-keys "^1.0.12" 519 | 520 | diff@3.5.0: 521 | version "3.5.0" 522 | resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 523 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 524 | 525 | doctrine@1.5.0: 526 | version "1.5.0" 527 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 528 | dependencies: 529 | esutils "^2.0.2" 530 | isarray "^1.0.0" 531 | 532 | doctrine@^2.1.0: 533 | version "2.1.0" 534 | resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 535 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 536 | dependencies: 537 | esutils "^2.0.2" 538 | 539 | emoji-regex@^7.0.1: 540 | version "7.0.3" 541 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 542 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 543 | 544 | end-of-stream@^1.1.0: 545 | version "1.4.1" 546 | resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" 547 | integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== 548 | dependencies: 549 | once "^1.4.0" 550 | 551 | error-ex@^1.2.0: 552 | version "1.3.1" 553 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 554 | dependencies: 555 | is-arrayish "^0.2.1" 556 | 557 | error-ex@^1.3.1: 558 | version "1.3.2" 559 | resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 560 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 561 | dependencies: 562 | is-arrayish "^0.2.1" 563 | 564 | es-abstract@^1.5.1: 565 | version "1.13.0" 566 | resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" 567 | integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== 568 | dependencies: 569 | es-to-primitive "^1.2.0" 570 | function-bind "^1.1.1" 571 | has "^1.0.3" 572 | is-callable "^1.1.4" 573 | is-regex "^1.0.4" 574 | object-keys "^1.0.12" 575 | 576 | es-to-primitive@^1.2.0: 577 | version "1.2.0" 578 | resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" 579 | integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== 580 | dependencies: 581 | is-callable "^1.1.4" 582 | is-date-object "^1.0.1" 583 | is-symbol "^1.0.2" 584 | 585 | es6-error@^4.0.1: 586 | version "4.1.1" 587 | resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" 588 | integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== 589 | 590 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 591 | version "1.0.5" 592 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 593 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 594 | 595 | eslint-config-airbnb-base@^10.0.1: 596 | version "10.0.1" 597 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-10.0.1.tgz#f17d4e52992c1d45d1b7713efbcd5ecd0e7e0506" 598 | 599 | eslint-config-conversio@^1.0.4: 600 | version "1.0.4" 601 | resolved "https://registry.yarnpkg.com/eslint-config-conversio/-/eslint-config-conversio-1.0.4.tgz#56f78dbb4732fab03eb55e5c00676efbf0a6e34a" 602 | dependencies: 603 | eslint-config-airbnb-base "^10.0.1" 604 | eslint-plugin-import "^2.1.0" 605 | 606 | eslint-import-resolver-node@^0.3.1: 607 | version "0.3.1" 608 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" 609 | dependencies: 610 | debug "^2.6.8" 611 | resolve "^1.2.0" 612 | 613 | eslint-module-utils@^2.1.1: 614 | version "2.1.1" 615 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" 616 | dependencies: 617 | debug "^2.6.8" 618 | pkg-dir "^1.0.0" 619 | 620 | eslint-plugin-import@^2.1.0: 621 | version "2.7.0" 622 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" 623 | dependencies: 624 | builtin-modules "^1.1.1" 625 | contains-path "^0.1.0" 626 | debug "^2.6.8" 627 | doctrine "1.5.0" 628 | eslint-import-resolver-node "^0.3.1" 629 | eslint-module-utils "^2.1.1" 630 | has "^1.0.1" 631 | lodash.cond "^4.3.0" 632 | minimatch "^3.0.3" 633 | read-pkg-up "^2.0.0" 634 | 635 | eslint-scope@^3.7.1: 636 | version "3.7.3" 637 | resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" 638 | integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA== 639 | dependencies: 640 | esrecurse "^4.1.0" 641 | estraverse "^4.1.1" 642 | 643 | eslint-visitor-keys@^1.0.0: 644 | version "1.0.0" 645 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" 646 | integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== 647 | 648 | eslint@^4.9.0: 649 | version "4.19.1" 650 | resolved "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" 651 | integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ== 652 | dependencies: 653 | ajv "^5.3.0" 654 | babel-code-frame "^6.22.0" 655 | chalk "^2.1.0" 656 | concat-stream "^1.6.0" 657 | cross-spawn "^5.1.0" 658 | debug "^3.1.0" 659 | doctrine "^2.1.0" 660 | eslint-scope "^3.7.1" 661 | eslint-visitor-keys "^1.0.0" 662 | espree "^3.5.4" 663 | esquery "^1.0.0" 664 | esutils "^2.0.2" 665 | file-entry-cache "^2.0.0" 666 | functional-red-black-tree "^1.0.1" 667 | glob "^7.1.2" 668 | globals "^11.0.1" 669 | ignore "^3.3.3" 670 | imurmurhash "^0.1.4" 671 | inquirer "^3.0.6" 672 | is-resolvable "^1.0.0" 673 | js-yaml "^3.9.1" 674 | json-stable-stringify-without-jsonify "^1.0.1" 675 | levn "^0.3.0" 676 | lodash "^4.17.4" 677 | minimatch "^3.0.2" 678 | mkdirp "^0.5.1" 679 | natural-compare "^1.4.0" 680 | optionator "^0.8.2" 681 | path-is-inside "^1.0.2" 682 | pluralize "^7.0.0" 683 | progress "^2.0.0" 684 | regexpp "^1.0.1" 685 | require-uncached "^1.0.3" 686 | semver "^5.3.0" 687 | strip-ansi "^4.0.0" 688 | strip-json-comments "~2.0.1" 689 | table "4.0.2" 690 | text-table "~0.2.0" 691 | 692 | espree@^3.5.4: 693 | version "3.5.4" 694 | resolved "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" 695 | integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== 696 | dependencies: 697 | acorn "^5.5.0" 698 | acorn-jsx "^3.0.0" 699 | 700 | esprima@^4.0.0: 701 | version "4.0.1" 702 | resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 703 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 704 | 705 | esquery@^1.0.0: 706 | version "1.0.1" 707 | resolved "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" 708 | integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== 709 | dependencies: 710 | estraverse "^4.0.0" 711 | 712 | esrecurse@^4.1.0: 713 | version "4.2.1" 714 | resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 715 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 716 | dependencies: 717 | estraverse "^4.1.0" 718 | 719 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: 720 | version "4.2.0" 721 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 722 | integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= 723 | 724 | esutils@^2.0.2: 725 | version "2.0.2" 726 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 727 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 728 | 729 | execa@^1.0.0: 730 | version "1.0.0" 731 | resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" 732 | integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== 733 | dependencies: 734 | cross-spawn "^6.0.0" 735 | get-stream "^4.0.0" 736 | is-stream "^1.1.0" 737 | npm-run-path "^2.0.0" 738 | p-finally "^1.0.0" 739 | signal-exit "^3.0.0" 740 | strip-eof "^1.0.0" 741 | 742 | external-editor@^2.0.4: 743 | version "2.2.0" 744 | resolved "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" 745 | integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== 746 | dependencies: 747 | chardet "^0.4.0" 748 | iconv-lite "^0.4.17" 749 | tmp "^0.0.33" 750 | 751 | fast-deep-equal@^1.0.0: 752 | version "1.1.0" 753 | resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" 754 | integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= 755 | 756 | fast-json-stable-stringify@^2.0.0: 757 | version "2.0.0" 758 | resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 759 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 760 | 761 | fast-levenshtein@~2.0.4: 762 | version "2.0.6" 763 | resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 764 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 765 | 766 | figures@^2.0.0: 767 | version "2.0.0" 768 | resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 769 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= 770 | dependencies: 771 | escape-string-regexp "^1.0.5" 772 | 773 | file-entry-cache@^2.0.0: 774 | version "2.0.0" 775 | resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 776 | integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= 777 | dependencies: 778 | flat-cache "^1.2.1" 779 | object-assign "^4.0.1" 780 | 781 | find-cache-dir@^2.1.0: 782 | version "2.1.0" 783 | resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" 784 | integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== 785 | dependencies: 786 | commondir "^1.0.1" 787 | make-dir "^2.0.0" 788 | pkg-dir "^3.0.0" 789 | 790 | find-up@3.0.0, find-up@^3.0.0: 791 | version "3.0.0" 792 | resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 793 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 794 | dependencies: 795 | locate-path "^3.0.0" 796 | 797 | find-up@^1.0.0: 798 | version "1.1.2" 799 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 800 | dependencies: 801 | path-exists "^2.0.0" 802 | pinkie-promise "^2.0.0" 803 | 804 | find-up@^2.0.0: 805 | version "2.1.0" 806 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 807 | dependencies: 808 | locate-path "^2.0.0" 809 | 810 | flat-cache@^1.2.1: 811 | version "1.3.4" 812 | resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" 813 | integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== 814 | dependencies: 815 | circular-json "^0.3.1" 816 | graceful-fs "^4.1.2" 817 | rimraf "~2.6.2" 818 | write "^0.2.1" 819 | 820 | flat@^4.1.0: 821 | version "4.1.0" 822 | resolved "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" 823 | integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== 824 | dependencies: 825 | is-buffer "~2.0.3" 826 | 827 | foreground-child@^1.5.6: 828 | version "1.5.6" 829 | resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" 830 | integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= 831 | dependencies: 832 | cross-spawn "^4" 833 | signal-exit "^3.0.0" 834 | 835 | formatio@1.1.1: 836 | version "1.1.1" 837 | resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.1.1.tgz#5ed3ccd636551097383465d996199100e86161e9" 838 | dependencies: 839 | samsam "~1.1" 840 | 841 | fs.realpath@^1.0.0: 842 | version "1.0.0" 843 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 844 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 845 | 846 | function-bind@^1.0.2, function-bind@^1.1.1: 847 | version "1.1.1" 848 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 849 | 850 | functional-red-black-tree@^1.0.1: 851 | version "1.0.1" 852 | resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 853 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 854 | 855 | get-caller-file@^1.0.1: 856 | version "1.0.3" 857 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" 858 | integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== 859 | 860 | get-caller-file@^2.0.1: 861 | version "2.0.5" 862 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 863 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 864 | 865 | get-func-name@^2.0.0: 866 | version "2.0.0" 867 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 868 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 869 | 870 | get-stream@^4.0.0: 871 | version "4.1.0" 872 | resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 873 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 874 | dependencies: 875 | pump "^3.0.0" 876 | 877 | glob@7.1.3: 878 | version "7.1.3" 879 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 880 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 881 | dependencies: 882 | fs.realpath "^1.0.0" 883 | inflight "^1.0.4" 884 | inherits "2" 885 | minimatch "^3.0.4" 886 | once "^1.3.0" 887 | path-is-absolute "^1.0.0" 888 | 889 | glob@^7.1.2, glob@^7.1.3: 890 | version "7.1.4" 891 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" 892 | integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== 893 | dependencies: 894 | fs.realpath "^1.0.0" 895 | inflight "^1.0.4" 896 | inherits "2" 897 | minimatch "^3.0.4" 898 | once "^1.3.0" 899 | path-is-absolute "^1.0.0" 900 | 901 | globals@^11.0.1, globals@^11.1.0: 902 | version "11.12.0" 903 | resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 904 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 905 | 906 | graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: 907 | version "4.1.15" 908 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 909 | integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== 910 | 911 | growl@1.10.5: 912 | version "1.10.5" 913 | resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 914 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 915 | 916 | handlebars@^4.1.2: 917 | version "4.5.3" 918 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" 919 | integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== 920 | dependencies: 921 | neo-async "^2.6.0" 922 | optimist "^0.6.1" 923 | source-map "^0.6.1" 924 | optionalDependencies: 925 | uglify-js "^3.1.4" 926 | 927 | has-ansi@^2.0.0: 928 | version "2.0.0" 929 | resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 930 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 931 | dependencies: 932 | ansi-regex "^2.0.0" 933 | 934 | has-flag@^3.0.0: 935 | version "3.0.0" 936 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 937 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 938 | 939 | has-symbols@^1.0.0: 940 | version "1.0.0" 941 | resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" 942 | integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= 943 | 944 | has@^1.0.1: 945 | version "1.0.1" 946 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 947 | dependencies: 948 | function-bind "^1.0.2" 949 | 950 | has@^1.0.3: 951 | version "1.0.3" 952 | resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 953 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 954 | dependencies: 955 | function-bind "^1.1.1" 956 | 957 | hasha@^3.0.0: 958 | version "3.0.0" 959 | resolved "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39" 960 | integrity sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk= 961 | dependencies: 962 | is-stream "^1.0.1" 963 | 964 | he@1.2.0: 965 | version "1.2.0" 966 | resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 967 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 968 | 969 | hosted-git-info@^2.1.4: 970 | version "2.5.0" 971 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" 972 | 973 | humanize-ms@^1.2.1: 974 | version "1.2.1" 975 | resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" 976 | dependencies: 977 | ms "^2.0.0" 978 | 979 | iconv-lite@^0.4.17: 980 | version "0.4.24" 981 | resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 982 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 983 | dependencies: 984 | safer-buffer ">= 2.1.2 < 3" 985 | 986 | ignore@^3.3.3: 987 | version "3.3.10" 988 | resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" 989 | integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== 990 | 991 | imurmurhash@^0.1.4: 992 | version "0.1.4" 993 | resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 994 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 995 | 996 | inflight@^1.0.4: 997 | version "1.0.6" 998 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 999 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1000 | dependencies: 1001 | once "^1.3.0" 1002 | wrappy "1" 1003 | 1004 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 1005 | version "2.0.4" 1006 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1007 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1008 | 1009 | inherits@2.0.1: 1010 | version "2.0.1" 1011 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 1012 | 1013 | inquirer@^3.0.6: 1014 | version "3.3.0" 1015 | resolved "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" 1016 | integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== 1017 | dependencies: 1018 | ansi-escapes "^3.0.0" 1019 | chalk "^2.0.0" 1020 | cli-cursor "^2.1.0" 1021 | cli-width "^2.0.0" 1022 | external-editor "^2.0.4" 1023 | figures "^2.0.0" 1024 | lodash "^4.3.0" 1025 | mute-stream "0.0.7" 1026 | run-async "^2.2.0" 1027 | rx-lite "^4.0.8" 1028 | rx-lite-aggregates "^4.0.8" 1029 | string-width "^2.1.0" 1030 | strip-ansi "^4.0.0" 1031 | through "^2.3.6" 1032 | 1033 | invert-kv@^2.0.0: 1034 | version "2.0.0" 1035 | resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" 1036 | integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== 1037 | 1038 | is-arrayish@^0.2.1: 1039 | version "0.2.1" 1040 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1041 | 1042 | is-buffer@~2.0.3: 1043 | version "2.0.3" 1044 | resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" 1045 | integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== 1046 | 1047 | is-builtin-module@^1.0.0: 1048 | version "1.0.0" 1049 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1050 | dependencies: 1051 | builtin-modules "^1.0.0" 1052 | 1053 | is-callable@^1.1.4: 1054 | version "1.1.4" 1055 | resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" 1056 | integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== 1057 | 1058 | is-date-object@^1.0.1: 1059 | version "1.0.1" 1060 | resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 1061 | integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= 1062 | 1063 | is-fullwidth-code-point@^1.0.0: 1064 | version "1.0.0" 1065 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1066 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 1067 | dependencies: 1068 | number-is-nan "^1.0.0" 1069 | 1070 | is-fullwidth-code-point@^2.0.0: 1071 | version "2.0.0" 1072 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1073 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1074 | 1075 | is-promise@^2.1.0: 1076 | version "2.1.0" 1077 | resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1078 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 1079 | 1080 | is-regex@^1.0.4: 1081 | version "1.0.4" 1082 | resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 1083 | integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= 1084 | dependencies: 1085 | has "^1.0.1" 1086 | 1087 | is-resolvable@^1.0.0: 1088 | version "1.1.0" 1089 | resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" 1090 | integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== 1091 | 1092 | is-stream@^1.0.1, is-stream@^1.1.0: 1093 | version "1.1.0" 1094 | resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1095 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 1096 | 1097 | is-symbol@^1.0.2: 1098 | version "1.0.2" 1099 | resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" 1100 | integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== 1101 | dependencies: 1102 | has-symbols "^1.0.0" 1103 | 1104 | isarray@^1.0.0, isarray@~1.0.0: 1105 | version "1.0.0" 1106 | resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1107 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1108 | 1109 | isexe@^2.0.0: 1110 | version "2.0.0" 1111 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1112 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1113 | 1114 | istanbul-lib-coverage@^2.0.5: 1115 | version "2.0.5" 1116 | resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" 1117 | integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== 1118 | 1119 | istanbul-lib-hook@^2.0.7: 1120 | version "2.0.7" 1121 | resolved "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133" 1122 | integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA== 1123 | dependencies: 1124 | append-transform "^1.0.0" 1125 | 1126 | istanbul-lib-instrument@^3.3.0: 1127 | version "3.3.0" 1128 | resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" 1129 | integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== 1130 | dependencies: 1131 | "@babel/generator" "^7.4.0" 1132 | "@babel/parser" "^7.4.3" 1133 | "@babel/template" "^7.4.0" 1134 | "@babel/traverse" "^7.4.3" 1135 | "@babel/types" "^7.4.0" 1136 | istanbul-lib-coverage "^2.0.5" 1137 | semver "^6.0.0" 1138 | 1139 | istanbul-lib-report@^2.0.8: 1140 | version "2.0.8" 1141 | resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" 1142 | integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== 1143 | dependencies: 1144 | istanbul-lib-coverage "^2.0.5" 1145 | make-dir "^2.1.0" 1146 | supports-color "^6.1.0" 1147 | 1148 | istanbul-lib-source-maps@^3.0.6: 1149 | version "3.0.6" 1150 | resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" 1151 | integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== 1152 | dependencies: 1153 | debug "^4.1.1" 1154 | istanbul-lib-coverage "^2.0.5" 1155 | make-dir "^2.1.0" 1156 | rimraf "^2.6.3" 1157 | source-map "^0.6.1" 1158 | 1159 | istanbul-reports@^2.2.4: 1160 | version "2.2.6" 1161 | resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" 1162 | integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== 1163 | dependencies: 1164 | handlebars "^4.1.2" 1165 | 1166 | js-tokens@^3.0.2: 1167 | version "3.0.2" 1168 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 1169 | integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= 1170 | 1171 | js-tokens@^4.0.0: 1172 | version "4.0.0" 1173 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1174 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1175 | 1176 | js-yaml@3.13.1, js-yaml@^3.13.1, js-yaml@^3.9.1: 1177 | version "3.13.1" 1178 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1179 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1180 | dependencies: 1181 | argparse "^1.0.7" 1182 | esprima "^4.0.0" 1183 | 1184 | jsesc@^2.5.1: 1185 | version "2.5.2" 1186 | resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1187 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1188 | 1189 | json-parse-better-errors@^1.0.1: 1190 | version "1.0.2" 1191 | resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 1192 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 1193 | 1194 | json-schema-traverse@^0.3.0: 1195 | version "0.3.1" 1196 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 1197 | integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= 1198 | 1199 | json-stable-stringify-without-jsonify@^1.0.1: 1200 | version "1.0.1" 1201 | resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1202 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1203 | 1204 | json-stringify-safe@^5.0.1: 1205 | version "5.0.1" 1206 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1207 | 1208 | lcid@^2.0.0: 1209 | version "2.0.0" 1210 | resolved "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" 1211 | integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== 1212 | dependencies: 1213 | invert-kv "^2.0.0" 1214 | 1215 | levn@^0.3.0, levn@~0.3.0: 1216 | version "0.3.0" 1217 | resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1218 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 1219 | dependencies: 1220 | prelude-ls "~1.1.2" 1221 | type-check "~0.3.2" 1222 | 1223 | load-json-file@^2.0.0: 1224 | version "2.0.0" 1225 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 1226 | dependencies: 1227 | graceful-fs "^4.1.2" 1228 | parse-json "^2.2.0" 1229 | pify "^2.0.0" 1230 | strip-bom "^3.0.0" 1231 | 1232 | load-json-file@^4.0.0: 1233 | version "4.0.0" 1234 | resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 1235 | integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= 1236 | dependencies: 1237 | graceful-fs "^4.1.2" 1238 | parse-json "^4.0.0" 1239 | pify "^3.0.0" 1240 | strip-bom "^3.0.0" 1241 | 1242 | locate-path@^2.0.0: 1243 | version "2.0.0" 1244 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1245 | dependencies: 1246 | p-locate "^2.0.0" 1247 | path-exists "^3.0.0" 1248 | 1249 | locate-path@^3.0.0: 1250 | version "3.0.0" 1251 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1252 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1253 | dependencies: 1254 | p-locate "^3.0.0" 1255 | path-exists "^3.0.0" 1256 | 1257 | lodash.cond@^4.3.0: 1258 | version "4.5.2" 1259 | resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" 1260 | 1261 | lodash.flattendeep@^4.4.0: 1262 | version "4.4.0" 1263 | resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" 1264 | integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= 1265 | 1266 | lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: 1267 | version "4.17.15" 1268 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 1269 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 1270 | 1271 | log-symbols@2.2.0: 1272 | version "2.2.0" 1273 | resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" 1274 | integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== 1275 | dependencies: 1276 | chalk "^2.0.1" 1277 | 1278 | lolex@1.3.2: 1279 | version "1.3.2" 1280 | resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31" 1281 | 1282 | lru-cache@^4.0.1: 1283 | version "4.1.5" 1284 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 1285 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 1286 | dependencies: 1287 | pseudomap "^1.0.2" 1288 | yallist "^2.1.2" 1289 | 1290 | make-dir@^2.0.0, make-dir@^2.1.0: 1291 | version "2.1.0" 1292 | resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" 1293 | integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== 1294 | dependencies: 1295 | pify "^4.0.1" 1296 | semver "^5.6.0" 1297 | 1298 | map-age-cleaner@^0.1.1: 1299 | version "0.1.3" 1300 | resolved "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" 1301 | integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== 1302 | dependencies: 1303 | p-defer "^1.0.0" 1304 | 1305 | mem@^4.0.0: 1306 | version "4.3.0" 1307 | resolved "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" 1308 | integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== 1309 | dependencies: 1310 | map-age-cleaner "^0.1.1" 1311 | mimic-fn "^2.0.0" 1312 | p-is-promise "^2.0.0" 1313 | 1314 | merge-source-map@^1.1.0: 1315 | version "1.1.0" 1316 | resolved "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" 1317 | integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== 1318 | dependencies: 1319 | source-map "^0.6.1" 1320 | 1321 | mimic-fn@^1.0.0: 1322 | version "1.2.0" 1323 | resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 1324 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 1325 | 1326 | mimic-fn@^2.0.0: 1327 | version "2.1.0" 1328 | resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1329 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1330 | 1331 | minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: 1332 | version "3.0.4" 1333 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1334 | dependencies: 1335 | brace-expansion "^1.1.7" 1336 | 1337 | minimist@0.0.8: 1338 | version "0.0.8" 1339 | resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1340 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1341 | 1342 | minimist@~0.0.1: 1343 | version "0.0.10" 1344 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 1345 | integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= 1346 | 1347 | mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: 1348 | version "0.5.1" 1349 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1350 | dependencies: 1351 | minimist "0.0.8" 1352 | 1353 | mocha@^6.1.4: 1354 | version "6.1.4" 1355 | resolved "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz#e35fada242d5434a7e163d555c705f6875951640" 1356 | integrity sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg== 1357 | dependencies: 1358 | ansi-colors "3.2.3" 1359 | browser-stdout "1.3.1" 1360 | debug "3.2.6" 1361 | diff "3.5.0" 1362 | escape-string-regexp "1.0.5" 1363 | find-up "3.0.0" 1364 | glob "7.1.3" 1365 | growl "1.10.5" 1366 | he "1.2.0" 1367 | js-yaml "3.13.1" 1368 | log-symbols "2.2.0" 1369 | minimatch "3.0.4" 1370 | mkdirp "0.5.1" 1371 | ms "2.1.1" 1372 | node-environment-flags "1.0.5" 1373 | object.assign "4.1.0" 1374 | strip-json-comments "2.0.1" 1375 | supports-color "6.0.0" 1376 | which "1.3.1" 1377 | wide-align "1.1.3" 1378 | yargs "13.2.2" 1379 | yargs-parser "13.0.0" 1380 | yargs-unparser "1.5.0" 1381 | 1382 | ms@2.0.0, ms@^2.0.0: 1383 | version "2.0.0" 1384 | resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1385 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1386 | 1387 | ms@2.1.1, ms@^2.1.1: 1388 | version "2.1.1" 1389 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1390 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 1391 | 1392 | mute-stream@0.0.7: 1393 | version "0.0.7" 1394 | resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 1395 | integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= 1396 | 1397 | natural-compare@^1.4.0: 1398 | version "1.4.0" 1399 | resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1400 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1401 | 1402 | neo-async@^2.6.0: 1403 | version "2.6.1" 1404 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" 1405 | integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== 1406 | 1407 | nested-error-stacks@^2.0.0: 1408 | version "2.1.0" 1409 | resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" 1410 | integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== 1411 | 1412 | nice-try@^1.0.4: 1413 | version "1.0.5" 1414 | resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1415 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 1416 | 1417 | nock@^10.0.1: 1418 | version "10.0.2" 1419 | resolved "https://registry.yarnpkg.com/nock/-/nock-10.0.2.tgz#9e9a92253808e480a8163c2a21fc12937c02c3b0" 1420 | integrity sha512-uWrdlRzG28SXM5yqYsUHfYBRqljF8P6aTRDh6Y5kTgs/Q4GB59QWlpiegmDHQouvmX/rDyKkC/nk+k4nA+QPNw== 1421 | dependencies: 1422 | chai "^4.1.2" 1423 | debug "^4.1.0" 1424 | deep-equal "^1.0.0" 1425 | json-stringify-safe "^5.0.1" 1426 | lodash "^4.17.5" 1427 | mkdirp "^0.5.0" 1428 | propagate "^1.0.0" 1429 | qs "^6.5.1" 1430 | semver "^5.5.0" 1431 | 1432 | node-environment-flags@1.0.5: 1433 | version "1.0.5" 1434 | resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" 1435 | integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ== 1436 | dependencies: 1437 | object.getownpropertydescriptors "^2.0.3" 1438 | semver "^5.7.0" 1439 | 1440 | normalize-package-data@^2.3.2: 1441 | version "2.4.0" 1442 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 1443 | dependencies: 1444 | hosted-git-info "^2.1.4" 1445 | is-builtin-module "^1.0.0" 1446 | semver "2 || 3 || 4 || 5" 1447 | validate-npm-package-license "^3.0.1" 1448 | 1449 | npm-run-path@^2.0.0: 1450 | version "2.0.2" 1451 | resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1452 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 1453 | dependencies: 1454 | path-key "^2.0.0" 1455 | 1456 | number-is-nan@^1.0.0: 1457 | version "1.0.1" 1458 | resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1459 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 1460 | 1461 | nyc@^14.1.1: 1462 | version "14.1.1" 1463 | resolved "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz#151d64a6a9f9f5908a1b73233931e4a0a3075eeb" 1464 | integrity sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw== 1465 | dependencies: 1466 | archy "^1.0.0" 1467 | caching-transform "^3.0.2" 1468 | convert-source-map "^1.6.0" 1469 | cp-file "^6.2.0" 1470 | find-cache-dir "^2.1.0" 1471 | find-up "^3.0.0" 1472 | foreground-child "^1.5.6" 1473 | glob "^7.1.3" 1474 | istanbul-lib-coverage "^2.0.5" 1475 | istanbul-lib-hook "^2.0.7" 1476 | istanbul-lib-instrument "^3.3.0" 1477 | istanbul-lib-report "^2.0.8" 1478 | istanbul-lib-source-maps "^3.0.6" 1479 | istanbul-reports "^2.2.4" 1480 | js-yaml "^3.13.1" 1481 | make-dir "^2.1.0" 1482 | merge-source-map "^1.1.0" 1483 | resolve-from "^4.0.0" 1484 | rimraf "^2.6.3" 1485 | signal-exit "^3.0.2" 1486 | spawn-wrap "^1.4.2" 1487 | test-exclude "^5.2.3" 1488 | uuid "^3.3.2" 1489 | yargs "^13.2.2" 1490 | yargs-parser "^13.0.0" 1491 | 1492 | object-assign@^4.0.1: 1493 | version "4.1.1" 1494 | resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1495 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1496 | 1497 | object-keys@^1.0.11, object-keys@^1.0.12: 1498 | version "1.1.1" 1499 | resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1500 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1501 | 1502 | object.assign@4.1.0: 1503 | version "4.1.0" 1504 | resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 1505 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 1506 | dependencies: 1507 | define-properties "^1.1.2" 1508 | function-bind "^1.1.1" 1509 | has-symbols "^1.0.0" 1510 | object-keys "^1.0.11" 1511 | 1512 | object.getownpropertydescriptors@^2.0.3: 1513 | version "2.0.3" 1514 | resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" 1515 | integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= 1516 | dependencies: 1517 | define-properties "^1.1.2" 1518 | es-abstract "^1.5.1" 1519 | 1520 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1521 | version "1.4.0" 1522 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1523 | dependencies: 1524 | wrappy "1" 1525 | 1526 | onetime@^2.0.0: 1527 | version "2.0.1" 1528 | resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 1529 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= 1530 | dependencies: 1531 | mimic-fn "^1.0.0" 1532 | 1533 | optimist@^0.6.1: 1534 | version "0.6.1" 1535 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 1536 | integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= 1537 | dependencies: 1538 | minimist "~0.0.1" 1539 | wordwrap "~0.0.2" 1540 | 1541 | optionator@^0.8.2: 1542 | version "0.8.2" 1543 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 1544 | dependencies: 1545 | deep-is "~0.1.3" 1546 | fast-levenshtein "~2.0.4" 1547 | levn "~0.3.0" 1548 | prelude-ls "~1.1.2" 1549 | type-check "~0.3.2" 1550 | wordwrap "~1.0.0" 1551 | 1552 | os-homedir@^1.0.1: 1553 | version "1.0.2" 1554 | resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1555 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 1556 | 1557 | os-locale@^3.0.0, os-locale@^3.1.0: 1558 | version "3.1.0" 1559 | resolved "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" 1560 | integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== 1561 | dependencies: 1562 | execa "^1.0.0" 1563 | lcid "^2.0.0" 1564 | mem "^4.0.0" 1565 | 1566 | os-tmpdir@~1.0.2: 1567 | version "1.0.2" 1568 | resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1569 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1570 | 1571 | p-defer@^1.0.0: 1572 | version "1.0.0" 1573 | resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" 1574 | integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= 1575 | 1576 | p-finally@^1.0.0: 1577 | version "1.0.0" 1578 | resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1579 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 1580 | 1581 | p-is-promise@^2.0.0: 1582 | version "2.1.0" 1583 | resolved "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" 1584 | integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== 1585 | 1586 | p-limit@^1.1.0: 1587 | version "1.1.0" 1588 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" 1589 | 1590 | p-limit@^2.0.0: 1591 | version "2.2.0" 1592 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" 1593 | integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== 1594 | dependencies: 1595 | p-try "^2.0.0" 1596 | 1597 | p-locate@^2.0.0: 1598 | version "2.0.0" 1599 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1600 | dependencies: 1601 | p-limit "^1.1.0" 1602 | 1603 | p-locate@^3.0.0: 1604 | version "3.0.0" 1605 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1606 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1607 | dependencies: 1608 | p-limit "^2.0.0" 1609 | 1610 | p-try@^2.0.0: 1611 | version "2.2.0" 1612 | resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1613 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1614 | 1615 | package-hash@^3.0.0: 1616 | version "3.0.0" 1617 | resolved "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e" 1618 | integrity sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA== 1619 | dependencies: 1620 | graceful-fs "^4.1.15" 1621 | hasha "^3.0.0" 1622 | lodash.flattendeep "^4.4.0" 1623 | release-zalgo "^1.0.0" 1624 | 1625 | parse-json@^2.2.0: 1626 | version "2.2.0" 1627 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1628 | dependencies: 1629 | error-ex "^1.2.0" 1630 | 1631 | parse-json@^4.0.0: 1632 | version "4.0.0" 1633 | resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 1634 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= 1635 | dependencies: 1636 | error-ex "^1.3.1" 1637 | json-parse-better-errors "^1.0.1" 1638 | 1639 | path-exists@^2.0.0: 1640 | version "2.1.0" 1641 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 1642 | dependencies: 1643 | pinkie-promise "^2.0.0" 1644 | 1645 | path-exists@^3.0.0: 1646 | version "3.0.0" 1647 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1648 | 1649 | path-is-absolute@^1.0.0: 1650 | version "1.0.1" 1651 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1652 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1653 | 1654 | path-is-inside@^1.0.2: 1655 | version "1.0.2" 1656 | resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 1657 | integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= 1658 | 1659 | path-key@^2.0.0, path-key@^2.0.1: 1660 | version "2.0.1" 1661 | resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1662 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 1663 | 1664 | path-parse@^1.0.5: 1665 | version "1.0.5" 1666 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 1667 | 1668 | path-type@^2.0.0: 1669 | version "2.0.0" 1670 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 1671 | dependencies: 1672 | pify "^2.0.0" 1673 | 1674 | path-type@^3.0.0: 1675 | version "3.0.0" 1676 | resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 1677 | integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== 1678 | dependencies: 1679 | pify "^3.0.0" 1680 | 1681 | pathval@^1.1.0: 1682 | version "1.1.0" 1683 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 1684 | integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= 1685 | 1686 | pify@^2.0.0: 1687 | version "2.3.0" 1688 | resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1689 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 1690 | 1691 | pify@^3.0.0: 1692 | version "3.0.0" 1693 | resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1694 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 1695 | 1696 | pify@^4.0.1: 1697 | version "4.0.1" 1698 | resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" 1699 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 1700 | 1701 | pinkie-promise@^2.0.0: 1702 | version "2.0.1" 1703 | resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1704 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= 1705 | dependencies: 1706 | pinkie "^2.0.0" 1707 | 1708 | pinkie@^2.0.0: 1709 | version "2.0.4" 1710 | resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1711 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= 1712 | 1713 | pkg-dir@^1.0.0: 1714 | version "1.0.0" 1715 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" 1716 | dependencies: 1717 | find-up "^1.0.0" 1718 | 1719 | pkg-dir@^3.0.0: 1720 | version "3.0.0" 1721 | resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" 1722 | integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== 1723 | dependencies: 1724 | find-up "^3.0.0" 1725 | 1726 | pluralize@^7.0.0: 1727 | version "7.0.0" 1728 | resolved "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" 1729 | integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== 1730 | 1731 | prelude-ls@~1.1.2: 1732 | version "1.1.2" 1733 | resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1734 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 1735 | 1736 | process-nextick-args@~2.0.0: 1737 | version "2.0.1" 1738 | resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1739 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1740 | 1741 | progress@^2.0.0: 1742 | version "2.0.3" 1743 | resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1744 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1745 | 1746 | propagate@^1.0.0: 1747 | version "1.0.0" 1748 | resolved "https://registry.yarnpkg.com/propagate/-/propagate-1.0.0.tgz#00c2daeedda20e87e3782b344adba1cddd6ad709" 1749 | integrity sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk= 1750 | 1751 | pseudomap@^1.0.2: 1752 | version "1.0.2" 1753 | resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1754 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 1755 | 1756 | pump@^3.0.0: 1757 | version "3.0.0" 1758 | resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1759 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1760 | dependencies: 1761 | end-of-stream "^1.1.0" 1762 | once "^1.3.1" 1763 | 1764 | qs@^6.5.1: 1765 | version "6.5.2" 1766 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 1767 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 1768 | 1769 | read-pkg-up@^2.0.0: 1770 | version "2.0.0" 1771 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 1772 | dependencies: 1773 | find-up "^2.0.0" 1774 | read-pkg "^2.0.0" 1775 | 1776 | read-pkg-up@^4.0.0: 1777 | version "4.0.0" 1778 | resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" 1779 | integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== 1780 | dependencies: 1781 | find-up "^3.0.0" 1782 | read-pkg "^3.0.0" 1783 | 1784 | read-pkg@^2.0.0: 1785 | version "2.0.0" 1786 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 1787 | dependencies: 1788 | load-json-file "^2.0.0" 1789 | normalize-package-data "^2.3.2" 1790 | path-type "^2.0.0" 1791 | 1792 | read-pkg@^3.0.0: 1793 | version "3.0.0" 1794 | resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 1795 | integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= 1796 | dependencies: 1797 | load-json-file "^4.0.0" 1798 | normalize-package-data "^2.3.2" 1799 | path-type "^3.0.0" 1800 | 1801 | readable-stream@^2.2.2: 1802 | version "2.3.6" 1803 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 1804 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 1805 | dependencies: 1806 | core-util-is "~1.0.0" 1807 | inherits "~2.0.3" 1808 | isarray "~1.0.0" 1809 | process-nextick-args "~2.0.0" 1810 | safe-buffer "~5.1.1" 1811 | string_decoder "~1.1.1" 1812 | util-deprecate "~1.0.1" 1813 | 1814 | regexpp@^1.0.1: 1815 | version "1.1.0" 1816 | resolved "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" 1817 | integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw== 1818 | 1819 | release-zalgo@^1.0.0: 1820 | version "1.0.0" 1821 | resolved "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" 1822 | integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= 1823 | dependencies: 1824 | es6-error "^4.0.1" 1825 | 1826 | require-directory@^2.1.1: 1827 | version "2.1.1" 1828 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1829 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1830 | 1831 | require-main-filename@^1.0.1: 1832 | version "1.0.1" 1833 | resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 1834 | integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= 1835 | 1836 | require-main-filename@^2.0.0: 1837 | version "2.0.0" 1838 | resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 1839 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 1840 | 1841 | require-uncached@^1.0.3: 1842 | version "1.0.3" 1843 | resolved "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 1844 | integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= 1845 | dependencies: 1846 | caller-path "^0.1.0" 1847 | resolve-from "^1.0.0" 1848 | 1849 | resolve-from@^1.0.0: 1850 | version "1.0.1" 1851 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 1852 | integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= 1853 | 1854 | resolve-from@^4.0.0: 1855 | version "4.0.0" 1856 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1857 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1858 | 1859 | resolve@^1.2.0: 1860 | version "1.4.0" 1861 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" 1862 | dependencies: 1863 | path-parse "^1.0.5" 1864 | 1865 | restore-cursor@^2.0.0: 1866 | version "2.0.0" 1867 | resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 1868 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= 1869 | dependencies: 1870 | onetime "^2.0.0" 1871 | signal-exit "^3.0.2" 1872 | 1873 | rimraf@^2.6.2, rimraf@^2.6.3, rimraf@~2.6.2: 1874 | version "2.6.3" 1875 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1876 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1877 | dependencies: 1878 | glob "^7.1.3" 1879 | 1880 | run-async@^2.2.0: 1881 | version "2.3.0" 1882 | resolved "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 1883 | integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= 1884 | dependencies: 1885 | is-promise "^2.1.0" 1886 | 1887 | rx-lite-aggregates@^4.0.8: 1888 | version "4.0.8" 1889 | resolved "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" 1890 | integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= 1891 | dependencies: 1892 | rx-lite "*" 1893 | 1894 | rx-lite@*, rx-lite@^4.0.8: 1895 | version "4.0.8" 1896 | resolved "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" 1897 | integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= 1898 | 1899 | safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1900 | version "5.1.2" 1901 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1902 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1903 | 1904 | "safer-buffer@>= 2.1.2 < 3": 1905 | version "2.1.2" 1906 | resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1907 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1908 | 1909 | samsam@1.1.2: 1910 | version "1.1.2" 1911 | resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" 1912 | 1913 | samsam@~1.1: 1914 | version "1.1.3" 1915 | resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.3.tgz#9f5087419b4d091f232571e7fa52e90b0f552621" 1916 | 1917 | "semver@2 || 3 || 4 || 5": 1918 | version "5.4.1" 1919 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" 1920 | 1921 | semver@^5.3.0, semver@^5.6.0, semver@^5.7.0: 1922 | version "5.7.0" 1923 | resolved "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" 1924 | integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== 1925 | 1926 | semver@^5.5.0: 1927 | version "5.6.0" 1928 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" 1929 | integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== 1930 | 1931 | semver@^6.0.0: 1932 | version "6.1.2" 1933 | resolved "https://registry.npmjs.org/semver/-/semver-6.1.2.tgz#079960381376a3db62eb2edc8a3bfb10c7cfe318" 1934 | integrity sha512-z4PqiCpomGtWj8633oeAdXm1Kn1W++3T8epkZYnwiVgIYIJ0QHszhInYSJTYxebByQH7KVCEAn8R9duzZW2PhQ== 1935 | 1936 | set-blocking@^2.0.0: 1937 | version "2.0.0" 1938 | resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1939 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1940 | 1941 | shebang-command@^1.2.0: 1942 | version "1.2.0" 1943 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1944 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 1945 | dependencies: 1946 | shebang-regex "^1.0.0" 1947 | 1948 | shebang-regex@^1.0.0: 1949 | version "1.0.0" 1950 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1951 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 1952 | 1953 | signal-exit@^3.0.0, signal-exit@^3.0.2: 1954 | version "3.0.2" 1955 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1956 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 1957 | 1958 | sinon@^1.17.3: 1959 | version "1.17.7" 1960 | resolved "https://registry.yarnpkg.com/sinon/-/sinon-1.17.7.tgz#4542a4f49ba0c45c05eb2e9dd9d203e2b8efe0bf" 1961 | dependencies: 1962 | formatio "1.1.1" 1963 | lolex "1.3.2" 1964 | samsam "1.1.2" 1965 | util ">=0.10.3 <1" 1966 | 1967 | slice-ansi@1.0.0: 1968 | version "1.0.0" 1969 | resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" 1970 | integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== 1971 | dependencies: 1972 | is-fullwidth-code-point "^2.0.0" 1973 | 1974 | source-map@^0.5.0: 1975 | version "0.5.7" 1976 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1977 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1978 | 1979 | source-map@^0.6.1, source-map@~0.6.1: 1980 | version "0.6.1" 1981 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1982 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1983 | 1984 | spawn-wrap@^1.4.2: 1985 | version "1.4.2" 1986 | resolved "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c" 1987 | integrity sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg== 1988 | dependencies: 1989 | foreground-child "^1.5.6" 1990 | mkdirp "^0.5.0" 1991 | os-homedir "^1.0.1" 1992 | rimraf "^2.6.2" 1993 | signal-exit "^3.0.2" 1994 | which "^1.3.0" 1995 | 1996 | spdx-correct@~1.0.0: 1997 | version "1.0.2" 1998 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 1999 | dependencies: 2000 | spdx-license-ids "^1.0.2" 2001 | 2002 | spdx-expression-parse@~1.0.0: 2003 | version "1.0.4" 2004 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 2005 | 2006 | spdx-license-ids@^1.0.2: 2007 | version "1.2.2" 2008 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 2009 | 2010 | sprintf-js@~1.0.2: 2011 | version "1.0.3" 2012 | resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2013 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2014 | 2015 | string-width@^1.0.1: 2016 | version "1.0.2" 2017 | resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2018 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 2019 | dependencies: 2020 | code-point-at "^1.0.0" 2021 | is-fullwidth-code-point "^1.0.0" 2022 | strip-ansi "^3.0.0" 2023 | 2024 | "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: 2025 | version "2.1.1" 2026 | resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2027 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 2028 | dependencies: 2029 | is-fullwidth-code-point "^2.0.0" 2030 | strip-ansi "^4.0.0" 2031 | 2032 | string-width@^3.0.0, string-width@^3.1.0: 2033 | version "3.1.0" 2034 | resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 2035 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 2036 | dependencies: 2037 | emoji-regex "^7.0.1" 2038 | is-fullwidth-code-point "^2.0.0" 2039 | strip-ansi "^5.1.0" 2040 | 2041 | string_decoder@~1.1.1: 2042 | version "1.1.1" 2043 | resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2044 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 2045 | dependencies: 2046 | safe-buffer "~5.1.0" 2047 | 2048 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2049 | version "3.0.1" 2050 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2051 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 2052 | dependencies: 2053 | ansi-regex "^2.0.0" 2054 | 2055 | strip-ansi@^4.0.0: 2056 | version "4.0.0" 2057 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2058 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2059 | dependencies: 2060 | ansi-regex "^3.0.0" 2061 | 2062 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 2063 | version "5.2.0" 2064 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 2065 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 2066 | dependencies: 2067 | ansi-regex "^4.1.0" 2068 | 2069 | strip-bom@^3.0.0: 2070 | version "3.0.0" 2071 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2072 | 2073 | strip-eof@^1.0.0: 2074 | version "1.0.0" 2075 | resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 2076 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 2077 | 2078 | strip-json-comments@2.0.1, strip-json-comments@~2.0.1: 2079 | version "2.0.1" 2080 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2081 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2082 | 2083 | supervisor@^0.12.0: 2084 | version "0.12.0" 2085 | resolved "https://registry.yarnpkg.com/supervisor/-/supervisor-0.12.0.tgz#de7e6337015b291851c10f3538c4a7f04917ecc1" 2086 | 2087 | supports-color@6.0.0: 2088 | version "6.0.0" 2089 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" 2090 | integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== 2091 | dependencies: 2092 | has-flag "^3.0.0" 2093 | 2094 | supports-color@^2.0.0: 2095 | version "2.0.0" 2096 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2097 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 2098 | 2099 | supports-color@^5.3.0: 2100 | version "5.5.0" 2101 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2102 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2103 | dependencies: 2104 | has-flag "^3.0.0" 2105 | 2106 | supports-color@^6.1.0: 2107 | version "6.1.0" 2108 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" 2109 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== 2110 | dependencies: 2111 | has-flag "^3.0.0" 2112 | 2113 | table@4.0.2: 2114 | version "4.0.2" 2115 | resolved "https://registry.npmjs.org/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" 2116 | integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA== 2117 | dependencies: 2118 | ajv "^5.2.3" 2119 | ajv-keywords "^2.1.0" 2120 | chalk "^2.1.0" 2121 | lodash "^4.17.4" 2122 | slice-ansi "1.0.0" 2123 | string-width "^2.1.1" 2124 | 2125 | test-exclude@^5.2.3: 2126 | version "5.2.3" 2127 | resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" 2128 | integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== 2129 | dependencies: 2130 | glob "^7.1.3" 2131 | minimatch "^3.0.4" 2132 | read-pkg-up "^4.0.0" 2133 | require-main-filename "^2.0.0" 2134 | 2135 | text-table@~0.2.0: 2136 | version "0.2.0" 2137 | resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2138 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2139 | 2140 | through@^2.3.6: 2141 | version "2.3.8" 2142 | resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2143 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2144 | 2145 | tmp@^0.0.33: 2146 | version "0.0.33" 2147 | resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 2148 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 2149 | dependencies: 2150 | os-tmpdir "~1.0.2" 2151 | 2152 | to-fast-properties@^2.0.0: 2153 | version "2.0.0" 2154 | resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2155 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 2156 | 2157 | trim-right@^1.0.1: 2158 | version "1.0.1" 2159 | resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 2160 | integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= 2161 | 2162 | type-check@~0.3.2: 2163 | version "0.3.2" 2164 | resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2165 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 2166 | dependencies: 2167 | prelude-ls "~1.1.2" 2168 | 2169 | type-detect@0.1.1: 2170 | version "0.1.1" 2171 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" 2172 | 2173 | type-detect@^1.0.0: 2174 | version "1.0.0" 2175 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2" 2176 | 2177 | type-detect@^4.0.0, type-detect@^4.0.5: 2178 | version "4.0.8" 2179 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 2180 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 2181 | 2182 | typedarray@^0.0.6: 2183 | version "0.0.6" 2184 | resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 2185 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 2186 | 2187 | uglify-js@^3.1.4: 2188 | version "3.7.3" 2189 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.3.tgz#f918fce9182f466d5140f24bb0ff35c2d32dcc6a" 2190 | integrity sha512-7tINm46/3puUA4hCkKYo4Xdts+JDaVC9ZPRcG8Xw9R4nhO/gZgUM3TENq8IF4Vatk8qCig4MzP/c8G4u2BkVQg== 2191 | dependencies: 2192 | commander "~2.20.3" 2193 | source-map "~0.6.1" 2194 | 2195 | util-deprecate@~1.0.1: 2196 | version "1.0.2" 2197 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2198 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2199 | 2200 | "util@>=0.10.3 <1": 2201 | version "0.10.3" 2202 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 2203 | dependencies: 2204 | inherits "2.0.1" 2205 | 2206 | uuid@^3.3.2: 2207 | version "3.3.2" 2208 | resolved "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 2209 | integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== 2210 | 2211 | validate-npm-package-license@^3.0.1: 2212 | version "3.0.1" 2213 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 2214 | dependencies: 2215 | spdx-correct "~1.0.0" 2216 | spdx-expression-parse "~1.0.0" 2217 | 2218 | which-module@^2.0.0: 2219 | version "2.0.0" 2220 | resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 2221 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 2222 | 2223 | which@1.3.1, which@^1.2.9, which@^1.3.0: 2224 | version "1.3.1" 2225 | resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2226 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 2227 | dependencies: 2228 | isexe "^2.0.0" 2229 | 2230 | wide-align@1.1.3: 2231 | version "1.1.3" 2232 | resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 2233 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 2234 | dependencies: 2235 | string-width "^1.0.2 || 2" 2236 | 2237 | wordwrap@~0.0.2: 2238 | version "0.0.3" 2239 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 2240 | integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= 2241 | 2242 | wordwrap@~1.0.0: 2243 | version "1.0.0" 2244 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 2245 | 2246 | wrap-ansi@^2.0.0: 2247 | version "2.1.0" 2248 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 2249 | integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= 2250 | dependencies: 2251 | string-width "^1.0.1" 2252 | strip-ansi "^3.0.1" 2253 | 2254 | wrap-ansi@^5.1.0: 2255 | version "5.1.0" 2256 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 2257 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 2258 | dependencies: 2259 | ansi-styles "^3.2.0" 2260 | string-width "^3.0.0" 2261 | strip-ansi "^5.0.0" 2262 | 2263 | wrappy@1: 2264 | version "1.0.2" 2265 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2266 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2267 | 2268 | write-file-atomic@^2.4.2: 2269 | version "2.4.3" 2270 | resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" 2271 | integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== 2272 | dependencies: 2273 | graceful-fs "^4.1.11" 2274 | imurmurhash "^0.1.4" 2275 | signal-exit "^3.0.2" 2276 | 2277 | write@^0.2.1: 2278 | version "0.2.1" 2279 | resolved "https://registry.npmjs.org/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 2280 | integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= 2281 | dependencies: 2282 | mkdirp "^0.5.1" 2283 | 2284 | "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: 2285 | version "4.0.0" 2286 | resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 2287 | integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 2288 | 2289 | yallist@^2.1.2: 2290 | version "2.1.2" 2291 | resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2292 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 2293 | 2294 | yargs-parser@13.0.0: 2295 | version "13.0.0" 2296 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b" 2297 | integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw== 2298 | dependencies: 2299 | camelcase "^5.0.0" 2300 | decamelize "^1.2.0" 2301 | 2302 | yargs-parser@^11.1.1: 2303 | version "11.1.1" 2304 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" 2305 | integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== 2306 | dependencies: 2307 | camelcase "^5.0.0" 2308 | decamelize "^1.2.0" 2309 | 2310 | yargs-parser@^13.0.0, yargs-parser@^13.1.0: 2311 | version "13.1.1" 2312 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" 2313 | integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== 2314 | dependencies: 2315 | camelcase "^5.0.0" 2316 | decamelize "^1.2.0" 2317 | 2318 | yargs-unparser@1.5.0: 2319 | version "1.5.0" 2320 | resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz#f2bb2a7e83cbc87bb95c8e572828a06c9add6e0d" 2321 | integrity sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw== 2322 | dependencies: 2323 | flat "^4.1.0" 2324 | lodash "^4.17.11" 2325 | yargs "^12.0.5" 2326 | 2327 | yargs@13.2.2: 2328 | version "13.2.2" 2329 | resolved "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993" 2330 | integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA== 2331 | dependencies: 2332 | cliui "^4.0.0" 2333 | find-up "^3.0.0" 2334 | get-caller-file "^2.0.1" 2335 | os-locale "^3.1.0" 2336 | require-directory "^2.1.1" 2337 | require-main-filename "^2.0.0" 2338 | set-blocking "^2.0.0" 2339 | string-width "^3.0.0" 2340 | which-module "^2.0.0" 2341 | y18n "^4.0.0" 2342 | yargs-parser "^13.0.0" 2343 | 2344 | yargs@^12.0.5: 2345 | version "12.0.5" 2346 | resolved "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" 2347 | integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== 2348 | dependencies: 2349 | cliui "^4.0.0" 2350 | decamelize "^1.2.0" 2351 | find-up "^3.0.0" 2352 | get-caller-file "^1.0.1" 2353 | os-locale "^3.0.0" 2354 | require-directory "^2.1.1" 2355 | require-main-filename "^1.0.1" 2356 | set-blocking "^2.0.0" 2357 | string-width "^2.0.0" 2358 | which-module "^2.0.0" 2359 | y18n "^3.2.1 || ^4.0.0" 2360 | yargs-parser "^11.1.1" 2361 | 2362 | yargs@^13.2.2: 2363 | version "13.2.4" 2364 | resolved "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" 2365 | integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== 2366 | dependencies: 2367 | cliui "^5.0.0" 2368 | find-up "^3.0.0" 2369 | get-caller-file "^2.0.1" 2370 | os-locale "^3.1.0" 2371 | require-directory "^2.1.1" 2372 | require-main-filename "^2.0.0" 2373 | set-blocking "^2.0.0" 2374 | string-width "^3.0.0" 2375 | which-module "^2.0.0" 2376 | y18n "^4.0.0" 2377 | yargs-parser "^13.1.0" 2378 | --------------------------------------------------------------------------------